%% Generated by the Erlang ASN.1 PER (aligned) compiler. Version: 5.0.21 %% Purpose: Encoding and decoding of the types in S1AP-IEs. -module('S1AP-IEs'). -compile(nowarn_unused_vars). -dialyzer(no_improper_lists). -dialyzer(no_match). -include("S1AP-IEs.hrl"). -asn1_info([{vsn,'5.0.21'}, {module,'S1AP-IEs'}, {options,[{i,"/build/asngen"}, noobj,per, {outdir,"/build/asngen"}, {i,"."}, {i,"/build/asn1"}]}]). -export([encoding_rule/0,maps/0,bit_string_format/0, legacy_erlang_types/0]). -export(['dialyzer-suppressions'/1]). -export([ 'enc_Additional-GUTI'/1, enc_AdditionalRRMPriorityIndex/1, enc_AerialUEsubscriptionInformation/1, enc_AreaScopeOfMDT/1, enc_AreaScopeOfQMC/1, enc_AllocationAndRetentionPriority/1, enc_AssistanceDataForCECapableUEs/1, enc_AssistanceDataForPaging/1, enc_AssistanceDataForRecommendedCells/1, 'enc_Bearers-SubjectToStatusTransferList'/1, 'enc_Bearers-SubjectToStatusTransfer-Item'/1, 'enc_Bearers-SubjectToEarlyStatusTransferList'/1, 'enc_Bearers-SubjectToEarlyStatusTransfer-Item'/1, enc_BearerType/1, enc_BitRate/1, enc_BluetoothMeasurementConfiguration/1, enc_BluetoothMeasConfigNameList/1, enc_BluetoothMeasConfig/1, enc_BluetoothName/1, enc_BPLMNs/1, enc_BroadcastCancelledAreaList/1, enc_BroadcastCompletedAreaList/1, enc_CancelledCellinEAI/1, 'enc_CancelledCellinEAI-Item'/1, enc_CancelledCellinTAI/1, 'enc_CancelledCellinTAI-Item'/1, enc_Cause/1, enc_CauseMisc/1, enc_CauseProtocol/1, enc_CauseRadioNetwork/1, enc_CauseTransport/1, enc_CauseNas/1, enc_CellAccessMode/1, enc_CellIdentifierAndCELevelForCECapableUEs/1, enc_CELevel/1, 'enc_CE-mode-B-SupportIndicator'/1, enc_CellIdentity/1, 'enc_CellID-Broadcast'/1, 'enc_CellID-Broadcast-Item'/1, 'enc_CellID-Cancelled'/1, 'enc_CellID-Cancelled-Item'/1, enc_CellBasedMDT/1, enc_CellIdListforMDT/1, enc_CellBasedQMC/1, enc_CellIdListforQMC/1, enc_Cdma2000PDU/1, enc_Cdma2000RATType/1, enc_Cdma2000SectorID/1, enc_Cdma2000HOStatus/1, enc_Cdma2000HORequiredIndication/1, enc_Cdma2000OneXSRVCCInfo/1, enc_Cdma2000OneXMEID/1, enc_Cdma2000OneXMSI/1, enc_Cdma2000OneXPilot/1, enc_Cdma2000OneXRAND/1, 'enc_Cell-Size'/1, enc_CellType/1, enc_CGI/1, enc_CI/1, enc_CNDomain/1, enc_CNTypeRestrictions/1, 'enc_CNTypeRestrictions-Item'/1, enc_CNType/1, enc_ConcurrentWarningMessageIndicator/1, enc_ConnectedengNBList/1, enc_ConnectedengNBItem/1, enc_ContextatSource/1, 'enc_Correlation-ID'/1, enc_CSFallbackIndicator/1, enc_AdditionalCSFallbackIndicator/1, 'enc_CSG-Id'/1, 'enc_CSG-IdList'/1, 'enc_CSG-IdList-Item'/1, enc_CSGMembershipStatus/1, enc_COUNTvalue/1, enc_COUNTValueExtended/1, 'enc_COUNTvaluePDCP-SNlength18'/1, 'enc_Coverage-Level'/1, enc_CriticalityDiagnostics/1, 'enc_CriticalityDiagnostics-IE-List'/1, 'enc_CriticalityDiagnostics-IE-Item'/1, enc_DAPSRequestInfo/1, enc_DAPSResponseInfoList/1, enc_DAPSResponseInfoItem/1, enc_DAPSResponseInfo/1, enc_DataCodingScheme/1, enc_DataSize/1, 'enc_DCN-ID'/1, enc_ServedDCNs/1, enc_ServedDCNsItem/1, 'enc_DL-CP-SecurityInformation'/1, 'enc_DL-Forwarding'/1, 'enc_DL-NAS-MAC'/1, 'enc_DLCOUNT-PDCP-SNlength'/1, 'enc_Direct-Forwarding-Path-Availability'/1, 'enc_Data-Forwarding-Not-Possible'/1, enc_DLNASPDUDeliveryAckRequest/1, enc_EARFCN/1, enc_ECGIList/1, enc_PWSfailedECGIList/1, 'enc_EDT-Session'/1, enc_EmergencyAreaIDList/1, enc_EmergencyAreaID/1, 'enc_EmergencyAreaID-Broadcast'/1, 'enc_EmergencyAreaID-Broadcast-Item'/1, 'enc_EmergencyAreaID-Cancelled'/1, 'enc_EmergencyAreaID-Cancelled-Item'/1, enc_CompletedCellinEAI/1, 'enc_CompletedCellinEAI-Item'/1, 'enc_ECGI-List'/1, enc_EmergencyAreaIDListForRestart/1, enc_EmergencyIndicator/1, 'enc_ENB-EarlyStatusTransfer-TransparentContainer'/1, 'enc_ENB-ID'/1, 'enc_En-gNB-ID'/1, 'enc_GERAN-Cell-ID'/1, 'enc_Global-ENB-ID'/1, 'enc_Global-en-gNB-ID'/1, enc_GUMMEIList/1, 'enc_ENB-StatusTransfer-TransparentContainer'/1, 'enc_ENB-UE-S1AP-ID'/1, enc_ENBname/1, enc_ENBX2TLAs/1, enc_EncryptionAlgorithms/1, 'enc_EN-DCSONConfigurationTransfer'/1, 'enc_EN-DCSONTransferType'/1, 'enc_EN-DCTransferTypeRequest'/1, 'enc_EN-DCTransferTypeReply'/1, 'enc_EN-DCSONeNBIdentification'/1, 'enc_EN-DCSONengNBIdentification'/1, enc_EndIndication/1, enc_EnhancedCoverageRestricted/1, 'enc_CE-ModeBRestricted'/1, enc_EPLMNs/1, enc_EventType/1, 'enc_E-RAB-ID'/1, 'enc_E-RABInformationList'/1, 'enc_E-RABInformationListItem'/1, 'enc_E-RABList'/1, 'enc_E-RABItem'/1, 'enc_E-RABLevelQoSParameters'/1, 'enc_E-RABSecurityResultList'/1, 'enc_E-RABSecurityResultItem'/1, 'enc_E-RABUsageReportList'/1, 'enc_E-RABUsageReportItem'/1, 'enc_Ethernet-Type'/1, 'enc_EUTRAN-CGI'/1, enc_EUTRANRoundTripDelayEstimationInfo/1, enc_EventL1LoggedMDTConfig/1, enc_EventTrigger/1, enc_ExpectedUEBehaviour/1, enc_ExpectedUEActivityBehaviour/1, enc_ExpectedActivityPeriod/1, enc_ExpectedIdlePeriod/1, enc_SourceOfUEActivityBehaviourInformation/1, enc_ExpectedHOInterval/1, enc_ExtendedBitRate/1, 'enc_ExtendedRNC-ID'/1, enc_ExtendedRepetitionPeriod/1, 'enc_Extended-UEIdentityIndexValue'/1, enc_FiveGSTAC/1, enc_FiveGSTAI/1, enc_FiveQI/1, enc_ForbiddenInterRATs/1, enc_ForbiddenTAs/1, 'enc_ForbiddenTAs-Item'/1, enc_ForbiddenTACs/1, enc_ForbiddenLAs/1, 'enc_ForbiddenLAs-Item'/1, enc_ForbiddenLACs/1, 'enc_GBR-QosInformation'/1, 'enc_GTP-TEID'/1, enc_GUMMEI/1, enc_GUMMEIType/1, enc_GWContextReleaseIndication/1, enc_HandoverFlag/1, enc_HandoverRestrictionList/1, enc_HandoverType/1, enc_HFN/1, enc_HFNModified/1, 'enc_HFNforPDCP-SNlength18'/1, enc_Hysteresis/1, 'enc_Masked-IMEISV'/1, enc_ImmediateMDT/1, enc_IMSI/1, enc_InformationOnRecommendedCellsAndENBsForPaging/1, enc_IntegrityProtectionAlgorithms/1, enc_IntegrityProtectionIndication/1, enc_IntegrityProtectionResult/1, enc_IntendedNumberOfPagingAttempts/1, enc_InterfacesToTrace/1, enc_IntersystemMeasurementConfiguration/1, enc_InterSystemMeasurementParameters/1, enc_InterSystemMeasurementList/1, enc_InterSystemMeasurementItem/1, enc_IntersystemSONConfigurationTransfer/1, enc_IMSvoiceEPSfallbackfrom5G/1, 'enc_IAB-Authorized'/1, 'enc_IAB-Node-Indication'/1, 'enc_IAB-Supported'/1, enc_KillAllWarningMessages/1, enc_LAC/1, enc_LAI/1, 'enc_LastVisitedCell-Item'/1, enc_LastVisitedEUTRANCellInformation/1, enc_LastVisitedPSCellList/1, enc_LastVisitedPSCellInformation/1, enc_LastVisitedNGRANCellInformation/1, enc_LastVisitedUTRANCellInformation/1, enc_LastVisitedGERANCellInformation/1, 'enc_L3-Information'/1, 'enc_LPPa-PDU'/1, 'enc_LHN-ID'/1, 'enc_Links-to-log'/1, enc_ListeningSubframePattern/1, enc_LoggedMDT/1, enc_LoggingInterval/1, enc_LoggingDuration/1, enc_LoggedMBSFNMDT/1, enc_LoggedMDTTrigger/1, 'enc_LTE-M-Indication'/1, 'enc_LTE-NTN-TAI-Information'/1, enc_M3Configuration/1, enc_M3period/1, enc_M4Configuration/1, enc_M4period/1, enc_M5Configuration/1, enc_M5period/1, enc_M6Configuration/1, 'enc_M6report-Interval'/1, 'enc_M6delay-threshold'/1, enc_M7Configuration/1, enc_M7period/1, 'enc_MDT-Activation'/1, 'enc_MDT-Location-Info'/1, 'enc_MDT-Configuration'/1, enc_ManagementBasedMDTAllowed/1, 'enc_MBSFN-ResultToLog'/1, 'enc_MBSFN-ResultToLogInfo'/1, enc_MDTPLMNList/1, enc_PrivacyIndicator/1, enc_MDTMode/1, 'enc_MDTMode-Extension'/1, enc_MeasurementsToActivate/1, enc_MeasurementThresholdA2/1, enc_MeasurementThresholdL1LoggedMDT/1, enc_MessageIdentifier/1, enc_MobilityInformation/1, enc_MMEname/1, enc_MMEPagingTarget/1, enc_MMERelaySupportIndicator/1, 'enc_MME-Group-ID'/1, 'enc_MME-Code'/1, 'enc_MME-UE-S1AP-ID'/1, 'enc_M-TMSI'/1, enc_MSClassmark2/1, enc_MSClassmark3/1, enc_MutingAvailabilityIndication/1, enc_MutingPatternInformation/1, 'enc_MDT-ConfigurationNR'/1, 'enc_NAS-PDU'/1, 'enc_NASSecurityParametersfromE-UTRAN'/1, 'enc_NASSecurityParameterstoE-UTRAN'/1, 'enc_NB-IoT-DefaultPagingDRX'/1, 'enc_NB-IoT-PagingDRX'/1, 'enc_NB-IoT-Paging-eDRXInformation'/1, 'enc_NB-IoT-Paging-eDRX-Cycle'/1, 'enc_NB-IoT-PagingTimeWindow'/1, 'enc_NB-IoT-RLF-Report-Container'/1, 'enc_NB-IoT-UEIdentityIndexValue'/1, enc_NextPagingAreaScope/1, enc_NotifySourceeNB/1, enc_NRCellIdentity/1, 'enc_NR-CGI'/1, enc_NRencryptionAlgorithms/1, enc_NRintegrityProtectionAlgorithms/1, enc_NRrestrictioninEPSasSecondaryRAT/1, enc_NRrestrictionin5GS/1, enc_NRUESecurityCapabilities/1, enc_NumberofBroadcastRequest/1, enc_NumberOfBroadcasts/1, enc_NRV2XServicesAuthorized/1, enc_NRUESidelinkAggregateMaximumBitrate/1, 'enc_OldBSS-ToNewBSS-Information'/1, enc_OverloadAction/1, enc_OverloadResponse/1, 'enc_Packet-LossRate'/1, enc_PagingAttemptInformation/1, enc_PagingAttemptCount/1, 'enc_Paging-eDRXInformation'/1, 'enc_Paging-eDRX-Cycle'/1, enc_PagingTimeWindow/1, enc_PagingDRX/1, enc_PagingPriority/1, enc_PagingProbabilityInformation/1, enc_PagingCause/1, enc_PC5QoSParameters/1, enc_PC5QoSFlowList/1, enc_PC5QoSFlowItem/1, enc_PC5FlowBitRates/1, 'enc_PDCP-SN'/1, 'enc_PDCP-SNExtended'/1, 'enc_PDCP-SNlength18'/1, enc_PendingDataIndication/1, enc_M1PeriodicReporting/1, enc_PLMNidentity/1, enc_PLMNAreaBasedQMC/1, enc_PLMNListforQMC/1, 'enc_Port-Number'/1, 'enc_Pre-emptionCapability'/1, 'enc_Pre-emptionVulnerability'/1, enc_PriorityLevel/1, enc_ProSeAuthorized/1, enc_ProSeDirectDiscovery/1, enc_ProSeUEtoNetworkRelaying/1, enc_ProSeDirectCommunication/1, 'enc_PS-ServiceNotAvailable'/1, enc_PSCellInformation/1, enc_QCI/1, enc_RACSIndication/1, 'enc_RAN-UE-NGAP-ID'/1, enc_Range/1, enc_ReceiveStatusofULPDCPSDUs/1, enc_ReceiveStatusOfULPDCPSDUsExtended/1, 'enc_ReceiveStatusOfULPDCPSDUsPDCP-SNlength18'/1, enc_RecommendedCellsForPaging/1, enc_RecommendedCellList/1, enc_RecommendedCellItem/1, enc_RecommendedENBsForPaging/1, enc_RecommendedENBList/1, enc_RecommendedENBItem/1, enc_RelativeMMECapacity/1, 'enc_RelayNode-Indicator'/1, enc_RAC/1, 'enc_RAT-Restrictions'/1, 'enc_RAT-RestrictionsItem'/1, 'enc_RAT-Type'/1, enc_ReportAmountMDT/1, enc_ReportIntervalMDT/1, enc_M1ReportingTrigger/1, enc_RequestType/1, enc_RequestTypeAdditionalInfo/1, enc_RIMTransfer/1, enc_RIMInformation/1, enc_RIMRoutingAddress/1, enc_ReportArea/1, enc_RepetitionPeriod/1, enc_RLFReportInformation/1, 'enc_RNC-ID'/1, 'enc_RRC-Container'/1, 'enc_RRC-Establishment-Cause'/1, enc_ECGIListForRestart/1, 'enc_Routing-ID'/1, enc_SecurityKey/1, enc_SecurityContext/1, enc_SecondaryRATType/1, enc_SecondaryRATDataUsageRequest/1, enc_SecondaryRATDataUsageReportList/1, enc_SecondaryRATDataUsageReportItem/1, enc_SecurityIndication/1, enc_SecurityResult/1, enc_SensorMeasConfig/1, enc_SensorMeasConfigNameItem/1, enc_SensorMeasConfigNameList/1, enc_SensorMeasurementConfiguration/1, enc_SensorNameConfig/1, enc_SerialNumber/1, enc_ServiceType/1, enc_SONInformation/1, 'enc_SONInformation-Extension'/1, enc_SONInformationRequest/1, enc_SONInformationReply/1, enc_SONInformationReport/1, enc_SONConfigurationTransfer/1, enc_SynchronisationInformation/1, 'enc_Source-ToTarget-TransparentContainer'/1, 'enc_SourceBSS-ToTargetBSS-TransparentContainer'/1, 'enc_SourceeNB-ID'/1, enc_SRVCCOperationNotPossible/1, enc_SRVCCOperationPossible/1, enc_SRVCCHOIndication/1, enc_SourceNodeID/1, 'enc_SourceNodeID-Extension'/1, 'enc_SourceeNB-ToTargeteNB-TransparentContainer'/1, 'enc_SourceNgRanNode-ID'/1, 'enc_SourceRNC-ToTargetRNC-TransparentContainer'/1, 'enc_SourceNgRanNode-ToTargetNgRanNode-TransparentContainer'/1, enc_ServedGUMMEIs/1, enc_ServedGUMMEIsItem/1, enc_ServedGroupIDs/1, enc_ServedMMECs/1, enc_ServedPLMNs/1, enc_SubscriberProfileIDforRFP/1, 'enc_Subscription-Based-UE-DifferentiationInfo'/1, enc_ScheduledCommunicationTime/1, enc_SupportedTAs/1, 'enc_SupportedTAs-Item'/1, enc_StratumLevel/1, enc_SynchronisationStatus/1, enc_TimeSynchronisationInfo/1, 'enc_S-TMSI'/1, enc_TAC/1, 'enc_TACList-In-LTE-NTN'/1, enc_TAIBasedMDT/1, enc_TAIListforMDT/1, enc_TAIListforWarning/1, enc_TAI/1, 'enc_TAI-Broadcast'/1, 'enc_TAI-Broadcast-Item'/1, 'enc_TAI-Cancelled'/1, 'enc_TAI-Cancelled-Item'/1, enc_TABasedMDT/1, enc_TAListforMDT/1, enc_TABasedQMC/1, enc_TAListforQMC/1, enc_TAIBasedQMC/1, enc_TAIListforQMC/1, enc_CompletedCellinTAI/1, 'enc_CompletedCellinTAI-Item'/1, 'enc_TBCD-STRING'/1, enc_TargetID/1, 'enc_TargeteNB-ID'/1, 'enc_TargetRNC-ID'/1, 'enc_TargetNgRanNode-ID'/1, 'enc_Global-RAN-NODE-ID'/1, enc_GNB/1, 'enc_Global-GNB-ID'/1, 'enc_GNB-Identity'/1, 'enc_NG-eNB'/1, 'enc_GNB-ID'/1, 'enc_TargeteNB-ToSourceeNB-TransparentContainer'/1, 'enc_Target-ToSource-TransparentContainer'/1, 'enc_TargetRNC-ToSourceRNC-TransparentContainer'/1, 'enc_TargetBSS-ToSourceBSS-TransparentContainer'/1, 'enc_TargetNgRanNode-ToSourceNgRanNode-TransparentContainer'/1, enc_M1ThresholdEventA2/1, 'enc_Threshold-RSRP'/1, 'enc_Threshold-RSRQ'/1, enc_TimeToTrigger/1, enc_TimeToWait/1, 'enc_Time-UE-StayedInCell'/1, 'enc_Time-UE-StayedInCell-EnhancedGranularity'/1, enc_TimeSinceSecondaryNodeRelease/1, enc_TransportInformation/1, enc_TransportLayerAddress/1, enc_TraceActivation/1, enc_TraceDepth/1, 'enc_E-UTRAN-Trace-ID'/1, enc_TrafficLoadReductionIndication/1, enc_TunnelInformation/1, enc_TypeOfError/1, enc_TAIListForRestart/1, enc_UEAggregateMaximumBitrate/1, enc_UEAppLayerMeasConfig/1, enc_UECapabilityInfoRequest/1, 'enc_UE-RetentionInformation'/1, 'enc_UE-S1AP-IDs'/1, 'enc_UE-S1AP-ID-pair'/1, 'enc_UE-associatedLogicalS1-ConnectionItem'/1, enc_UEIdentityIndexValue/1, 'enc_UE-HistoryInformation'/1, 'enc_UE-HistoryInformationFromTheUE'/1, enc_UEPagingID/1, enc_UERadioCapability/1, enc_UERadioCapabilityForPaging/1, enc_UERadioCapabilityID/1, 'enc_UE-RLF-Report-Container'/1, 'enc_UE-RLF-Report-Container-for-extended-bands'/1, enc_UESecurityCapabilities/1, enc_UESidelinkAggregateMaximumBitrate/1, 'enc_UE-Usage-Type'/1, 'enc_UL-CP-SecurityInformation'/1, 'enc_UL-NAS-MAC'/1, 'enc_UL-NAS-Count'/1, enc_UnlicensedSpectrumRestriction/1, 'enc_URI-Address'/1, enc_UserLocationInformation/1, enc_UEUserPlaneCIoTSupportIndicator/1, 'enc_UE-Application-Layer-Measurement-Capability'/1, enc_VoiceSupportMatchIndicator/1, enc_V2XServicesAuthorized/1, enc_VehicleUE/1, enc_PedestrianUE/1, enc_WarningAreaCoordinates/1, enc_WarningAreaList/1, enc_WarningType/1, enc_WarningSecurityInfo/1, enc_WarningMessageContents/1, enc_WLANMeasurementConfiguration/1, enc_WLANMeasConfigNameList/1, enc_WLANMeasConfig/1, enc_WLANName/1, 'enc_WUS-Assistance-Information'/1, enc_X2TNLConfigurationInfo/1, enc_ENBX2ExtTLAs/1, enc_ENBX2ExtTLA/1, enc_ENBX2GTPTLAs/1, enc_ENBIndirectX2TransportLayerAddresses/1 ]). -export([ 'dec_Additional-GUTI'/1, dec_AdditionalRRMPriorityIndex/1, dec_AerialUEsubscriptionInformation/1, dec_AreaScopeOfMDT/1, dec_AreaScopeOfQMC/1, dec_AllocationAndRetentionPriority/1, dec_AssistanceDataForCECapableUEs/1, dec_AssistanceDataForPaging/1, dec_AssistanceDataForRecommendedCells/1, 'dec_Bearers-SubjectToStatusTransferList'/1, 'dec_Bearers-SubjectToStatusTransfer-Item'/1, 'dec_Bearers-SubjectToEarlyStatusTransferList'/1, 'dec_Bearers-SubjectToEarlyStatusTransfer-Item'/1, dec_BearerType/1, dec_BitRate/1, dec_BluetoothMeasurementConfiguration/1, dec_BluetoothMeasConfigNameList/1, dec_BluetoothMeasConfig/1, dec_BluetoothName/1, dec_BPLMNs/1, dec_BroadcastCancelledAreaList/1, dec_BroadcastCompletedAreaList/1, dec_CancelledCellinEAI/1, 'dec_CancelledCellinEAI-Item'/1, dec_CancelledCellinTAI/1, 'dec_CancelledCellinTAI-Item'/1, dec_Cause/1, dec_CauseMisc/1, dec_CauseProtocol/1, dec_CauseRadioNetwork/1, dec_CauseTransport/1, dec_CauseNas/1, dec_CellAccessMode/1, dec_CellIdentifierAndCELevelForCECapableUEs/1, dec_CELevel/1, 'dec_CE-mode-B-SupportIndicator'/1, dec_CellIdentity/1, 'dec_CellID-Broadcast'/1, 'dec_CellID-Broadcast-Item'/1, 'dec_CellID-Cancelled'/1, 'dec_CellID-Cancelled-Item'/1, dec_CellBasedMDT/1, dec_CellIdListforMDT/1, dec_CellBasedQMC/1, dec_CellIdListforQMC/1, dec_Cdma2000PDU/1, dec_Cdma2000RATType/1, dec_Cdma2000SectorID/1, dec_Cdma2000HOStatus/1, dec_Cdma2000HORequiredIndication/1, dec_Cdma2000OneXSRVCCInfo/1, dec_Cdma2000OneXMEID/1, dec_Cdma2000OneXMSI/1, dec_Cdma2000OneXPilot/1, dec_Cdma2000OneXRAND/1, 'dec_Cell-Size'/1, dec_CellType/1, dec_CGI/1, dec_CI/1, dec_CNDomain/1, dec_CNTypeRestrictions/1, 'dec_CNTypeRestrictions-Item'/1, dec_CNType/1, dec_ConcurrentWarningMessageIndicator/1, dec_ConnectedengNBList/1, dec_ConnectedengNBItem/1, dec_ContextatSource/1, 'dec_Correlation-ID'/1, dec_CSFallbackIndicator/1, dec_AdditionalCSFallbackIndicator/1, 'dec_CSG-Id'/1, 'dec_CSG-IdList'/1, 'dec_CSG-IdList-Item'/1, dec_CSGMembershipStatus/1, dec_COUNTvalue/1, dec_COUNTValueExtended/1, 'dec_COUNTvaluePDCP-SNlength18'/1, 'dec_Coverage-Level'/1, dec_CriticalityDiagnostics/1, 'dec_CriticalityDiagnostics-IE-List'/1, 'dec_CriticalityDiagnostics-IE-Item'/1, dec_DAPSRequestInfo/1, dec_DAPSResponseInfoList/1, dec_DAPSResponseInfoItem/1, dec_DAPSResponseInfo/1, dec_DataCodingScheme/1, dec_DataSize/1, 'dec_DCN-ID'/1, dec_ServedDCNs/1, dec_ServedDCNsItem/1, 'dec_DL-CP-SecurityInformation'/1, 'dec_DL-Forwarding'/1, 'dec_DL-NAS-MAC'/1, 'dec_DLCOUNT-PDCP-SNlength'/1, 'dec_Direct-Forwarding-Path-Availability'/1, 'dec_Data-Forwarding-Not-Possible'/1, dec_DLNASPDUDeliveryAckRequest/1, dec_EARFCN/1, dec_ECGIList/1, dec_PWSfailedECGIList/1, 'dec_EDT-Session'/1, dec_EmergencyAreaIDList/1, dec_EmergencyAreaID/1, 'dec_EmergencyAreaID-Broadcast'/1, 'dec_EmergencyAreaID-Broadcast-Item'/1, 'dec_EmergencyAreaID-Cancelled'/1, 'dec_EmergencyAreaID-Cancelled-Item'/1, dec_CompletedCellinEAI/1, 'dec_CompletedCellinEAI-Item'/1, 'dec_ECGI-List'/1, dec_EmergencyAreaIDListForRestart/1, dec_EmergencyIndicator/1, 'dec_ENB-EarlyStatusTransfer-TransparentContainer'/1, 'dec_ENB-ID'/1, 'dec_En-gNB-ID'/1, 'dec_GERAN-Cell-ID'/1, 'dec_Global-ENB-ID'/1, 'dec_Global-en-gNB-ID'/1, dec_GUMMEIList/1, 'dec_ENB-StatusTransfer-TransparentContainer'/1, 'dec_ENB-UE-S1AP-ID'/1, dec_ENBname/1, dec_ENBX2TLAs/1, dec_EncryptionAlgorithms/1, 'dec_EN-DCSONConfigurationTransfer'/1, 'dec_EN-DCSONTransferType'/1, 'dec_EN-DCTransferTypeRequest'/1, 'dec_EN-DCTransferTypeReply'/1, 'dec_EN-DCSONeNBIdentification'/1, 'dec_EN-DCSONengNBIdentification'/1, dec_EndIndication/1, dec_EnhancedCoverageRestricted/1, 'dec_CE-ModeBRestricted'/1, dec_EPLMNs/1, dec_EventType/1, 'dec_E-RAB-ID'/1, 'dec_E-RABInformationList'/1, 'dec_E-RABInformationListItem'/1, 'dec_E-RABList'/1, 'dec_E-RABItem'/1, 'dec_E-RABLevelQoSParameters'/1, 'dec_E-RABSecurityResultList'/1, 'dec_E-RABSecurityResultItem'/1, 'dec_E-RABUsageReportList'/1, 'dec_E-RABUsageReportItem'/1, 'dec_Ethernet-Type'/1, 'dec_EUTRAN-CGI'/1, dec_EUTRANRoundTripDelayEstimationInfo/1, dec_EventL1LoggedMDTConfig/1, dec_EventTrigger/1, dec_ExpectedUEBehaviour/1, dec_ExpectedUEActivityBehaviour/1, dec_ExpectedActivityPeriod/1, dec_ExpectedIdlePeriod/1, dec_SourceOfUEActivityBehaviourInformation/1, dec_ExpectedHOInterval/1, dec_ExtendedBitRate/1, 'dec_ExtendedRNC-ID'/1, dec_ExtendedRepetitionPeriod/1, 'dec_Extended-UEIdentityIndexValue'/1, dec_FiveGSTAC/1, dec_FiveGSTAI/1, dec_FiveQI/1, dec_ForbiddenInterRATs/1, dec_ForbiddenTAs/1, 'dec_ForbiddenTAs-Item'/1, dec_ForbiddenTACs/1, dec_ForbiddenLAs/1, 'dec_ForbiddenLAs-Item'/1, dec_ForbiddenLACs/1, 'dec_GBR-QosInformation'/1, 'dec_GTP-TEID'/1, dec_GUMMEI/1, dec_GUMMEIType/1, dec_GWContextReleaseIndication/1, dec_HandoverFlag/1, dec_HandoverRestrictionList/1, dec_HandoverType/1, dec_HFN/1, dec_HFNModified/1, 'dec_HFNforPDCP-SNlength18'/1, dec_Hysteresis/1, 'dec_Masked-IMEISV'/1, dec_ImmediateMDT/1, dec_IMSI/1, dec_InformationOnRecommendedCellsAndENBsForPaging/1, dec_IntegrityProtectionAlgorithms/1, dec_IntegrityProtectionIndication/1, dec_IntegrityProtectionResult/1, dec_IntendedNumberOfPagingAttempts/1, dec_InterfacesToTrace/1, dec_IntersystemMeasurementConfiguration/1, dec_InterSystemMeasurementParameters/1, dec_InterSystemMeasurementList/1, dec_InterSystemMeasurementItem/1, dec_IntersystemSONConfigurationTransfer/1, dec_IMSvoiceEPSfallbackfrom5G/1, 'dec_IAB-Authorized'/1, 'dec_IAB-Node-Indication'/1, 'dec_IAB-Supported'/1, dec_KillAllWarningMessages/1, dec_LAC/1, dec_LAI/1, 'dec_LastVisitedCell-Item'/1, dec_LastVisitedEUTRANCellInformation/1, dec_LastVisitedPSCellList/1, dec_LastVisitedPSCellInformation/1, dec_LastVisitedNGRANCellInformation/1, dec_LastVisitedUTRANCellInformation/1, dec_LastVisitedGERANCellInformation/1, 'dec_L3-Information'/1, 'dec_LPPa-PDU'/1, 'dec_LHN-ID'/1, 'dec_Links-to-log'/1, dec_ListeningSubframePattern/1, dec_LoggedMDT/1, dec_LoggingInterval/1, dec_LoggingDuration/1, dec_LoggedMBSFNMDT/1, dec_LoggedMDTTrigger/1, 'dec_LTE-M-Indication'/1, 'dec_LTE-NTN-TAI-Information'/1, dec_M3Configuration/1, dec_M3period/1, dec_M4Configuration/1, dec_M4period/1, dec_M5Configuration/1, dec_M5period/1, dec_M6Configuration/1, 'dec_M6report-Interval'/1, 'dec_M6delay-threshold'/1, dec_M7Configuration/1, dec_M7period/1, 'dec_MDT-Activation'/1, 'dec_MDT-Location-Info'/1, 'dec_MDT-Configuration'/1, dec_ManagementBasedMDTAllowed/1, 'dec_MBSFN-ResultToLog'/1, 'dec_MBSFN-ResultToLogInfo'/1, dec_MDTPLMNList/1, dec_PrivacyIndicator/1, dec_MDTMode/1, 'dec_MDTMode-Extension'/1, dec_MeasurementsToActivate/1, dec_MeasurementThresholdA2/1, dec_MeasurementThresholdL1LoggedMDT/1, dec_MessageIdentifier/1, dec_MobilityInformation/1, dec_MMEname/1, dec_MMEPagingTarget/1, dec_MMERelaySupportIndicator/1, 'dec_MME-Group-ID'/1, 'dec_MME-Code'/1, 'dec_MME-UE-S1AP-ID'/1, 'dec_M-TMSI'/1, dec_MSClassmark2/1, dec_MSClassmark3/1, dec_MutingAvailabilityIndication/1, dec_MutingPatternInformation/1, 'dec_MDT-ConfigurationNR'/1, 'dec_NAS-PDU'/1, 'dec_NASSecurityParametersfromE-UTRAN'/1, 'dec_NASSecurityParameterstoE-UTRAN'/1, 'dec_NB-IoT-DefaultPagingDRX'/1, 'dec_NB-IoT-PagingDRX'/1, 'dec_NB-IoT-Paging-eDRXInformation'/1, 'dec_NB-IoT-Paging-eDRX-Cycle'/1, 'dec_NB-IoT-PagingTimeWindow'/1, 'dec_NB-IoT-RLF-Report-Container'/1, 'dec_NB-IoT-UEIdentityIndexValue'/1, dec_NextPagingAreaScope/1, dec_NotifySourceeNB/1, dec_NRCellIdentity/1, 'dec_NR-CGI'/1, dec_NRencryptionAlgorithms/1, dec_NRintegrityProtectionAlgorithms/1, dec_NRrestrictioninEPSasSecondaryRAT/1, dec_NRrestrictionin5GS/1, dec_NRUESecurityCapabilities/1, dec_NumberofBroadcastRequest/1, dec_NumberOfBroadcasts/1, dec_NRV2XServicesAuthorized/1, dec_NRUESidelinkAggregateMaximumBitrate/1, 'dec_OldBSS-ToNewBSS-Information'/1, dec_OverloadAction/1, dec_OverloadResponse/1, 'dec_Packet-LossRate'/1, dec_PagingAttemptInformation/1, dec_PagingAttemptCount/1, 'dec_Paging-eDRXInformation'/1, 'dec_Paging-eDRX-Cycle'/1, dec_PagingTimeWindow/1, dec_PagingDRX/1, dec_PagingPriority/1, dec_PagingProbabilityInformation/1, dec_PagingCause/1, dec_PC5QoSParameters/1, dec_PC5QoSFlowList/1, dec_PC5QoSFlowItem/1, dec_PC5FlowBitRates/1, 'dec_PDCP-SN'/1, 'dec_PDCP-SNExtended'/1, 'dec_PDCP-SNlength18'/1, dec_PendingDataIndication/1, dec_M1PeriodicReporting/1, dec_PLMNidentity/1, dec_PLMNAreaBasedQMC/1, dec_PLMNListforQMC/1, 'dec_Port-Number'/1, 'dec_Pre-emptionCapability'/1, 'dec_Pre-emptionVulnerability'/1, dec_PriorityLevel/1, dec_ProSeAuthorized/1, dec_ProSeDirectDiscovery/1, dec_ProSeUEtoNetworkRelaying/1, dec_ProSeDirectCommunication/1, 'dec_PS-ServiceNotAvailable'/1, dec_PSCellInformation/1, dec_QCI/1, dec_RACSIndication/1, 'dec_RAN-UE-NGAP-ID'/1, dec_Range/1, dec_ReceiveStatusofULPDCPSDUs/1, dec_ReceiveStatusOfULPDCPSDUsExtended/1, 'dec_ReceiveStatusOfULPDCPSDUsPDCP-SNlength18'/1, dec_RecommendedCellsForPaging/1, dec_RecommendedCellList/1, dec_RecommendedCellItem/1, dec_RecommendedENBsForPaging/1, dec_RecommendedENBList/1, dec_RecommendedENBItem/1, dec_RelativeMMECapacity/1, 'dec_RelayNode-Indicator'/1, dec_RAC/1, 'dec_RAT-Restrictions'/1, 'dec_RAT-RestrictionsItem'/1, 'dec_RAT-Type'/1, dec_ReportAmountMDT/1, dec_ReportIntervalMDT/1, dec_M1ReportingTrigger/1, dec_RequestType/1, dec_RequestTypeAdditionalInfo/1, dec_RIMTransfer/1, dec_RIMInformation/1, dec_RIMRoutingAddress/1, dec_ReportArea/1, dec_RepetitionPeriod/1, dec_RLFReportInformation/1, 'dec_RNC-ID'/1, 'dec_RRC-Container'/1, 'dec_RRC-Establishment-Cause'/1, dec_ECGIListForRestart/1, 'dec_Routing-ID'/1, dec_SecurityKey/1, dec_SecurityContext/1, dec_SecondaryRATType/1, dec_SecondaryRATDataUsageRequest/1, dec_SecondaryRATDataUsageReportList/1, dec_SecondaryRATDataUsageReportItem/1, dec_SecurityIndication/1, dec_SecurityResult/1, dec_SensorMeasConfig/1, dec_SensorMeasConfigNameItem/1, dec_SensorMeasConfigNameList/1, dec_SensorMeasurementConfiguration/1, dec_SensorNameConfig/1, dec_SerialNumber/1, dec_ServiceType/1, dec_SONInformation/1, 'dec_SONInformation-Extension'/1, dec_SONInformationRequest/1, dec_SONInformationReply/1, dec_SONInformationReport/1, dec_SONConfigurationTransfer/1, dec_SynchronisationInformation/1, 'dec_Source-ToTarget-TransparentContainer'/1, 'dec_SourceBSS-ToTargetBSS-TransparentContainer'/1, 'dec_SourceeNB-ID'/1, dec_SRVCCOperationNotPossible/1, dec_SRVCCOperationPossible/1, dec_SRVCCHOIndication/1, dec_SourceNodeID/1, 'dec_SourceNodeID-Extension'/1, 'dec_SourceeNB-ToTargeteNB-TransparentContainer'/1, 'dec_SourceNgRanNode-ID'/1, 'dec_SourceRNC-ToTargetRNC-TransparentContainer'/1, 'dec_SourceNgRanNode-ToTargetNgRanNode-TransparentContainer'/1, dec_ServedGUMMEIs/1, dec_ServedGUMMEIsItem/1, dec_ServedGroupIDs/1, dec_ServedMMECs/1, dec_ServedPLMNs/1, dec_SubscriberProfileIDforRFP/1, 'dec_Subscription-Based-UE-DifferentiationInfo'/1, dec_ScheduledCommunicationTime/1, dec_SupportedTAs/1, 'dec_SupportedTAs-Item'/1, dec_StratumLevel/1, dec_SynchronisationStatus/1, dec_TimeSynchronisationInfo/1, 'dec_S-TMSI'/1, dec_TAC/1, 'dec_TACList-In-LTE-NTN'/1, dec_TAIBasedMDT/1, dec_TAIListforMDT/1, dec_TAIListforWarning/1, dec_TAI/1, 'dec_TAI-Broadcast'/1, 'dec_TAI-Broadcast-Item'/1, 'dec_TAI-Cancelled'/1, 'dec_TAI-Cancelled-Item'/1, dec_TABasedMDT/1, dec_TAListforMDT/1, dec_TABasedQMC/1, dec_TAListforQMC/1, dec_TAIBasedQMC/1, dec_TAIListforQMC/1, dec_CompletedCellinTAI/1, 'dec_CompletedCellinTAI-Item'/1, 'dec_TBCD-STRING'/1, dec_TargetID/1, 'dec_TargeteNB-ID'/1, 'dec_TargetRNC-ID'/1, 'dec_TargetNgRanNode-ID'/1, 'dec_Global-RAN-NODE-ID'/1, dec_GNB/1, 'dec_Global-GNB-ID'/1, 'dec_GNB-Identity'/1, 'dec_NG-eNB'/1, 'dec_GNB-ID'/1, 'dec_TargeteNB-ToSourceeNB-TransparentContainer'/1, 'dec_Target-ToSource-TransparentContainer'/1, 'dec_TargetRNC-ToSourceRNC-TransparentContainer'/1, 'dec_TargetBSS-ToSourceBSS-TransparentContainer'/1, 'dec_TargetNgRanNode-ToSourceNgRanNode-TransparentContainer'/1, dec_M1ThresholdEventA2/1, 'dec_Threshold-RSRP'/1, 'dec_Threshold-RSRQ'/1, dec_TimeToTrigger/1, dec_TimeToWait/1, 'dec_Time-UE-StayedInCell'/1, 'dec_Time-UE-StayedInCell-EnhancedGranularity'/1, dec_TimeSinceSecondaryNodeRelease/1, dec_TransportInformation/1, dec_TransportLayerAddress/1, dec_TraceActivation/1, dec_TraceDepth/1, 'dec_E-UTRAN-Trace-ID'/1, dec_TrafficLoadReductionIndication/1, dec_TunnelInformation/1, dec_TypeOfError/1, dec_TAIListForRestart/1, dec_UEAggregateMaximumBitrate/1, dec_UEAppLayerMeasConfig/1, dec_UECapabilityInfoRequest/1, 'dec_UE-RetentionInformation'/1, 'dec_UE-S1AP-IDs'/1, 'dec_UE-S1AP-ID-pair'/1, 'dec_UE-associatedLogicalS1-ConnectionItem'/1, dec_UEIdentityIndexValue/1, 'dec_UE-HistoryInformation'/1, 'dec_UE-HistoryInformationFromTheUE'/1, dec_UEPagingID/1, dec_UERadioCapability/1, dec_UERadioCapabilityForPaging/1, dec_UERadioCapabilityID/1, 'dec_UE-RLF-Report-Container'/1, 'dec_UE-RLF-Report-Container-for-extended-bands'/1, dec_UESecurityCapabilities/1, dec_UESidelinkAggregateMaximumBitrate/1, 'dec_UE-Usage-Type'/1, 'dec_UL-CP-SecurityInformation'/1, 'dec_UL-NAS-MAC'/1, 'dec_UL-NAS-Count'/1, dec_UnlicensedSpectrumRestriction/1, 'dec_URI-Address'/1, dec_UserLocationInformation/1, dec_UEUserPlaneCIoTSupportIndicator/1, 'dec_UE-Application-Layer-Measurement-Capability'/1, dec_VoiceSupportMatchIndicator/1, dec_V2XServicesAuthorized/1, dec_VehicleUE/1, dec_PedestrianUE/1, dec_WarningAreaCoordinates/1, dec_WarningAreaList/1, dec_WarningType/1, dec_WarningSecurityInfo/1, dec_WarningMessageContents/1, dec_WLANMeasurementConfiguration/1, dec_WLANMeasConfigNameList/1, dec_WLANMeasConfig/1, dec_WLANName/1, 'dec_WUS-Assistance-Information'/1, dec_X2TNLConfigurationInfo/1, dec_ENBX2ExtTLAs/1, dec_ENBX2ExtTLA/1, dec_ENBX2GTPTLAs/1, dec_ENBIndirectX2TransportLayerAddresses/1 ]). -export([info/0]). -export([encode/2,decode/2]). encoding_rule() -> per. maps() -> false. bit_string_format() -> bitstring. legacy_erlang_types() -> false. encode(Type, Data) -> try complete(encode_disp(Type, Data)) of Bytes -> {ok,Bytes} catch Class:Exception:Stk when Class =:= error; Class =:= exit -> case Exception of {error,{asn1,Reason}} -> {error,{asn1,{Reason,Stk}}}; Reason -> {error,{asn1,{Reason,Stk}}} end end. decode(Type, Data) -> try {Result,_Rest} = decode_disp(Type, Data), {ok,Result} catch Class:Exception:Stk when Class =:= error; Class =:= exit -> case Exception of {error,{asn1,Reason}} -> {error,{asn1,{Reason,Stk}}}; Reason -> {error,{asn1,{Reason,Stk}}} end end. encode_disp('Additional-GUTI', Data) -> 'enc_Additional-GUTI'(Data); encode_disp('AdditionalRRMPriorityIndex', Data) -> enc_AdditionalRRMPriorityIndex(Data); encode_disp('AerialUEsubscriptionInformation', Data) -> enc_AerialUEsubscriptionInformation(Data); encode_disp('AreaScopeOfMDT', Data) -> enc_AreaScopeOfMDT(Data); encode_disp('AreaScopeOfQMC', Data) -> enc_AreaScopeOfQMC(Data); encode_disp('AllocationAndRetentionPriority', Data) -> enc_AllocationAndRetentionPriority(Data); encode_disp('AssistanceDataForCECapableUEs', Data) -> enc_AssistanceDataForCECapableUEs(Data); encode_disp('AssistanceDataForPaging', Data) -> enc_AssistanceDataForPaging(Data); encode_disp('AssistanceDataForRecommendedCells', Data) -> enc_AssistanceDataForRecommendedCells(Data); encode_disp('Bearers-SubjectToStatusTransferList', Data) -> 'enc_Bearers-SubjectToStatusTransferList'(Data); encode_disp('Bearers-SubjectToStatusTransfer-Item', Data) -> 'enc_Bearers-SubjectToStatusTransfer-Item'(Data); encode_disp('Bearers-SubjectToEarlyStatusTransferList', Data) -> 'enc_Bearers-SubjectToEarlyStatusTransferList'(Data); encode_disp('Bearers-SubjectToEarlyStatusTransfer-Item', Data) -> 'enc_Bearers-SubjectToEarlyStatusTransfer-Item'(Data); encode_disp('BearerType', Data) -> enc_BearerType(Data); encode_disp('BitRate', Data) -> enc_BitRate(Data); encode_disp('BluetoothMeasurementConfiguration', Data) -> enc_BluetoothMeasurementConfiguration(Data); encode_disp('BluetoothMeasConfigNameList', Data) -> enc_BluetoothMeasConfigNameList(Data); encode_disp('BluetoothMeasConfig', Data) -> enc_BluetoothMeasConfig(Data); encode_disp('BluetoothName', Data) -> enc_BluetoothName(Data); encode_disp('BPLMNs', Data) -> enc_BPLMNs(Data); encode_disp('BroadcastCancelledAreaList', Data) -> enc_BroadcastCancelledAreaList(Data); encode_disp('BroadcastCompletedAreaList', Data) -> enc_BroadcastCompletedAreaList(Data); encode_disp('CancelledCellinEAI', Data) -> enc_CancelledCellinEAI(Data); encode_disp('CancelledCellinEAI-Item', Data) -> 'enc_CancelledCellinEAI-Item'(Data); encode_disp('CancelledCellinTAI', Data) -> enc_CancelledCellinTAI(Data); encode_disp('CancelledCellinTAI-Item', Data) -> 'enc_CancelledCellinTAI-Item'(Data); encode_disp('Cause', Data) -> enc_Cause(Data); encode_disp('CauseMisc', Data) -> enc_CauseMisc(Data); encode_disp('CauseProtocol', Data) -> enc_CauseProtocol(Data); encode_disp('CauseRadioNetwork', Data) -> enc_CauseRadioNetwork(Data); encode_disp('CauseTransport', Data) -> enc_CauseTransport(Data); encode_disp('CauseNas', Data) -> enc_CauseNas(Data); encode_disp('CellAccessMode', Data) -> enc_CellAccessMode(Data); encode_disp('CellIdentifierAndCELevelForCECapableUEs', Data) -> enc_CellIdentifierAndCELevelForCECapableUEs(Data); encode_disp('CELevel', Data) -> enc_CELevel(Data); encode_disp('CE-mode-B-SupportIndicator', Data) -> 'enc_CE-mode-B-SupportIndicator'(Data); encode_disp('CellIdentity', Data) -> enc_CellIdentity(Data); encode_disp('CellID-Broadcast', Data) -> 'enc_CellID-Broadcast'(Data); encode_disp('CellID-Broadcast-Item', Data) -> 'enc_CellID-Broadcast-Item'(Data); encode_disp('CellID-Cancelled', Data) -> 'enc_CellID-Cancelled'(Data); encode_disp('CellID-Cancelled-Item', Data) -> 'enc_CellID-Cancelled-Item'(Data); encode_disp('CellBasedMDT', Data) -> enc_CellBasedMDT(Data); encode_disp('CellIdListforMDT', Data) -> enc_CellIdListforMDT(Data); encode_disp('CellBasedQMC', Data) -> enc_CellBasedQMC(Data); encode_disp('CellIdListforQMC', Data) -> enc_CellIdListforQMC(Data); encode_disp('Cdma2000PDU', Data) -> enc_Cdma2000PDU(Data); encode_disp('Cdma2000RATType', Data) -> enc_Cdma2000RATType(Data); encode_disp('Cdma2000SectorID', Data) -> enc_Cdma2000SectorID(Data); encode_disp('Cdma2000HOStatus', Data) -> enc_Cdma2000HOStatus(Data); encode_disp('Cdma2000HORequiredIndication', Data) -> enc_Cdma2000HORequiredIndication(Data); encode_disp('Cdma2000OneXSRVCCInfo', Data) -> enc_Cdma2000OneXSRVCCInfo(Data); encode_disp('Cdma2000OneXMEID', Data) -> enc_Cdma2000OneXMEID(Data); encode_disp('Cdma2000OneXMSI', Data) -> enc_Cdma2000OneXMSI(Data); encode_disp('Cdma2000OneXPilot', Data) -> enc_Cdma2000OneXPilot(Data); encode_disp('Cdma2000OneXRAND', Data) -> enc_Cdma2000OneXRAND(Data); encode_disp('Cell-Size', Data) -> 'enc_Cell-Size'(Data); encode_disp('CellType', Data) -> enc_CellType(Data); encode_disp('CGI', Data) -> enc_CGI(Data); encode_disp('CI', Data) -> enc_CI(Data); encode_disp('CNDomain', Data) -> enc_CNDomain(Data); encode_disp('CNTypeRestrictions', Data) -> enc_CNTypeRestrictions(Data); encode_disp('CNTypeRestrictions-Item', Data) -> 'enc_CNTypeRestrictions-Item'(Data); encode_disp('CNType', Data) -> enc_CNType(Data); encode_disp('ConcurrentWarningMessageIndicator', Data) -> enc_ConcurrentWarningMessageIndicator(Data); encode_disp('ConnectedengNBList', Data) -> enc_ConnectedengNBList(Data); encode_disp('ConnectedengNBItem', Data) -> enc_ConnectedengNBItem(Data); encode_disp('ContextatSource', Data) -> enc_ContextatSource(Data); encode_disp('Correlation-ID', Data) -> 'enc_Correlation-ID'(Data); encode_disp('CSFallbackIndicator', Data) -> enc_CSFallbackIndicator(Data); encode_disp('AdditionalCSFallbackIndicator', Data) -> enc_AdditionalCSFallbackIndicator(Data); encode_disp('CSG-Id', Data) -> 'enc_CSG-Id'(Data); encode_disp('CSG-IdList', Data) -> 'enc_CSG-IdList'(Data); encode_disp('CSG-IdList-Item', Data) -> 'enc_CSG-IdList-Item'(Data); encode_disp('CSGMembershipStatus', Data) -> enc_CSGMembershipStatus(Data); encode_disp('COUNTvalue', Data) -> enc_COUNTvalue(Data); encode_disp('COUNTValueExtended', Data) -> enc_COUNTValueExtended(Data); encode_disp('COUNTvaluePDCP-SNlength18', Data) -> 'enc_COUNTvaluePDCP-SNlength18'(Data); encode_disp('Coverage-Level', Data) -> 'enc_Coverage-Level'(Data); encode_disp('CriticalityDiagnostics', Data) -> enc_CriticalityDiagnostics(Data); encode_disp('CriticalityDiagnostics-IE-List', Data) -> 'enc_CriticalityDiagnostics-IE-List'(Data); encode_disp('CriticalityDiagnostics-IE-Item', Data) -> 'enc_CriticalityDiagnostics-IE-Item'(Data); encode_disp('DAPSRequestInfo', Data) -> enc_DAPSRequestInfo(Data); encode_disp('DAPSResponseInfoList', Data) -> enc_DAPSResponseInfoList(Data); encode_disp('DAPSResponseInfoItem', Data) -> enc_DAPSResponseInfoItem(Data); encode_disp('DAPSResponseInfo', Data) -> enc_DAPSResponseInfo(Data); encode_disp('DataCodingScheme', Data) -> enc_DataCodingScheme(Data); encode_disp('DataSize', Data) -> enc_DataSize(Data); encode_disp('DCN-ID', Data) -> 'enc_DCN-ID'(Data); encode_disp('ServedDCNs', Data) -> enc_ServedDCNs(Data); encode_disp('ServedDCNsItem', Data) -> enc_ServedDCNsItem(Data); encode_disp('DL-CP-SecurityInformation', Data) -> 'enc_DL-CP-SecurityInformation'(Data); encode_disp('DL-Forwarding', Data) -> 'enc_DL-Forwarding'(Data); encode_disp('DL-NAS-MAC', Data) -> 'enc_DL-NAS-MAC'(Data); encode_disp('DLCOUNT-PDCP-SNlength', Data) -> 'enc_DLCOUNT-PDCP-SNlength'(Data); encode_disp('Direct-Forwarding-Path-Availability', Data) -> 'enc_Direct-Forwarding-Path-Availability'(Data); encode_disp('Data-Forwarding-Not-Possible', Data) -> 'enc_Data-Forwarding-Not-Possible'(Data); encode_disp('DLNASPDUDeliveryAckRequest', Data) -> enc_DLNASPDUDeliveryAckRequest(Data); encode_disp('EARFCN', Data) -> enc_EARFCN(Data); encode_disp('ECGIList', Data) -> enc_ECGIList(Data); encode_disp('PWSfailedECGIList', Data) -> enc_PWSfailedECGIList(Data); encode_disp('EDT-Session', Data) -> 'enc_EDT-Session'(Data); encode_disp('EmergencyAreaIDList', Data) -> enc_EmergencyAreaIDList(Data); encode_disp('EmergencyAreaID', Data) -> enc_EmergencyAreaID(Data); encode_disp('EmergencyAreaID-Broadcast', Data) -> 'enc_EmergencyAreaID-Broadcast'(Data); encode_disp('EmergencyAreaID-Broadcast-Item', Data) -> 'enc_EmergencyAreaID-Broadcast-Item'(Data); encode_disp('EmergencyAreaID-Cancelled', Data) -> 'enc_EmergencyAreaID-Cancelled'(Data); encode_disp('EmergencyAreaID-Cancelled-Item', Data) -> 'enc_EmergencyAreaID-Cancelled-Item'(Data); encode_disp('CompletedCellinEAI', Data) -> enc_CompletedCellinEAI(Data); encode_disp('CompletedCellinEAI-Item', Data) -> 'enc_CompletedCellinEAI-Item'(Data); encode_disp('ECGI-List', Data) -> 'enc_ECGI-List'(Data); encode_disp('EmergencyAreaIDListForRestart', Data) -> enc_EmergencyAreaIDListForRestart(Data); encode_disp('EmergencyIndicator', Data) -> enc_EmergencyIndicator(Data); encode_disp('ENB-EarlyStatusTransfer-TransparentContainer', Data) -> 'enc_ENB-EarlyStatusTransfer-TransparentContainer'(Data); encode_disp('ENB-ID', Data) -> 'enc_ENB-ID'(Data); encode_disp('En-gNB-ID', Data) -> 'enc_En-gNB-ID'(Data); encode_disp('GERAN-Cell-ID', Data) -> 'enc_GERAN-Cell-ID'(Data); encode_disp('Global-ENB-ID', Data) -> 'enc_Global-ENB-ID'(Data); encode_disp('Global-en-gNB-ID', Data) -> 'enc_Global-en-gNB-ID'(Data); encode_disp('GUMMEIList', Data) -> enc_GUMMEIList(Data); encode_disp('ENB-StatusTransfer-TransparentContainer', Data) -> 'enc_ENB-StatusTransfer-TransparentContainer'(Data); encode_disp('ENB-UE-S1AP-ID', Data) -> 'enc_ENB-UE-S1AP-ID'(Data); encode_disp('ENBname', Data) -> enc_ENBname(Data); encode_disp('ENBX2TLAs', Data) -> enc_ENBX2TLAs(Data); encode_disp('EncryptionAlgorithms', Data) -> enc_EncryptionAlgorithms(Data); encode_disp('EN-DCSONConfigurationTransfer', Data) -> 'enc_EN-DCSONConfigurationTransfer'(Data); encode_disp('EN-DCSONTransferType', Data) -> 'enc_EN-DCSONTransferType'(Data); encode_disp('EN-DCTransferTypeRequest', Data) -> 'enc_EN-DCTransferTypeRequest'(Data); encode_disp('EN-DCTransferTypeReply', Data) -> 'enc_EN-DCTransferTypeReply'(Data); encode_disp('EN-DCSONeNBIdentification', Data) -> 'enc_EN-DCSONeNBIdentification'(Data); encode_disp('EN-DCSONengNBIdentification', Data) -> 'enc_EN-DCSONengNBIdentification'(Data); encode_disp('EndIndication', Data) -> enc_EndIndication(Data); encode_disp('EnhancedCoverageRestricted', Data) -> enc_EnhancedCoverageRestricted(Data); encode_disp('CE-ModeBRestricted', Data) -> 'enc_CE-ModeBRestricted'(Data); encode_disp('EPLMNs', Data) -> enc_EPLMNs(Data); encode_disp('EventType', Data) -> enc_EventType(Data); encode_disp('E-RAB-ID', Data) -> 'enc_E-RAB-ID'(Data); encode_disp('E-RABInformationList', Data) -> 'enc_E-RABInformationList'(Data); encode_disp('E-RABInformationListItem', Data) -> 'enc_E-RABInformationListItem'(Data); encode_disp('E-RABList', Data) -> 'enc_E-RABList'(Data); encode_disp('E-RABItem', Data) -> 'enc_E-RABItem'(Data); encode_disp('E-RABLevelQoSParameters', Data) -> 'enc_E-RABLevelQoSParameters'(Data); encode_disp('E-RABSecurityResultList', Data) -> 'enc_E-RABSecurityResultList'(Data); encode_disp('E-RABSecurityResultItem', Data) -> 'enc_E-RABSecurityResultItem'(Data); encode_disp('E-RABUsageReportList', Data) -> 'enc_E-RABUsageReportList'(Data); encode_disp('E-RABUsageReportItem', Data) -> 'enc_E-RABUsageReportItem'(Data); encode_disp('Ethernet-Type', Data) -> 'enc_Ethernet-Type'(Data); encode_disp('EUTRAN-CGI', Data) -> 'enc_EUTRAN-CGI'(Data); encode_disp('EUTRANRoundTripDelayEstimationInfo', Data) -> enc_EUTRANRoundTripDelayEstimationInfo(Data); encode_disp('EventL1LoggedMDTConfig', Data) -> enc_EventL1LoggedMDTConfig(Data); encode_disp('EventTrigger', Data) -> enc_EventTrigger(Data); encode_disp('ExpectedUEBehaviour', Data) -> enc_ExpectedUEBehaviour(Data); encode_disp('ExpectedUEActivityBehaviour', Data) -> enc_ExpectedUEActivityBehaviour(Data); encode_disp('ExpectedActivityPeriod', Data) -> enc_ExpectedActivityPeriod(Data); encode_disp('ExpectedIdlePeriod', Data) -> enc_ExpectedIdlePeriod(Data); encode_disp('SourceOfUEActivityBehaviourInformation', Data) -> enc_SourceOfUEActivityBehaviourInformation(Data); encode_disp('ExpectedHOInterval', Data) -> enc_ExpectedHOInterval(Data); encode_disp('ExtendedBitRate', Data) -> enc_ExtendedBitRate(Data); encode_disp('ExtendedRNC-ID', Data) -> 'enc_ExtendedRNC-ID'(Data); encode_disp('ExtendedRepetitionPeriod', Data) -> enc_ExtendedRepetitionPeriod(Data); encode_disp('Extended-UEIdentityIndexValue', Data) -> 'enc_Extended-UEIdentityIndexValue'(Data); encode_disp('FiveGSTAC', Data) -> enc_FiveGSTAC(Data); encode_disp('FiveGSTAI', Data) -> enc_FiveGSTAI(Data); encode_disp('FiveQI', Data) -> enc_FiveQI(Data); encode_disp('ForbiddenInterRATs', Data) -> enc_ForbiddenInterRATs(Data); encode_disp('ForbiddenTAs', Data) -> enc_ForbiddenTAs(Data); encode_disp('ForbiddenTAs-Item', Data) -> 'enc_ForbiddenTAs-Item'(Data); encode_disp('ForbiddenTACs', Data) -> enc_ForbiddenTACs(Data); encode_disp('ForbiddenLAs', Data) -> enc_ForbiddenLAs(Data); encode_disp('ForbiddenLAs-Item', Data) -> 'enc_ForbiddenLAs-Item'(Data); encode_disp('ForbiddenLACs', Data) -> enc_ForbiddenLACs(Data); encode_disp('GBR-QosInformation', Data) -> 'enc_GBR-QosInformation'(Data); encode_disp('GTP-TEID', Data) -> 'enc_GTP-TEID'(Data); encode_disp('GUMMEI', Data) -> enc_GUMMEI(Data); encode_disp('GUMMEIType', Data) -> enc_GUMMEIType(Data); encode_disp('GWContextReleaseIndication', Data) -> enc_GWContextReleaseIndication(Data); encode_disp('HandoverFlag', Data) -> enc_HandoverFlag(Data); encode_disp('HandoverRestrictionList', Data) -> enc_HandoverRestrictionList(Data); encode_disp('HandoverType', Data) -> enc_HandoverType(Data); encode_disp('HFN', Data) -> enc_HFN(Data); encode_disp('HFNModified', Data) -> enc_HFNModified(Data); encode_disp('HFNforPDCP-SNlength18', Data) -> 'enc_HFNforPDCP-SNlength18'(Data); encode_disp('Hysteresis', Data) -> enc_Hysteresis(Data); encode_disp('Masked-IMEISV', Data) -> 'enc_Masked-IMEISV'(Data); encode_disp('ImmediateMDT', Data) -> enc_ImmediateMDT(Data); encode_disp('IMSI', Data) -> enc_IMSI(Data); encode_disp('InformationOnRecommendedCellsAndENBsForPaging', Data) -> enc_InformationOnRecommendedCellsAndENBsForPaging(Data); encode_disp('IntegrityProtectionAlgorithms', Data) -> enc_IntegrityProtectionAlgorithms(Data); encode_disp('IntegrityProtectionIndication', Data) -> enc_IntegrityProtectionIndication(Data); encode_disp('IntegrityProtectionResult', Data) -> enc_IntegrityProtectionResult(Data); encode_disp('IntendedNumberOfPagingAttempts', Data) -> enc_IntendedNumberOfPagingAttempts(Data); encode_disp('InterfacesToTrace', Data) -> enc_InterfacesToTrace(Data); encode_disp('IntersystemMeasurementConfiguration', Data) -> enc_IntersystemMeasurementConfiguration(Data); encode_disp('InterSystemMeasurementParameters', Data) -> enc_InterSystemMeasurementParameters(Data); encode_disp('InterSystemMeasurementList', Data) -> enc_InterSystemMeasurementList(Data); encode_disp('InterSystemMeasurementItem', Data) -> enc_InterSystemMeasurementItem(Data); encode_disp('IntersystemSONConfigurationTransfer', Data) -> enc_IntersystemSONConfigurationTransfer(Data); encode_disp('IMSvoiceEPSfallbackfrom5G', Data) -> enc_IMSvoiceEPSfallbackfrom5G(Data); encode_disp('IAB-Authorized', Data) -> 'enc_IAB-Authorized'(Data); encode_disp('IAB-Node-Indication', Data) -> 'enc_IAB-Node-Indication'(Data); encode_disp('IAB-Supported', Data) -> 'enc_IAB-Supported'(Data); encode_disp('KillAllWarningMessages', Data) -> enc_KillAllWarningMessages(Data); encode_disp('LAC', Data) -> enc_LAC(Data); encode_disp('LAI', Data) -> enc_LAI(Data); encode_disp('LastVisitedCell-Item', Data) -> 'enc_LastVisitedCell-Item'(Data); encode_disp('LastVisitedEUTRANCellInformation', Data) -> enc_LastVisitedEUTRANCellInformation(Data); encode_disp('LastVisitedPSCellList', Data) -> enc_LastVisitedPSCellList(Data); encode_disp('LastVisitedPSCellInformation', Data) -> enc_LastVisitedPSCellInformation(Data); encode_disp('LastVisitedNGRANCellInformation', Data) -> enc_LastVisitedNGRANCellInformation(Data); encode_disp('LastVisitedUTRANCellInformation', Data) -> enc_LastVisitedUTRANCellInformation(Data); encode_disp('LastVisitedGERANCellInformation', Data) -> enc_LastVisitedGERANCellInformation(Data); encode_disp('L3-Information', Data) -> 'enc_L3-Information'(Data); encode_disp('LPPa-PDU', Data) -> 'enc_LPPa-PDU'(Data); encode_disp('LHN-ID', Data) -> 'enc_LHN-ID'(Data); encode_disp('Links-to-log', Data) -> 'enc_Links-to-log'(Data); encode_disp('ListeningSubframePattern', Data) -> enc_ListeningSubframePattern(Data); encode_disp('LoggedMDT', Data) -> enc_LoggedMDT(Data); encode_disp('LoggingInterval', Data) -> enc_LoggingInterval(Data); encode_disp('LoggingDuration', Data) -> enc_LoggingDuration(Data); encode_disp('LoggedMBSFNMDT', Data) -> enc_LoggedMBSFNMDT(Data); encode_disp('LoggedMDTTrigger', Data) -> enc_LoggedMDTTrigger(Data); encode_disp('LTE-M-Indication', Data) -> 'enc_LTE-M-Indication'(Data); encode_disp('LTE-NTN-TAI-Information', Data) -> 'enc_LTE-NTN-TAI-Information'(Data); encode_disp('M3Configuration', Data) -> enc_M3Configuration(Data); encode_disp('M3period', Data) -> enc_M3period(Data); encode_disp('M4Configuration', Data) -> enc_M4Configuration(Data); encode_disp('M4period', Data) -> enc_M4period(Data); encode_disp('M5Configuration', Data) -> enc_M5Configuration(Data); encode_disp('M5period', Data) -> enc_M5period(Data); encode_disp('M6Configuration', Data) -> enc_M6Configuration(Data); encode_disp('M6report-Interval', Data) -> 'enc_M6report-Interval'(Data); encode_disp('M6delay-threshold', Data) -> 'enc_M6delay-threshold'(Data); encode_disp('M7Configuration', Data) -> enc_M7Configuration(Data); encode_disp('M7period', Data) -> enc_M7period(Data); encode_disp('MDT-Activation', Data) -> 'enc_MDT-Activation'(Data); encode_disp('MDT-Location-Info', Data) -> 'enc_MDT-Location-Info'(Data); encode_disp('MDT-Configuration', Data) -> 'enc_MDT-Configuration'(Data); encode_disp('ManagementBasedMDTAllowed', Data) -> enc_ManagementBasedMDTAllowed(Data); encode_disp('MBSFN-ResultToLog', Data) -> 'enc_MBSFN-ResultToLog'(Data); encode_disp('MBSFN-ResultToLogInfo', Data) -> 'enc_MBSFN-ResultToLogInfo'(Data); encode_disp('MDTPLMNList', Data) -> enc_MDTPLMNList(Data); encode_disp('PrivacyIndicator', Data) -> enc_PrivacyIndicator(Data); encode_disp('MDTMode', Data) -> enc_MDTMode(Data); encode_disp('MDTMode-Extension', Data) -> 'enc_MDTMode-Extension'(Data); encode_disp('MeasurementsToActivate', Data) -> enc_MeasurementsToActivate(Data); encode_disp('MeasurementThresholdA2', Data) -> enc_MeasurementThresholdA2(Data); encode_disp('MeasurementThresholdL1LoggedMDT', Data) -> enc_MeasurementThresholdL1LoggedMDT(Data); encode_disp('MessageIdentifier', Data) -> enc_MessageIdentifier(Data); encode_disp('MobilityInformation', Data) -> enc_MobilityInformation(Data); encode_disp('MMEname', Data) -> enc_MMEname(Data); encode_disp('MMEPagingTarget', Data) -> enc_MMEPagingTarget(Data); encode_disp('MMERelaySupportIndicator', Data) -> enc_MMERelaySupportIndicator(Data); encode_disp('MME-Group-ID', Data) -> 'enc_MME-Group-ID'(Data); encode_disp('MME-Code', Data) -> 'enc_MME-Code'(Data); encode_disp('MME-UE-S1AP-ID', Data) -> 'enc_MME-UE-S1AP-ID'(Data); encode_disp('M-TMSI', Data) -> 'enc_M-TMSI'(Data); encode_disp('MSClassmark2', Data) -> enc_MSClassmark2(Data); encode_disp('MSClassmark3', Data) -> enc_MSClassmark3(Data); encode_disp('MutingAvailabilityIndication', Data) -> enc_MutingAvailabilityIndication(Data); encode_disp('MutingPatternInformation', Data) -> enc_MutingPatternInformation(Data); encode_disp('MDT-ConfigurationNR', Data) -> 'enc_MDT-ConfigurationNR'(Data); encode_disp('NAS-PDU', Data) -> 'enc_NAS-PDU'(Data); encode_disp('NASSecurityParametersfromE-UTRAN', Data) -> 'enc_NASSecurityParametersfromE-UTRAN'(Data); encode_disp('NASSecurityParameterstoE-UTRAN', Data) -> 'enc_NASSecurityParameterstoE-UTRAN'(Data); encode_disp('NB-IoT-DefaultPagingDRX', Data) -> 'enc_NB-IoT-DefaultPagingDRX'(Data); encode_disp('NB-IoT-PagingDRX', Data) -> 'enc_NB-IoT-PagingDRX'(Data); encode_disp('NB-IoT-Paging-eDRXInformation', Data) -> 'enc_NB-IoT-Paging-eDRXInformation'(Data); encode_disp('NB-IoT-Paging-eDRX-Cycle', Data) -> 'enc_NB-IoT-Paging-eDRX-Cycle'(Data); encode_disp('NB-IoT-PagingTimeWindow', Data) -> 'enc_NB-IoT-PagingTimeWindow'(Data); encode_disp('NB-IoT-RLF-Report-Container', Data) -> 'enc_NB-IoT-RLF-Report-Container'(Data); encode_disp('NB-IoT-UEIdentityIndexValue', Data) -> 'enc_NB-IoT-UEIdentityIndexValue'(Data); encode_disp('NextPagingAreaScope', Data) -> enc_NextPagingAreaScope(Data); encode_disp('NotifySourceeNB', Data) -> enc_NotifySourceeNB(Data); encode_disp('NRCellIdentity', Data) -> enc_NRCellIdentity(Data); encode_disp('NR-CGI', Data) -> 'enc_NR-CGI'(Data); encode_disp('NRencryptionAlgorithms', Data) -> enc_NRencryptionAlgorithms(Data); encode_disp('NRintegrityProtectionAlgorithms', Data) -> enc_NRintegrityProtectionAlgorithms(Data); encode_disp('NRrestrictioninEPSasSecondaryRAT', Data) -> enc_NRrestrictioninEPSasSecondaryRAT(Data); encode_disp('NRrestrictionin5GS', Data) -> enc_NRrestrictionin5GS(Data); encode_disp('NRUESecurityCapabilities', Data) -> enc_NRUESecurityCapabilities(Data); encode_disp('NumberofBroadcastRequest', Data) -> enc_NumberofBroadcastRequest(Data); encode_disp('NumberOfBroadcasts', Data) -> enc_NumberOfBroadcasts(Data); encode_disp('NRV2XServicesAuthorized', Data) -> enc_NRV2XServicesAuthorized(Data); encode_disp('NRUESidelinkAggregateMaximumBitrate', Data) -> enc_NRUESidelinkAggregateMaximumBitrate(Data); encode_disp('OldBSS-ToNewBSS-Information', Data) -> 'enc_OldBSS-ToNewBSS-Information'(Data); encode_disp('OverloadAction', Data) -> enc_OverloadAction(Data); encode_disp('OverloadResponse', Data) -> enc_OverloadResponse(Data); encode_disp('Packet-LossRate', Data) -> 'enc_Packet-LossRate'(Data); encode_disp('PagingAttemptInformation', Data) -> enc_PagingAttemptInformation(Data); encode_disp('PagingAttemptCount', Data) -> enc_PagingAttemptCount(Data); encode_disp('Paging-eDRXInformation', Data) -> 'enc_Paging-eDRXInformation'(Data); encode_disp('Paging-eDRX-Cycle', Data) -> 'enc_Paging-eDRX-Cycle'(Data); encode_disp('PagingTimeWindow', Data) -> enc_PagingTimeWindow(Data); encode_disp('PagingDRX', Data) -> enc_PagingDRX(Data); encode_disp('PagingPriority', Data) -> enc_PagingPriority(Data); encode_disp('PagingProbabilityInformation', Data) -> enc_PagingProbabilityInformation(Data); encode_disp('PagingCause', Data) -> enc_PagingCause(Data); encode_disp('PC5QoSParameters', Data) -> enc_PC5QoSParameters(Data); encode_disp('PC5QoSFlowList', Data) -> enc_PC5QoSFlowList(Data); encode_disp('PC5QoSFlowItem', Data) -> enc_PC5QoSFlowItem(Data); encode_disp('PC5FlowBitRates', Data) -> enc_PC5FlowBitRates(Data); encode_disp('PDCP-SN', Data) -> 'enc_PDCP-SN'(Data); encode_disp('PDCP-SNExtended', Data) -> 'enc_PDCP-SNExtended'(Data); encode_disp('PDCP-SNlength18', Data) -> 'enc_PDCP-SNlength18'(Data); encode_disp('PendingDataIndication', Data) -> enc_PendingDataIndication(Data); encode_disp('M1PeriodicReporting', Data) -> enc_M1PeriodicReporting(Data); encode_disp('PLMNidentity', Data) -> enc_PLMNidentity(Data); encode_disp('PLMNAreaBasedQMC', Data) -> enc_PLMNAreaBasedQMC(Data); encode_disp('PLMNListforQMC', Data) -> enc_PLMNListforQMC(Data); encode_disp('Port-Number', Data) -> 'enc_Port-Number'(Data); encode_disp('Pre-emptionCapability', Data) -> 'enc_Pre-emptionCapability'(Data); encode_disp('Pre-emptionVulnerability', Data) -> 'enc_Pre-emptionVulnerability'(Data); encode_disp('PriorityLevel', Data) -> enc_PriorityLevel(Data); encode_disp('ProSeAuthorized', Data) -> enc_ProSeAuthorized(Data); encode_disp('ProSeDirectDiscovery', Data) -> enc_ProSeDirectDiscovery(Data); encode_disp('ProSeUEtoNetworkRelaying', Data) -> enc_ProSeUEtoNetworkRelaying(Data); encode_disp('ProSeDirectCommunication', Data) -> enc_ProSeDirectCommunication(Data); encode_disp('PS-ServiceNotAvailable', Data) -> 'enc_PS-ServiceNotAvailable'(Data); encode_disp('PSCellInformation', Data) -> enc_PSCellInformation(Data); encode_disp('QCI', Data) -> enc_QCI(Data); encode_disp('RACSIndication', Data) -> enc_RACSIndication(Data); encode_disp('RAN-UE-NGAP-ID', Data) -> 'enc_RAN-UE-NGAP-ID'(Data); encode_disp('Range', Data) -> enc_Range(Data); encode_disp('ReceiveStatusofULPDCPSDUs', Data) -> enc_ReceiveStatusofULPDCPSDUs(Data); encode_disp('ReceiveStatusOfULPDCPSDUsExtended', Data) -> enc_ReceiveStatusOfULPDCPSDUsExtended(Data); encode_disp('ReceiveStatusOfULPDCPSDUsPDCP-SNlength18', Data) -> 'enc_ReceiveStatusOfULPDCPSDUsPDCP-SNlength18'(Data); encode_disp('RecommendedCellsForPaging', Data) -> enc_RecommendedCellsForPaging(Data); encode_disp('RecommendedCellList', Data) -> enc_RecommendedCellList(Data); encode_disp('RecommendedCellItem', Data) -> enc_RecommendedCellItem(Data); encode_disp('RecommendedENBsForPaging', Data) -> enc_RecommendedENBsForPaging(Data); encode_disp('RecommendedENBList', Data) -> enc_RecommendedENBList(Data); encode_disp('RecommendedENBItem', Data) -> enc_RecommendedENBItem(Data); encode_disp('RelativeMMECapacity', Data) -> enc_RelativeMMECapacity(Data); encode_disp('RelayNode-Indicator', Data) -> 'enc_RelayNode-Indicator'(Data); encode_disp('RAC', Data) -> enc_RAC(Data); encode_disp('RAT-Restrictions', Data) -> 'enc_RAT-Restrictions'(Data); encode_disp('RAT-RestrictionsItem', Data) -> 'enc_RAT-RestrictionsItem'(Data); encode_disp('RAT-Type', Data) -> 'enc_RAT-Type'(Data); encode_disp('ReportAmountMDT', Data) -> enc_ReportAmountMDT(Data); encode_disp('ReportIntervalMDT', Data) -> enc_ReportIntervalMDT(Data); encode_disp('M1ReportingTrigger', Data) -> enc_M1ReportingTrigger(Data); encode_disp('RequestType', Data) -> enc_RequestType(Data); encode_disp('RequestTypeAdditionalInfo', Data) -> enc_RequestTypeAdditionalInfo(Data); encode_disp('RIMTransfer', Data) -> enc_RIMTransfer(Data); encode_disp('RIMInformation', Data) -> enc_RIMInformation(Data); encode_disp('RIMRoutingAddress', Data) -> enc_RIMRoutingAddress(Data); encode_disp('ReportArea', Data) -> enc_ReportArea(Data); encode_disp('RepetitionPeriod', Data) -> enc_RepetitionPeriod(Data); encode_disp('RLFReportInformation', Data) -> enc_RLFReportInformation(Data); encode_disp('RNC-ID', Data) -> 'enc_RNC-ID'(Data); encode_disp('RRC-Container', Data) -> 'enc_RRC-Container'(Data); encode_disp('RRC-Establishment-Cause', Data) -> 'enc_RRC-Establishment-Cause'(Data); encode_disp('ECGIListForRestart', Data) -> enc_ECGIListForRestart(Data); encode_disp('Routing-ID', Data) -> 'enc_Routing-ID'(Data); encode_disp('SecurityKey', Data) -> enc_SecurityKey(Data); encode_disp('SecurityContext', Data) -> enc_SecurityContext(Data); encode_disp('SecondaryRATType', Data) -> enc_SecondaryRATType(Data); encode_disp('SecondaryRATDataUsageRequest', Data) -> enc_SecondaryRATDataUsageRequest(Data); encode_disp('SecondaryRATDataUsageReportList', Data) -> enc_SecondaryRATDataUsageReportList(Data); encode_disp('SecondaryRATDataUsageReportItem', Data) -> enc_SecondaryRATDataUsageReportItem(Data); encode_disp('SecurityIndication', Data) -> enc_SecurityIndication(Data); encode_disp('SecurityResult', Data) -> enc_SecurityResult(Data); encode_disp('SensorMeasConfig', Data) -> enc_SensorMeasConfig(Data); encode_disp('SensorMeasConfigNameItem', Data) -> enc_SensorMeasConfigNameItem(Data); encode_disp('SensorMeasConfigNameList', Data) -> enc_SensorMeasConfigNameList(Data); encode_disp('SensorMeasurementConfiguration', Data) -> enc_SensorMeasurementConfiguration(Data); encode_disp('SensorNameConfig', Data) -> enc_SensorNameConfig(Data); encode_disp('SerialNumber', Data) -> enc_SerialNumber(Data); encode_disp('ServiceType', Data) -> enc_ServiceType(Data); encode_disp('SONInformation', Data) -> enc_SONInformation(Data); encode_disp('SONInformation-Extension', Data) -> 'enc_SONInformation-Extension'(Data); encode_disp('SONInformationRequest', Data) -> enc_SONInformationRequest(Data); encode_disp('SONInformationReply', Data) -> enc_SONInformationReply(Data); encode_disp('SONInformationReport', Data) -> enc_SONInformationReport(Data); encode_disp('SONConfigurationTransfer', Data) -> enc_SONConfigurationTransfer(Data); encode_disp('SynchronisationInformation', Data) -> enc_SynchronisationInformation(Data); encode_disp('Source-ToTarget-TransparentContainer', Data) -> 'enc_Source-ToTarget-TransparentContainer'(Data); encode_disp('SourceBSS-ToTargetBSS-TransparentContainer', Data) -> 'enc_SourceBSS-ToTargetBSS-TransparentContainer'(Data); encode_disp('SourceeNB-ID', Data) -> 'enc_SourceeNB-ID'(Data); encode_disp('SRVCCOperationNotPossible', Data) -> enc_SRVCCOperationNotPossible(Data); encode_disp('SRVCCOperationPossible', Data) -> enc_SRVCCOperationPossible(Data); encode_disp('SRVCCHOIndication', Data) -> enc_SRVCCHOIndication(Data); encode_disp('SourceNodeID', Data) -> enc_SourceNodeID(Data); encode_disp('SourceNodeID-Extension', Data) -> 'enc_SourceNodeID-Extension'(Data); encode_disp('SourceeNB-ToTargeteNB-TransparentContainer', Data) -> 'enc_SourceeNB-ToTargeteNB-TransparentContainer'(Data); encode_disp('SourceNgRanNode-ID', Data) -> 'enc_SourceNgRanNode-ID'(Data); encode_disp('SourceRNC-ToTargetRNC-TransparentContainer', Data) -> 'enc_SourceRNC-ToTargetRNC-TransparentContainer'(Data); encode_disp('SourceNgRanNode-ToTargetNgRanNode-TransparentContainer', Data) -> 'enc_SourceNgRanNode-ToTargetNgRanNode-TransparentContainer'(Data); encode_disp('ServedGUMMEIs', Data) -> enc_ServedGUMMEIs(Data); encode_disp('ServedGUMMEIsItem', Data) -> enc_ServedGUMMEIsItem(Data); encode_disp('ServedGroupIDs', Data) -> enc_ServedGroupIDs(Data); encode_disp('ServedMMECs', Data) -> enc_ServedMMECs(Data); encode_disp('ServedPLMNs', Data) -> enc_ServedPLMNs(Data); encode_disp('SubscriberProfileIDforRFP', Data) -> enc_SubscriberProfileIDforRFP(Data); encode_disp('Subscription-Based-UE-DifferentiationInfo', Data) -> 'enc_Subscription-Based-UE-DifferentiationInfo'(Data); encode_disp('ScheduledCommunicationTime', Data) -> enc_ScheduledCommunicationTime(Data); encode_disp('SupportedTAs', Data) -> enc_SupportedTAs(Data); encode_disp('SupportedTAs-Item', Data) -> 'enc_SupportedTAs-Item'(Data); encode_disp('StratumLevel', Data) -> enc_StratumLevel(Data); encode_disp('SynchronisationStatus', Data) -> enc_SynchronisationStatus(Data); encode_disp('TimeSynchronisationInfo', Data) -> enc_TimeSynchronisationInfo(Data); encode_disp('S-TMSI', Data) -> 'enc_S-TMSI'(Data); encode_disp('TAC', Data) -> enc_TAC(Data); encode_disp('TACList-In-LTE-NTN', Data) -> 'enc_TACList-In-LTE-NTN'(Data); encode_disp('TAIBasedMDT', Data) -> enc_TAIBasedMDT(Data); encode_disp('TAIListforMDT', Data) -> enc_TAIListforMDT(Data); encode_disp('TAIListforWarning', Data) -> enc_TAIListforWarning(Data); encode_disp('TAI', Data) -> enc_TAI(Data); encode_disp('TAI-Broadcast', Data) -> 'enc_TAI-Broadcast'(Data); encode_disp('TAI-Broadcast-Item', Data) -> 'enc_TAI-Broadcast-Item'(Data); encode_disp('TAI-Cancelled', Data) -> 'enc_TAI-Cancelled'(Data); encode_disp('TAI-Cancelled-Item', Data) -> 'enc_TAI-Cancelled-Item'(Data); encode_disp('TABasedMDT', Data) -> enc_TABasedMDT(Data); encode_disp('TAListforMDT', Data) -> enc_TAListforMDT(Data); encode_disp('TABasedQMC', Data) -> enc_TABasedQMC(Data); encode_disp('TAListforQMC', Data) -> enc_TAListforQMC(Data); encode_disp('TAIBasedQMC', Data) -> enc_TAIBasedQMC(Data); encode_disp('TAIListforQMC', Data) -> enc_TAIListforQMC(Data); encode_disp('CompletedCellinTAI', Data) -> enc_CompletedCellinTAI(Data); encode_disp('CompletedCellinTAI-Item', Data) -> 'enc_CompletedCellinTAI-Item'(Data); encode_disp('TBCD-STRING', Data) -> 'enc_TBCD-STRING'(Data); encode_disp('TargetID', Data) -> enc_TargetID(Data); encode_disp('TargeteNB-ID', Data) -> 'enc_TargeteNB-ID'(Data); encode_disp('TargetRNC-ID', Data) -> 'enc_TargetRNC-ID'(Data); encode_disp('TargetNgRanNode-ID', Data) -> 'enc_TargetNgRanNode-ID'(Data); encode_disp('Global-RAN-NODE-ID', Data) -> 'enc_Global-RAN-NODE-ID'(Data); encode_disp('GNB', Data) -> enc_GNB(Data); encode_disp('Global-GNB-ID', Data) -> 'enc_Global-GNB-ID'(Data); encode_disp('GNB-Identity', Data) -> 'enc_GNB-Identity'(Data); encode_disp('NG-eNB', Data) -> 'enc_NG-eNB'(Data); encode_disp('GNB-ID', Data) -> 'enc_GNB-ID'(Data); encode_disp('TargeteNB-ToSourceeNB-TransparentContainer', Data) -> 'enc_TargeteNB-ToSourceeNB-TransparentContainer'(Data); encode_disp('Target-ToSource-TransparentContainer', Data) -> 'enc_Target-ToSource-TransparentContainer'(Data); encode_disp('TargetRNC-ToSourceRNC-TransparentContainer', Data) -> 'enc_TargetRNC-ToSourceRNC-TransparentContainer'(Data); encode_disp('TargetBSS-ToSourceBSS-TransparentContainer', Data) -> 'enc_TargetBSS-ToSourceBSS-TransparentContainer'(Data); encode_disp('TargetNgRanNode-ToSourceNgRanNode-TransparentContainer', Data) -> 'enc_TargetNgRanNode-ToSourceNgRanNode-TransparentContainer'(Data); encode_disp('M1ThresholdEventA2', Data) -> enc_M1ThresholdEventA2(Data); encode_disp('Threshold-RSRP', Data) -> 'enc_Threshold-RSRP'(Data); encode_disp('Threshold-RSRQ', Data) -> 'enc_Threshold-RSRQ'(Data); encode_disp('TimeToTrigger', Data) -> enc_TimeToTrigger(Data); encode_disp('TimeToWait', Data) -> enc_TimeToWait(Data); encode_disp('Time-UE-StayedInCell', Data) -> 'enc_Time-UE-StayedInCell'(Data); encode_disp('Time-UE-StayedInCell-EnhancedGranularity', Data) -> 'enc_Time-UE-StayedInCell-EnhancedGranularity'(Data); encode_disp('TimeSinceSecondaryNodeRelease', Data) -> enc_TimeSinceSecondaryNodeRelease(Data); encode_disp('TransportInformation', Data) -> enc_TransportInformation(Data); encode_disp('TransportLayerAddress', Data) -> enc_TransportLayerAddress(Data); encode_disp('TraceActivation', Data) -> enc_TraceActivation(Data); encode_disp('TraceDepth', Data) -> enc_TraceDepth(Data); encode_disp('E-UTRAN-Trace-ID', Data) -> 'enc_E-UTRAN-Trace-ID'(Data); encode_disp('TrafficLoadReductionIndication', Data) -> enc_TrafficLoadReductionIndication(Data); encode_disp('TunnelInformation', Data) -> enc_TunnelInformation(Data); encode_disp('TypeOfError', Data) -> enc_TypeOfError(Data); encode_disp('TAIListForRestart', Data) -> enc_TAIListForRestart(Data); encode_disp('UEAggregateMaximumBitrate', Data) -> enc_UEAggregateMaximumBitrate(Data); encode_disp('UEAppLayerMeasConfig', Data) -> enc_UEAppLayerMeasConfig(Data); encode_disp('UECapabilityInfoRequest', Data) -> enc_UECapabilityInfoRequest(Data); encode_disp('UE-RetentionInformation', Data) -> 'enc_UE-RetentionInformation'(Data); encode_disp('UE-S1AP-IDs', Data) -> 'enc_UE-S1AP-IDs'(Data); encode_disp('UE-S1AP-ID-pair', Data) -> 'enc_UE-S1AP-ID-pair'(Data); encode_disp('UE-associatedLogicalS1-ConnectionItem', Data) -> 'enc_UE-associatedLogicalS1-ConnectionItem'(Data); encode_disp('UEIdentityIndexValue', Data) -> enc_UEIdentityIndexValue(Data); encode_disp('UE-HistoryInformation', Data) -> 'enc_UE-HistoryInformation'(Data); encode_disp('UE-HistoryInformationFromTheUE', Data) -> 'enc_UE-HistoryInformationFromTheUE'(Data); encode_disp('UEPagingID', Data) -> enc_UEPagingID(Data); encode_disp('UERadioCapability', Data) -> enc_UERadioCapability(Data); encode_disp('UERadioCapabilityForPaging', Data) -> enc_UERadioCapabilityForPaging(Data); encode_disp('UERadioCapabilityID', Data) -> enc_UERadioCapabilityID(Data); encode_disp('UE-RLF-Report-Container', Data) -> 'enc_UE-RLF-Report-Container'(Data); encode_disp('UE-RLF-Report-Container-for-extended-bands', Data) -> 'enc_UE-RLF-Report-Container-for-extended-bands'(Data); encode_disp('UESecurityCapabilities', Data) -> enc_UESecurityCapabilities(Data); encode_disp('UESidelinkAggregateMaximumBitrate', Data) -> enc_UESidelinkAggregateMaximumBitrate(Data); encode_disp('UE-Usage-Type', Data) -> 'enc_UE-Usage-Type'(Data); encode_disp('UL-CP-SecurityInformation', Data) -> 'enc_UL-CP-SecurityInformation'(Data); encode_disp('UL-NAS-MAC', Data) -> 'enc_UL-NAS-MAC'(Data); encode_disp('UL-NAS-Count', Data) -> 'enc_UL-NAS-Count'(Data); encode_disp('UnlicensedSpectrumRestriction', Data) -> enc_UnlicensedSpectrumRestriction(Data); encode_disp('URI-Address', Data) -> 'enc_URI-Address'(Data); encode_disp('UserLocationInformation', Data) -> enc_UserLocationInformation(Data); encode_disp('UEUserPlaneCIoTSupportIndicator', Data) -> enc_UEUserPlaneCIoTSupportIndicator(Data); encode_disp('UE-Application-Layer-Measurement-Capability', Data) -> 'enc_UE-Application-Layer-Measurement-Capability'(Data); encode_disp('VoiceSupportMatchIndicator', Data) -> enc_VoiceSupportMatchIndicator(Data); encode_disp('V2XServicesAuthorized', Data) -> enc_V2XServicesAuthorized(Data); encode_disp('VehicleUE', Data) -> enc_VehicleUE(Data); encode_disp('PedestrianUE', Data) -> enc_PedestrianUE(Data); encode_disp('WarningAreaCoordinates', Data) -> enc_WarningAreaCoordinates(Data); encode_disp('WarningAreaList', Data) -> enc_WarningAreaList(Data); encode_disp('WarningType', Data) -> enc_WarningType(Data); encode_disp('WarningSecurityInfo', Data) -> enc_WarningSecurityInfo(Data); encode_disp('WarningMessageContents', Data) -> enc_WarningMessageContents(Data); encode_disp('WLANMeasurementConfiguration', Data) -> enc_WLANMeasurementConfiguration(Data); encode_disp('WLANMeasConfigNameList', Data) -> enc_WLANMeasConfigNameList(Data); encode_disp('WLANMeasConfig', Data) -> enc_WLANMeasConfig(Data); encode_disp('WLANName', Data) -> enc_WLANName(Data); encode_disp('WUS-Assistance-Information', Data) -> 'enc_WUS-Assistance-Information'(Data); encode_disp('X2TNLConfigurationInfo', Data) -> enc_X2TNLConfigurationInfo(Data); encode_disp('ENBX2ExtTLAs', Data) -> enc_ENBX2ExtTLAs(Data); encode_disp('ENBX2ExtTLA', Data) -> enc_ENBX2ExtTLA(Data); encode_disp('ENBX2GTPTLAs', Data) -> enc_ENBX2GTPTLAs(Data); encode_disp('ENBIndirectX2TransportLayerAddresses', Data) -> enc_ENBIndirectX2TransportLayerAddresses(Data); encode_disp(Type, _Data) -> exit({error,{asn1,{undefined_type,Type}}}). decode_disp('Additional-GUTI', Data) -> 'dec_Additional-GUTI'(Data); decode_disp('AdditionalRRMPriorityIndex', Data) -> dec_AdditionalRRMPriorityIndex(Data); decode_disp('AerialUEsubscriptionInformation', Data) -> dec_AerialUEsubscriptionInformation(Data); decode_disp('AreaScopeOfMDT', Data) -> dec_AreaScopeOfMDT(Data); decode_disp('AreaScopeOfQMC', Data) -> dec_AreaScopeOfQMC(Data); decode_disp('AllocationAndRetentionPriority', Data) -> dec_AllocationAndRetentionPriority(Data); decode_disp('AssistanceDataForCECapableUEs', Data) -> dec_AssistanceDataForCECapableUEs(Data); decode_disp('AssistanceDataForPaging', Data) -> dec_AssistanceDataForPaging(Data); decode_disp('AssistanceDataForRecommendedCells', Data) -> dec_AssistanceDataForRecommendedCells(Data); decode_disp('Bearers-SubjectToStatusTransferList', Data) -> 'dec_Bearers-SubjectToStatusTransferList'(Data); decode_disp('Bearers-SubjectToStatusTransfer-Item', Data) -> 'dec_Bearers-SubjectToStatusTransfer-Item'(Data); decode_disp('Bearers-SubjectToEarlyStatusTransferList', Data) -> 'dec_Bearers-SubjectToEarlyStatusTransferList'(Data); decode_disp('Bearers-SubjectToEarlyStatusTransfer-Item', Data) -> 'dec_Bearers-SubjectToEarlyStatusTransfer-Item'(Data); decode_disp('BearerType', Data) -> dec_BearerType(Data); decode_disp('BitRate', Data) -> dec_BitRate(Data); decode_disp('BluetoothMeasurementConfiguration', Data) -> dec_BluetoothMeasurementConfiguration(Data); decode_disp('BluetoothMeasConfigNameList', Data) -> dec_BluetoothMeasConfigNameList(Data); decode_disp('BluetoothMeasConfig', Data) -> dec_BluetoothMeasConfig(Data); decode_disp('BluetoothName', Data) -> dec_BluetoothName(Data); decode_disp('BPLMNs', Data) -> dec_BPLMNs(Data); decode_disp('BroadcastCancelledAreaList', Data) -> dec_BroadcastCancelledAreaList(Data); decode_disp('BroadcastCompletedAreaList', Data) -> dec_BroadcastCompletedAreaList(Data); decode_disp('CancelledCellinEAI', Data) -> dec_CancelledCellinEAI(Data); decode_disp('CancelledCellinEAI-Item', Data) -> 'dec_CancelledCellinEAI-Item'(Data); decode_disp('CancelledCellinTAI', Data) -> dec_CancelledCellinTAI(Data); decode_disp('CancelledCellinTAI-Item', Data) -> 'dec_CancelledCellinTAI-Item'(Data); decode_disp('Cause', Data) -> dec_Cause(Data); decode_disp('CauseMisc', Data) -> dec_CauseMisc(Data); decode_disp('CauseProtocol', Data) -> dec_CauseProtocol(Data); decode_disp('CauseRadioNetwork', Data) -> dec_CauseRadioNetwork(Data); decode_disp('CauseTransport', Data) -> dec_CauseTransport(Data); decode_disp('CauseNas', Data) -> dec_CauseNas(Data); decode_disp('CellAccessMode', Data) -> dec_CellAccessMode(Data); decode_disp('CellIdentifierAndCELevelForCECapableUEs', Data) -> dec_CellIdentifierAndCELevelForCECapableUEs(Data); decode_disp('CELevel', Data) -> dec_CELevel(Data); decode_disp('CE-mode-B-SupportIndicator', Data) -> 'dec_CE-mode-B-SupportIndicator'(Data); decode_disp('CellIdentity', Data) -> dec_CellIdentity(Data); decode_disp('CellID-Broadcast', Data) -> 'dec_CellID-Broadcast'(Data); decode_disp('CellID-Broadcast-Item', Data) -> 'dec_CellID-Broadcast-Item'(Data); decode_disp('CellID-Cancelled', Data) -> 'dec_CellID-Cancelled'(Data); decode_disp('CellID-Cancelled-Item', Data) -> 'dec_CellID-Cancelled-Item'(Data); decode_disp('CellBasedMDT', Data) -> dec_CellBasedMDT(Data); decode_disp('CellIdListforMDT', Data) -> dec_CellIdListforMDT(Data); decode_disp('CellBasedQMC', Data) -> dec_CellBasedQMC(Data); decode_disp('CellIdListforQMC', Data) -> dec_CellIdListforQMC(Data); decode_disp('Cdma2000PDU', Data) -> dec_Cdma2000PDU(Data); decode_disp('Cdma2000RATType', Data) -> dec_Cdma2000RATType(Data); decode_disp('Cdma2000SectorID', Data) -> dec_Cdma2000SectorID(Data); decode_disp('Cdma2000HOStatus', Data) -> dec_Cdma2000HOStatus(Data); decode_disp('Cdma2000HORequiredIndication', Data) -> dec_Cdma2000HORequiredIndication(Data); decode_disp('Cdma2000OneXSRVCCInfo', Data) -> dec_Cdma2000OneXSRVCCInfo(Data); decode_disp('Cdma2000OneXMEID', Data) -> dec_Cdma2000OneXMEID(Data); decode_disp('Cdma2000OneXMSI', Data) -> dec_Cdma2000OneXMSI(Data); decode_disp('Cdma2000OneXPilot', Data) -> dec_Cdma2000OneXPilot(Data); decode_disp('Cdma2000OneXRAND', Data) -> dec_Cdma2000OneXRAND(Data); decode_disp('Cell-Size', Data) -> 'dec_Cell-Size'(Data); decode_disp('CellType', Data) -> dec_CellType(Data); decode_disp('CGI', Data) -> dec_CGI(Data); decode_disp('CI', Data) -> dec_CI(Data); decode_disp('CNDomain', Data) -> dec_CNDomain(Data); decode_disp('CNTypeRestrictions', Data) -> dec_CNTypeRestrictions(Data); decode_disp('CNTypeRestrictions-Item', Data) -> 'dec_CNTypeRestrictions-Item'(Data); decode_disp('CNType', Data) -> dec_CNType(Data); decode_disp('ConcurrentWarningMessageIndicator', Data) -> dec_ConcurrentWarningMessageIndicator(Data); decode_disp('ConnectedengNBList', Data) -> dec_ConnectedengNBList(Data); decode_disp('ConnectedengNBItem', Data) -> dec_ConnectedengNBItem(Data); decode_disp('ContextatSource', Data) -> dec_ContextatSource(Data); decode_disp('Correlation-ID', Data) -> 'dec_Correlation-ID'(Data); decode_disp('CSFallbackIndicator', Data) -> dec_CSFallbackIndicator(Data); decode_disp('AdditionalCSFallbackIndicator', Data) -> dec_AdditionalCSFallbackIndicator(Data); decode_disp('CSG-Id', Data) -> 'dec_CSG-Id'(Data); decode_disp('CSG-IdList', Data) -> 'dec_CSG-IdList'(Data); decode_disp('CSG-IdList-Item', Data) -> 'dec_CSG-IdList-Item'(Data); decode_disp('CSGMembershipStatus', Data) -> dec_CSGMembershipStatus(Data); decode_disp('COUNTvalue', Data) -> dec_COUNTvalue(Data); decode_disp('COUNTValueExtended', Data) -> dec_COUNTValueExtended(Data); decode_disp('COUNTvaluePDCP-SNlength18', Data) -> 'dec_COUNTvaluePDCP-SNlength18'(Data); decode_disp('Coverage-Level', Data) -> 'dec_Coverage-Level'(Data); decode_disp('CriticalityDiagnostics', Data) -> dec_CriticalityDiagnostics(Data); decode_disp('CriticalityDiagnostics-IE-List', Data) -> 'dec_CriticalityDiagnostics-IE-List'(Data); decode_disp('CriticalityDiagnostics-IE-Item', Data) -> 'dec_CriticalityDiagnostics-IE-Item'(Data); decode_disp('DAPSRequestInfo', Data) -> dec_DAPSRequestInfo(Data); decode_disp('DAPSResponseInfoList', Data) -> dec_DAPSResponseInfoList(Data); decode_disp('DAPSResponseInfoItem', Data) -> dec_DAPSResponseInfoItem(Data); decode_disp('DAPSResponseInfo', Data) -> dec_DAPSResponseInfo(Data); decode_disp('DataCodingScheme', Data) -> dec_DataCodingScheme(Data); decode_disp('DataSize', Data) -> dec_DataSize(Data); decode_disp('DCN-ID', Data) -> 'dec_DCN-ID'(Data); decode_disp('ServedDCNs', Data) -> dec_ServedDCNs(Data); decode_disp('ServedDCNsItem', Data) -> dec_ServedDCNsItem(Data); decode_disp('DL-CP-SecurityInformation', Data) -> 'dec_DL-CP-SecurityInformation'(Data); decode_disp('DL-Forwarding', Data) -> 'dec_DL-Forwarding'(Data); decode_disp('DL-NAS-MAC', Data) -> 'dec_DL-NAS-MAC'(Data); decode_disp('DLCOUNT-PDCP-SNlength', Data) -> 'dec_DLCOUNT-PDCP-SNlength'(Data); decode_disp('Direct-Forwarding-Path-Availability', Data) -> 'dec_Direct-Forwarding-Path-Availability'(Data); decode_disp('Data-Forwarding-Not-Possible', Data) -> 'dec_Data-Forwarding-Not-Possible'(Data); decode_disp('DLNASPDUDeliveryAckRequest', Data) -> dec_DLNASPDUDeliveryAckRequest(Data); decode_disp('EARFCN', Data) -> dec_EARFCN(Data); decode_disp('ECGIList', Data) -> dec_ECGIList(Data); decode_disp('PWSfailedECGIList', Data) -> dec_PWSfailedECGIList(Data); decode_disp('EDT-Session', Data) -> 'dec_EDT-Session'(Data); decode_disp('EmergencyAreaIDList', Data) -> dec_EmergencyAreaIDList(Data); decode_disp('EmergencyAreaID', Data) -> dec_EmergencyAreaID(Data); decode_disp('EmergencyAreaID-Broadcast', Data) -> 'dec_EmergencyAreaID-Broadcast'(Data); decode_disp('EmergencyAreaID-Broadcast-Item', Data) -> 'dec_EmergencyAreaID-Broadcast-Item'(Data); decode_disp('EmergencyAreaID-Cancelled', Data) -> 'dec_EmergencyAreaID-Cancelled'(Data); decode_disp('EmergencyAreaID-Cancelled-Item', Data) -> 'dec_EmergencyAreaID-Cancelled-Item'(Data); decode_disp('CompletedCellinEAI', Data) -> dec_CompletedCellinEAI(Data); decode_disp('CompletedCellinEAI-Item', Data) -> 'dec_CompletedCellinEAI-Item'(Data); decode_disp('ECGI-List', Data) -> 'dec_ECGI-List'(Data); decode_disp('EmergencyAreaIDListForRestart', Data) -> dec_EmergencyAreaIDListForRestart(Data); decode_disp('EmergencyIndicator', Data) -> dec_EmergencyIndicator(Data); decode_disp('ENB-EarlyStatusTransfer-TransparentContainer', Data) -> 'dec_ENB-EarlyStatusTransfer-TransparentContainer'(Data); decode_disp('ENB-ID', Data) -> 'dec_ENB-ID'(Data); decode_disp('En-gNB-ID', Data) -> 'dec_En-gNB-ID'(Data); decode_disp('GERAN-Cell-ID', Data) -> 'dec_GERAN-Cell-ID'(Data); decode_disp('Global-ENB-ID', Data) -> 'dec_Global-ENB-ID'(Data); decode_disp('Global-en-gNB-ID', Data) -> 'dec_Global-en-gNB-ID'(Data); decode_disp('GUMMEIList', Data) -> dec_GUMMEIList(Data); decode_disp('ENB-StatusTransfer-TransparentContainer', Data) -> 'dec_ENB-StatusTransfer-TransparentContainer'(Data); decode_disp('ENB-UE-S1AP-ID', Data) -> 'dec_ENB-UE-S1AP-ID'(Data); decode_disp('ENBname', Data) -> dec_ENBname(Data); decode_disp('ENBX2TLAs', Data) -> dec_ENBX2TLAs(Data); decode_disp('EncryptionAlgorithms', Data) -> dec_EncryptionAlgorithms(Data); decode_disp('EN-DCSONConfigurationTransfer', Data) -> 'dec_EN-DCSONConfigurationTransfer'(Data); decode_disp('EN-DCSONTransferType', Data) -> 'dec_EN-DCSONTransferType'(Data); decode_disp('EN-DCTransferTypeRequest', Data) -> 'dec_EN-DCTransferTypeRequest'(Data); decode_disp('EN-DCTransferTypeReply', Data) -> 'dec_EN-DCTransferTypeReply'(Data); decode_disp('EN-DCSONeNBIdentification', Data) -> 'dec_EN-DCSONeNBIdentification'(Data); decode_disp('EN-DCSONengNBIdentification', Data) -> 'dec_EN-DCSONengNBIdentification'(Data); decode_disp('EndIndication', Data) -> dec_EndIndication(Data); decode_disp('EnhancedCoverageRestricted', Data) -> dec_EnhancedCoverageRestricted(Data); decode_disp('CE-ModeBRestricted', Data) -> 'dec_CE-ModeBRestricted'(Data); decode_disp('EPLMNs', Data) -> dec_EPLMNs(Data); decode_disp('EventType', Data) -> dec_EventType(Data); decode_disp('E-RAB-ID', Data) -> 'dec_E-RAB-ID'(Data); decode_disp('E-RABInformationList', Data) -> 'dec_E-RABInformationList'(Data); decode_disp('E-RABInformationListItem', Data) -> 'dec_E-RABInformationListItem'(Data); decode_disp('E-RABList', Data) -> 'dec_E-RABList'(Data); decode_disp('E-RABItem', Data) -> 'dec_E-RABItem'(Data); decode_disp('E-RABLevelQoSParameters', Data) -> 'dec_E-RABLevelQoSParameters'(Data); decode_disp('E-RABSecurityResultList', Data) -> 'dec_E-RABSecurityResultList'(Data); decode_disp('E-RABSecurityResultItem', Data) -> 'dec_E-RABSecurityResultItem'(Data); decode_disp('E-RABUsageReportList', Data) -> 'dec_E-RABUsageReportList'(Data); decode_disp('E-RABUsageReportItem', Data) -> 'dec_E-RABUsageReportItem'(Data); decode_disp('Ethernet-Type', Data) -> 'dec_Ethernet-Type'(Data); decode_disp('EUTRAN-CGI', Data) -> 'dec_EUTRAN-CGI'(Data); decode_disp('EUTRANRoundTripDelayEstimationInfo', Data) -> dec_EUTRANRoundTripDelayEstimationInfo(Data); decode_disp('EventL1LoggedMDTConfig', Data) -> dec_EventL1LoggedMDTConfig(Data); decode_disp('EventTrigger', Data) -> dec_EventTrigger(Data); decode_disp('ExpectedUEBehaviour', Data) -> dec_ExpectedUEBehaviour(Data); decode_disp('ExpectedUEActivityBehaviour', Data) -> dec_ExpectedUEActivityBehaviour(Data); decode_disp('ExpectedActivityPeriod', Data) -> dec_ExpectedActivityPeriod(Data); decode_disp('ExpectedIdlePeriod', Data) -> dec_ExpectedIdlePeriod(Data); decode_disp('SourceOfUEActivityBehaviourInformation', Data) -> dec_SourceOfUEActivityBehaviourInformation(Data); decode_disp('ExpectedHOInterval', Data) -> dec_ExpectedHOInterval(Data); decode_disp('ExtendedBitRate', Data) -> dec_ExtendedBitRate(Data); decode_disp('ExtendedRNC-ID', Data) -> 'dec_ExtendedRNC-ID'(Data); decode_disp('ExtendedRepetitionPeriod', Data) -> dec_ExtendedRepetitionPeriod(Data); decode_disp('Extended-UEIdentityIndexValue', Data) -> 'dec_Extended-UEIdentityIndexValue'(Data); decode_disp('FiveGSTAC', Data) -> dec_FiveGSTAC(Data); decode_disp('FiveGSTAI', Data) -> dec_FiveGSTAI(Data); decode_disp('FiveQI', Data) -> dec_FiveQI(Data); decode_disp('ForbiddenInterRATs', Data) -> dec_ForbiddenInterRATs(Data); decode_disp('ForbiddenTAs', Data) -> dec_ForbiddenTAs(Data); decode_disp('ForbiddenTAs-Item', Data) -> 'dec_ForbiddenTAs-Item'(Data); decode_disp('ForbiddenTACs', Data) -> dec_ForbiddenTACs(Data); decode_disp('ForbiddenLAs', Data) -> dec_ForbiddenLAs(Data); decode_disp('ForbiddenLAs-Item', Data) -> 'dec_ForbiddenLAs-Item'(Data); decode_disp('ForbiddenLACs', Data) -> dec_ForbiddenLACs(Data); decode_disp('GBR-QosInformation', Data) -> 'dec_GBR-QosInformation'(Data); decode_disp('GTP-TEID', Data) -> 'dec_GTP-TEID'(Data); decode_disp('GUMMEI', Data) -> dec_GUMMEI(Data); decode_disp('GUMMEIType', Data) -> dec_GUMMEIType(Data); decode_disp('GWContextReleaseIndication', Data) -> dec_GWContextReleaseIndication(Data); decode_disp('HandoverFlag', Data) -> dec_HandoverFlag(Data); decode_disp('HandoverRestrictionList', Data) -> dec_HandoverRestrictionList(Data); decode_disp('HandoverType', Data) -> dec_HandoverType(Data); decode_disp('HFN', Data) -> dec_HFN(Data); decode_disp('HFNModified', Data) -> dec_HFNModified(Data); decode_disp('HFNforPDCP-SNlength18', Data) -> 'dec_HFNforPDCP-SNlength18'(Data); decode_disp('Hysteresis', Data) -> dec_Hysteresis(Data); decode_disp('Masked-IMEISV', Data) -> 'dec_Masked-IMEISV'(Data); decode_disp('ImmediateMDT', Data) -> dec_ImmediateMDT(Data); decode_disp('IMSI', Data) -> dec_IMSI(Data); decode_disp('InformationOnRecommendedCellsAndENBsForPaging', Data) -> dec_InformationOnRecommendedCellsAndENBsForPaging(Data); decode_disp('IntegrityProtectionAlgorithms', Data) -> dec_IntegrityProtectionAlgorithms(Data); decode_disp('IntegrityProtectionIndication', Data) -> dec_IntegrityProtectionIndication(Data); decode_disp('IntegrityProtectionResult', Data) -> dec_IntegrityProtectionResult(Data); decode_disp('IntendedNumberOfPagingAttempts', Data) -> dec_IntendedNumberOfPagingAttempts(Data); decode_disp('InterfacesToTrace', Data) -> dec_InterfacesToTrace(Data); decode_disp('IntersystemMeasurementConfiguration', Data) -> dec_IntersystemMeasurementConfiguration(Data); decode_disp('InterSystemMeasurementParameters', Data) -> dec_InterSystemMeasurementParameters(Data); decode_disp('InterSystemMeasurementList', Data) -> dec_InterSystemMeasurementList(Data); decode_disp('InterSystemMeasurementItem', Data) -> dec_InterSystemMeasurementItem(Data); decode_disp('IntersystemSONConfigurationTransfer', Data) -> dec_IntersystemSONConfigurationTransfer(Data); decode_disp('IMSvoiceEPSfallbackfrom5G', Data) -> dec_IMSvoiceEPSfallbackfrom5G(Data); decode_disp('IAB-Authorized', Data) -> 'dec_IAB-Authorized'(Data); decode_disp('IAB-Node-Indication', Data) -> 'dec_IAB-Node-Indication'(Data); decode_disp('IAB-Supported', Data) -> 'dec_IAB-Supported'(Data); decode_disp('KillAllWarningMessages', Data) -> dec_KillAllWarningMessages(Data); decode_disp('LAC', Data) -> dec_LAC(Data); decode_disp('LAI', Data) -> dec_LAI(Data); decode_disp('LastVisitedCell-Item', Data) -> 'dec_LastVisitedCell-Item'(Data); decode_disp('LastVisitedEUTRANCellInformation', Data) -> dec_LastVisitedEUTRANCellInformation(Data); decode_disp('LastVisitedPSCellList', Data) -> dec_LastVisitedPSCellList(Data); decode_disp('LastVisitedPSCellInformation', Data) -> dec_LastVisitedPSCellInformation(Data); decode_disp('LastVisitedNGRANCellInformation', Data) -> dec_LastVisitedNGRANCellInformation(Data); decode_disp('LastVisitedUTRANCellInformation', Data) -> dec_LastVisitedUTRANCellInformation(Data); decode_disp('LastVisitedGERANCellInformation', Data) -> dec_LastVisitedGERANCellInformation(Data); decode_disp('L3-Information', Data) -> 'dec_L3-Information'(Data); decode_disp('LPPa-PDU', Data) -> 'dec_LPPa-PDU'(Data); decode_disp('LHN-ID', Data) -> 'dec_LHN-ID'(Data); decode_disp('Links-to-log', Data) -> 'dec_Links-to-log'(Data); decode_disp('ListeningSubframePattern', Data) -> dec_ListeningSubframePattern(Data); decode_disp('LoggedMDT', Data) -> dec_LoggedMDT(Data); decode_disp('LoggingInterval', Data) -> dec_LoggingInterval(Data); decode_disp('LoggingDuration', Data) -> dec_LoggingDuration(Data); decode_disp('LoggedMBSFNMDT', Data) -> dec_LoggedMBSFNMDT(Data); decode_disp('LoggedMDTTrigger', Data) -> dec_LoggedMDTTrigger(Data); decode_disp('LTE-M-Indication', Data) -> 'dec_LTE-M-Indication'(Data); decode_disp('LTE-NTN-TAI-Information', Data) -> 'dec_LTE-NTN-TAI-Information'(Data); decode_disp('M3Configuration', Data) -> dec_M3Configuration(Data); decode_disp('M3period', Data) -> dec_M3period(Data); decode_disp('M4Configuration', Data) -> dec_M4Configuration(Data); decode_disp('M4period', Data) -> dec_M4period(Data); decode_disp('M5Configuration', Data) -> dec_M5Configuration(Data); decode_disp('M5period', Data) -> dec_M5period(Data); decode_disp('M6Configuration', Data) -> dec_M6Configuration(Data); decode_disp('M6report-Interval', Data) -> 'dec_M6report-Interval'(Data); decode_disp('M6delay-threshold', Data) -> 'dec_M6delay-threshold'(Data); decode_disp('M7Configuration', Data) -> dec_M7Configuration(Data); decode_disp('M7period', Data) -> dec_M7period(Data); decode_disp('MDT-Activation', Data) -> 'dec_MDT-Activation'(Data); decode_disp('MDT-Location-Info', Data) -> 'dec_MDT-Location-Info'(Data); decode_disp('MDT-Configuration', Data) -> 'dec_MDT-Configuration'(Data); decode_disp('ManagementBasedMDTAllowed', Data) -> dec_ManagementBasedMDTAllowed(Data); decode_disp('MBSFN-ResultToLog', Data) -> 'dec_MBSFN-ResultToLog'(Data); decode_disp('MBSFN-ResultToLogInfo', Data) -> 'dec_MBSFN-ResultToLogInfo'(Data); decode_disp('MDTPLMNList', Data) -> dec_MDTPLMNList(Data); decode_disp('PrivacyIndicator', Data) -> dec_PrivacyIndicator(Data); decode_disp('MDTMode', Data) -> dec_MDTMode(Data); decode_disp('MDTMode-Extension', Data) -> 'dec_MDTMode-Extension'(Data); decode_disp('MeasurementsToActivate', Data) -> dec_MeasurementsToActivate(Data); decode_disp('MeasurementThresholdA2', Data) -> dec_MeasurementThresholdA2(Data); decode_disp('MeasurementThresholdL1LoggedMDT', Data) -> dec_MeasurementThresholdL1LoggedMDT(Data); decode_disp('MessageIdentifier', Data) -> dec_MessageIdentifier(Data); decode_disp('MobilityInformation', Data) -> dec_MobilityInformation(Data); decode_disp('MMEname', Data) -> dec_MMEname(Data); decode_disp('MMEPagingTarget', Data) -> dec_MMEPagingTarget(Data); decode_disp('MMERelaySupportIndicator', Data) -> dec_MMERelaySupportIndicator(Data); decode_disp('MME-Group-ID', Data) -> 'dec_MME-Group-ID'(Data); decode_disp('MME-Code', Data) -> 'dec_MME-Code'(Data); decode_disp('MME-UE-S1AP-ID', Data) -> 'dec_MME-UE-S1AP-ID'(Data); decode_disp('M-TMSI', Data) -> 'dec_M-TMSI'(Data); decode_disp('MSClassmark2', Data) -> dec_MSClassmark2(Data); decode_disp('MSClassmark3', Data) -> dec_MSClassmark3(Data); decode_disp('MutingAvailabilityIndication', Data) -> dec_MutingAvailabilityIndication(Data); decode_disp('MutingPatternInformation', Data) -> dec_MutingPatternInformation(Data); decode_disp('MDT-ConfigurationNR', Data) -> 'dec_MDT-ConfigurationNR'(Data); decode_disp('NAS-PDU', Data) -> 'dec_NAS-PDU'(Data); decode_disp('NASSecurityParametersfromE-UTRAN', Data) -> 'dec_NASSecurityParametersfromE-UTRAN'(Data); decode_disp('NASSecurityParameterstoE-UTRAN', Data) -> 'dec_NASSecurityParameterstoE-UTRAN'(Data); decode_disp('NB-IoT-DefaultPagingDRX', Data) -> 'dec_NB-IoT-DefaultPagingDRX'(Data); decode_disp('NB-IoT-PagingDRX', Data) -> 'dec_NB-IoT-PagingDRX'(Data); decode_disp('NB-IoT-Paging-eDRXInformation', Data) -> 'dec_NB-IoT-Paging-eDRXInformation'(Data); decode_disp('NB-IoT-Paging-eDRX-Cycle', Data) -> 'dec_NB-IoT-Paging-eDRX-Cycle'(Data); decode_disp('NB-IoT-PagingTimeWindow', Data) -> 'dec_NB-IoT-PagingTimeWindow'(Data); decode_disp('NB-IoT-RLF-Report-Container', Data) -> 'dec_NB-IoT-RLF-Report-Container'(Data); decode_disp('NB-IoT-UEIdentityIndexValue', Data) -> 'dec_NB-IoT-UEIdentityIndexValue'(Data); decode_disp('NextPagingAreaScope', Data) -> dec_NextPagingAreaScope(Data); decode_disp('NotifySourceeNB', Data) -> dec_NotifySourceeNB(Data); decode_disp('NRCellIdentity', Data) -> dec_NRCellIdentity(Data); decode_disp('NR-CGI', Data) -> 'dec_NR-CGI'(Data); decode_disp('NRencryptionAlgorithms', Data) -> dec_NRencryptionAlgorithms(Data); decode_disp('NRintegrityProtectionAlgorithms', Data) -> dec_NRintegrityProtectionAlgorithms(Data); decode_disp('NRrestrictioninEPSasSecondaryRAT', Data) -> dec_NRrestrictioninEPSasSecondaryRAT(Data); decode_disp('NRrestrictionin5GS', Data) -> dec_NRrestrictionin5GS(Data); decode_disp('NRUESecurityCapabilities', Data) -> dec_NRUESecurityCapabilities(Data); decode_disp('NumberofBroadcastRequest', Data) -> dec_NumberofBroadcastRequest(Data); decode_disp('NumberOfBroadcasts', Data) -> dec_NumberOfBroadcasts(Data); decode_disp('NRV2XServicesAuthorized', Data) -> dec_NRV2XServicesAuthorized(Data); decode_disp('NRUESidelinkAggregateMaximumBitrate', Data) -> dec_NRUESidelinkAggregateMaximumBitrate(Data); decode_disp('OldBSS-ToNewBSS-Information', Data) -> 'dec_OldBSS-ToNewBSS-Information'(Data); decode_disp('OverloadAction', Data) -> dec_OverloadAction(Data); decode_disp('OverloadResponse', Data) -> dec_OverloadResponse(Data); decode_disp('Packet-LossRate', Data) -> 'dec_Packet-LossRate'(Data); decode_disp('PagingAttemptInformation', Data) -> dec_PagingAttemptInformation(Data); decode_disp('PagingAttemptCount', Data) -> dec_PagingAttemptCount(Data); decode_disp('Paging-eDRXInformation', Data) -> 'dec_Paging-eDRXInformation'(Data); decode_disp('Paging-eDRX-Cycle', Data) -> 'dec_Paging-eDRX-Cycle'(Data); decode_disp('PagingTimeWindow', Data) -> dec_PagingTimeWindow(Data); decode_disp('PagingDRX', Data) -> dec_PagingDRX(Data); decode_disp('PagingPriority', Data) -> dec_PagingPriority(Data); decode_disp('PagingProbabilityInformation', Data) -> dec_PagingProbabilityInformation(Data); decode_disp('PagingCause', Data) -> dec_PagingCause(Data); decode_disp('PC5QoSParameters', Data) -> dec_PC5QoSParameters(Data); decode_disp('PC5QoSFlowList', Data) -> dec_PC5QoSFlowList(Data); decode_disp('PC5QoSFlowItem', Data) -> dec_PC5QoSFlowItem(Data); decode_disp('PC5FlowBitRates', Data) -> dec_PC5FlowBitRates(Data); decode_disp('PDCP-SN', Data) -> 'dec_PDCP-SN'(Data); decode_disp('PDCP-SNExtended', Data) -> 'dec_PDCP-SNExtended'(Data); decode_disp('PDCP-SNlength18', Data) -> 'dec_PDCP-SNlength18'(Data); decode_disp('PendingDataIndication', Data) -> dec_PendingDataIndication(Data); decode_disp('M1PeriodicReporting', Data) -> dec_M1PeriodicReporting(Data); decode_disp('PLMNidentity', Data) -> dec_PLMNidentity(Data); decode_disp('PLMNAreaBasedQMC', Data) -> dec_PLMNAreaBasedQMC(Data); decode_disp('PLMNListforQMC', Data) -> dec_PLMNListforQMC(Data); decode_disp('Port-Number', Data) -> 'dec_Port-Number'(Data); decode_disp('Pre-emptionCapability', Data) -> 'dec_Pre-emptionCapability'(Data); decode_disp('Pre-emptionVulnerability', Data) -> 'dec_Pre-emptionVulnerability'(Data); decode_disp('PriorityLevel', Data) -> dec_PriorityLevel(Data); decode_disp('ProSeAuthorized', Data) -> dec_ProSeAuthorized(Data); decode_disp('ProSeDirectDiscovery', Data) -> dec_ProSeDirectDiscovery(Data); decode_disp('ProSeUEtoNetworkRelaying', Data) -> dec_ProSeUEtoNetworkRelaying(Data); decode_disp('ProSeDirectCommunication', Data) -> dec_ProSeDirectCommunication(Data); decode_disp('PS-ServiceNotAvailable', Data) -> 'dec_PS-ServiceNotAvailable'(Data); decode_disp('PSCellInformation', Data) -> dec_PSCellInformation(Data); decode_disp('QCI', Data) -> dec_QCI(Data); decode_disp('RACSIndication', Data) -> dec_RACSIndication(Data); decode_disp('RAN-UE-NGAP-ID', Data) -> 'dec_RAN-UE-NGAP-ID'(Data); decode_disp('Range', Data) -> dec_Range(Data); decode_disp('ReceiveStatusofULPDCPSDUs', Data) -> dec_ReceiveStatusofULPDCPSDUs(Data); decode_disp('ReceiveStatusOfULPDCPSDUsExtended', Data) -> dec_ReceiveStatusOfULPDCPSDUsExtended(Data); decode_disp('ReceiveStatusOfULPDCPSDUsPDCP-SNlength18', Data) -> 'dec_ReceiveStatusOfULPDCPSDUsPDCP-SNlength18'(Data); decode_disp('RecommendedCellsForPaging', Data) -> dec_RecommendedCellsForPaging(Data); decode_disp('RecommendedCellList', Data) -> dec_RecommendedCellList(Data); decode_disp('RecommendedCellItem', Data) -> dec_RecommendedCellItem(Data); decode_disp('RecommendedENBsForPaging', Data) -> dec_RecommendedENBsForPaging(Data); decode_disp('RecommendedENBList', Data) -> dec_RecommendedENBList(Data); decode_disp('RecommendedENBItem', Data) -> dec_RecommendedENBItem(Data); decode_disp('RelativeMMECapacity', Data) -> dec_RelativeMMECapacity(Data); decode_disp('RelayNode-Indicator', Data) -> 'dec_RelayNode-Indicator'(Data); decode_disp('RAC', Data) -> dec_RAC(Data); decode_disp('RAT-Restrictions', Data) -> 'dec_RAT-Restrictions'(Data); decode_disp('RAT-RestrictionsItem', Data) -> 'dec_RAT-RestrictionsItem'(Data); decode_disp('RAT-Type', Data) -> 'dec_RAT-Type'(Data); decode_disp('ReportAmountMDT', Data) -> dec_ReportAmountMDT(Data); decode_disp('ReportIntervalMDT', Data) -> dec_ReportIntervalMDT(Data); decode_disp('M1ReportingTrigger', Data) -> dec_M1ReportingTrigger(Data); decode_disp('RequestType', Data) -> dec_RequestType(Data); decode_disp('RequestTypeAdditionalInfo', Data) -> dec_RequestTypeAdditionalInfo(Data); decode_disp('RIMTransfer', Data) -> dec_RIMTransfer(Data); decode_disp('RIMInformation', Data) -> dec_RIMInformation(Data); decode_disp('RIMRoutingAddress', Data) -> dec_RIMRoutingAddress(Data); decode_disp('ReportArea', Data) -> dec_ReportArea(Data); decode_disp('RepetitionPeriod', Data) -> dec_RepetitionPeriod(Data); decode_disp('RLFReportInformation', Data) -> dec_RLFReportInformation(Data); decode_disp('RNC-ID', Data) -> 'dec_RNC-ID'(Data); decode_disp('RRC-Container', Data) -> 'dec_RRC-Container'(Data); decode_disp('RRC-Establishment-Cause', Data) -> 'dec_RRC-Establishment-Cause'(Data); decode_disp('ECGIListForRestart', Data) -> dec_ECGIListForRestart(Data); decode_disp('Routing-ID', Data) -> 'dec_Routing-ID'(Data); decode_disp('SecurityKey', Data) -> dec_SecurityKey(Data); decode_disp('SecurityContext', Data) -> dec_SecurityContext(Data); decode_disp('SecondaryRATType', Data) -> dec_SecondaryRATType(Data); decode_disp('SecondaryRATDataUsageRequest', Data) -> dec_SecondaryRATDataUsageRequest(Data); decode_disp('SecondaryRATDataUsageReportList', Data) -> dec_SecondaryRATDataUsageReportList(Data); decode_disp('SecondaryRATDataUsageReportItem', Data) -> dec_SecondaryRATDataUsageReportItem(Data); decode_disp('SecurityIndication', Data) -> dec_SecurityIndication(Data); decode_disp('SecurityResult', Data) -> dec_SecurityResult(Data); decode_disp('SensorMeasConfig', Data) -> dec_SensorMeasConfig(Data); decode_disp('SensorMeasConfigNameItem', Data) -> dec_SensorMeasConfigNameItem(Data); decode_disp('SensorMeasConfigNameList', Data) -> dec_SensorMeasConfigNameList(Data); decode_disp('SensorMeasurementConfiguration', Data) -> dec_SensorMeasurementConfiguration(Data); decode_disp('SensorNameConfig', Data) -> dec_SensorNameConfig(Data); decode_disp('SerialNumber', Data) -> dec_SerialNumber(Data); decode_disp('ServiceType', Data) -> dec_ServiceType(Data); decode_disp('SONInformation', Data) -> dec_SONInformation(Data); decode_disp('SONInformation-Extension', Data) -> 'dec_SONInformation-Extension'(Data); decode_disp('SONInformationRequest', Data) -> dec_SONInformationRequest(Data); decode_disp('SONInformationReply', Data) -> dec_SONInformationReply(Data); decode_disp('SONInformationReport', Data) -> dec_SONInformationReport(Data); decode_disp('SONConfigurationTransfer', Data) -> dec_SONConfigurationTransfer(Data); decode_disp('SynchronisationInformation', Data) -> dec_SynchronisationInformation(Data); decode_disp('Source-ToTarget-TransparentContainer', Data) -> 'dec_Source-ToTarget-TransparentContainer'(Data); decode_disp('SourceBSS-ToTargetBSS-TransparentContainer', Data) -> 'dec_SourceBSS-ToTargetBSS-TransparentContainer'(Data); decode_disp('SourceeNB-ID', Data) -> 'dec_SourceeNB-ID'(Data); decode_disp('SRVCCOperationNotPossible', Data) -> dec_SRVCCOperationNotPossible(Data); decode_disp('SRVCCOperationPossible', Data) -> dec_SRVCCOperationPossible(Data); decode_disp('SRVCCHOIndication', Data) -> dec_SRVCCHOIndication(Data); decode_disp('SourceNodeID', Data) -> dec_SourceNodeID(Data); decode_disp('SourceNodeID-Extension', Data) -> 'dec_SourceNodeID-Extension'(Data); decode_disp('SourceeNB-ToTargeteNB-TransparentContainer', Data) -> 'dec_SourceeNB-ToTargeteNB-TransparentContainer'(Data); decode_disp('SourceNgRanNode-ID', Data) -> 'dec_SourceNgRanNode-ID'(Data); decode_disp('SourceRNC-ToTargetRNC-TransparentContainer', Data) -> 'dec_SourceRNC-ToTargetRNC-TransparentContainer'(Data); decode_disp('SourceNgRanNode-ToTargetNgRanNode-TransparentContainer', Data) -> 'dec_SourceNgRanNode-ToTargetNgRanNode-TransparentContainer'(Data); decode_disp('ServedGUMMEIs', Data) -> dec_ServedGUMMEIs(Data); decode_disp('ServedGUMMEIsItem', Data) -> dec_ServedGUMMEIsItem(Data); decode_disp('ServedGroupIDs', Data) -> dec_ServedGroupIDs(Data); decode_disp('ServedMMECs', Data) -> dec_ServedMMECs(Data); decode_disp('ServedPLMNs', Data) -> dec_ServedPLMNs(Data); decode_disp('SubscriberProfileIDforRFP', Data) -> dec_SubscriberProfileIDforRFP(Data); decode_disp('Subscription-Based-UE-DifferentiationInfo', Data) -> 'dec_Subscription-Based-UE-DifferentiationInfo'(Data); decode_disp('ScheduledCommunicationTime', Data) -> dec_ScheduledCommunicationTime(Data); decode_disp('SupportedTAs', Data) -> dec_SupportedTAs(Data); decode_disp('SupportedTAs-Item', Data) -> 'dec_SupportedTAs-Item'(Data); decode_disp('StratumLevel', Data) -> dec_StratumLevel(Data); decode_disp('SynchronisationStatus', Data) -> dec_SynchronisationStatus(Data); decode_disp('TimeSynchronisationInfo', Data) -> dec_TimeSynchronisationInfo(Data); decode_disp('S-TMSI', Data) -> 'dec_S-TMSI'(Data); decode_disp('TAC', Data) -> dec_TAC(Data); decode_disp('TACList-In-LTE-NTN', Data) -> 'dec_TACList-In-LTE-NTN'(Data); decode_disp('TAIBasedMDT', Data) -> dec_TAIBasedMDT(Data); decode_disp('TAIListforMDT', Data) -> dec_TAIListforMDT(Data); decode_disp('TAIListforWarning', Data) -> dec_TAIListforWarning(Data); decode_disp('TAI', Data) -> dec_TAI(Data); decode_disp('TAI-Broadcast', Data) -> 'dec_TAI-Broadcast'(Data); decode_disp('TAI-Broadcast-Item', Data) -> 'dec_TAI-Broadcast-Item'(Data); decode_disp('TAI-Cancelled', Data) -> 'dec_TAI-Cancelled'(Data); decode_disp('TAI-Cancelled-Item', Data) -> 'dec_TAI-Cancelled-Item'(Data); decode_disp('TABasedMDT', Data) -> dec_TABasedMDT(Data); decode_disp('TAListforMDT', Data) -> dec_TAListforMDT(Data); decode_disp('TABasedQMC', Data) -> dec_TABasedQMC(Data); decode_disp('TAListforQMC', Data) -> dec_TAListforQMC(Data); decode_disp('TAIBasedQMC', Data) -> dec_TAIBasedQMC(Data); decode_disp('TAIListforQMC', Data) -> dec_TAIListforQMC(Data); decode_disp('CompletedCellinTAI', Data) -> dec_CompletedCellinTAI(Data); decode_disp('CompletedCellinTAI-Item', Data) -> 'dec_CompletedCellinTAI-Item'(Data); decode_disp('TBCD-STRING', Data) -> 'dec_TBCD-STRING'(Data); decode_disp('TargetID', Data) -> dec_TargetID(Data); decode_disp('TargeteNB-ID', Data) -> 'dec_TargeteNB-ID'(Data); decode_disp('TargetRNC-ID', Data) -> 'dec_TargetRNC-ID'(Data); decode_disp('TargetNgRanNode-ID', Data) -> 'dec_TargetNgRanNode-ID'(Data); decode_disp('Global-RAN-NODE-ID', Data) -> 'dec_Global-RAN-NODE-ID'(Data); decode_disp('GNB', Data) -> dec_GNB(Data); decode_disp('Global-GNB-ID', Data) -> 'dec_Global-GNB-ID'(Data); decode_disp('GNB-Identity', Data) -> 'dec_GNB-Identity'(Data); decode_disp('NG-eNB', Data) -> 'dec_NG-eNB'(Data); decode_disp('GNB-ID', Data) -> 'dec_GNB-ID'(Data); decode_disp('TargeteNB-ToSourceeNB-TransparentContainer', Data) -> 'dec_TargeteNB-ToSourceeNB-TransparentContainer'(Data); decode_disp('Target-ToSource-TransparentContainer', Data) -> 'dec_Target-ToSource-TransparentContainer'(Data); decode_disp('TargetRNC-ToSourceRNC-TransparentContainer', Data) -> 'dec_TargetRNC-ToSourceRNC-TransparentContainer'(Data); decode_disp('TargetBSS-ToSourceBSS-TransparentContainer', Data) -> 'dec_TargetBSS-ToSourceBSS-TransparentContainer'(Data); decode_disp('TargetNgRanNode-ToSourceNgRanNode-TransparentContainer', Data) -> 'dec_TargetNgRanNode-ToSourceNgRanNode-TransparentContainer'(Data); decode_disp('M1ThresholdEventA2', Data) -> dec_M1ThresholdEventA2(Data); decode_disp('Threshold-RSRP', Data) -> 'dec_Threshold-RSRP'(Data); decode_disp('Threshold-RSRQ', Data) -> 'dec_Threshold-RSRQ'(Data); decode_disp('TimeToTrigger', Data) -> dec_TimeToTrigger(Data); decode_disp('TimeToWait', Data) -> dec_TimeToWait(Data); decode_disp('Time-UE-StayedInCell', Data) -> 'dec_Time-UE-StayedInCell'(Data); decode_disp('Time-UE-StayedInCell-EnhancedGranularity', Data) -> 'dec_Time-UE-StayedInCell-EnhancedGranularity'(Data); decode_disp('TimeSinceSecondaryNodeRelease', Data) -> dec_TimeSinceSecondaryNodeRelease(Data); decode_disp('TransportInformation', Data) -> dec_TransportInformation(Data); decode_disp('TransportLayerAddress', Data) -> dec_TransportLayerAddress(Data); decode_disp('TraceActivation', Data) -> dec_TraceActivation(Data); decode_disp('TraceDepth', Data) -> dec_TraceDepth(Data); decode_disp('E-UTRAN-Trace-ID', Data) -> 'dec_E-UTRAN-Trace-ID'(Data); decode_disp('TrafficLoadReductionIndication', Data) -> dec_TrafficLoadReductionIndication(Data); decode_disp('TunnelInformation', Data) -> dec_TunnelInformation(Data); decode_disp('TypeOfError', Data) -> dec_TypeOfError(Data); decode_disp('TAIListForRestart', Data) -> dec_TAIListForRestart(Data); decode_disp('UEAggregateMaximumBitrate', Data) -> dec_UEAggregateMaximumBitrate(Data); decode_disp('UEAppLayerMeasConfig', Data) -> dec_UEAppLayerMeasConfig(Data); decode_disp('UECapabilityInfoRequest', Data) -> dec_UECapabilityInfoRequest(Data); decode_disp('UE-RetentionInformation', Data) -> 'dec_UE-RetentionInformation'(Data); decode_disp('UE-S1AP-IDs', Data) -> 'dec_UE-S1AP-IDs'(Data); decode_disp('UE-S1AP-ID-pair', Data) -> 'dec_UE-S1AP-ID-pair'(Data); decode_disp('UE-associatedLogicalS1-ConnectionItem', Data) -> 'dec_UE-associatedLogicalS1-ConnectionItem'(Data); decode_disp('UEIdentityIndexValue', Data) -> dec_UEIdentityIndexValue(Data); decode_disp('UE-HistoryInformation', Data) -> 'dec_UE-HistoryInformation'(Data); decode_disp('UE-HistoryInformationFromTheUE', Data) -> 'dec_UE-HistoryInformationFromTheUE'(Data); decode_disp('UEPagingID', Data) -> dec_UEPagingID(Data); decode_disp('UERadioCapability', Data) -> dec_UERadioCapability(Data); decode_disp('UERadioCapabilityForPaging', Data) -> dec_UERadioCapabilityForPaging(Data); decode_disp('UERadioCapabilityID', Data) -> dec_UERadioCapabilityID(Data); decode_disp('UE-RLF-Report-Container', Data) -> 'dec_UE-RLF-Report-Container'(Data); decode_disp('UE-RLF-Report-Container-for-extended-bands', Data) -> 'dec_UE-RLF-Report-Container-for-extended-bands'(Data); decode_disp('UESecurityCapabilities', Data) -> dec_UESecurityCapabilities(Data); decode_disp('UESidelinkAggregateMaximumBitrate', Data) -> dec_UESidelinkAggregateMaximumBitrate(Data); decode_disp('UE-Usage-Type', Data) -> 'dec_UE-Usage-Type'(Data); decode_disp('UL-CP-SecurityInformation', Data) -> 'dec_UL-CP-SecurityInformation'(Data); decode_disp('UL-NAS-MAC', Data) -> 'dec_UL-NAS-MAC'(Data); decode_disp('UL-NAS-Count', Data) -> 'dec_UL-NAS-Count'(Data); decode_disp('UnlicensedSpectrumRestriction', Data) -> dec_UnlicensedSpectrumRestriction(Data); decode_disp('URI-Address', Data) -> 'dec_URI-Address'(Data); decode_disp('UserLocationInformation', Data) -> dec_UserLocationInformation(Data); decode_disp('UEUserPlaneCIoTSupportIndicator', Data) -> dec_UEUserPlaneCIoTSupportIndicator(Data); decode_disp('UE-Application-Layer-Measurement-Capability', Data) -> 'dec_UE-Application-Layer-Measurement-Capability'(Data); decode_disp('VoiceSupportMatchIndicator', Data) -> dec_VoiceSupportMatchIndicator(Data); decode_disp('V2XServicesAuthorized', Data) -> dec_V2XServicesAuthorized(Data); decode_disp('VehicleUE', Data) -> dec_VehicleUE(Data); decode_disp('PedestrianUE', Data) -> dec_PedestrianUE(Data); decode_disp('WarningAreaCoordinates', Data) -> dec_WarningAreaCoordinates(Data); decode_disp('WarningAreaList', Data) -> dec_WarningAreaList(Data); decode_disp('WarningType', Data) -> dec_WarningType(Data); decode_disp('WarningSecurityInfo', Data) -> dec_WarningSecurityInfo(Data); decode_disp('WarningMessageContents', Data) -> dec_WarningMessageContents(Data); decode_disp('WLANMeasurementConfiguration', Data) -> dec_WLANMeasurementConfiguration(Data); decode_disp('WLANMeasConfigNameList', Data) -> dec_WLANMeasConfigNameList(Data); decode_disp('WLANMeasConfig', Data) -> dec_WLANMeasConfig(Data); decode_disp('WLANName', Data) -> dec_WLANName(Data); decode_disp('WUS-Assistance-Information', Data) -> 'dec_WUS-Assistance-Information'(Data); decode_disp('X2TNLConfigurationInfo', Data) -> dec_X2TNLConfigurationInfo(Data); decode_disp('ENBX2ExtTLAs', Data) -> dec_ENBX2ExtTLAs(Data); decode_disp('ENBX2ExtTLA', Data) -> dec_ENBX2ExtTLA(Data); decode_disp('ENBX2GTPTLAs', Data) -> dec_ENBX2GTPTLAs(Data); decode_disp('ENBIndirectX2TransportLayerAddresses', Data) -> dec_ENBIndirectX2TransportLayerAddresses(Data); decode_disp(Type, _Data) -> exit({error,{asn1,{undefined_type,Type}}}). info() -> case ?MODULE:module_info(attributes) of Attributes when is_list(Attributes) -> case lists:keyfind(asn1_info, 1, Attributes) of {_,Info} when is_list(Info) -> Info; _ -> [] end; _ -> [] end. 'enc_Additional-GUTI'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute gUMMEI(1) with type GUMMEI Enc3@element = element(2, Val), enc_GUMMEI(Enc3@element) end, align, begin %% attribute m-TMSI(2) with type OCTET STRING Enc4@element = element(3, Val), Enc5@len = byte_size(Enc4@element), if Enc5@len =:= 4 -> Enc4@element end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc6@element = element(4, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> 'enc_Additional-GUTI_iE-Extensions'(Enc6@element) end end]. 'enc_Additional-GUTI_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_Additional-GUTI_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_Additional-GUTI_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_Additional-GUTI'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute gUMMEI(1) with type GUMMEI {Term1,Bytes3} = dec_GUMMEI(Bytes2), %% attribute m-TMSI(2) with type OCTET STRING {Term2,Bytes4} = begin V3@Pad2 = bit_size(Bytes3) band 7, <<_:V3@Pad2,V3@V0:4/binary-unit:8,V3@Buf1/bitstring>> = Bytes3, V3@Conv4 = binary:copy(V3@V0), {V3@Conv4,V3@Buf1} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_Additional-GUTI_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V4@V0,V4@Buf1} = case Bytes5 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'Additional-GUTI',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_Additional-GUTI_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components2(V1@Add4, V1@Buf1, []). 'dec_Additional-GUTI_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_AdditionalRRMPriorityIndex(Val) -> Enc1@bits = bit_size(Val), if Enc1@bits =:= 32 -> [align|Val] end. dec_AdditionalRRMPriorityIndex(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:32/binary-unit:1,V1@Buf1/bitstring>> = Bytes, {V1@V4,V1@Buf5} = {list_to_bitstring([V1@V0]),V1@Buf1}, {V1@V4,V1@Buf5} end. enc_AerialUEsubscriptionInformation(Val) -> if Val =:= allowed -> <<0:1,0:1>>; Val =:= 'not-allowed' -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_AerialUEsubscriptionInformation(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:1/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> allowed; 1 -> 'not-allowed' end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_AreaScopeOfMDT(Val) -> {ChoiceTag,ChoiceVal} = Val, if ChoiceTag =:= cellBased -> [<<0:1,0:2>>|enc_CellBasedMDT(ChoiceVal)]; ChoiceTag =:= tABased -> [<<0:1,1:2>>|enc_TABasedMDT(ChoiceVal)]; ChoiceTag =:= pLMNWide -> <<0:1,2:2>>; ChoiceTag =:= tAIBased -> begin Enc4@output = enc_TAIBasedMDT(ChoiceVal), Enc4@bin = complete(Enc4@output), Enc4@len = byte_size(Enc4@bin), if Enc4@len < 128 -> [<<1:1,0:7>>, align, Enc4@len|Enc4@bin]; Enc4@len < 16384 -> [<<1:1,0:7>>, align, <<2:2,Enc4@len:14>>|Enc4@bin]; true -> [<<1:1,0:7>>, align|encode_fragmented(Enc4@bin, 8)] end end end. dec_AreaScopeOfMDT(Bytes) -> case Bytes of <<0:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin <> = Bytes1, {V1@V0,V1@Buf1} end, case Choice of 0 -> {Val,NewBytes} = begin dec_CellBasedMDT(Bytes2) end, {{cellBased,Val},NewBytes}; 1 -> {Val,NewBytes} = begin dec_TABasedMDT(Bytes2) end, {{tABased,Val},NewBytes}; 2 -> {Val,NewBytes} = begin begin ignore, {'NULL',Bytes2} end end, {{pLMNWide,Val},NewBytes} end; <<1:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin {V1@V0,V1@Buf1} = case Bytes1 of <<0:1,V1@V3:6,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end, begin V2@Pad3 = bit_size(Bytes2) band 7, {V2@V0,V2@Buf1} = case Bytes2 of <<_:V2@Pad3,0:1,V2@V5:7,V2@V7:V2@V5/binary-unit:8,V2@Buf8/bitstring>> -> {V2@V7,V2@Buf8}; <<_:V2@Pad3,1:1,0:1,V2@V6:14,V2@V8:V2@V6/binary-unit:8,V2@Buf9/bitstring>> -> {V2@V8,V2@Buf9}; <<_:V2@Pad3,1:1,1:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V8,V2@Buf9} = decode_fragmented(V2@V6, V2@Buf7, 8), {V2@V8,V2@Buf9} end end, case Choice of 0 -> {Val,NewBytes} = begin {TmpVal,_} = dec_TAIBasedMDT(V2@V0), {TmpVal,V2@Buf1} end, {{tAIBased,Val},NewBytes}; _ -> {{asn1_ExtAlt,V2@V0},V2@Buf1} end end. enc_AreaScopeOfQMC(Val) -> {ChoiceTag,ChoiceVal} = Val, if ChoiceTag =:= cellBased -> [<<0:1,0:2>>|enc_CellBasedQMC(ChoiceVal)]; ChoiceTag =:= tABased -> [<<0:1,1:2>>|enc_TABasedQMC(ChoiceVal)]; ChoiceTag =:= tAIBased -> [<<0:1,2:2>>|enc_TAIBasedQMC(ChoiceVal)]; ChoiceTag =:= pLMNAreaBased -> [<<0:1,3:2>>|enc_PLMNAreaBasedQMC(ChoiceVal)] end. dec_AreaScopeOfQMC(Bytes) -> case Bytes of <<0:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin <> = Bytes1, {V1@V0,V1@Buf1} end, case Choice of 0 -> {Val,NewBytes} = begin dec_CellBasedQMC(Bytes2) end, {{cellBased,Val},NewBytes}; 1 -> {Val,NewBytes} = begin dec_TABasedQMC(Bytes2) end, {{tABased,Val},NewBytes}; 2 -> {Val,NewBytes} = begin dec_TAIBasedQMC(Bytes2) end, {{tAIBased,Val},NewBytes}; 3 -> {Val,NewBytes} = begin dec_PLMNAreaBasedQMC(Bytes2) end, {{pLMNAreaBased,Val},NewBytes} end; <<1:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin {V1@V0,V1@Buf1} = case Bytes1 of <<0:1,V1@V3:6,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end, begin V2@Pad3 = bit_size(Bytes2) band 7, {V2@V0,V2@Buf1} = case Bytes2 of <<_:V2@Pad3,0:1,V2@V5:7,V2@V7:V2@V5/binary-unit:8,V2@Buf8/bitstring>> -> {V2@V7,V2@Buf8}; <<_:V2@Pad3,1:1,0:1,V2@V6:14,V2@V8:V2@V6/binary-unit:8,V2@Buf9/bitstring>> -> {V2@V8,V2@Buf9}; <<_:V2@Pad3,1:1,1:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V8,V2@Buf9} = decode_fragmented(V2@V6, V2@Buf7, 8), {V2@V8,V2@Buf9} end end, case Choice of _ -> {{asn1_ExtAlt,V2@V0},V2@Buf1} end end. enc_AllocationAndRetentionPriority(Val) -> [begin Enc1@element = element(5, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute priorityLevel(1) with type INTEGER Enc3@element = element(2, Val), if Enc3@element =:= spare -> <<0:4>>; Enc3@element =:= highest -> <<1:4>>; Enc3@element =:= lowest -> <<14:4>>; Enc3@element =:= 'no-priority' -> <<15:4>>; Enc3@element bsr 4 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc3@element}}}) end end, begin %% attribute pre-emptionCapability(2) with type ENUMERATED Enc5@element = element(3, Val), %% attribute pre-emptionVulnerability(3) with type ENUMERATED Enc7@element = element(4, Val), if Enc5@element =:= 'shall-not-trigger-pre-emption' -> if Enc7@element =:= 'not-pre-emptable' -> <<0:1,0:1>>; Enc7@element =:= 'pre-emptable' -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc7@element}}}) end; Enc5@element =:= 'may-trigger-pre-emption' -> if Enc7@element =:= 'not-pre-emptable' -> <<1:1,0:1>>; Enc7@element =:= 'pre-emptable' -> <<1:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc7@element}}}) end; true -> exit({error,{asn1,{illegal_enumerated,Enc5@element}}}) end end|begin %% attribute iE-Extensions(4) with type SEQUENCE OF Enc9@element = element(5, Val), if Enc9@element =:= asn1_NOVALUE -> []; true -> 'enc_AllocationAndRetentionPriority_iE-Extensions'(Enc9@element) end end]. 'enc_AllocationAndRetentionPriority_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_AllocationAndRetentionPriority_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_AllocationAndRetentionPriority_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_AllocationAndRetentionPriority(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute priorityLevel(1) with type INTEGER {Term1,Bytes3} = begin <> = Bytes2, V3@Int2 = case V3@V0 of 0 -> spare; 1 -> highest; 14 -> lowest; 15 -> 'no-priority'; _ -> V3@V0 end, {V3@Int2,V3@Buf1} end, %% attribute pre-emptionCapability(2) with type ENUMERATED {Term2,Bytes4} = begin <> = Bytes3, V4@Int2 = case V4@V0 of 0 -> 'shall-not-trigger-pre-emption'; 1 -> 'may-trigger-pre-emption' end, {V4@Int2,V4@Buf1} end, %% attribute pre-emptionVulnerability(3) with type ENUMERATED {Term3,Bytes5} = begin <> = Bytes4, V5@Int2 = case V5@V0 of 0 -> 'not-pre-emptable'; 1 -> 'pre-emptable' end, {V5@Int2,V5@Buf1} end, %% attribute iE-Extensions(4) with type SEQUENCE OF {Term4,Bytes6} = case Opt band 1 of 1 -> 'dec_AllocationAndRetentionPriority_iE-Extensions'(Bytes5); 0 -> {asn1_NOVALUE,Bytes5} end, %% Extensions {Extensions,Bytes7} = case Ext of 0 -> {<<>>,Bytes6}; 1 -> {V6@V0,V6@Buf1} = case Bytes6 of <<0:1,V6@V3:6,V6@Buf4/bitstring>> -> V6@Add5 = V6@V3 + 1, {V6@Add5,V6@Buf4}; <<1:1,V6@Buf2/bitstring>> -> V6@Pad6 = bit_size(V6@Buf2) band 7, {V6@V3,V6@Buf4} = case V6@Buf2 of <<_:V6@Pad6,0:1,V6@V8:7,V6@Buf9/bitstring>> when V6@V8 =/= 0 -> {V6@V8,V6@Buf9}; <<_:V6@Pad6,1:1,0:1,V6@V9:14,V6@Buf10/bitstring>> when V6@V9 =/= 0 -> {V6@V9,V6@Buf10}; <<_:V6@Pad6,1:1,1:1,V6@V9:6,V6@Buf10/bitstring>> when V6@V9 =/= 0 -> V6@Mul11 = V6@V9 * 16384, {V6@Mul11,V6@Buf10} end, {V6@V3,V6@Buf4} end, <> = V6@Buf1, {V6@V12,V6@Buf13} end, Bytes8= skipextensions(Bytes7, 1, Extensions), Res1 = {'AllocationAndRetentionPriority',Term1,Term2,Term3,Term4}, {Res1,Bytes8}. 'dec_AllocationAndRetentionPriority_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components4(V1@Add4, V1@Buf1, []). 'dec_AllocationAndRetentionPriority_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_AssistanceDataForCECapableUEs(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute cellIdentifierAndCELevelForCECapableUEs(1) with type CellIdentifierAndCELevelForCECapableUEs Enc3@element = element(2, Val), enc_CellIdentifierAndCELevelForCECapableUEs(Enc3@element) end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc4@element = element(3, Val), if Enc4@element =:= asn1_NOVALUE -> []; true -> 'enc_AssistanceDataForCECapableUEs_iE-Extensions'(Enc4@element) end end]. 'enc_AssistanceDataForCECapableUEs_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_AssistanceDataForCECapableUEs_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_AssistanceDataForCECapableUEs_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_AssistanceDataForCECapableUEs(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute cellIdentifierAndCELevelForCECapableUEs(1) with type CellIdentifierAndCELevelForCECapableUEs {Term1,Bytes3} = dec_CellIdentifierAndCELevelForCECapableUEs(Bytes2), %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_AssistanceDataForCECapableUEs_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V3@V0,V3@Buf1} = case Bytes4 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'AssistanceDataForCECapableUEs',Term1,Term2}, {Res1,Bytes6}. 'dec_AssistanceDataForCECapableUEs_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components5(V1@Add4, V1@Buf1, []). 'dec_AssistanceDataForCECapableUEs_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_AssistanceDataForPaging(Val) -> [begin Enc1@element = element(2, Val), Enc2@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin Enc3@element = element(4, Val), Enc4@element = element(5, Val), if Enc3@element =:= asn1_NOVALUE -> if Enc4@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end; true -> if Enc4@element =:= asn1_NOVALUE -> <<1:1,0:1>>; true -> <<1:1,1:1>> end end end, begin %% attribute assistanceDataForRecommendedCells(1) with type AssistanceDataForRecommendedCells Enc6@element = element(2, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> enc_AssistanceDataForRecommendedCells(Enc6@element) end end, begin %% attribute assistanceDataForCECapableUEs(2) with type AssistanceDataForCECapableUEs Enc8@element = element(3, Val), if Enc8@element =:= asn1_NOVALUE -> []; true -> enc_AssistanceDataForCECapableUEs(Enc8@element) end end, begin %% attribute pagingAttemptInformation(3) with type PagingAttemptInformation Enc10@element = element(4, Val), if Enc10@element =:= asn1_NOVALUE -> []; true -> enc_PagingAttemptInformation(Enc10@element) end end|begin %% attribute iE-Extensions(4) with type SEQUENCE OF Enc12@element = element(5, Val), if Enc12@element =:= asn1_NOVALUE -> []; true -> 'enc_AssistanceDataForPaging_iE-Extensions'(Enc12@element) end end]. 'enc_AssistanceDataForPaging_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_AssistanceDataForPaging_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_AssistanceDataForPaging_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_AssistanceDataForPaging(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute assistanceDataForRecommendedCells(1) with type AssistanceDataForRecommendedCells {Term1,Bytes3} = case (Opt bsr 3) band 1 of 1 -> dec_AssistanceDataForRecommendedCells(Bytes2); 0 -> {asn1_NOVALUE,Bytes2} end, %% attribute assistanceDataForCECapableUEs(2) with type AssistanceDataForCECapableUEs {Term2,Bytes4} = case (Opt bsr 2) band 1 of 1 -> dec_AssistanceDataForCECapableUEs(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute pagingAttemptInformation(3) with type PagingAttemptInformation {Term3,Bytes5} = case (Opt bsr 1) band 1 of 1 -> dec_PagingAttemptInformation(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% attribute iE-Extensions(4) with type SEQUENCE OF {Term4,Bytes6} = case Opt band 1 of 1 -> 'dec_AssistanceDataForPaging_iE-Extensions'(Bytes5); 0 -> {asn1_NOVALUE,Bytes5} end, %% Extensions {Extensions,Bytes7} = case Ext of 0 -> {<<>>,Bytes6}; 1 -> {V3@V0,V3@Buf1} = case Bytes6 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes8= skipextensions(Bytes7, 1, Extensions), Res1 = {'AssistanceDataForPaging',Term1,Term2,Term3,Term4}, {Res1,Bytes8}. 'dec_AssistanceDataForPaging_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components6(V1@Add4, V1@Buf1, []). 'dec_AssistanceDataForPaging_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_AssistanceDataForRecommendedCells(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute recommendedCellsForPaging(1) with type RecommendedCellsForPaging Enc3@element = element(2, Val), enc_RecommendedCellsForPaging(Enc3@element) end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc4@element = element(3, Val), if Enc4@element =:= asn1_NOVALUE -> []; true -> 'enc_AssistanceDataForRecommendedCells_iE-Extensions'(Enc4@element) end end]. 'enc_AssistanceDataForRecommendedCells_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_AssistanceDataForRecommendedCells_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_AssistanceDataForRecommendedCells_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_AssistanceDataForRecommendedCells(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute recommendedCellsForPaging(1) with type RecommendedCellsForPaging {Term1,Bytes3} = dec_RecommendedCellsForPaging(Bytes2), %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_AssistanceDataForRecommendedCells_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V3@V0,V3@Buf1} = case Bytes4 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'AssistanceDataForRecommendedCells',Term1,Term2}, {Res1,Bytes6}. 'dec_AssistanceDataForRecommendedCells_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components7(V1@Add4, V1@Buf1, []). 'dec_AssistanceDataForRecommendedCells_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_Bearers-SubjectToStatusTransferList'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 8 =:= 0 -> [align, Enc1@len@sub|['enc_Bearers-SubjectToStatusTransferList_ProtocolIE-Field'(Comp) || Comp <- Val]] end. 'enc_Bearers-SubjectToStatusTransferList_ProtocolIE-Field'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute value(3) with type Value Enc6@element = element(4, Val), Enc7@output = enc_os_Value8(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_Bearers-SubjectToStatusTransferList'(Bytes) -> %% Length with constraint {1,256} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:1/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components9(V1@Add4, V1@Buf1, []). 'dec_Bearers-SubjectToStatusTransferList_ProtocolIE-Field'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute value(3) with type Value {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Value10(Tmpterm1, Term1), Res1 = {'ProtocolIE-Field',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_Bearers-SubjectToStatusTransfer-Item'(Val) -> [begin Enc1@element = element(5, Val), Enc2@element = element(6, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin %% attribute e-RAB-ID(1) with type INTEGER Enc4@element = element(2, Val), if Enc4@element bsr 4 =:= 0 -> <<0:1,Enc4@element:4>>; true -> [<<1:1>>, align|encode_unconstrained_number(Enc4@element)] end end, begin %% attribute uL-COUNTvalue(2) with type COUNTvalue Enc6@element = element(3, Val), enc_COUNTvalue(Enc6@element) end, begin %% attribute dL-COUNTvalue(3) with type COUNTvalue Enc7@element = element(4, Val), enc_COUNTvalue(Enc7@element) end, begin %% attribute receiveStatusofULPDCPSDUs(4) with type BIT STRING Enc8@element = element(5, Val), if Enc8@element =:= asn1_NOVALUE -> []; true -> begin Enc9@bits = bit_size(Enc8@element), if Enc9@bits =:= 4096 -> [align|Enc8@element] end end end end|begin %% attribute iE-Extensions(5) with type SEQUENCE OF Enc11@element = element(6, Val), if Enc11@element =:= asn1_NOVALUE -> []; true -> 'enc_Bearers-SubjectToStatusTransfer-Item_iE-Extensions'(Enc11@element) end end]. 'enc_Bearers-SubjectToStatusTransfer-Item_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_Bearers-SubjectToStatusTransfer-Item_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_Bearers-SubjectToStatusTransfer-Item_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension11(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_Bearers-SubjectToStatusTransfer-Item'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute e-RAB-ID(1) with type INTEGER {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:4/unsigned-unit:1,V3@Buf4/bitstring>> -> {V3@V3,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, <> = V3@Buf4, {V3@V12,V3@Buf13} end, {V3@V0,V3@Buf1} end, %% attribute uL-COUNTvalue(2) with type COUNTvalue {Term2,Bytes4} = dec_COUNTvalue(Bytes3), %% attribute dL-COUNTvalue(3) with type COUNTvalue {Term3,Bytes5} = dec_COUNTvalue(Bytes4), %% attribute receiveStatusofULPDCPSDUs(4) with type BIT STRING {Term4,Bytes6} = case (Opt bsr 1) band 1 of 1 -> begin V4@Pad2 = bit_size(Bytes5) band 7, <<_:V4@Pad2,V4@V0:4096/binary-unit:1,V4@Buf1/bitstring>> = Bytes5, {V4@V4,V4@Buf5} = {list_to_bitstring([V4@V0]),V4@Buf1}, {V4@V4,V4@Buf5} end; 0 -> {asn1_NOVALUE,Bytes5} end, %% attribute iE-Extensions(5) with type SEQUENCE OF {Term5,Bytes7} = case Opt band 1 of 1 -> 'dec_Bearers-SubjectToStatusTransfer-Item_iE-Extensions'(Bytes6); 0 -> {asn1_NOVALUE,Bytes6} end, %% Extensions {Extensions,Bytes8} = case Ext of 0 -> {<<>>,Bytes7}; 1 -> {V5@V0,V5@Buf1} = case Bytes7 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes9= skipextensions(Bytes8, 1, Extensions), Res1 = {'Bearers-SubjectToStatusTransfer-Item',Term1,Term2,Term3,Term4,Term5}, {Res1,Bytes9}. 'dec_Bearers-SubjectToStatusTransfer-Item_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components12(V1@Add4, V1@Buf1, []). 'dec_Bearers-SubjectToStatusTransfer-Item_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension13(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_Bearers-SubjectToEarlyStatusTransferList'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 8 =:= 0 -> [align, Enc1@len@sub|['enc_Bearers-SubjectToEarlyStatusTransferList_ProtocolIE-Field'(Comp) || Comp <- Val]] end. 'enc_Bearers-SubjectToEarlyStatusTransferList_ProtocolIE-Field'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute value(3) with type Value Enc6@element = element(4, Val), Enc7@output = enc_os_Value14(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_Bearers-SubjectToEarlyStatusTransferList'(Bytes) -> %% Length with constraint {1,256} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:1/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components15(V1@Add4, V1@Buf1, []). 'dec_Bearers-SubjectToEarlyStatusTransferList_ProtocolIE-Field'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute value(3) with type Value {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Value16(Tmpterm1, Term1), Res1 = {'ProtocolIE-Field',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_Bearers-SubjectToEarlyStatusTransfer-Item'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute e-RAB-ID(1) with type INTEGER Enc3@element = element(2, Val), if Enc3@element bsr 4 =:= 0 -> <<0:1,Enc3@element:4>>; true -> [<<1:1>>, align|encode_unconstrained_number(Enc3@element)] end end, begin %% attribute dLCOUNT-PDCP-SNlength(2) with type DLCOUNT-PDCP-SNlength Enc5@element = element(3, Val), 'enc_DLCOUNT-PDCP-SNlength'(Enc5@element) end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc6@element = element(4, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> 'enc_Bearers-SubjectToEarlyStatusTransfer-Item_iE-Extensions'(Enc6@element) end end]. 'enc_Bearers-SubjectToEarlyStatusTransfer-Item_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_Bearers-SubjectToEarlyStatusTransfer-Item_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_Bearers-SubjectToEarlyStatusTransfer-Item_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_Bearers-SubjectToEarlyStatusTransfer-Item'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute e-RAB-ID(1) with type INTEGER {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:4/unsigned-unit:1,V3@Buf4/bitstring>> -> {V3@V3,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, <> = V3@Buf4, {V3@V12,V3@Buf13} end, {V3@V0,V3@Buf1} end, %% attribute dLCOUNT-PDCP-SNlength(2) with type DLCOUNT-PDCP-SNlength {Term2,Bytes4} = 'dec_DLCOUNT-PDCP-SNlength'(Bytes3), %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_Bearers-SubjectToEarlyStatusTransfer-Item_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V4@V0,V4@Buf1} = case Bytes5 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'Bearers-SubjectToEarlyStatusTransfer-Item',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_Bearers-SubjectToEarlyStatusTransfer-Item_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components17(V1@Add4, V1@Buf1, []). 'dec_Bearers-SubjectToEarlyStatusTransfer-Item_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_BearerType(Val) -> if Val =:= 'non-IP' -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_BearerType(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'non-IP',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_BitRate(Val) -> if 0 =< Val, Val < 10000000001 -> begin Val@bin = binary:encode_unsigned(Val), Val@bin_size0 = byte_size(Val@bin), Val@bin_size = Val@bin_size0 - 1, [<>, align|Val@bin] end; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. dec_BitRate(Bytes) -> begin <> = Bytes, V1@Add2 = V1@V0 + 1, V1@Pad5 = bit_size(V1@Buf1) band 7, <<_:V1@Pad5,V1@V3:V1@Add2/unsigned-unit:8,V1@Buf4/bitstring>> = V1@Buf1, {V1@V3,V1@Buf4} end. enc_BluetoothMeasurementConfiguration(Val) -> [begin Enc1@element = element(3, Val), Enc2@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin Enc3@element = element(5, Val), %% attribute bluetoothMeasConfig(1) with type ENUMERATED Enc5@element = element(2, Val), if Enc3@element =:= asn1_NOVALUE -> if Enc5@element =:= setup -> <<0:1,0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc5@element}}}) end; true -> if Enc5@element =:= setup -> <<1:1,0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc5@element}}}) end end end, begin %% attribute bluetoothMeasConfigNameList(2) with type BluetoothMeasConfigNameList Enc7@element = element(3, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> enc_BluetoothMeasConfigNameList(Enc7@element) end end, begin %% attribute bt-rssi(3) with type ENUMERATED Enc9@element = element(4, Val), if Enc9@element =:= asn1_NOVALUE -> []; Enc9@element =:= true -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc9@element}}}) end end|begin %% attribute iE-Extensions(4) with type SEQUENCE OF Enc12@element = element(5, Val), if Enc12@element =:= asn1_NOVALUE -> []; true -> 'enc_BluetoothMeasurementConfiguration_iE-Extensions'(Enc12@element) end end]. 'enc_BluetoothMeasurementConfiguration_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_BluetoothMeasurementConfiguration_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_BluetoothMeasurementConfiguration_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_BluetoothMeasurementConfiguration(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute bluetoothMeasConfig(1) with type ENUMERATED {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@Buf2/bitstring>> -> {'setup',V3@Buf2}; <<1:1,V3@Buf2/bitstring>> -> {V3@V3,V3@Buf4} = case V3@Buf2 of <<0:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V6,V3@Buf7}; <<1:1,V3@Buf5/bitstring>> -> V3@Pad9 = bit_size(V3@Buf5) band 7, {V3@V6,V3@Buf7} = case V3@Buf5 of <<_:V3@Pad9,0:1,V3@V11:7,V3@Buf12/bitstring>> when V3@V11 =/= 0 -> {V3@V11,V3@Buf12}; <<_:V3@Pad9,1:1,0:1,V3@V12:14,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> {V3@V12,V3@Buf13}; <<_:V3@Pad9,1:1,1:1,V3@V12:6,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> V3@Mul14 = V3@V12 * 16384, {V3@Mul14,V3@Buf13} end, <> = V3@Buf7, {V3@V15,V3@Buf16} end, V3@Int17 = case V3@V3 of _ -> {asn1_enum,V3@V3} end, {V3@Int17,V3@Buf4} end, {V3@V0,V3@Buf1} end, %% attribute bluetoothMeasConfigNameList(2) with type BluetoothMeasConfigNameList {Term2,Bytes4} = case (Opt bsr 2) band 1 of 1 -> dec_BluetoothMeasConfigNameList(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute bt-rssi(3) with type ENUMERATED {Term3,Bytes5} = case (Opt bsr 1) band 1 of 1 -> begin {V4@V0,V4@Buf1} = case Bytes4 of <<0:1,V4@Buf2/bitstring>> -> {'true',V4@Buf2}; <<1:1,V4@Buf2/bitstring>> -> {V4@V3,V4@Buf4} = case V4@Buf2 of <<0:1,V4@V6:6,V4@Buf7/bitstring>> -> {V4@V6,V4@Buf7}; <<1:1,V4@Buf5/bitstring>> -> V4@Pad9 = bit_size(V4@Buf5) band 7, {V4@V6,V4@Buf7} = case V4@Buf5 of <<_:V4@Pad9,0:1,V4@V11:7,V4@Buf12/bitstring>> when V4@V11 =/= 0 -> {V4@V11,V4@Buf12}; <<_:V4@Pad9,1:1,0:1,V4@V12:14,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> {V4@V12,V4@Buf13}; <<_:V4@Pad9,1:1,1:1,V4@V12:6,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> V4@Mul14 = V4@V12 * 16384, {V4@Mul14,V4@Buf13} end, <> = V4@Buf7, {V4@V15,V4@Buf16} end, V4@Int17 = case V4@V3 of _ -> {asn1_enum,V4@V3} end, {V4@Int17,V4@Buf4} end, {V4@V0,V4@Buf1} end; 0 -> {asn1_NOVALUE,Bytes4} end, %% attribute iE-Extensions(4) with type SEQUENCE OF {Term4,Bytes6} = case Opt band 1 of 1 -> 'dec_BluetoothMeasurementConfiguration_iE-Extensions'(Bytes5); 0 -> {asn1_NOVALUE,Bytes5} end, %% Extensions {Extensions,Bytes7} = case Ext of 0 -> {<<>>,Bytes6}; 1 -> {V5@V0,V5@Buf1} = case Bytes6 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes8= skipextensions(Bytes7, 1, Extensions), Res1 = {'BluetoothMeasurementConfiguration',Term1,Term2,Term3,Term4}, {Res1,Bytes8}. 'dec_BluetoothMeasurementConfiguration_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components18(V1@Add4, V1@Buf1, []). 'dec_BluetoothMeasurementConfiguration_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_BluetoothMeasConfigNameList(Val) -> Enc2@len = length(Val), Enc2@len@sub = Enc2@len - 1, if Enc2@len@sub bsr 2 =:= 0 -> [<>|[begin Enc1@len = byte_size(Comp), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 248 -> [Enc1@len@sub, align|Comp] end end || Comp <- Val]] end. dec_BluetoothMeasConfigNameList(Bytes) -> %% Length with constraint {1,4} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components19(V1@Add2, V1@Buf1, []). enc_BluetoothMeasConfig(Val) -> if Val =:= setup -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_BluetoothMeasConfig(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'setup',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_BluetoothName(Val) -> Enc1@len = byte_size(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 248 -> [Enc1@len@sub, align|Val] end. dec_BluetoothName(Bytes) -> begin <> = Bytes, V1@Add2 = V1@V0 + 1, V1@Pad5 = bit_size(V1@Buf1) band 7, <<_:V1@Pad5,V1@V3:V1@Add2/binary-unit:8,V1@Buf4/bitstring>> = V1@Buf1, V1@Conv7 = binary:copy(V1@V3), {V1@Conv7,V1@Buf4} end. enc_BPLMNs(Val) -> Enc2@len = length(Val), Enc2@len@sub = Enc2@len - 1, if 0 =< Enc2@len@sub, Enc2@len@sub < 6 -> [<>, align|[begin Enc1@len = byte_size(Comp), if Enc1@len =:= 3 -> Comp end end || Comp <- Val]] end. dec_BPLMNs(Bytes) -> %% Length with constraint {1,6} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components20(V1@Add2, V1@Buf1, []). enc_BroadcastCancelledAreaList(Val) -> {ChoiceTag,ChoiceVal} = Val, if ChoiceTag =:= 'cellID-Cancelled' -> [<<0:1,0:2>>|'enc_CellID-Cancelled'(ChoiceVal)]; ChoiceTag =:= 'tAI-Cancelled' -> [<<0:1,1:2>>|'enc_TAI-Cancelled'(ChoiceVal)]; ChoiceTag =:= 'emergencyAreaID-Cancelled' -> [<<0:1,2:2>>|'enc_EmergencyAreaID-Cancelled'(ChoiceVal)] end. dec_BroadcastCancelledAreaList(Bytes) -> case Bytes of <<0:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin <> = Bytes1, {V1@V0,V1@Buf1} end, case Choice of 0 -> {Val,NewBytes} = begin 'dec_CellID-Cancelled'(Bytes2) end, {{'cellID-Cancelled',Val},NewBytes}; 1 -> {Val,NewBytes} = begin 'dec_TAI-Cancelled'(Bytes2) end, {{'tAI-Cancelled',Val},NewBytes}; 2 -> {Val,NewBytes} = begin 'dec_EmergencyAreaID-Cancelled'(Bytes2) end, {{'emergencyAreaID-Cancelled',Val},NewBytes} end; <<1:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin {V1@V0,V1@Buf1} = case Bytes1 of <<0:1,V1@V3:6,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end, begin V2@Pad3 = bit_size(Bytes2) band 7, {V2@V0,V2@Buf1} = case Bytes2 of <<_:V2@Pad3,0:1,V2@V5:7,V2@V7:V2@V5/binary-unit:8,V2@Buf8/bitstring>> -> {V2@V7,V2@Buf8}; <<_:V2@Pad3,1:1,0:1,V2@V6:14,V2@V8:V2@V6/binary-unit:8,V2@Buf9/bitstring>> -> {V2@V8,V2@Buf9}; <<_:V2@Pad3,1:1,1:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V8,V2@Buf9} = decode_fragmented(V2@V6, V2@Buf7, 8), {V2@V8,V2@Buf9} end end, case Choice of _ -> {{asn1_ExtAlt,V2@V0},V2@Buf1} end end. enc_BroadcastCompletedAreaList(Val) -> {ChoiceTag,ChoiceVal} = Val, if ChoiceTag =:= 'cellID-Broadcast' -> [<<0:1,0:2>>|'enc_CellID-Broadcast'(ChoiceVal)]; ChoiceTag =:= 'tAI-Broadcast' -> [<<0:1,1:2>>|'enc_TAI-Broadcast'(ChoiceVal)]; ChoiceTag =:= 'emergencyAreaID-Broadcast' -> [<<0:1,2:2>>|'enc_EmergencyAreaID-Broadcast'(ChoiceVal)] end. dec_BroadcastCompletedAreaList(Bytes) -> case Bytes of <<0:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin <> = Bytes1, {V1@V0,V1@Buf1} end, case Choice of 0 -> {Val,NewBytes} = begin 'dec_CellID-Broadcast'(Bytes2) end, {{'cellID-Broadcast',Val},NewBytes}; 1 -> {Val,NewBytes} = begin 'dec_TAI-Broadcast'(Bytes2) end, {{'tAI-Broadcast',Val},NewBytes}; 2 -> {Val,NewBytes} = begin 'dec_EmergencyAreaID-Broadcast'(Bytes2) end, {{'emergencyAreaID-Broadcast',Val},NewBytes} end; <<1:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin {V1@V0,V1@Buf1} = case Bytes1 of <<0:1,V1@V3:6,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end, begin V2@Pad3 = bit_size(Bytes2) band 7, {V2@V0,V2@Buf1} = case Bytes2 of <<_:V2@Pad3,0:1,V2@V5:7,V2@V7:V2@V5/binary-unit:8,V2@Buf8/bitstring>> -> {V2@V7,V2@Buf8}; <<_:V2@Pad3,1:1,0:1,V2@V6:14,V2@V8:V2@V6/binary-unit:8,V2@Buf9/bitstring>> -> {V2@V8,V2@Buf9}; <<_:V2@Pad3,1:1,1:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V8,V2@Buf9} = decode_fragmented(V2@V6, V2@Buf7, 8), {V2@V8,V2@Buf9} end end, case Choice of _ -> {{asn1_ExtAlt,V2@V0},V2@Buf1} end end. enc_CancelledCellinEAI(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_CancelledCellinEAI-Item'(Comp) || Comp <- Val]] end. dec_CancelledCellinEAI(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components21(V1@Add4, V1@Buf1, []). 'enc_CancelledCellinEAI-Item'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute eCGI(1) with type EUTRAN-CGI Enc3@element = element(2, Val), 'enc_EUTRAN-CGI'(Enc3@element) end, align, begin %% attribute numberOfBroadcasts(2) with type INTEGER Enc4@element = element(3, Val), if Enc4@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc4@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc6@element = element(4, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> 'enc_CancelledCellinEAI-Item_iE-Extensions'(Enc6@element) end end]. 'enc_CancelledCellinEAI-Item_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_CancelledCellinEAI-Item_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_CancelledCellinEAI-Item_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_CancelledCellinEAI-Item'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute eCGI(1) with type EUTRAN-CGI {Term1,Bytes3} = 'dec_EUTRAN-CGI'(Bytes2), %% attribute numberOfBroadcasts(2) with type INTEGER {Term2,Bytes4} = begin V3@Pad2 = bit_size(Bytes3) band 7, <<_:V3@Pad2,V3@V0:2/unsigned-unit:8,V3@Buf1/bitstring>> = Bytes3, {V3@V0,V3@Buf1} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_CancelledCellinEAI-Item_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V4@V0,V4@Buf1} = case Bytes5 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'CancelledCellinEAI-Item',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_CancelledCellinEAI-Item_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components22(V1@Add4, V1@Buf1, []). 'dec_CancelledCellinEAI-Item_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_CancelledCellinTAI(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_CancelledCellinTAI-Item'(Comp) || Comp <- Val]] end. dec_CancelledCellinTAI(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components23(V1@Add4, V1@Buf1, []). 'enc_CancelledCellinTAI-Item'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute eCGI(1) with type EUTRAN-CGI Enc3@element = element(2, Val), 'enc_EUTRAN-CGI'(Enc3@element) end, align, begin %% attribute numberOfBroadcasts(2) with type INTEGER Enc4@element = element(3, Val), if Enc4@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc4@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc6@element = element(4, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> 'enc_CancelledCellinTAI-Item_iE-Extensions'(Enc6@element) end end]. 'enc_CancelledCellinTAI-Item_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_CancelledCellinTAI-Item_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_CancelledCellinTAI-Item_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_CancelledCellinTAI-Item'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute eCGI(1) with type EUTRAN-CGI {Term1,Bytes3} = 'dec_EUTRAN-CGI'(Bytes2), %% attribute numberOfBroadcasts(2) with type INTEGER {Term2,Bytes4} = begin V3@Pad2 = bit_size(Bytes3) band 7, <<_:V3@Pad2,V3@V0:2/unsigned-unit:8,V3@Buf1/bitstring>> = Bytes3, {V3@V0,V3@Buf1} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_CancelledCellinTAI-Item_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V4@V0,V4@Buf1} = case Bytes5 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'CancelledCellinTAI-Item',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_CancelledCellinTAI-Item_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components24(V1@Add4, V1@Buf1, []). 'dec_CancelledCellinTAI-Item_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_Cause(Val) -> {ChoiceTag,ChoiceVal} = Val, if ChoiceTag =:= radioNetwork -> if ChoiceVal =:= unspecified -> <<0:1,0:3,0:1,0:6>>; ChoiceVal =:= 'tx2relocoverall-expiry' -> <<0:1,0:3,0:1,1:6>>; ChoiceVal =:= 'successful-handover' -> <<0:1,0:3,0:1,2:6>>; ChoiceVal =:= 'release-due-to-eutran-generated-reason' -> <<0:1,0:3,0:1,3:6>>; ChoiceVal =:= 'handover-cancelled' -> <<0:1,0:3,0:1,4:6>>; ChoiceVal =:= 'partial-handover' -> <<0:1,0:3,0:1,5:6>>; ChoiceVal =:= 'ho-failure-in-target-EPC-eNB-or-target-system' -> <<0:1,0:3,0:1,6:6>>; ChoiceVal =:= 'ho-target-not-allowed' -> <<0:1,0:3,0:1,7:6>>; ChoiceVal =:= 'tS1relocoverall-expiry' -> <<0:1,0:3,0:1,8:6>>; ChoiceVal =:= 'tS1relocprep-expiry' -> <<0:1,0:3,0:1,9:6>>; ChoiceVal =:= 'cell-not-available' -> <<0:1,0:3,0:1,10:6>>; ChoiceVal =:= 'unknown-targetID' -> <<0:1,0:3,0:1,11:6>>; ChoiceVal =:= 'no-radio-resources-available-in-target-cell' -> <<0:1,0:3,0:1,12:6>>; ChoiceVal =:= 'unknown-mme-ue-s1ap-id' -> <<0:1,0:3,0:1,13:6>>; ChoiceVal =:= 'unknown-enb-ue-s1ap-id' -> <<0:1,0:3,0:1,14:6>>; ChoiceVal =:= 'unknown-pair-ue-s1ap-id' -> <<0:1,0:3,0:1,15:6>>; ChoiceVal =:= 'handover-desirable-for-radio-reason' -> <<0:1,0:3,0:1,16:6>>; ChoiceVal =:= 'time-critical-handover' -> <<0:1,0:3,0:1,17:6>>; ChoiceVal =:= 'resource-optimisation-handover' -> <<0:1,0:3,0:1,18:6>>; ChoiceVal =:= 'reduce-load-in-serving-cell' -> <<0:1,0:3,0:1,19:6>>; ChoiceVal =:= 'user-inactivity' -> <<0:1,0:3,0:1,20:6>>; ChoiceVal =:= 'radio-connection-with-ue-lost' -> <<0:1,0:3,0:1,21:6>>; ChoiceVal =:= 'load-balancing-tau-required' -> <<0:1,0:3,0:1,22:6>>; ChoiceVal =:= 'cs-fallback-triggered' -> <<0:1,0:3,0:1,23:6>>; ChoiceVal =:= 'ue-not-available-for-ps-service' -> <<0:1,0:3,0:1,24:6>>; ChoiceVal =:= 'radio-resources-not-available' -> <<0:1,0:3,0:1,25:6>>; ChoiceVal =:= 'failure-in-radio-interface-procedure' -> <<0:1,0:3,0:1,26:6>>; ChoiceVal =:= 'invalid-qos-combination' -> <<0:1,0:3,0:1,27:6>>; ChoiceVal =:= 'interrat-redirection' -> <<0:1,0:3,0:1,28:6>>; ChoiceVal =:= 'interaction-with-other-procedure' -> <<0:1,0:3,0:1,29:6>>; ChoiceVal =:= 'unknown-E-RAB-ID' -> <<0:1,0:3,0:1,30:6>>; ChoiceVal =:= 'multiple-E-RAB-ID-instances' -> <<0:1,0:3,0:1,31:6>>; ChoiceVal =:= 'encryption-and-or-integrity-protection-algorithms-not-supported' -> <<0:1,0:3,0:1,32:6>>; ChoiceVal =:= 's1-intra-system-handover-triggered' -> <<0:1,0:3,0:1,33:6>>; ChoiceVal =:= 's1-inter-system-handover-triggered' -> <<0:1,0:3,0:1,34:6>>; ChoiceVal =:= 'x2-handover-triggered' -> <<0:1,0:3,0:1,35:6>>; ChoiceVal =:= 'redirection-towards-1xRTT' -> <<0:1,0:3,1:1,0:7>>; ChoiceVal =:= 'not-supported-QCI-value' -> <<0:1,0:3,1:1,1:7>>; ChoiceVal =:= 'invalid-CSG-Id' -> <<0:1,0:3,1:1,2:7>>; ChoiceVal =:= 'release-due-to-pre-emption' -> <<0:1,0:3,1:1,3:7>>; ChoiceVal =:= 'n26-interface-not-available' -> <<0:1,0:3,1:1,4:7>>; ChoiceVal =:= 'insufficient-ue-capabilities' -> <<0:1,0:3,1:1,5:7>>; ChoiceVal =:= 'maximum-bearer-pre-emption-rate-exceeded' -> <<0:1,0:3,1:1,6:7>>; ChoiceVal =:= 'up-integrity-protection-not-possible' -> <<0:1,0:3,1:1,7:7>>; true -> exit({error,{asn1,{illegal_enumerated,ChoiceVal}}}) end; ChoiceTag =:= transport -> if ChoiceVal =:= 'transport-resource-unavailable' -> <<0:1,1:3,0:1,0:1>>; ChoiceVal =:= unspecified -> <<0:1,1:3,0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,ChoiceVal}}}) end; ChoiceTag =:= nas -> if ChoiceVal =:= 'normal-release' -> <<0:1,2:3,0:1,0:2>>; ChoiceVal =:= 'authentication-failure' -> <<0:1,2:3,0:1,1:2>>; ChoiceVal =:= detach -> <<0:1,2:3,0:1,2:2>>; ChoiceVal =:= unspecified -> <<0:1,2:3,0:1,3:2>>; ChoiceVal =:= 'csg-subscription-expiry' -> <<0:1,2:3,1:1,0:7>>; ChoiceVal =:= 'uE-not-in-PLMN-serving-area' -> <<0:1,2:3,1:1,1:7>>; true -> exit({error,{asn1,{illegal_enumerated,ChoiceVal}}}) end; ChoiceTag =:= protocol -> if ChoiceVal =:= 'transfer-syntax-error' -> <<0:1,3:3,0:1,0:3>>; ChoiceVal =:= 'abstract-syntax-error-reject' -> <<0:1,3:3,0:1,1:3>>; ChoiceVal =:= 'abstract-syntax-error-ignore-and-notify' -> <<0:1,3:3,0:1,2:3>>; ChoiceVal =:= 'message-not-compatible-with-receiver-state' -> <<0:1,3:3,0:1,3:3>>; ChoiceVal =:= 'semantic-error' -> <<0:1,3:3,0:1,4:3>>; ChoiceVal =:= 'abstract-syntax-error-falsely-constructed-message' -> <<0:1,3:3,0:1,5:3>>; ChoiceVal =:= unspecified -> <<0:1,3:3,0:1,6:3>>; true -> exit({error,{asn1,{illegal_enumerated,ChoiceVal}}}) end; ChoiceTag =:= misc -> if ChoiceVal =:= 'control-processing-overload' -> <<0:1,4:3,0:1,0:3>>; ChoiceVal =:= 'not-enough-user-plane-processing-resources' -> <<0:1,4:3,0:1,1:3>>; ChoiceVal =:= 'hardware-failure' -> <<0:1,4:3,0:1,2:3>>; ChoiceVal =:= 'om-intervention' -> <<0:1,4:3,0:1,3:3>>; ChoiceVal =:= unspecified -> <<0:1,4:3,0:1,4:3>>; ChoiceVal =:= 'unknown-PLMN' -> <<0:1,4:3,0:1,5:3>>; true -> exit({error,{asn1,{illegal_enumerated,ChoiceVal}}}) end end. dec_Cause(Bytes) -> case Bytes of <<0:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin <> = Bytes1, {V1@V0,V1@Buf1} end, case Choice of 0 -> {Val,NewBytes} = begin begin {V2@V0,V2@Buf1} = case Bytes2 of <<0:1,V2@V3:6/unsigned-unit:1,V2@Buf4/bitstring>> -> V2@Int5 = case V2@V3 of 0 -> unspecified; 1 -> 'tx2relocoverall-expiry'; 2 -> 'successful-handover'; 3 -> 'release-due-to-eutran-generated-reason'; 4 -> 'handover-cancelled'; 5 -> 'partial-handover'; 6 -> 'ho-failure-in-target-EPC-eNB-or-target-system'; 7 -> 'ho-target-not-allowed'; 8 -> 'tS1relocoverall-expiry'; 9 -> 'tS1relocprep-expiry'; 10 -> 'cell-not-available'; 11 -> 'unknown-targetID'; 12 -> 'no-radio-resources-available-in-target-cell'; 13 -> 'unknown-mme-ue-s1ap-id'; 14 -> 'unknown-enb-ue-s1ap-id'; 15 -> 'unknown-pair-ue-s1ap-id'; 16 -> 'handover-desirable-for-radio-reason'; 17 -> 'time-critical-handover'; 18 -> 'resource-optimisation-handover'; 19 -> 'reduce-load-in-serving-cell'; 20 -> 'user-inactivity'; 21 -> 'radio-connection-with-ue-lost'; 22 -> 'load-balancing-tau-required'; 23 -> 'cs-fallback-triggered'; 24 -> 'ue-not-available-for-ps-service'; 25 -> 'radio-resources-not-available'; 26 -> 'failure-in-radio-interface-procedure'; 27 -> 'invalid-qos-combination'; 28 -> 'interrat-redirection'; 29 -> 'interaction-with-other-procedure'; 30 -> 'unknown-E-RAB-ID'; 31 -> 'multiple-E-RAB-ID-instances'; 32 -> 'encryption-and-or-integrity-protection-algorithms-not-supported'; 33 -> 's1-intra-system-handover-triggered'; 34 -> 's1-inter-system-handover-triggered'; 35 -> 'x2-handover-triggered'; _ -> exit({error,{asn1,{decode_enumerated,V2@V3}}}) end, {V2@Int5,V2@Buf4}; <<1:1,V2@Buf2/bitstring>> -> {V2@V3,V2@Buf4} = case V2@Buf2 of <<0:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V6,V2@Buf7}; <<1:1,V2@Buf5/bitstring>> -> V2@Pad9 = bit_size(V2@Buf5) band 7, {V2@V6,V2@Buf7} = case V2@Buf5 of <<_:V2@Pad9,0:1,V2@V11:7,V2@Buf12/bitstring>> when V2@V11 =/= 0 -> {V2@V11,V2@Buf12}; <<_:V2@Pad9,1:1,0:1,V2@V12:14,V2@Buf13/bitstring>> when V2@V12 =/= 0 -> {V2@V12,V2@Buf13}; <<_:V2@Pad9,1:1,1:1,V2@V12:6,V2@Buf13/bitstring>> when V2@V12 =/= 0 -> V2@Mul14 = V2@V12 * 16384, {V2@Mul14,V2@Buf13} end, <> = V2@Buf7, {V2@V15,V2@Buf16} end, V2@Int17 = case V2@V3 of 0 -> 'redirection-towards-1xRTT'; 1 -> 'not-supported-QCI-value'; 2 -> 'invalid-CSG-Id'; 3 -> 'release-due-to-pre-emption'; 4 -> 'n26-interface-not-available'; 5 -> 'insufficient-ue-capabilities'; 6 -> 'maximum-bearer-pre-emption-rate-exceeded'; 7 -> 'up-integrity-protection-not-possible'; _ -> {asn1_enum,V2@V3} end, {V2@Int17,V2@Buf4} end, {V2@V0,V2@Buf1} end end, {{radioNetwork,Val},NewBytes}; 1 -> {Val,NewBytes} = begin begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:1/unsigned-unit:1,V3@Buf4/bitstring>> -> V3@Int5 = case V3@V3 of 0 -> 'transport-resource-unavailable'; 1 -> unspecified end, {V3@Int5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> {V3@V3,V3@Buf4} = case V3@Buf2 of <<0:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V6,V3@Buf7}; <<1:1,V3@Buf5/bitstring>> -> V3@Pad9 = bit_size(V3@Buf5) band 7, {V3@V6,V3@Buf7} = case V3@Buf5 of <<_:V3@Pad9,0:1,V3@V11:7,V3@Buf12/bitstring>> when V3@V11 =/= 0 -> {V3@V11,V3@Buf12}; <<_:V3@Pad9,1:1,0:1,V3@V12:14,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> {V3@V12,V3@Buf13}; <<_:V3@Pad9,1:1,1:1,V3@V12:6,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> V3@Mul14 = V3@V12 * 16384, {V3@Mul14,V3@Buf13} end, <> = V3@Buf7, {V3@V15,V3@Buf16} end, V3@Int17 = case V3@V3 of _ -> {asn1_enum,V3@V3} end, {V3@Int17,V3@Buf4} end, {V3@V0,V3@Buf1} end end, {{transport,Val},NewBytes}; 2 -> {Val,NewBytes} = begin begin {V4@V0,V4@Buf1} = case Bytes2 of <<0:1,V4@V3:2/unsigned-unit:1,V4@Buf4/bitstring>> -> V4@Int5 = case V4@V3 of 0 -> 'normal-release'; 1 -> 'authentication-failure'; 2 -> detach; 3 -> unspecified end, {V4@Int5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> {V4@V3,V4@Buf4} = case V4@Buf2 of <<0:1,V4@V6:6,V4@Buf7/bitstring>> -> {V4@V6,V4@Buf7}; <<1:1,V4@Buf5/bitstring>> -> V4@Pad9 = bit_size(V4@Buf5) band 7, {V4@V6,V4@Buf7} = case V4@Buf5 of <<_:V4@Pad9,0:1,V4@V11:7,V4@Buf12/bitstring>> when V4@V11 =/= 0 -> {V4@V11,V4@Buf12}; <<_:V4@Pad9,1:1,0:1,V4@V12:14,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> {V4@V12,V4@Buf13}; <<_:V4@Pad9,1:1,1:1,V4@V12:6,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> V4@Mul14 = V4@V12 * 16384, {V4@Mul14,V4@Buf13} end, <> = V4@Buf7, {V4@V15,V4@Buf16} end, V4@Int17 = case V4@V3 of 0 -> 'csg-subscription-expiry'; 1 -> 'uE-not-in-PLMN-serving-area'; _ -> {asn1_enum,V4@V3} end, {V4@Int17,V4@Buf4} end, {V4@V0,V4@Buf1} end end, {{nas,Val},NewBytes}; 3 -> {Val,NewBytes} = begin begin {V5@V0,V5@Buf1} = case Bytes2 of <<0:1,V5@V3:3/unsigned-unit:1,V5@Buf4/bitstring>> -> V5@Int5 = case V5@V3 of 0 -> 'transfer-syntax-error'; 1 -> 'abstract-syntax-error-reject'; 2 -> 'abstract-syntax-error-ignore-and-notify'; 3 -> 'message-not-compatible-with-receiver-state'; 4 -> 'semantic-error'; 5 -> 'abstract-syntax-error-falsely-constructed-message'; 6 -> unspecified; _ -> exit({error,{asn1,{decode_enumerated,V5@V3}}}) end, {V5@Int5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> {V5@V3,V5@Buf4} = case V5@Buf2 of <<0:1,V5@V6:6,V5@Buf7/bitstring>> -> {V5@V6,V5@Buf7}; <<1:1,V5@Buf5/bitstring>> -> V5@Pad9 = bit_size(V5@Buf5) band 7, {V5@V6,V5@Buf7} = case V5@Buf5 of <<_:V5@Pad9,0:1,V5@V11:7,V5@Buf12/bitstring>> when V5@V11 =/= 0 -> {V5@V11,V5@Buf12}; <<_:V5@Pad9,1:1,0:1,V5@V12:14,V5@Buf13/bitstring>> when V5@V12 =/= 0 -> {V5@V12,V5@Buf13}; <<_:V5@Pad9,1:1,1:1,V5@V12:6,V5@Buf13/bitstring>> when V5@V12 =/= 0 -> V5@Mul14 = V5@V12 * 16384, {V5@Mul14,V5@Buf13} end, <> = V5@Buf7, {V5@V15,V5@Buf16} end, V5@Int17 = case V5@V3 of _ -> {asn1_enum,V5@V3} end, {V5@Int17,V5@Buf4} end, {V5@V0,V5@Buf1} end end, {{protocol,Val},NewBytes}; 4 -> {Val,NewBytes} = begin begin {V6@V0,V6@Buf1} = case Bytes2 of <<0:1,V6@V3:3/unsigned-unit:1,V6@Buf4/bitstring>> -> V6@Int5 = case V6@V3 of 0 -> 'control-processing-overload'; 1 -> 'not-enough-user-plane-processing-resources'; 2 -> 'hardware-failure'; 3 -> 'om-intervention'; 4 -> unspecified; 5 -> 'unknown-PLMN'; _ -> exit({error,{asn1,{decode_enumerated,V6@V3}}}) end, {V6@Int5,V6@Buf4}; <<1:1,V6@Buf2/bitstring>> -> {V6@V3,V6@Buf4} = case V6@Buf2 of <<0:1,V6@V6:6,V6@Buf7/bitstring>> -> {V6@V6,V6@Buf7}; <<1:1,V6@Buf5/bitstring>> -> V6@Pad9 = bit_size(V6@Buf5) band 7, {V6@V6,V6@Buf7} = case V6@Buf5 of <<_:V6@Pad9,0:1,V6@V11:7,V6@Buf12/bitstring>> when V6@V11 =/= 0 -> {V6@V11,V6@Buf12}; <<_:V6@Pad9,1:1,0:1,V6@V12:14,V6@Buf13/bitstring>> when V6@V12 =/= 0 -> {V6@V12,V6@Buf13}; <<_:V6@Pad9,1:1,1:1,V6@V12:6,V6@Buf13/bitstring>> when V6@V12 =/= 0 -> V6@Mul14 = V6@V12 * 16384, {V6@Mul14,V6@Buf13} end, <> = V6@Buf7, {V6@V15,V6@Buf16} end, V6@Int17 = case V6@V3 of _ -> {asn1_enum,V6@V3} end, {V6@Int17,V6@Buf4} end, {V6@V0,V6@Buf1} end end, {{misc,Val},NewBytes} end; <<1:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin {V1@V0,V1@Buf1} = case Bytes1 of <<0:1,V1@V3:6,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end, begin V2@Pad3 = bit_size(Bytes2) band 7, {V2@V0,V2@Buf1} = case Bytes2 of <<_:V2@Pad3,0:1,V2@V5:7,V2@V7:V2@V5/binary-unit:8,V2@Buf8/bitstring>> -> {V2@V7,V2@Buf8}; <<_:V2@Pad3,1:1,0:1,V2@V6:14,V2@V8:V2@V6/binary-unit:8,V2@Buf9/bitstring>> -> {V2@V8,V2@Buf9}; <<_:V2@Pad3,1:1,1:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V8,V2@Buf9} = decode_fragmented(V2@V6, V2@Buf7, 8), {V2@V8,V2@Buf9} end end, case Choice of _ -> {{asn1_ExtAlt,V2@V0},V2@Buf1} end end. enc_CauseMisc(Val) -> if Val =:= 'control-processing-overload' -> <<0:1,0:3>>; Val =:= 'not-enough-user-plane-processing-resources' -> <<0:1,1:3>>; Val =:= 'hardware-failure' -> <<0:1,2:3>>; Val =:= 'om-intervention' -> <<0:1,3:3>>; Val =:= unspecified -> <<0:1,4:3>>; Val =:= 'unknown-PLMN' -> <<0:1,5:3>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_CauseMisc(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:3/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> 'control-processing-overload'; 1 -> 'not-enough-user-plane-processing-resources'; 2 -> 'hardware-failure'; 3 -> 'om-intervention'; 4 -> unspecified; 5 -> 'unknown-PLMN'; _ -> exit({error,{asn1,{decode_enumerated,V1@V3}}}) end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_CauseProtocol(Val) -> if Val =:= 'transfer-syntax-error' -> <<0:1,0:3>>; Val =:= 'abstract-syntax-error-reject' -> <<0:1,1:3>>; Val =:= 'abstract-syntax-error-ignore-and-notify' -> <<0:1,2:3>>; Val =:= 'message-not-compatible-with-receiver-state' -> <<0:1,3:3>>; Val =:= 'semantic-error' -> <<0:1,4:3>>; Val =:= 'abstract-syntax-error-falsely-constructed-message' -> <<0:1,5:3>>; Val =:= unspecified -> <<0:1,6:3>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_CauseProtocol(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:3/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> 'transfer-syntax-error'; 1 -> 'abstract-syntax-error-reject'; 2 -> 'abstract-syntax-error-ignore-and-notify'; 3 -> 'message-not-compatible-with-receiver-state'; 4 -> 'semantic-error'; 5 -> 'abstract-syntax-error-falsely-constructed-message'; 6 -> unspecified; _ -> exit({error,{asn1,{decode_enumerated,V1@V3}}}) end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_CauseRadioNetwork(Val) -> if Val =:= unspecified -> <<0:1,0:6>>; Val =:= 'tx2relocoverall-expiry' -> <<0:1,1:6>>; Val =:= 'successful-handover' -> <<0:1,2:6>>; Val =:= 'release-due-to-eutran-generated-reason' -> <<0:1,3:6>>; Val =:= 'handover-cancelled' -> <<0:1,4:6>>; Val =:= 'partial-handover' -> <<0:1,5:6>>; Val =:= 'ho-failure-in-target-EPC-eNB-or-target-system' -> <<0:1,6:6>>; Val =:= 'ho-target-not-allowed' -> <<0:1,7:6>>; Val =:= 'tS1relocoverall-expiry' -> <<0:1,8:6>>; Val =:= 'tS1relocprep-expiry' -> <<0:1,9:6>>; Val =:= 'cell-not-available' -> <<0:1,10:6>>; Val =:= 'unknown-targetID' -> <<0:1,11:6>>; Val =:= 'no-radio-resources-available-in-target-cell' -> <<0:1,12:6>>; Val =:= 'unknown-mme-ue-s1ap-id' -> <<0:1,13:6>>; Val =:= 'unknown-enb-ue-s1ap-id' -> <<0:1,14:6>>; Val =:= 'unknown-pair-ue-s1ap-id' -> <<0:1,15:6>>; Val =:= 'handover-desirable-for-radio-reason' -> <<0:1,16:6>>; Val =:= 'time-critical-handover' -> <<0:1,17:6>>; Val =:= 'resource-optimisation-handover' -> <<0:1,18:6>>; Val =:= 'reduce-load-in-serving-cell' -> <<0:1,19:6>>; Val =:= 'user-inactivity' -> <<0:1,20:6>>; Val =:= 'radio-connection-with-ue-lost' -> <<0:1,21:6>>; Val =:= 'load-balancing-tau-required' -> <<0:1,22:6>>; Val =:= 'cs-fallback-triggered' -> <<0:1,23:6>>; Val =:= 'ue-not-available-for-ps-service' -> <<0:1,24:6>>; Val =:= 'radio-resources-not-available' -> <<0:1,25:6>>; Val =:= 'failure-in-radio-interface-procedure' -> <<0:1,26:6>>; Val =:= 'invalid-qos-combination' -> <<0:1,27:6>>; Val =:= 'interrat-redirection' -> <<0:1,28:6>>; Val =:= 'interaction-with-other-procedure' -> <<0:1,29:6>>; Val =:= 'unknown-E-RAB-ID' -> <<0:1,30:6>>; Val =:= 'multiple-E-RAB-ID-instances' -> <<0:1,31:6>>; Val =:= 'encryption-and-or-integrity-protection-algorithms-not-supported' -> <<0:1,32:6>>; Val =:= 's1-intra-system-handover-triggered' -> <<0:1,33:6>>; Val =:= 's1-inter-system-handover-triggered' -> <<0:1,34:6>>; Val =:= 'x2-handover-triggered' -> <<0:1,35:6>>; Val =:= 'redirection-towards-1xRTT' -> <<1:1,0:7>>; Val =:= 'not-supported-QCI-value' -> <<1:1,1:7>>; Val =:= 'invalid-CSG-Id' -> <<1:1,2:7>>; Val =:= 'release-due-to-pre-emption' -> <<1:1,3:7>>; Val =:= 'n26-interface-not-available' -> <<1:1,4:7>>; Val =:= 'insufficient-ue-capabilities' -> <<1:1,5:7>>; Val =:= 'maximum-bearer-pre-emption-rate-exceeded' -> <<1:1,6:7>>; Val =:= 'up-integrity-protection-not-possible' -> <<1:1,7:7>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_CauseRadioNetwork(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:6/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> unspecified; 1 -> 'tx2relocoverall-expiry'; 2 -> 'successful-handover'; 3 -> 'release-due-to-eutran-generated-reason'; 4 -> 'handover-cancelled'; 5 -> 'partial-handover'; 6 -> 'ho-failure-in-target-EPC-eNB-or-target-system'; 7 -> 'ho-target-not-allowed'; 8 -> 'tS1relocoverall-expiry'; 9 -> 'tS1relocprep-expiry'; 10 -> 'cell-not-available'; 11 -> 'unknown-targetID'; 12 -> 'no-radio-resources-available-in-target-cell'; 13 -> 'unknown-mme-ue-s1ap-id'; 14 -> 'unknown-enb-ue-s1ap-id'; 15 -> 'unknown-pair-ue-s1ap-id'; 16 -> 'handover-desirable-for-radio-reason'; 17 -> 'time-critical-handover'; 18 -> 'resource-optimisation-handover'; 19 -> 'reduce-load-in-serving-cell'; 20 -> 'user-inactivity'; 21 -> 'radio-connection-with-ue-lost'; 22 -> 'load-balancing-tau-required'; 23 -> 'cs-fallback-triggered'; 24 -> 'ue-not-available-for-ps-service'; 25 -> 'radio-resources-not-available'; 26 -> 'failure-in-radio-interface-procedure'; 27 -> 'invalid-qos-combination'; 28 -> 'interrat-redirection'; 29 -> 'interaction-with-other-procedure'; 30 -> 'unknown-E-RAB-ID'; 31 -> 'multiple-E-RAB-ID-instances'; 32 -> 'encryption-and-or-integrity-protection-algorithms-not-supported'; 33 -> 's1-intra-system-handover-triggered'; 34 -> 's1-inter-system-handover-triggered'; 35 -> 'x2-handover-triggered'; _ -> exit({error,{asn1,{decode_enumerated,V1@V3}}}) end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of 0 -> 'redirection-towards-1xRTT'; 1 -> 'not-supported-QCI-value'; 2 -> 'invalid-CSG-Id'; 3 -> 'release-due-to-pre-emption'; 4 -> 'n26-interface-not-available'; 5 -> 'insufficient-ue-capabilities'; 6 -> 'maximum-bearer-pre-emption-rate-exceeded'; 7 -> 'up-integrity-protection-not-possible'; _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_CauseTransport(Val) -> if Val =:= 'transport-resource-unavailable' -> <<0:1,0:1>>; Val =:= unspecified -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_CauseTransport(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:1/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> 'transport-resource-unavailable'; 1 -> unspecified end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_CauseNas(Val) -> if Val =:= 'normal-release' -> <<0:1,0:2>>; Val =:= 'authentication-failure' -> <<0:1,1:2>>; Val =:= detach -> <<0:1,2:2>>; Val =:= unspecified -> <<0:1,3:2>>; Val =:= 'csg-subscription-expiry' -> <<1:1,0:7>>; Val =:= 'uE-not-in-PLMN-serving-area' -> <<1:1,1:7>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_CauseNas(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:2/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> 'normal-release'; 1 -> 'authentication-failure'; 2 -> detach; 3 -> unspecified end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of 0 -> 'csg-subscription-expiry'; 1 -> 'uE-not-in-PLMN-serving-area'; _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_CellAccessMode(Val) -> if Val =:= hybrid -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_CellAccessMode(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'hybrid',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_CellIdentifierAndCELevelForCECapableUEs(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute global-Cell-ID(1) with type EUTRAN-CGI Enc3@element = element(2, Val), 'enc_EUTRAN-CGI'(Enc3@element) end, align, begin %% attribute cELevel(2) with type OCTET STRING Enc4@element = element(3, Val), Enc5@len = byte_size(Enc4@element), if Enc5@len < 128 -> [Enc5@len|Enc4@element]; Enc5@len < 16384 -> [<<2:2,Enc5@len:14>>|Enc4@element]; true -> encode_fragmented(Enc4@element, 8) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc6@element = element(4, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> 'enc_CellIdentifierAndCELevelForCECapableUEs_iE-Extensions'(Enc6@element) end end]. 'enc_CellIdentifierAndCELevelForCECapableUEs_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_CellIdentifierAndCELevelForCECapableUEs_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_CellIdentifierAndCELevelForCECapableUEs_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_CellIdentifierAndCELevelForCECapableUEs(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute global-Cell-ID(1) with type EUTRAN-CGI {Term1,Bytes3} = 'dec_EUTRAN-CGI'(Bytes2), %% attribute cELevel(2) with type OCTET STRING {Term2,Bytes4} = begin V3@Pad3 = bit_size(Bytes3) band 7, {V3@V0,V3@Buf1} = case Bytes3 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, V3@Conv10 = binary:copy(V3@V0), {V3@Conv10,V3@Buf1} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_CellIdentifierAndCELevelForCECapableUEs_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V4@V0,V4@Buf1} = case Bytes5 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'CellIdentifierAndCELevelForCECapableUEs',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_CellIdentifierAndCELevelForCECapableUEs_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components25(V1@Add4, V1@Buf1, []). 'dec_CellIdentifierAndCELevelForCECapableUEs_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_CELevel(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. dec_CELevel(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. 'enc_CE-mode-B-SupportIndicator'(Val) -> if Val =:= supported -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_CE-mode-B-SupportIndicator'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'supported',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_CellIdentity(Val) -> Enc1@bits = bit_size(Val), if Enc1@bits =:= 28 -> [align|Val] end. dec_CellIdentity(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:28/binary-unit:1,V1@Buf1/bitstring>> = Bytes, {V1@V4,V1@Buf5} = {list_to_bitstring([V1@V0]),V1@Buf1}, {V1@V4,V1@Buf5} end. 'enc_CellID-Broadcast'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_CellID-Broadcast-Item'(Comp) || Comp <- Val]] end. 'dec_CellID-Broadcast'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components26(V1@Add4, V1@Buf1, []). 'enc_CellID-Broadcast-Item'(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute eCGI(1) with type EUTRAN-CGI Enc3@element = element(2, Val), 'enc_EUTRAN-CGI'(Enc3@element) end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc4@element = element(3, Val), if Enc4@element =:= asn1_NOVALUE -> []; true -> 'enc_CellID-Broadcast-Item_iE-Extensions'(Enc4@element) end end]. 'enc_CellID-Broadcast-Item_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_CellID-Broadcast-Item_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_CellID-Broadcast-Item_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_CellID-Broadcast-Item'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute eCGI(1) with type EUTRAN-CGI {Term1,Bytes3} = 'dec_EUTRAN-CGI'(Bytes2), %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_CellID-Broadcast-Item_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V3@V0,V3@Buf1} = case Bytes4 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'CellID-Broadcast-Item',Term1,Term2}, {Res1,Bytes6}. 'dec_CellID-Broadcast-Item_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components27(V1@Add4, V1@Buf1, []). 'dec_CellID-Broadcast-Item_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_CellID-Cancelled'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_CellID-Cancelled-Item'(Comp) || Comp <- Val]] end. 'dec_CellID-Cancelled'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components28(V1@Add4, V1@Buf1, []). 'enc_CellID-Cancelled-Item'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute eCGI(1) with type EUTRAN-CGI Enc3@element = element(2, Val), 'enc_EUTRAN-CGI'(Enc3@element) end, align, begin %% attribute numberOfBroadcasts(2) with type INTEGER Enc4@element = element(3, Val), if Enc4@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc4@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc6@element = element(4, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> 'enc_CellID-Cancelled-Item_iE-Extensions'(Enc6@element) end end]. 'enc_CellID-Cancelled-Item_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_CellID-Cancelled-Item_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_CellID-Cancelled-Item_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_CellID-Cancelled-Item'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute eCGI(1) with type EUTRAN-CGI {Term1,Bytes3} = 'dec_EUTRAN-CGI'(Bytes2), %% attribute numberOfBroadcasts(2) with type INTEGER {Term2,Bytes4} = begin V3@Pad2 = bit_size(Bytes3) band 7, <<_:V3@Pad2,V3@V0:2/unsigned-unit:8,V3@Buf1/bitstring>> = Bytes3, {V3@V0,V3@Buf1} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_CellID-Cancelled-Item_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V4@V0,V4@Buf1} = case Bytes5 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'CellID-Cancelled-Item',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_CellID-Cancelled-Item_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components29(V1@Add4, V1@Buf1, []). 'dec_CellID-Cancelled-Item_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_CellBasedMDT(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute cellIdListforMDT(1) with type CellIdListforMDT Enc3@element = element(2, Val), enc_CellIdListforMDT(Enc3@element) end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc4@element = element(3, Val), if Enc4@element =:= asn1_NOVALUE -> []; true -> 'enc_CellBasedMDT_iE-Extensions'(Enc4@element) end end]. 'enc_CellBasedMDT_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_CellBasedMDT_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_CellBasedMDT_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_CellBasedMDT(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute cellIdListforMDT(1) with type CellIdListforMDT {Term1,Bytes3} = dec_CellIdListforMDT(Bytes2), %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_CellBasedMDT_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V3@V0,V3@Buf1} = case Bytes4 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'CellBasedMDT',Term1,Term2}, {Res1,Bytes6}. 'dec_CellBasedMDT_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components30(V1@Add4, V1@Buf1, []). 'dec_CellBasedMDT_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_CellIdListforMDT(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 5 =:= 0 -> [<>|['enc_EUTRAN-CGI'(Comp) || Comp <- Val]] end. dec_CellIdListforMDT(Bytes) -> %% Length with constraint {1,32} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components31(V1@Add2, V1@Buf1, []). enc_CellBasedQMC(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute cellIdListforQMC(1) with type CellIdListforQMC Enc3@element = element(2, Val), enc_CellIdListforQMC(Enc3@element) end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc4@element = element(3, Val), if Enc4@element =:= asn1_NOVALUE -> []; true -> 'enc_CellBasedQMC_iE-Extensions'(Enc4@element) end end]. 'enc_CellBasedQMC_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_CellBasedQMC_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_CellBasedQMC_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_CellBasedQMC(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute cellIdListforQMC(1) with type CellIdListforQMC {Term1,Bytes3} = dec_CellIdListforQMC(Bytes2), %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_CellBasedQMC_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V3@V0,V3@Buf1} = case Bytes4 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'CellBasedQMC',Term1,Term2}, {Res1,Bytes6}. 'dec_CellBasedQMC_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components32(V1@Add4, V1@Buf1, []). 'dec_CellBasedQMC_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_CellIdListforQMC(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 5 =:= 0 -> [<>|['enc_EUTRAN-CGI'(Comp) || Comp <- Val]] end. dec_CellIdListforQMC(Bytes) -> %% Length with constraint {1,32} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components33(V1@Add2, V1@Buf1, []). enc_Cdma2000PDU(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. dec_Cdma2000PDU(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. enc_Cdma2000RATType(Val) -> if Val =:= hRPD -> <<0:1,0:1>>; Val =:= onexRTT -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_Cdma2000RATType(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:1/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> hRPD; 1 -> onexRTT end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_Cdma2000SectorID(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. dec_Cdma2000SectorID(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. enc_Cdma2000HOStatus(Val) -> if Val =:= hOSuccess -> <<0:1,0:1>>; Val =:= hOFailure -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_Cdma2000HOStatus(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:1/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> hOSuccess; 1 -> hOFailure end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_Cdma2000HORequiredIndication(Val) -> if Val =:= true -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_Cdma2000HORequiredIndication(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'true',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_Cdma2000OneXSRVCCInfo(Val) -> [begin Enc1@element = element(5, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, align, begin %% attribute cdma2000OneXMEID(1) with type OCTET STRING Enc3@element = element(2, Val), Enc4@len = byte_size(Enc3@element), if Enc4@len < 128 -> [Enc4@len|Enc3@element]; Enc4@len < 16384 -> [<<2:2,Enc4@len:14>>|Enc3@element]; true -> encode_fragmented(Enc3@element, 8) end end, begin %% attribute cdma2000OneXMSI(2) with type OCTET STRING Enc5@element = element(3, Val), Enc6@len = byte_size(Enc5@element), if Enc6@len < 128 -> [Enc6@len|Enc5@element]; Enc6@len < 16384 -> [<<2:2,Enc6@len:14>>|Enc5@element]; true -> encode_fragmented(Enc5@element, 8) end end, begin %% attribute cdma2000OneXPilot(3) with type OCTET STRING Enc7@element = element(4, Val), Enc8@len = byte_size(Enc7@element), if Enc8@len < 128 -> [Enc8@len|Enc7@element]; Enc8@len < 16384 -> [<<2:2,Enc8@len:14>>|Enc7@element]; true -> encode_fragmented(Enc7@element, 8) end end|begin %% attribute iE-Extensions(4) with type SEQUENCE OF Enc9@element = element(5, Val), if Enc9@element =:= asn1_NOVALUE -> []; true -> 'enc_Cdma2000OneXSRVCCInfo_iE-Extensions'(Enc9@element) end end]. 'enc_Cdma2000OneXSRVCCInfo_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_Cdma2000OneXSRVCCInfo_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_Cdma2000OneXSRVCCInfo_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_Cdma2000OneXSRVCCInfo(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute cdma2000OneXMEID(1) with type OCTET STRING {Term1,Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, V3@Conv10 = binary:copy(V3@V0), {V3@Conv10,V3@Buf1} end, %% attribute cdma2000OneXMSI(2) with type OCTET STRING {Term2,Bytes4} = begin {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@V3:7,V4@V5:V4@V3/binary-unit:8,V4@Buf6/bitstring>> -> {V4@V5,V4@Buf6}; <<1:1,0:1,V4@V4:14,V4@V6:V4@V4/binary-unit:8,V4@Buf7/bitstring>> -> {V4@V6,V4@Buf7}; <<1:1,1:1,V4@V4:6,V4@Buf5/bitstring>> -> {V4@V6,V4@Buf7} = decode_fragmented(V4@V4, V4@Buf5, 8), {V4@V6,V4@Buf7} end, V4@Conv8 = binary:copy(V4@V0), {V4@Conv8,V4@Buf1} end, %% attribute cdma2000OneXPilot(3) with type OCTET STRING {Term3,Bytes5} = begin {V5@V0,V5@Buf1} = case Bytes4 of <<0:1,V5@V3:7,V5@V5:V5@V3/binary-unit:8,V5@Buf6/bitstring>> -> {V5@V5,V5@Buf6}; <<1:1,0:1,V5@V4:14,V5@V6:V5@V4/binary-unit:8,V5@Buf7/bitstring>> -> {V5@V6,V5@Buf7}; <<1:1,1:1,V5@V4:6,V5@Buf5/bitstring>> -> {V5@V6,V5@Buf7} = decode_fragmented(V5@V4, V5@Buf5, 8), {V5@V6,V5@Buf7} end, V5@Conv8 = binary:copy(V5@V0), {V5@Conv8,V5@Buf1} end, %% attribute iE-Extensions(4) with type SEQUENCE OF {Term4,Bytes6} = case Opt band 1 of 1 -> 'dec_Cdma2000OneXSRVCCInfo_iE-Extensions'(Bytes5); 0 -> {asn1_NOVALUE,Bytes5} end, %% Extensions {Extensions,Bytes7} = case Ext of 0 -> {<<>>,Bytes6}; 1 -> {V6@V0,V6@Buf1} = case Bytes6 of <<0:1,V6@V3:6,V6@Buf4/bitstring>> -> V6@Add5 = V6@V3 + 1, {V6@Add5,V6@Buf4}; <<1:1,V6@Buf2/bitstring>> -> V6@Pad6 = bit_size(V6@Buf2) band 7, {V6@V3,V6@Buf4} = case V6@Buf2 of <<_:V6@Pad6,0:1,V6@V8:7,V6@Buf9/bitstring>> when V6@V8 =/= 0 -> {V6@V8,V6@Buf9}; <<_:V6@Pad6,1:1,0:1,V6@V9:14,V6@Buf10/bitstring>> when V6@V9 =/= 0 -> {V6@V9,V6@Buf10}; <<_:V6@Pad6,1:1,1:1,V6@V9:6,V6@Buf10/bitstring>> when V6@V9 =/= 0 -> V6@Mul11 = V6@V9 * 16384, {V6@Mul11,V6@Buf10} end, {V6@V3,V6@Buf4} end, <> = V6@Buf1, {V6@V12,V6@Buf13} end, Bytes8= skipextensions(Bytes7, 1, Extensions), Res1 = {'Cdma2000OneXSRVCCInfo',Term1,Term2,Term3,Term4}, {Res1,Bytes8}. 'dec_Cdma2000OneXSRVCCInfo_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components34(V1@Add4, V1@Buf1, []). 'dec_Cdma2000OneXSRVCCInfo_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_Cdma2000OneXMEID(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. dec_Cdma2000OneXMEID(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. enc_Cdma2000OneXMSI(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. dec_Cdma2000OneXMSI(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. enc_Cdma2000OneXPilot(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. dec_Cdma2000OneXPilot(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. enc_Cdma2000OneXRAND(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. dec_Cdma2000OneXRAND(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. 'enc_Cell-Size'(Val) -> if Val =:= verysmall -> <<0:1,0:2>>; Val =:= small -> <<0:1,1:2>>; Val =:= medium -> <<0:1,2:2>>; Val =:= large -> <<0:1,3:2>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_Cell-Size'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:2/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> verysmall; 1 -> small; 2 -> medium; 3 -> large end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_CellType(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute cell-Size(1) with type ENUMERATED Enc3@element = element(2, Val), if Enc3@element =:= verysmall -> <<0:1,0:2>>; Enc3@element =:= small -> <<0:1,1:2>>; Enc3@element =:= medium -> <<0:1,2:2>>; Enc3@element =:= large -> <<0:1,3:2>>; true -> exit({error,{asn1,{illegal_enumerated,Enc3@element}}}) end end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc5@element = element(3, Val), if Enc5@element =:= asn1_NOVALUE -> []; true -> 'enc_CellType_iE-Extensions'(Enc5@element) end end]. 'enc_CellType_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_CellType_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_CellType_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_CellType(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute cell-Size(1) with type ENUMERATED {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:2/unsigned-unit:1,V3@Buf4/bitstring>> -> V3@Int5 = case V3@V3 of 0 -> verysmall; 1 -> small; 2 -> medium; 3 -> large end, {V3@Int5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> {V3@V3,V3@Buf4} = case V3@Buf2 of <<0:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V6,V3@Buf7}; <<1:1,V3@Buf5/bitstring>> -> V3@Pad9 = bit_size(V3@Buf5) band 7, {V3@V6,V3@Buf7} = case V3@Buf5 of <<_:V3@Pad9,0:1,V3@V11:7,V3@Buf12/bitstring>> when V3@V11 =/= 0 -> {V3@V11,V3@Buf12}; <<_:V3@Pad9,1:1,0:1,V3@V12:14,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> {V3@V12,V3@Buf13}; <<_:V3@Pad9,1:1,1:1,V3@V12:6,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> V3@Mul14 = V3@V12 * 16384, {V3@Mul14,V3@Buf13} end, <> = V3@Buf7, {V3@V15,V3@Buf16} end, V3@Int17 = case V3@V3 of _ -> {asn1_enum,V3@V3} end, {V3@Int17,V3@Buf4} end, {V3@V0,V3@Buf1} end, %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_CellType_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V4@V0,V4@Buf1} = case Bytes4 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'CellType',Term1,Term2}, {Res1,Bytes6}. 'dec_CellType_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components35(V1@Add4, V1@Buf1, []). 'dec_CellType_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_CGI(Val) -> [begin Enc1@element = element(5, Val), Enc2@element = element(6, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, align, begin %% attribute pLMNidentity(1) with type OCTET STRING Enc4@element = element(2, Val), Enc5@len = byte_size(Enc4@element), if Enc5@len =:= 3 -> Enc4@element end end, begin %% attribute lAC(2) with type OCTET STRING Enc6@element = element(3, Val), Enc7@len = byte_size(Enc6@element), if Enc7@len =:= 2 -> Enc6@element end end, begin %% attribute cI(3) with type OCTET STRING Enc8@element = element(4, Val), Enc9@len = byte_size(Enc8@element), if Enc9@len =:= 2 -> Enc8@element end end, begin %% attribute rAC(4) with type OCTET STRING Enc10@element = element(5, Val), if Enc10@element =:= asn1_NOVALUE -> []; true -> begin Enc11@len = byte_size(Enc10@element), if Enc11@len =:= 1 -> Enc10@element end end end end|begin %% attribute iE-Extensions(5) with type SEQUENCE OF Enc13@element = element(6, Val), if Enc13@element =:= asn1_NOVALUE -> []; true -> 'enc_CGI_iE-Extensions'(Enc13@element) end end]. 'enc_CGI_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_CGI_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_CGI_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_CGI(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute pLMNidentity(1) with type OCTET STRING {Term1,Bytes3} = begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:3/binary-unit:8,V3@Buf1/bitstring>> = Bytes2, V3@Conv4 = binary:copy(V3@V0), {V3@Conv4,V3@Buf1} end, %% attribute lAC(2) with type OCTET STRING {Term2,Bytes4} = begin <> = Bytes3, V4@Conv2 = binary:copy(V4@V0), {V4@Conv2,V4@Buf1} end, %% attribute cI(3) with type OCTET STRING {Term3,Bytes5} = begin <> = Bytes4, V5@Conv2 = binary:copy(V5@V0), {V5@Conv2,V5@Buf1} end, %% attribute rAC(4) with type OCTET STRING {Term4,Bytes6} = case (Opt bsr 1) band 1 of 1 -> begin <> = Bytes5, V6@Conv2 = binary:copy(V6@V0), {V6@Conv2,V6@Buf1} end; 0 -> {asn1_NOVALUE,Bytes5} end, %% attribute iE-Extensions(5) with type SEQUENCE OF {Term5,Bytes7} = case Opt band 1 of 1 -> 'dec_CGI_iE-Extensions'(Bytes6); 0 -> {asn1_NOVALUE,Bytes6} end, %% Extensions {Extensions,Bytes8} = case Ext of 0 -> {<<>>,Bytes7}; 1 -> {V7@V0,V7@Buf1} = case Bytes7 of <<0:1,V7@V3:6,V7@Buf4/bitstring>> -> V7@Add5 = V7@V3 + 1, {V7@Add5,V7@Buf4}; <<1:1,V7@Buf2/bitstring>> -> V7@Pad6 = bit_size(V7@Buf2) band 7, {V7@V3,V7@Buf4} = case V7@Buf2 of <<_:V7@Pad6,0:1,V7@V8:7,V7@Buf9/bitstring>> when V7@V8 =/= 0 -> {V7@V8,V7@Buf9}; <<_:V7@Pad6,1:1,0:1,V7@V9:14,V7@Buf10/bitstring>> when V7@V9 =/= 0 -> {V7@V9,V7@Buf10}; <<_:V7@Pad6,1:1,1:1,V7@V9:6,V7@Buf10/bitstring>> when V7@V9 =/= 0 -> V7@Mul11 = V7@V9 * 16384, {V7@Mul11,V7@Buf10} end, {V7@V3,V7@Buf4} end, <> = V7@Buf1, {V7@V12,V7@Buf13} end, Bytes9= skipextensions(Bytes8, 1, Extensions), Res1 = {'CGI',Term1,Term2,Term3,Term4,Term5}, {Res1,Bytes9}. 'dec_CGI_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components36(V1@Add4, V1@Buf1, []). 'dec_CGI_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_CI(Val) -> Enc1@len = byte_size(Val), if Enc1@len =:= 2 -> Val end. dec_CI(Bytes) -> begin <> = Bytes, V1@Conv2 = binary:copy(V1@V0), {V1@Conv2,V1@Buf1} end. enc_CNDomain(Val) -> if Val =:= ps -> <<0:1>>; Val =:= cs -> <<1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_CNDomain(Bytes) -> begin <> = Bytes, V1@Int2 = case V1@V0 of 0 -> ps; 1 -> cs end, {V1@Int2,V1@Buf1} end. enc_CNTypeRestrictions(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 4 =:= 0 -> [<>|['enc_CNTypeRestrictions-Item'(Comp) || Comp <- Val]] end. dec_CNTypeRestrictions(Bytes) -> %% Length with constraint {1,16} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components37(V1@Add2, V1@Buf1, []). 'enc_CNTypeRestrictions-Item'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, align, begin %% attribute pLMN-Identity(1) with type OCTET STRING Enc3@element = element(2, Val), Enc4@len = byte_size(Enc3@element), if Enc4@len =:= 3 -> Enc3@element end end, begin %% attribute cNType(2) with type ENUMERATED Enc5@element = element(3, Val), if Enc5@element =:= fiveGCForbidden -> <<0:1>>; Enc5@element =:= 'epc-Forbiddden' -> <<1:1,0:7>>; true -> exit({error,{asn1,{illegal_enumerated,Enc5@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_CNTypeRestrictions-Item_iE-Extensions'(Enc7@element) end end]. 'enc_CNTypeRestrictions-Item_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_CNTypeRestrictions-Item_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_CNTypeRestrictions-Item_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_CNTypeRestrictions-Item'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute pLMN-Identity(1) with type OCTET STRING {Term1,Bytes3} = begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:3/binary-unit:8,V3@Buf1/bitstring>> = Bytes2, V3@Conv4 = binary:copy(V3@V0), {V3@Conv4,V3@Buf1} end, %% attribute cNType(2) with type ENUMERATED {Term2,Bytes4} = begin {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@Buf2/bitstring>> -> {'fiveGCForbidden',V4@Buf2}; <<1:1,V4@Buf2/bitstring>> -> {V4@V3,V4@Buf4} = case V4@Buf2 of <<0:1,V4@V6:6,V4@Buf7/bitstring>> -> {V4@V6,V4@Buf7}; <<1:1,V4@Buf5/bitstring>> -> {V4@V6,V4@Buf7} = case V4@Buf5 of <<_:6,0:1,V4@V10:7,V4@Buf11/bitstring>> when V4@V10 =/= 0 -> {V4@V10,V4@Buf11}; <<_:6,1:1,0:1,V4@V11:14,V4@Buf12/bitstring>> when V4@V11 =/= 0 -> {V4@V11,V4@Buf12}; <<_:6,1:1,1:1,V4@V11:6,V4@Buf12/bitstring>> when V4@V11 =/= 0 -> V4@Mul13 = V4@V11 * 16384, {V4@Mul13,V4@Buf12} end, <> = V4@Buf7, {V4@V14,V4@Buf15} end, V4@Int16 = case V4@V3 of 0 -> 'epc-Forbiddden'; _ -> {asn1_enum,V4@V3} end, {V4@Int16,V4@Buf4} end, {V4@V0,V4@Buf1} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_CNTypeRestrictions-Item_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'CNTypeRestrictions-Item',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_CNTypeRestrictions-Item_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components38(V1@Add4, V1@Buf1, []). 'dec_CNTypeRestrictions-Item_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_CNType(Val) -> if Val =:= fiveGCForbidden -> <<0:1>>; Val =:= 'epc-Forbiddden' -> <<1:1,0:7>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_CNType(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'fiveGCForbidden',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of 0 -> 'epc-Forbiddden'; _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_ConcurrentWarningMessageIndicator(Val) -> if Val =:= true -> []; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_ConcurrentWarningMessageIndicator(Bytes) -> begin ignore, {'true',Bytes} end. enc_ConnectedengNBList(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 8 =:= 0 -> [align, Enc1@len@sub|[enc_ConnectedengNBItem(Comp) || Comp <- Val]] end. dec_ConnectedengNBList(Bytes) -> %% Length with constraint {1,256} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:1/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components39(V1@Add4, V1@Buf1, []). enc_ConnectedengNBItem(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute en-gNB-ID(1) with type BIT STRING Enc3@element = element(2, Val), Enc4@bits = bit_size(Enc3@element), Enc4@bits@sub = Enc4@bits - 22, if 0 =< Enc4@bits@sub, Enc4@bits@sub < 11 -> [<<0:1,Enc4@bits@sub:4>>, align|Enc3@element]; Enc4@bits < 128 -> [<<1:1>>, align, Enc4@bits|Enc3@element]; Enc4@bits < 16384 -> [<<1:1>>, align, <<2:2,Enc4@bits:14>>|Enc3@element]; true -> [<<1:1>>, align|encode_fragmented(Enc3@element, 1)] end end, begin %% attribute supportedTAs(2) with type SupportedTAs Enc5@element = element(3, Val), enc_SupportedTAs(Enc5@element) end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc6@element = element(4, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> 'enc_ConnectedengNBItem_iE-Extensions'(Enc6@element) end end]. 'enc_ConnectedengNBItem_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_ConnectedengNBItem_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_ConnectedengNBItem_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_ConnectedengNBItem(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute en-gNB-ID(1) with type BIT STRING {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:4/unsigned-unit:1,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 22, V3@Pad8 = bit_size(V3@Buf4) band 7, <<_:V3@Pad8,V3@V6:V3@Add5/binary-unit:1,V3@Buf7/bitstring>> = V3@Buf4, {V3@V6,V3@Buf7}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@V10:V3@V8/binary-unit:1,V3@Buf11/bitstring>> -> {V3@V10,V3@Buf11}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@V11:V3@V9/binary-unit:1,V3@Buf12/bitstring>> -> {V3@V11,V3@Buf12}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> -> {V3@V11,V3@Buf12} = decode_fragmented(V3@V9, V3@Buf10, 1), {V3@V11,V3@Buf12} end, {V3@V3,V3@Buf4} end, {V3@V13,V3@Buf14} = {list_to_bitstring([V3@V0]),V3@Buf1}, {V3@V13,V3@Buf14} end, %% attribute supportedTAs(2) with type SupportedTAs {Term2,Bytes4} = dec_SupportedTAs(Bytes3), %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_ConnectedengNBItem_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V4@V0,V4@Buf1} = case Bytes5 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'ConnectedengNBItem',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_ConnectedengNBItem_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components40(V1@Add4, V1@Buf1, []). 'dec_ConnectedengNBItem_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_ContextatSource(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute sourceNG-RAN-node-ID(1) with type Global-RAN-NODE-ID Enc3@element = element(2, Val), 'enc_Global-RAN-NODE-ID'(Enc3@element) end, begin %% attribute rAN-UE-NGAP-ID(2) with type INTEGER Enc4@element = element(3, Val), if Enc4@element bsr 32 =:= 0 -> begin Enc4@element@bin = binary:encode_unsigned(Enc4@element), Enc4@element@bin_size0 = byte_size(Enc4@element@bin), Enc4@element@bin_size = Enc4@element@bin_size0 - 1, [<>, align|Enc4@element@bin] end; true -> exit({error,{asn1,{illegal_integer,Enc4@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc6@element = element(4, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> 'enc_ContextatSource_iE-Extensions'(Enc6@element) end end]. 'enc_ContextatSource_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_ContextatSource_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_ContextatSource_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_ContextatSource(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute sourceNG-RAN-node-ID(1) with type Global-RAN-NODE-ID {Term1,Bytes3} = 'dec_Global-RAN-NODE-ID'(Bytes2), %% attribute rAN-UE-NGAP-ID(2) with type INTEGER {Term2,Bytes4} = begin <> = Bytes3, V3@Add2 = V3@V0 + 1, V3@Pad5 = bit_size(V3@Buf1) band 7, <<_:V3@Pad5,V3@V3:V3@Add2/unsigned-unit:8,V3@Buf4/bitstring>> = V3@Buf1, {V3@V3,V3@Buf4} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_ContextatSource_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V4@V0,V4@Buf1} = case Bytes5 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'ContextatSource',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_ContextatSource_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components41(V1@Add4, V1@Buf1, []). 'dec_ContextatSource_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_Correlation-ID'(Val) -> Enc1@len = byte_size(Val), if Enc1@len =:= 4 -> [align|Val] end. 'dec_Correlation-ID'(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:4/binary-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Conv4 = binary:copy(V1@V0), {V1@Conv4,V1@Buf1} end. enc_CSFallbackIndicator(Val) -> if Val =:= 'cs-fallback-required' -> <<0:1>>; Val =:= 'cs-fallback-high-priority' -> <<1:1,0:7>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_CSFallbackIndicator(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'cs-fallback-required',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of 0 -> 'cs-fallback-high-priority'; _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_AdditionalCSFallbackIndicator(Val) -> if Val =:= 'no-restriction' -> <<0:1,0:1>>; Val =:= restriction -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_AdditionalCSFallbackIndicator(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:1/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> 'no-restriction'; 1 -> restriction end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. 'enc_CSG-Id'(Val) -> Enc1@bits = bit_size(Val), if Enc1@bits =:= 27 -> [align|Val] end. 'dec_CSG-Id'(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:27/binary-unit:1,V1@Buf1/bitstring>> = Bytes, {V1@V4,V1@Buf5} = {list_to_bitstring([V1@V0]),V1@Buf1}, {V1@V4,V1@Buf5} end. 'enc_CSG-IdList'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 8 =:= 0 -> [align, Enc1@len@sub|['enc_CSG-IdList-Item'(Comp) || Comp <- Val]] end. 'dec_CSG-IdList'(Bytes) -> %% Length with constraint {1,256} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:1/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components42(V1@Add4, V1@Buf1, []). 'enc_CSG-IdList-Item'(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, align, begin %% attribute cSG-Id(1) with type BIT STRING Enc3@element = element(2, Val), Enc4@bits = bit_size(Enc3@element), if Enc4@bits =:= 27 -> Enc3@element end end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc5@element = element(3, Val), if Enc5@element =:= asn1_NOVALUE -> []; true -> 'enc_CSG-IdList-Item_iE-Extensions'(Enc5@element) end end]. 'enc_CSG-IdList-Item_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_CSG-IdList-Item_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_CSG-IdList-Item_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_CSG-IdList-Item'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute cSG-Id(1) with type BIT STRING {Term1,Bytes3} = begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:27/binary-unit:1,V3@Buf1/bitstring>> = Bytes2, {V3@V4,V3@Buf5} = {list_to_bitstring([V3@V0]),V3@Buf1}, {V3@V4,V3@Buf5} end, %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_CSG-IdList-Item_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V4@V0,V4@Buf1} = case Bytes4 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'CSG-IdList-Item',Term1,Term2}, {Res1,Bytes6}. 'dec_CSG-IdList-Item_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components43(V1@Add4, V1@Buf1, []). 'dec_CSG-IdList-Item_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_CSGMembershipStatus(Val) -> if Val =:= member -> <<0:1>>; Val =:= 'not-member' -> <<1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_CSGMembershipStatus(Bytes) -> begin <> = Bytes, V1@Int2 = case V1@V0 of 0 -> member; 1 -> 'not-member' end, {V1@Int2,V1@Buf1} end. enc_COUNTvalue(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, align, begin %% attribute pDCP-SN(1) with type INTEGER Enc3@element = element(2, Val), if Enc3@element bsr 12 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc3@element}}}) end end, begin %% attribute hFN(2) with type INTEGER Enc5@element = element(3, Val), if Enc5@element bsr 20 =:= 0 -> begin Enc5@element@bin = binary:encode_unsigned(Enc5@element), Enc5@element@bin_size0 = byte_size(Enc5@element@bin), Enc5@element@bin_size = Enc5@element@bin_size0 - 1, [<>|Enc5@element@bin] end; true -> exit({error,{asn1,{illegal_integer,Enc5@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_COUNTvalue_iE-Extensions'(Enc7@element) end end]. 'enc_COUNTvalue_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_COUNTvalue_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_COUNTvalue_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_COUNTvalue(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute pDCP-SN(1) with type INTEGER {Term1,Bytes3} = begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:2/unsigned-unit:8,V3@Buf1/bitstring>> = Bytes2, {V3@V0,V3@Buf1} end, %% attribute hFN(2) with type INTEGER {Term2,Bytes4} = begin <> = Bytes3, V4@Add2 = V4@V0 + 1, <<_:6,V4@V3:V4@Add2/unsigned-unit:8,V4@Buf4/bitstring>> = V4@Buf1, {V4@V3,V4@Buf4} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_COUNTvalue_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'COUNTvalue',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_COUNTvalue_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components44(V1@Add4, V1@Buf1, []). 'dec_COUNTvalue_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_COUNTValueExtended(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, align, begin %% attribute pDCP-SNExtended(1) with type INTEGER Enc3@element = element(2, Val), if Enc3@element bsr 15 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc3@element}}}) end end, begin %% attribute hFNModified(2) with type INTEGER Enc5@element = element(3, Val), if Enc5@element bsr 17 =:= 0 -> begin Enc5@element@bin = binary:encode_unsigned(Enc5@element), Enc5@element@bin_size0 = byte_size(Enc5@element@bin), Enc5@element@bin_size = Enc5@element@bin_size0 - 1, [<>|Enc5@element@bin] end; true -> exit({error,{asn1,{illegal_integer,Enc5@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_COUNTValueExtended_iE-Extensions'(Enc7@element) end end]. 'enc_COUNTValueExtended_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_COUNTValueExtended_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_COUNTValueExtended_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_COUNTValueExtended(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute pDCP-SNExtended(1) with type INTEGER {Term1,Bytes3} = begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:2/unsigned-unit:8,V3@Buf1/bitstring>> = Bytes2, {V3@V0,V3@Buf1} end, %% attribute hFNModified(2) with type INTEGER {Term2,Bytes4} = begin <> = Bytes3, V4@Add2 = V4@V0 + 1, <<_:6,V4@V3:V4@Add2/unsigned-unit:8,V4@Buf4/bitstring>> = V4@Buf1, {V4@V3,V4@Buf4} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_COUNTValueExtended_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'COUNTValueExtended',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_COUNTValueExtended_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components45(V1@Add4, V1@Buf1, []). 'dec_COUNTValueExtended_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_COUNTvaluePDCP-SNlength18'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute pDCP-SNlength18(1) with type INTEGER Enc3@element = element(2, Val), if Enc3@element bsr 18 =:= 0 -> begin Enc3@element@bin = binary:encode_unsigned(Enc3@element), Enc3@element@bin_size0 = byte_size(Enc3@element@bin), Enc3@element@bin_size = Enc3@element@bin_size0 - 1, [<>, align|Enc3@element@bin] end; true -> exit({error,{asn1,{illegal_integer,Enc3@element}}}) end end, begin %% attribute hFNforPDCP-SNlength18(2) with type INTEGER Enc5@element = element(3, Val), if Enc5@element bsr 14 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc5@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_COUNTvaluePDCP-SNlength18_iE-Extensions'(Enc7@element) end end]. 'enc_COUNTvaluePDCP-SNlength18_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_COUNTvaluePDCP-SNlength18_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_COUNTvaluePDCP-SNlength18_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_COUNTvaluePDCP-SNlength18'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute pDCP-SNlength18(1) with type INTEGER {Term1,Bytes3} = begin <> = Bytes2, V3@Add2 = V3@V0 + 1, V3@Pad5 = bit_size(V3@Buf1) band 7, <<_:V3@Pad5,V3@V3:V3@Add2/unsigned-unit:8,V3@Buf4/bitstring>> = V3@Buf1, {V3@V3,V3@Buf4} end, %% attribute hFNforPDCP-SNlength18(2) with type INTEGER {Term2,Bytes4} = begin <> = Bytes3, {V4@V0,V4@Buf1} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_COUNTvaluePDCP-SNlength18_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'COUNTvaluePDCP-SNlength18',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_COUNTvaluePDCP-SNlength18_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components46(V1@Add4, V1@Buf1, []). 'dec_COUNTvaluePDCP-SNlength18_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_Coverage-Level'(Val) -> if Val =:= extendedcoverage -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_Coverage-Level'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'extendedcoverage',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_CriticalityDiagnostics(Val) -> [begin Enc1@element = element(2, Val), Enc2@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin Enc3@element = element(4, Val), Enc4@element = element(5, Val), if Enc3@element =:= asn1_NOVALUE -> if Enc4@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end; true -> if Enc4@element =:= asn1_NOVALUE -> <<1:1,0:1>>; true -> <<1:1,1:1>> end end end, begin Enc5@element = element(6, Val), if Enc5@element =:= asn1_NOVALUE -> <<0:1>>; true -> <<1:1>> end end, begin %% attribute procedureCode(1) with type INTEGER Enc7@element = element(2, Val), if Enc7@element =:= asn1_NOVALUE -> []; Enc7@element bsr 8 =:= 0 -> [align, Enc7@element]; true -> exit({error,{asn1,{illegal_integer,Enc7@element}}}) end end, begin %% attribute triggeringMessage(2) with type ENUMERATED Enc10@element = element(3, Val), if Enc10@element =:= asn1_NOVALUE -> []; Enc10@element =:= 'initiating-message' -> <<0:2>>; Enc10@element =:= 'successful-outcome' -> <<1:2>>; Enc10@element =:= 'unsuccessfull-outcome' -> <<2:2>>; true -> exit({error,{asn1,{illegal_enumerated,Enc10@element}}}) end end, begin %% attribute procedureCriticality(3) with type ENUMERATED Enc13@element = element(4, Val), if Enc13@element =:= asn1_NOVALUE -> []; Enc13@element =:= reject -> <<0:2>>; Enc13@element =:= ignore -> <<1:2>>; Enc13@element =:= notify -> <<2:2>>; true -> exit({error,{asn1,{illegal_enumerated,Enc13@element}}}) end end, begin %% attribute iEsCriticalityDiagnostics(4) with type CriticalityDiagnostics-IE-List Enc16@element = element(5, Val), if Enc16@element =:= asn1_NOVALUE -> []; true -> 'enc_CriticalityDiagnostics-IE-List'(Enc16@element) end end|begin %% attribute iE-Extensions(5) with type SEQUENCE OF Enc18@element = element(6, Val), if Enc18@element =:= asn1_NOVALUE -> []; true -> 'enc_CriticalityDiagnostics_iE-Extensions'(Enc18@element) end end]. 'enc_CriticalityDiagnostics_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_CriticalityDiagnostics_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_CriticalityDiagnostics_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_CriticalityDiagnostics(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute procedureCode(1) with type INTEGER {Term1,Bytes3} = case (Opt bsr 4) band 1 of 1 -> begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:1/unsigned-unit:8,V3@Buf1/bitstring>> = Bytes2, {V3@V0,V3@Buf1} end; 0 -> {asn1_NOVALUE,Bytes2} end, %% attribute triggeringMessage(2) with type ENUMERATED {Term2,Bytes4} = case (Opt bsr 3) band 1 of 1 -> begin <> = Bytes3, V4@Int2 = case V4@V0 of 0 -> 'initiating-message'; 1 -> 'successful-outcome'; 2 -> 'unsuccessfull-outcome'; _ -> exit({error,{asn1,{decode_enumerated,V4@V0}}}) end, {V4@Int2,V4@Buf1} end; 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute procedureCriticality(3) with type ENUMERATED {Term3,Bytes5} = case (Opt bsr 2) band 1 of 1 -> begin <> = Bytes4, V5@Int2 = case V5@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V5@V0}}}) end, {V5@Int2,V5@Buf1} end; 0 -> {asn1_NOVALUE,Bytes4} end, %% attribute iEsCriticalityDiagnostics(4) with type CriticalityDiagnostics-IE-List {Term4,Bytes6} = case (Opt bsr 1) band 1 of 1 -> 'dec_CriticalityDiagnostics-IE-List'(Bytes5); 0 -> {asn1_NOVALUE,Bytes5} end, %% attribute iE-Extensions(5) with type SEQUENCE OF {Term5,Bytes7} = case Opt band 1 of 1 -> 'dec_CriticalityDiagnostics_iE-Extensions'(Bytes6); 0 -> {asn1_NOVALUE,Bytes6} end, %% Extensions {Extensions,Bytes8} = case Ext of 0 -> {<<>>,Bytes7}; 1 -> {V6@V0,V6@Buf1} = case Bytes7 of <<0:1,V6@V3:6,V6@Buf4/bitstring>> -> V6@Add5 = V6@V3 + 1, {V6@Add5,V6@Buf4}; <<1:1,V6@Buf2/bitstring>> -> V6@Pad6 = bit_size(V6@Buf2) band 7, {V6@V3,V6@Buf4} = case V6@Buf2 of <<_:V6@Pad6,0:1,V6@V8:7,V6@Buf9/bitstring>> when V6@V8 =/= 0 -> {V6@V8,V6@Buf9}; <<_:V6@Pad6,1:1,0:1,V6@V9:14,V6@Buf10/bitstring>> when V6@V9 =/= 0 -> {V6@V9,V6@Buf10}; <<_:V6@Pad6,1:1,1:1,V6@V9:6,V6@Buf10/bitstring>> when V6@V9 =/= 0 -> V6@Mul11 = V6@V9 * 16384, {V6@Mul11,V6@Buf10} end, {V6@V3,V6@Buf4} end, <> = V6@Buf1, {V6@V12,V6@Buf13} end, Bytes9= skipextensions(Bytes8, 1, Extensions), Res1 = {'CriticalityDiagnostics',Term1,Term2,Term3,Term4,Term5}, {Res1,Bytes9}. 'dec_CriticalityDiagnostics_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components47(V1@Add4, V1@Buf1, []). 'dec_CriticalityDiagnostics_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_CriticalityDiagnostics-IE-List'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 8 =:= 0 -> [align, Enc1@len@sub|['enc_CriticalityDiagnostics-IE-Item'(Comp) || Comp <- Val]] end. 'dec_CriticalityDiagnostics-IE-List'(Bytes) -> %% Length with constraint {1,256} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:1/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components48(V1@Add4, V1@Buf1, []). 'enc_CriticalityDiagnostics-IE-Item'(Val) -> [begin Enc1@element = element(5, Val), %% attribute iECriticality(1) with type ENUMERATED Enc3@element = element(2, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc3@element =:= reject -> <<0:1,0:1,0:2>>; Enc3@element =:= ignore -> <<0:1,0:1,1:2>>; Enc3@element =:= notify -> <<0:1,0:1,2:2>>; true -> exit({error,{asn1,{illegal_enumerated,Enc3@element}}}) end; true -> if Enc3@element =:= reject -> <<0:1,1:1,0:2>>; Enc3@element =:= ignore -> <<0:1,1:1,1:2>>; Enc3@element =:= notify -> <<0:1,1:1,2:2>>; true -> exit({error,{asn1,{illegal_enumerated,Enc3@element}}}) end end end, align, begin %% attribute iE-ID(2) with type INTEGER Enc5@element = element(3, Val), if Enc5@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc5@element}}}) end end, begin %% attribute typeOfError(3) with type ENUMERATED Enc7@element = element(4, Val), if Enc7@element =:= 'not-understood' -> <<0:1,0:1>>; Enc7@element =:= missing -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc7@element}}}) end end|begin %% attribute iE-Extensions(4) with type SEQUENCE OF Enc9@element = element(5, Val), if Enc9@element =:= asn1_NOVALUE -> []; true -> 'enc_CriticalityDiagnostics-IE-Item_iE-Extensions'(Enc9@element) end end]. 'enc_CriticalityDiagnostics-IE-Item_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_CriticalityDiagnostics-IE-Item_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_CriticalityDiagnostics-IE-Item_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_CriticalityDiagnostics-IE-Item'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute iECriticality(1) with type ENUMERATED {Term1,Bytes3} = begin <> = Bytes2, V3@Int2 = case V3@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V3@V0}}}) end, {V3@Int2,V3@Buf1} end, %% attribute iE-ID(2) with type INTEGER {Term2,Bytes4} = begin V4@Pad2 = bit_size(Bytes3) band 7, <<_:V4@Pad2,V4@V0:2/unsigned-unit:8,V4@Buf1/bitstring>> = Bytes3, {V4@V0,V4@Buf1} end, %% attribute typeOfError(3) with type ENUMERATED {Term3,Bytes5} = begin {V5@V0,V5@Buf1} = case Bytes4 of <<0:1,V5@V3:1/unsigned-unit:1,V5@Buf4/bitstring>> -> V5@Int5 = case V5@V3 of 0 -> 'not-understood'; 1 -> missing end, {V5@Int5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> {V5@V3,V5@Buf4} = case V5@Buf2 of <<0:1,V5@V6:6,V5@Buf7/bitstring>> -> {V5@V6,V5@Buf7}; <<1:1,V5@Buf5/bitstring>> -> {V5@V6,V5@Buf7} = case V5@Buf5 of <<_:6,0:1,V5@V10:7,V5@Buf11/bitstring>> when V5@V10 =/= 0 -> {V5@V10,V5@Buf11}; <<_:6,1:1,0:1,V5@V11:14,V5@Buf12/bitstring>> when V5@V11 =/= 0 -> {V5@V11,V5@Buf12}; <<_:6,1:1,1:1,V5@V11:6,V5@Buf12/bitstring>> when V5@V11 =/= 0 -> V5@Mul13 = V5@V11 * 16384, {V5@Mul13,V5@Buf12} end, <> = V5@Buf7, {V5@V14,V5@Buf15} end, V5@Int16 = case V5@V3 of _ -> {asn1_enum,V5@V3} end, {V5@Int16,V5@Buf4} end, {V5@V0,V5@Buf1} end, %% attribute iE-Extensions(4) with type SEQUENCE OF {Term4,Bytes6} = case Opt band 1 of 1 -> 'dec_CriticalityDiagnostics-IE-Item_iE-Extensions'(Bytes5); 0 -> {asn1_NOVALUE,Bytes5} end, %% Extensions {Extensions,Bytes7} = case Ext of 0 -> {<<>>,Bytes6}; 1 -> {V6@V0,V6@Buf1} = case Bytes6 of <<0:1,V6@V3:6,V6@Buf4/bitstring>> -> V6@Add5 = V6@V3 + 1, {V6@Add5,V6@Buf4}; <<1:1,V6@Buf2/bitstring>> -> V6@Pad6 = bit_size(V6@Buf2) band 7, {V6@V3,V6@Buf4} = case V6@Buf2 of <<_:V6@Pad6,0:1,V6@V8:7,V6@Buf9/bitstring>> when V6@V8 =/= 0 -> {V6@V8,V6@Buf9}; <<_:V6@Pad6,1:1,0:1,V6@V9:14,V6@Buf10/bitstring>> when V6@V9 =/= 0 -> {V6@V9,V6@Buf10}; <<_:V6@Pad6,1:1,1:1,V6@V9:6,V6@Buf10/bitstring>> when V6@V9 =/= 0 -> V6@Mul11 = V6@V9 * 16384, {V6@Mul11,V6@Buf10} end, {V6@V3,V6@Buf4} end, <> = V6@Buf1, {V6@V12,V6@Buf13} end, Bytes8= skipextensions(Bytes7, 1, Extensions), Res1 = {'CriticalityDiagnostics-IE-Item',Term1,Term2,Term3,Term4}, {Res1,Bytes8}. 'dec_CriticalityDiagnostics-IE-Item_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components49(V1@Add4, V1@Buf1, []). 'dec_CriticalityDiagnostics-IE-Item_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_DAPSRequestInfo(Val) -> [begin Enc1@element = element(3, Val), %% attribute dAPSIndicator(1) with type ENUMERATED Enc3@element = element(2, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc3@element =:= 'dAPS-HO-required' -> <<0:1,0:1,0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc3@element}}}) end; true -> if Enc3@element =:= 'dAPS-HO-required' -> <<0:1,1:1,0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc3@element}}}) end end end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc5@element = element(3, Val), if Enc5@element =:= asn1_NOVALUE -> []; true -> 'enc_DAPSRequestInfo_iE-Extensions'(Enc5@element) end end]. 'enc_DAPSRequestInfo_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_DAPSRequestInfo_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_DAPSRequestInfo_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_DAPSRequestInfo(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute dAPSIndicator(1) with type ENUMERATED {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@Buf2/bitstring>> -> {'dAPS-HO-required',V3@Buf2}; <<1:1,V3@Buf2/bitstring>> -> {V3@V3,V3@Buf4} = case V3@Buf2 of <<0:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V6,V3@Buf7}; <<1:1,V3@Buf5/bitstring>> -> V3@Pad9 = bit_size(V3@Buf5) band 7, {V3@V6,V3@Buf7} = case V3@Buf5 of <<_:V3@Pad9,0:1,V3@V11:7,V3@Buf12/bitstring>> when V3@V11 =/= 0 -> {V3@V11,V3@Buf12}; <<_:V3@Pad9,1:1,0:1,V3@V12:14,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> {V3@V12,V3@Buf13}; <<_:V3@Pad9,1:1,1:1,V3@V12:6,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> V3@Mul14 = V3@V12 * 16384, {V3@Mul14,V3@Buf13} end, <> = V3@Buf7, {V3@V15,V3@Buf16} end, V3@Int17 = case V3@V3 of _ -> {asn1_enum,V3@V3} end, {V3@Int17,V3@Buf4} end, {V3@V0,V3@Buf1} end, %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_DAPSRequestInfo_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V4@V0,V4@Buf1} = case Bytes4 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'DAPSRequestInfo',Term1,Term2}, {Res1,Bytes6}. 'dec_DAPSRequestInfo_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components50(V1@Add4, V1@Buf1, []). 'dec_DAPSRequestInfo_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_DAPSResponseInfoList(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 8 =:= 0 -> [align, Enc1@len@sub|['enc_DAPSResponseInfoList_ProtocolIE-Field'(Comp) || Comp <- Val]] end. 'enc_DAPSResponseInfoList_ProtocolIE-Field'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute value(3) with type Value Enc6@element = element(4, Val), Enc7@output = enc_os_Value51(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_DAPSResponseInfoList(Bytes) -> %% Length with constraint {1,256} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:1/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components52(V1@Add4, V1@Buf1, []). 'dec_DAPSResponseInfoList_ProtocolIE-Field'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute value(3) with type Value {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Value53(Tmpterm1, Term1), Res1 = {'ProtocolIE-Field',Term1,Term2,Term3}, {Res1,Bytes3}. enc_DAPSResponseInfoItem(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute e-RAB-ID(1) with type INTEGER Enc3@element = element(2, Val), if Enc3@element bsr 4 =:= 0 -> <<0:1,Enc3@element:4>>; true -> [<<1:1>>, align|encode_unconstrained_number(Enc3@element)] end end, begin %% attribute dAPSResponseInfo(2) with type DAPSResponseInfo Enc5@element = element(3, Val), enc_DAPSResponseInfo(Enc5@element) end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc6@element = element(4, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> 'enc_DAPSResponseInfoItem_iE-Extensions'(Enc6@element) end end]. 'enc_DAPSResponseInfoItem_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_DAPSResponseInfoItem_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_DAPSResponseInfoItem_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_DAPSResponseInfoItem(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute e-RAB-ID(1) with type INTEGER {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:4/unsigned-unit:1,V3@Buf4/bitstring>> -> {V3@V3,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, <> = V3@Buf4, {V3@V12,V3@Buf13} end, {V3@V0,V3@Buf1} end, %% attribute dAPSResponseInfo(2) with type DAPSResponseInfo {Term2,Bytes4} = dec_DAPSResponseInfo(Bytes3), %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_DAPSResponseInfoItem_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V4@V0,V4@Buf1} = case Bytes5 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'DAPSResponseInfoItem',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_DAPSResponseInfoItem_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components54(V1@Add4, V1@Buf1, []). 'dec_DAPSResponseInfoItem_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_DAPSResponseInfo(Val) -> [begin Enc1@element = element(3, Val), %% attribute dapsresponseindicator(1) with type ENUMERATED Enc3@element = element(2, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc3@element =:= 'dAPS-HO-accepted' -> <<0:1,0:1,0:1,0:1>>; Enc3@element =:= 'dAPS-HO-not-accepted' -> <<0:1,0:1,0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc3@element}}}) end; true -> if Enc3@element =:= 'dAPS-HO-accepted' -> <<0:1,1:1,0:1,0:1>>; Enc3@element =:= 'dAPS-HO-not-accepted' -> <<0:1,1:1,0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc3@element}}}) end end end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc5@element = element(3, Val), if Enc5@element =:= asn1_NOVALUE -> []; true -> 'enc_DAPSResponseInfo_iE-Extensions'(Enc5@element) end end]. 'enc_DAPSResponseInfo_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_DAPSResponseInfo_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_DAPSResponseInfo_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_DAPSResponseInfo(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute dapsresponseindicator(1) with type ENUMERATED {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:1/unsigned-unit:1,V3@Buf4/bitstring>> -> V3@Int5 = case V3@V3 of 0 -> 'dAPS-HO-accepted'; 1 -> 'dAPS-HO-not-accepted' end, {V3@Int5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> {V3@V3,V3@Buf4} = case V3@Buf2 of <<0:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V6,V3@Buf7}; <<1:1,V3@Buf5/bitstring>> -> V3@Pad9 = bit_size(V3@Buf5) band 7, {V3@V6,V3@Buf7} = case V3@Buf5 of <<_:V3@Pad9,0:1,V3@V11:7,V3@Buf12/bitstring>> when V3@V11 =/= 0 -> {V3@V11,V3@Buf12}; <<_:V3@Pad9,1:1,0:1,V3@V12:14,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> {V3@V12,V3@Buf13}; <<_:V3@Pad9,1:1,1:1,V3@V12:6,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> V3@Mul14 = V3@V12 * 16384, {V3@Mul14,V3@Buf13} end, <> = V3@Buf7, {V3@V15,V3@Buf16} end, V3@Int17 = case V3@V3 of _ -> {asn1_enum,V3@V3} end, {V3@Int17,V3@Buf4} end, {V3@V0,V3@Buf1} end, %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_DAPSResponseInfo_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V4@V0,V4@Buf1} = case Bytes4 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'DAPSResponseInfo',Term1,Term2}, {Res1,Bytes6}. 'dec_DAPSResponseInfo_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components55(V1@Add4, V1@Buf1, []). 'dec_DAPSResponseInfo_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_DataCodingScheme(Val) -> Enc1@bits = bit_size(Val), if Enc1@bits =:= 8 -> Val end. dec_DataCodingScheme(Bytes) -> begin <> = Bytes, {V1@V2,V1@Buf3} = {list_to_bitstring([V1@V0]),V1@Buf1}, {V1@V2,V1@Buf3} end. enc_DataSize(Val) -> Val@sub = Val - 1, if 0 =< Val@sub, Val@sub < 4095 -> [<<0:1>>, align|<>]; true -> [<<1:1>>, align|encode_unconstrained_number(Val)] end. dec_DataSize(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> V1@Pad5 = bit_size(V1@Buf2) band 7, <<_:V1@Pad5,V1@V3:2/unsigned-unit:8,V1@Buf4/bitstring>> = V1@Buf2, V1@Add7 = V1@V3 + 1, {V1@Add7,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end. 'enc_DCN-ID'(Val) -> if Val bsr 16 =:= 0 -> [align|<>]; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. 'dec_DCN-ID'(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end. enc_ServedDCNs(Val) -> Enc1@len = length(Val), if Enc1@len < 33 -> [<>|[enc_ServedDCNsItem(Comp) || Comp <- Val]] end. dec_ServedDCNs(Bytes) -> %% Length with constraint {0,32} <> = Bytes, dec_components56(V1@V0, V1@Buf1, []). enc_ServedDCNsItem(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, align, begin %% attribute dCN-ID(1) with type INTEGER Enc3@element = element(2, Val), if Enc3@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc3@element}}}) end end, begin %% attribute relativeDCNCapacity(2) with type INTEGER Enc5@element = element(3, Val), if Enc5@element bsr 8 =:= 0 -> Enc5@element; true -> exit({error,{asn1,{illegal_integer,Enc5@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_ServedDCNsItem_iE-Extensions'(Enc7@element) end end]. 'enc_ServedDCNsItem_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_ServedDCNsItem_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_ServedDCNsItem_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_ServedDCNsItem(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute dCN-ID(1) with type INTEGER {Term1,Bytes3} = begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:2/unsigned-unit:8,V3@Buf1/bitstring>> = Bytes2, {V3@V0,V3@Buf1} end, %% attribute relativeDCNCapacity(2) with type INTEGER {Term2,Bytes4} = begin <> = Bytes3, {V4@V0,V4@Buf1} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_ServedDCNsItem_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'ServedDCNsItem',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_ServedDCNsItem_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components57(V1@Add4, V1@Buf1, []). 'dec_ServedDCNsItem_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_DL-CP-SecurityInformation'(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute dl-NAS-MAC(1) with type BIT STRING Enc3@element = element(2, Val), Enc4@bits = bit_size(Enc3@element), if Enc4@bits =:= 16 -> Enc3@element end end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc5@element = element(3, Val), if Enc5@element =:= asn1_NOVALUE -> []; true -> 'enc_DL-CP-SecurityInformation_iE-Extensions'(Enc5@element) end end]. 'enc_DL-CP-SecurityInformation_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_DL-CP-SecurityInformation_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_DL-CP-SecurityInformation_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_DL-CP-SecurityInformation'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute dl-NAS-MAC(1) with type BIT STRING {Term1,Bytes3} = begin <> = Bytes2, {V3@V2,V3@Buf3} = {list_to_bitstring([V3@V0]),V3@Buf1}, {V3@V2,V3@Buf3} end, %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_DL-CP-SecurityInformation_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V4@V0,V4@Buf1} = case Bytes4 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'DL-CP-SecurityInformation',Term1,Term2}, {Res1,Bytes6}. 'dec_DL-CP-SecurityInformation_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components58(V1@Add4, V1@Buf1, []). 'dec_DL-CP-SecurityInformation_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_DL-Forwarding'(Val) -> if Val =:= 'dL-Forwarding-proposed' -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_DL-Forwarding'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'dL-Forwarding-proposed',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. 'enc_DL-NAS-MAC'(Val) -> Enc1@bits = bit_size(Val), if Enc1@bits =:= 16 -> Val end. 'dec_DL-NAS-MAC'(Bytes) -> begin <> = Bytes, {V1@V2,V1@Buf3} = {list_to_bitstring([V1@V0]),V1@Buf1}, {V1@V2,V1@Buf3} end. 'enc_DLCOUNT-PDCP-SNlength'(Val) -> {ChoiceTag,ChoiceVal} = Val, if ChoiceTag =:= 'dLCOUNTValuePDCP-SNlength12' -> [<<0:1,0:2>>|enc_COUNTvalue(ChoiceVal)]; ChoiceTag =:= 'dLCOUNTValuePDCP-SNlength15' -> [<<0:1,1:2>>|enc_COUNTValueExtended(ChoiceVal)]; ChoiceTag =:= 'dLCOUNTValuePDCP-SNlength18' -> [<<0:1,2:2>>|'enc_COUNTvaluePDCP-SNlength18'(ChoiceVal)] end. 'dec_DLCOUNT-PDCP-SNlength'(Bytes) -> case Bytes of <<0:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin <> = Bytes1, {V1@V0,V1@Buf1} end, case Choice of 0 -> {Val,NewBytes} = begin dec_COUNTvalue(Bytes2) end, {{'dLCOUNTValuePDCP-SNlength12',Val},NewBytes}; 1 -> {Val,NewBytes} = begin dec_COUNTValueExtended(Bytes2) end, {{'dLCOUNTValuePDCP-SNlength15',Val},NewBytes}; 2 -> {Val,NewBytes} = begin 'dec_COUNTvaluePDCP-SNlength18'(Bytes2) end, {{'dLCOUNTValuePDCP-SNlength18',Val},NewBytes} end; <<1:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin {V1@V0,V1@Buf1} = case Bytes1 of <<0:1,V1@V3:6,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end, begin V2@Pad3 = bit_size(Bytes2) band 7, {V2@V0,V2@Buf1} = case Bytes2 of <<_:V2@Pad3,0:1,V2@V5:7,V2@V7:V2@V5/binary-unit:8,V2@Buf8/bitstring>> -> {V2@V7,V2@Buf8}; <<_:V2@Pad3,1:1,0:1,V2@V6:14,V2@V8:V2@V6/binary-unit:8,V2@Buf9/bitstring>> -> {V2@V8,V2@Buf9}; <<_:V2@Pad3,1:1,1:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V8,V2@Buf9} = decode_fragmented(V2@V6, V2@Buf7, 8), {V2@V8,V2@Buf9} end end, case Choice of _ -> {{asn1_ExtAlt,V2@V0},V2@Buf1} end end. 'enc_Direct-Forwarding-Path-Availability'(Val) -> if Val =:= directPathAvailable -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_Direct-Forwarding-Path-Availability'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'directPathAvailable',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. 'enc_Data-Forwarding-Not-Possible'(Val) -> if Val =:= 'data-Forwarding-not-Possible' -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_Data-Forwarding-Not-Possible'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'data-Forwarding-not-Possible',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_DLNASPDUDeliveryAckRequest(Val) -> if Val =:= requested -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_DLNASPDUDeliveryAckRequest(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'requested',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_EARFCN(Val) -> if Val bsr 18 =:= 0 -> [<<0:1>>|begin Val@bin = binary:encode_unsigned(Val), Val@bin_size0 = byte_size(Val@bin), Val@bin_size = Val@bin_size0 - 1, [<>, align|Val@bin] end]; true -> [<<1:1>>, align|encode_unconstrained_number(Val)] end. dec_EARFCN(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:2/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Add5 = V1@V3 + 1, V1@Pad8 = bit_size(V1@Buf4) band 7, <<_:V1@Pad8,V1@V6:V1@Add5/unsigned-unit:8,V1@Buf7/bitstring>> = V1@Buf4, {V1@V6,V1@Buf7}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end. enc_ECGIList(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_EUTRAN-CGI'(Comp) || Comp <- Val]] end. dec_ECGIList(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components59(V1@Add4, V1@Buf1, []). enc_PWSfailedECGIList(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 8 =:= 0 -> [align, Enc1@len@sub|['enc_EUTRAN-CGI'(Comp) || Comp <- Val]] end. dec_PWSfailedECGIList(Bytes) -> %% Length with constraint {1,256} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:1/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components60(V1@Add4, V1@Buf1, []). 'enc_EDT-Session'(Val) -> if Val =:= true -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_EDT-Session'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'true',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_EmergencyAreaIDList(Val) -> Enc2@len = length(Val), Enc2@len@sub = Enc2@len - 1, if 0 =< Enc2@len@sub, Enc2@len@sub < 65535 -> [align, <>|[begin Enc1@len = byte_size(Comp), if Enc1@len =:= 3 -> Comp end end || Comp <- Val]] end. dec_EmergencyAreaIDList(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components61(V1@Add4, V1@Buf1, []). enc_EmergencyAreaID(Val) -> Enc1@len = byte_size(Val), if Enc1@len =:= 3 -> [align|Val] end. dec_EmergencyAreaID(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:3/binary-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Conv4 = binary:copy(V1@V0), {V1@Conv4,V1@Buf1} end. 'enc_EmergencyAreaID-Broadcast'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_EmergencyAreaID-Broadcast-Item'(Comp) || Comp <- Val]] end. 'dec_EmergencyAreaID-Broadcast'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components62(V1@Add4, V1@Buf1, []). 'enc_EmergencyAreaID-Broadcast-Item'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, align, begin %% attribute emergencyAreaID(1) with type OCTET STRING Enc3@element = element(2, Val), Enc4@len = byte_size(Enc3@element), if Enc4@len =:= 3 -> Enc3@element end end, begin %% attribute completedCellinEAI(2) with type CompletedCellinEAI Enc5@element = element(3, Val), enc_CompletedCellinEAI(Enc5@element) end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc6@element = element(4, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> 'enc_EmergencyAreaID-Broadcast-Item_iE-Extensions'(Enc6@element) end end]. 'enc_EmergencyAreaID-Broadcast-Item_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_EmergencyAreaID-Broadcast-Item_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_EmergencyAreaID-Broadcast-Item_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_EmergencyAreaID-Broadcast-Item'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute emergencyAreaID(1) with type OCTET STRING {Term1,Bytes3} = begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:3/binary-unit:8,V3@Buf1/bitstring>> = Bytes2, V3@Conv4 = binary:copy(V3@V0), {V3@Conv4,V3@Buf1} end, %% attribute completedCellinEAI(2) with type CompletedCellinEAI {Term2,Bytes4} = dec_CompletedCellinEAI(Bytes3), %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_EmergencyAreaID-Broadcast-Item_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V4@V0,V4@Buf1} = case Bytes5 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'EmergencyAreaID-Broadcast-Item',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_EmergencyAreaID-Broadcast-Item_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components63(V1@Add4, V1@Buf1, []). 'dec_EmergencyAreaID-Broadcast-Item_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_EmergencyAreaID-Cancelled'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_EmergencyAreaID-Cancelled-Item'(Comp) || Comp <- Val]] end. 'dec_EmergencyAreaID-Cancelled'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components64(V1@Add4, V1@Buf1, []). 'enc_EmergencyAreaID-Cancelled-Item'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, align, begin %% attribute emergencyAreaID(1) with type OCTET STRING Enc3@element = element(2, Val), Enc4@len = byte_size(Enc3@element), if Enc4@len =:= 3 -> Enc3@element end end, begin %% attribute cancelledCellinEAI(2) with type CancelledCellinEAI Enc5@element = element(3, Val), enc_CancelledCellinEAI(Enc5@element) end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc6@element = element(4, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> 'enc_EmergencyAreaID-Cancelled-Item_iE-Extensions'(Enc6@element) end end]. 'enc_EmergencyAreaID-Cancelled-Item_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_EmergencyAreaID-Cancelled-Item_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_EmergencyAreaID-Cancelled-Item_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_EmergencyAreaID-Cancelled-Item'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute emergencyAreaID(1) with type OCTET STRING {Term1,Bytes3} = begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:3/binary-unit:8,V3@Buf1/bitstring>> = Bytes2, V3@Conv4 = binary:copy(V3@V0), {V3@Conv4,V3@Buf1} end, %% attribute cancelledCellinEAI(2) with type CancelledCellinEAI {Term2,Bytes4} = dec_CancelledCellinEAI(Bytes3), %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_EmergencyAreaID-Cancelled-Item_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V4@V0,V4@Buf1} = case Bytes5 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'EmergencyAreaID-Cancelled-Item',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_EmergencyAreaID-Cancelled-Item_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components65(V1@Add4, V1@Buf1, []). 'dec_EmergencyAreaID-Cancelled-Item_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_CompletedCellinEAI(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_CompletedCellinEAI-Item'(Comp) || Comp <- Val]] end. dec_CompletedCellinEAI(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components66(V1@Add4, V1@Buf1, []). 'enc_CompletedCellinEAI-Item'(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute eCGI(1) with type EUTRAN-CGI Enc3@element = element(2, Val), 'enc_EUTRAN-CGI'(Enc3@element) end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc4@element = element(3, Val), if Enc4@element =:= asn1_NOVALUE -> []; true -> 'enc_CompletedCellinEAI-Item_iE-Extensions'(Enc4@element) end end]. 'enc_CompletedCellinEAI-Item_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_CompletedCellinEAI-Item_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_CompletedCellinEAI-Item_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_CompletedCellinEAI-Item'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute eCGI(1) with type EUTRAN-CGI {Term1,Bytes3} = 'dec_EUTRAN-CGI'(Bytes2), %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_CompletedCellinEAI-Item_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V3@V0,V3@Buf1} = case Bytes4 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'CompletedCellinEAI-Item',Term1,Term2}, {Res1,Bytes6}. 'dec_CompletedCellinEAI-Item_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components67(V1@Add4, V1@Buf1, []). 'dec_CompletedCellinEAI-Item_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_ECGI-List'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 8 =:= 0 -> [align, Enc1@len@sub|['enc_EUTRAN-CGI'(Comp) || Comp <- Val]] end. 'dec_ECGI-List'(Bytes) -> %% Length with constraint {1,256} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:1/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components68(V1@Add4, V1@Buf1, []). enc_EmergencyAreaIDListForRestart(Val) -> Enc2@len = length(Val), Enc2@len@sub = Enc2@len - 1, if Enc2@len@sub bsr 8 =:= 0 -> [align, Enc2@len@sub|[begin Enc1@len = byte_size(Comp), if Enc1@len =:= 3 -> Comp end end || Comp <- Val]] end. dec_EmergencyAreaIDListForRestart(Bytes) -> %% Length with constraint {1,256} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:1/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components69(V1@Add4, V1@Buf1, []). enc_EmergencyIndicator(Val) -> if Val =:= true -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_EmergencyIndicator(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'true',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. 'enc_ENB-EarlyStatusTransfer-TransparentContainer'(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute bearers-SubjectToEarlyStatusTransferList(1) with type Bearers-SubjectToEarlyStatusTransferList Enc3@element = element(2, Val), 'enc_Bearers-SubjectToEarlyStatusTransferList'(Enc3@element) end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc4@element = element(3, Val), if Enc4@element =:= asn1_NOVALUE -> []; true -> 'enc_ENB-EarlyStatusTransfer-TransparentContainer_iE-Extensions'(Enc4@element) end end]. 'enc_ENB-EarlyStatusTransfer-TransparentContainer_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_ENB-EarlyStatusTransfer-TransparentContainer_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_ENB-EarlyStatusTransfer-TransparentContainer_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_ENB-EarlyStatusTransfer-TransparentContainer'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute bearers-SubjectToEarlyStatusTransferList(1) with type Bearers-SubjectToEarlyStatusTransferList {Term1,Bytes3} = 'dec_Bearers-SubjectToEarlyStatusTransferList'(Bytes2), %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_ENB-EarlyStatusTransfer-TransparentContainer_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V3@V0,V3@Buf1} = case Bytes4 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'ENB-EarlyStatusTransfer-TransparentContainer',Term1,Term2}, {Res1,Bytes6}. 'dec_ENB-EarlyStatusTransfer-TransparentContainer_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components70(V1@Add4, V1@Buf1, []). 'dec_ENB-EarlyStatusTransfer-TransparentContainer_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_ENB-ID'(Val) -> {ChoiceTag,ChoiceVal} = Val, if ChoiceTag =:= 'macroENB-ID' -> begin Enc2@bits = bit_size(ChoiceVal), if Enc2@bits =:= 20 -> [<<0:1,0:1>>, align|ChoiceVal] end end; ChoiceTag =:= 'homeENB-ID' -> begin Enc4@bits = bit_size(ChoiceVal), if Enc4@bits =:= 28 -> [<<0:1,1:1>>, align|ChoiceVal] end end; ChoiceTag =:= 'short-macroENB-ID' -> begin Enc6@output = begin Enc5@bits = bit_size(ChoiceVal), if Enc5@bits =:= 18 -> ChoiceVal end end, Enc6@bin = complete(Enc6@output), Enc6@len = byte_size(Enc6@bin), [<<1:1,0:7>>, align, Enc6@len|Enc6@bin] end; ChoiceTag =:= 'long-macroENB-ID' -> begin Enc8@output = begin Enc7@bits = bit_size(ChoiceVal), if Enc7@bits =:= 21 -> ChoiceVal end end, Enc8@bin = complete(Enc8@output), Enc8@len = byte_size(Enc8@bin), [<<1:1,1:7>>, align, Enc8@len|Enc8@bin] end end. 'dec_ENB-ID'(Bytes) -> case Bytes of <<0:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin <> = Bytes1, {V1@V0,V1@Buf1} end, case Choice of 0 -> {Val,NewBytes} = begin begin V2@Pad2 = bit_size(Bytes2) band 7, <<_:V2@Pad2,V2@V0:20/binary-unit:1,V2@Buf1/bitstring>> = Bytes2, {V2@V4,V2@Buf5} = {list_to_bitstring([V2@V0]),V2@Buf1}, {V2@V4,V2@Buf5} end end, {{'macroENB-ID',Val},NewBytes}; 1 -> {Val,NewBytes} = begin begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:28/binary-unit:1,V3@Buf1/bitstring>> = Bytes2, {V3@V4,V3@Buf5} = {list_to_bitstring([V3@V0]),V3@Buf1}, {V3@V4,V3@Buf5} end end, {{'homeENB-ID',Val},NewBytes} end; <<1:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin {V1@V0,V1@Buf1} = case Bytes1 of <<0:1,V1@V3:6,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end, begin V2@Pad3 = bit_size(Bytes2) band 7, {V2@V0,V2@Buf1} = case Bytes2 of <<_:V2@Pad3,0:1,V2@V5:7,V2@V7:V2@V5/binary-unit:8,V2@Buf8/bitstring>> -> {V2@V7,V2@Buf8}; <<_:V2@Pad3,1:1,0:1,V2@V6:14,V2@V8:V2@V6/binary-unit:8,V2@Buf9/bitstring>> -> {V2@V8,V2@Buf9}; <<_:V2@Pad3,1:1,1:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V8,V2@Buf9} = decode_fragmented(V2@V6, V2@Buf7, 8), {V2@V8,V2@Buf9} end end, case Choice of 0 -> {Val,NewBytes} = begin {TmpVal,_} = begin V3@Pad2 = bit_size(V2@V0) band 7, <<_:V3@Pad2,V3@V0:18/binary-unit:1,V3@Buf1/bitstring>> = V2@V0, {V3@V4,V3@Buf5} = {list_to_bitstring([V3@V0]),V3@Buf1}, {V3@V4,V3@Buf5} end, {TmpVal,V2@Buf1} end, {{'short-macroENB-ID',Val},NewBytes}; 1 -> {Val,NewBytes} = begin {TmpVal,_} = begin V4@Pad2 = bit_size(V2@V0) band 7, <<_:V4@Pad2,V4@V0:21/binary-unit:1,V4@Buf1/bitstring>> = V2@V0, {V4@V4,V4@Buf5} = {list_to_bitstring([V4@V0]),V4@Buf1}, {V4@V4,V4@Buf5} end, {TmpVal,V2@Buf1} end, {{'long-macroENB-ID',Val},NewBytes}; _ -> {{asn1_ExtAlt,V2@V0},V2@Buf1} end end. 'enc_En-gNB-ID'(Val) -> Enc1@bits = bit_size(Val), Enc1@bits@sub = Enc1@bits - 22, if 0 =< Enc1@bits@sub, Enc1@bits@sub < 11 -> [<<0:1,Enc1@bits@sub:4>>, align|Val]; Enc1@bits < 128 -> [<<1:1>>, align, Enc1@bits|Val]; Enc1@bits < 16384 -> [<<1:1>>, align, <<2:2,Enc1@bits:14>>|Val]; true -> [<<1:1>>, align|encode_fragmented(Val, 1)] end. 'dec_En-gNB-ID'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:4/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Add5 = V1@V3 + 22, V1@Pad8 = bit_size(V1@Buf4) band 7, <<_:V1@Pad8,V1@V6:V1@Add5/binary-unit:1,V1@Buf7/bitstring>> = V1@Buf4, {V1@V6,V1@Buf7}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@V10:V1@V8/binary-unit:1,V1@Buf11/bitstring>> -> {V1@V10,V1@Buf11}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@V11:V1@V9/binary-unit:1,V1@Buf12/bitstring>> -> {V1@V11,V1@Buf12}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> -> {V1@V11,V1@Buf12} = decode_fragmented(V1@V9, V1@Buf10, 1), {V1@V11,V1@Buf12} end, {V1@V3,V1@Buf4} end, {V1@V13,V1@Buf14} = {list_to_bitstring([V1@V0]),V1@Buf1}, {V1@V13,V1@Buf14} end. 'enc_GERAN-Cell-ID'(Val) -> [begin Enc1@element = element(5, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute lAI(1) with type LAI Enc3@element = element(2, Val), enc_LAI(Enc3@element) end, begin %% attribute rAC(2) with type OCTET STRING Enc4@element = element(3, Val), Enc5@len = byte_size(Enc4@element), if Enc5@len =:= 1 -> Enc4@element end end, begin %% attribute cI(3) with type OCTET STRING Enc6@element = element(4, Val), Enc7@len = byte_size(Enc6@element), if Enc7@len =:= 2 -> Enc6@element end end|begin %% attribute iE-Extensions(4) with type SEQUENCE OF Enc8@element = element(5, Val), if Enc8@element =:= asn1_NOVALUE -> []; true -> 'enc_GERAN-Cell-ID_iE-Extensions'(Enc8@element) end end]. 'enc_GERAN-Cell-ID_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_GERAN-Cell-ID_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_GERAN-Cell-ID_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_GERAN-Cell-ID'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute lAI(1) with type LAI {Term1,Bytes3} = dec_LAI(Bytes2), %% attribute rAC(2) with type OCTET STRING {Term2,Bytes4} = begin <> = Bytes3, V3@Conv2 = binary:copy(V3@V0), {V3@Conv2,V3@Buf1} end, %% attribute cI(3) with type OCTET STRING {Term3,Bytes5} = begin <> = Bytes4, V4@Conv2 = binary:copy(V4@V0), {V4@Conv2,V4@Buf1} end, %% attribute iE-Extensions(4) with type SEQUENCE OF {Term4,Bytes6} = case Opt band 1 of 1 -> 'dec_GERAN-Cell-ID_iE-Extensions'(Bytes5); 0 -> {asn1_NOVALUE,Bytes5} end, %% Extensions {Extensions,Bytes7} = case Ext of 0 -> {<<>>,Bytes6}; 1 -> {V5@V0,V5@Buf1} = case Bytes6 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes8= skipextensions(Bytes7, 1, Extensions), Res1 = {'GERAN-Cell-ID',Term1,Term2,Term3,Term4}, {Res1,Bytes8}. 'dec_GERAN-Cell-ID_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components71(V1@Add4, V1@Buf1, []). 'dec_GERAN-Cell-ID_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_Global-ENB-ID'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, align, begin %% attribute pLMNidentity(1) with type OCTET STRING Enc3@element = element(2, Val), Enc4@len = byte_size(Enc3@element), if Enc4@len =:= 3 -> Enc3@element end end, begin %% attribute eNB-ID(2) with type ENB-ID Enc5@element = element(3, Val), 'enc_ENB-ID'(Enc5@element) end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc6@element = element(4, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> 'enc_Global-ENB-ID_iE-Extensions'(Enc6@element) end end]. 'enc_Global-ENB-ID_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_Global-ENB-ID_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_Global-ENB-ID_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_Global-ENB-ID'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute pLMNidentity(1) with type OCTET STRING {Term1,Bytes3} = begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:3/binary-unit:8,V3@Buf1/bitstring>> = Bytes2, V3@Conv4 = binary:copy(V3@V0), {V3@Conv4,V3@Buf1} end, %% attribute eNB-ID(2) with type ENB-ID {Term2,Bytes4} = 'dec_ENB-ID'(Bytes3), %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_Global-ENB-ID_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V4@V0,V4@Buf1} = case Bytes5 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'Global-ENB-ID',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_Global-ENB-ID_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components72(V1@Add4, V1@Buf1, []). 'dec_Global-ENB-ID_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_Global-en-gNB-ID'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, align, begin %% attribute pLMNidentity(1) with type OCTET STRING Enc3@element = element(2, Val), Enc4@len = byte_size(Enc3@element), if Enc4@len =:= 3 -> Enc3@element end end, begin %% attribute en-gNB-ID(2) with type BIT STRING Enc5@element = element(3, Val), Enc6@bits = bit_size(Enc5@element), Enc6@bits@sub = Enc6@bits - 22, if 0 =< Enc6@bits@sub, Enc6@bits@sub < 11 -> [<<0:1,Enc6@bits@sub:4,0:3>>|Enc5@element]; Enc6@bits < 128 -> [<<1:1,Enc6@bits:15>>|Enc5@element]; Enc6@bits < 16384 -> [<<1:1,2:9,Enc6@bits:14>>|Enc5@element]; true -> [<<1:1,0:7>>|encode_fragmented(Enc5@element, 1)] end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_Global-en-gNB-ID_iE-Extensions'(Enc7@element) end end]. 'enc_Global-en-gNB-ID_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_Global-en-gNB-ID_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_Global-en-gNB-ID_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_Global-en-gNB-ID'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute pLMNidentity(1) with type OCTET STRING {Term1,Bytes3} = begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:3/binary-unit:8,V3@Buf1/bitstring>> = Bytes2, V3@Conv4 = binary:copy(V3@V0), {V3@Conv4,V3@Buf1} end, %% attribute en-gNB-ID(2) with type BIT STRING {Term2,Bytes4} = begin {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@V3:4/unsigned-unit:1,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 22, <<_:3,V4@V6:V4@Add5/binary-unit:1,V4@Buf7/bitstring>> = V4@Buf4, {V4@V6,V4@Buf7}; <<1:1,V4@Buf2/bitstring>> -> {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:7,0:1,V4@V7:7,V4@V9:V4@V7/binary-unit:1,V4@Buf10/bitstring>> -> {V4@V9,V4@Buf10}; <<_:7,1:1,0:1,V4@V8:14,V4@V10:V4@V8/binary-unit:1,V4@Buf11/bitstring>> -> {V4@V10,V4@Buf11}; <<_:7,1:1,1:1,V4@V8:6,V4@Buf9/bitstring>> -> {V4@V10,V4@Buf11} = decode_fragmented(V4@V8, V4@Buf9, 1), {V4@V10,V4@Buf11} end, {V4@V3,V4@Buf4} end, {V4@V12,V4@Buf13} = {list_to_bitstring([V4@V0]),V4@Buf1}, {V4@V12,V4@Buf13} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_Global-en-gNB-ID_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'Global-en-gNB-ID',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_Global-en-gNB-ID_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components73(V1@Add4, V1@Buf1, []). 'dec_Global-en-gNB-ID_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_GUMMEIList(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 8 =:= 0 -> [align, Enc1@len@sub|[enc_GUMMEI(Comp) || Comp <- Val]] end. dec_GUMMEIList(Bytes) -> %% Length with constraint {1,256} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:1/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components74(V1@Add4, V1@Buf1, []). 'enc_ENB-StatusTransfer-TransparentContainer'(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute bearers-SubjectToStatusTransferList(1) with type Bearers-SubjectToStatusTransferList Enc3@element = element(2, Val), 'enc_Bearers-SubjectToStatusTransferList'(Enc3@element) end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc4@element = element(3, Val), if Enc4@element =:= asn1_NOVALUE -> []; true -> 'enc_ENB-StatusTransfer-TransparentContainer_iE-Extensions'(Enc4@element) end end]. 'enc_ENB-StatusTransfer-TransparentContainer_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_ENB-StatusTransfer-TransparentContainer_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_ENB-StatusTransfer-TransparentContainer_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_ENB-StatusTransfer-TransparentContainer'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute bearers-SubjectToStatusTransferList(1) with type Bearers-SubjectToStatusTransferList {Term1,Bytes3} = 'dec_Bearers-SubjectToStatusTransferList'(Bytes2), %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_ENB-StatusTransfer-TransparentContainer_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V3@V0,V3@Buf1} = case Bytes4 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'ENB-StatusTransfer-TransparentContainer',Term1,Term2}, {Res1,Bytes6}. 'dec_ENB-StatusTransfer-TransparentContainer_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components75(V1@Add4, V1@Buf1, []). 'dec_ENB-StatusTransfer-TransparentContainer_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_ENB-UE-S1AP-ID'(Val) -> if Val bsr 24 =:= 0 -> begin Val@bin = binary:encode_unsigned(Val), Val@bin_size0 = byte_size(Val@bin), Val@bin_size = Val@bin_size0 - 1, [<>, align|Val@bin] end; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. 'dec_ENB-UE-S1AP-ID'(Bytes) -> begin <> = Bytes, V1@Add2 = V1@V0 + 1, V1@Pad5 = bit_size(V1@Buf1) band 7, <<_:V1@Pad5,V1@V3:V1@Add2/unsigned-unit:8,V1@Buf4/bitstring>> = V1@Buf1, {V1@V3,V1@Buf4} end. enc_ENBname(Val) -> Enc1@bin = list_to_binary(Val), Enc1@len = byte_size(Enc1@bin), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 150 -> [<<0:1,Enc1@len@sub:8>>, align|Enc1@bin]; Enc1@len < 16384 -> [<<1:1>>, align, <<2:2,Enc1@len:14>>|Enc1@bin]; true -> [<<1:1>>, align|encode_fragmented(Enc1@bin, 8)] end. dec_ENBname(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:8/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Add5 = V1@V3 + 1, V1@Pad8 = bit_size(V1@Buf4) band 7, <<_:V1@Pad8,V1@V6:V1@Add5/binary-unit:8,V1@Buf7/bitstring>> = V1@Buf4, {V1@V6,V1@Buf7}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@V10:V1@V8/binary-unit:8,V1@Buf11/bitstring>> -> {V1@V10,V1@Buf11}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@V11:V1@V9/binary-unit:8,V1@Buf12/bitstring>> -> {V1@V11,V1@Buf12}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> -> {V1@V11,V1@Buf12} = decode_fragmented(V1@V9, V1@Buf10, 8), {V1@V11,V1@Buf12} end, {V1@V3,V1@Buf4} end, V1@Conv13 = binary_to_list(V1@V0), {V1@Conv13,V1@Buf1} end. enc_ENBX2TLAs(Val) -> Enc2@len = length(Val), Enc2@len@sub = Enc2@len - 1, if Enc2@len@sub bsr 1 =:= 0 -> [<>|[begin Enc1@bits = bit_size(Comp), Enc1@bits@sub = Enc1@bits - 1, if 0 =< Enc1@bits@sub, Enc1@bits@sub < 160 -> [<<0:1,Enc1@bits@sub:8>>, align|Comp]; Enc1@bits < 16384 -> [<<1:1>>, align, <<2:2,Enc1@bits:14>>, align|Comp]; true -> [<<1:1>>, align|encode_fragmented(Comp, 1)] end end || Comp <- Val]] end. dec_ENBX2TLAs(Bytes) -> %% Length with constraint {1,2} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components76(V1@Add2, V1@Buf1, []). enc_EncryptionAlgorithms(Val) -> Enc1@bits = bit_size(Val), if Enc1@bits =:= 16 -> [<<0:1>>|Val]; Enc1@bits < 128 -> [<<1:1>>, align, Enc1@bits|Val]; Enc1@bits < 16384 -> [<<1:1>>, align, <<2:2,Enc1@bits:14>>|Val]; true -> [<<1:1>>, align|encode_fragmented(Val, 1)] end. dec_EncryptionAlgorithms(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:16/binary-unit:1,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@V10:V1@V8/binary-unit:1,V1@Buf11/bitstring>> -> {V1@V10,V1@Buf11}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@V11:V1@V9/binary-unit:1,V1@Buf12/bitstring>> -> {V1@V11,V1@Buf12}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> -> {V1@V11,V1@Buf12} = decode_fragmented(V1@V9, V1@Buf10, 1), {V1@V11,V1@Buf12} end, {V1@V3,V1@Buf4} end, {V1@V13,V1@Buf14} = {list_to_bitstring([V1@V0]),V1@Buf1}, {V1@V13,V1@Buf14} end. 'enc_EN-DCSONConfigurationTransfer'(Val) -> [begin Enc1@element = element(4, Val), Enc2@element = element(5, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin %% attribute transfertype(1) with type EN-DCSONTransferType Enc4@element = element(2, Val), 'enc_EN-DCSONTransferType'(Enc4@element) end, begin %% attribute sONInformation(2) with type SONInformation Enc5@element = element(3, Val), enc_SONInformation(Enc5@element) end, begin %% attribute x2TNLConfigInfo(3) with type X2TNLConfigurationInfo Enc6@element = element(4, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> enc_X2TNLConfigurationInfo(Enc6@element) end end|begin %% attribute iE-Extensions(4) with type SEQUENCE OF Enc8@element = element(5, Val), if Enc8@element =:= asn1_NOVALUE -> []; true -> 'enc_EN-DCSONConfigurationTransfer_iE-Extensions'(Enc8@element) end end]. 'enc_EN-DCSONConfigurationTransfer_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_EN-DCSONConfigurationTransfer_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_EN-DCSONConfigurationTransfer_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_EN-DCSONConfigurationTransfer'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute transfertype(1) with type EN-DCSONTransferType {Term1,Bytes3} = 'dec_EN-DCSONTransferType'(Bytes2), %% attribute sONInformation(2) with type SONInformation {Term2,Bytes4} = dec_SONInformation(Bytes3), %% attribute x2TNLConfigInfo(3) with type X2TNLConfigurationInfo {Term3,Bytes5} = case (Opt bsr 1) band 1 of 1 -> dec_X2TNLConfigurationInfo(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% attribute iE-Extensions(4) with type SEQUENCE OF {Term4,Bytes6} = case Opt band 1 of 1 -> 'dec_EN-DCSONConfigurationTransfer_iE-Extensions'(Bytes5); 0 -> {asn1_NOVALUE,Bytes5} end, %% Extensions {Extensions,Bytes7} = case Ext of 0 -> {<<>>,Bytes6}; 1 -> {V3@V0,V3@Buf1} = case Bytes6 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes8= skipextensions(Bytes7, 1, Extensions), Res1 = {'EN-DCSONConfigurationTransfer',Term1,Term2,Term3,Term4}, {Res1,Bytes8}. 'dec_EN-DCSONConfigurationTransfer_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components77(V1@Add4, V1@Buf1, []). 'dec_EN-DCSONConfigurationTransfer_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_EN-DCSONTransferType'(Val) -> {ChoiceTag,ChoiceVal} = Val, if ChoiceTag =:= request -> [<<0:1,0:1>>|'enc_EN-DCTransferTypeRequest'(ChoiceVal)]; ChoiceTag =:= reply -> [<<0:1,1:1>>|'enc_EN-DCTransferTypeReply'(ChoiceVal)] end. 'dec_EN-DCSONTransferType'(Bytes) -> case Bytes of <<0:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin <> = Bytes1, {V1@V0,V1@Buf1} end, case Choice of 0 -> {Val,NewBytes} = begin 'dec_EN-DCTransferTypeRequest'(Bytes2) end, {{request,Val},NewBytes}; 1 -> {Val,NewBytes} = begin 'dec_EN-DCTransferTypeReply'(Bytes2) end, {{reply,Val},NewBytes} end; <<1:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin {V1@V0,V1@Buf1} = case Bytes1 of <<0:1,V1@V3:6,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end, begin V2@Pad3 = bit_size(Bytes2) band 7, {V2@V0,V2@Buf1} = case Bytes2 of <<_:V2@Pad3,0:1,V2@V5:7,V2@V7:V2@V5/binary-unit:8,V2@Buf8/bitstring>> -> {V2@V7,V2@Buf8}; <<_:V2@Pad3,1:1,0:1,V2@V6:14,V2@V8:V2@V6/binary-unit:8,V2@Buf9/bitstring>> -> {V2@V8,V2@Buf9}; <<_:V2@Pad3,1:1,1:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V8,V2@Buf9} = decode_fragmented(V2@V6, V2@Buf7, 8), {V2@V8,V2@Buf9} end end, case Choice of _ -> {{asn1_ExtAlt,V2@V0},V2@Buf1} end end. 'enc_EN-DCTransferTypeRequest'(Val) -> [begin Enc1@element = element(4, Val), Enc2@element = element(5, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin Enc3@element = element(6, Val), Enc4@element = element(7, Val), if Enc3@element =:= asn1_NOVALUE -> if Enc4@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end; true -> if Enc4@element =:= asn1_NOVALUE -> <<1:1,0:1>>; true -> <<1:1,1:1>> end end end, begin %% attribute sourceeNB(1) with type EN-DCSONeNBIdentification Enc6@element = element(2, Val), 'enc_EN-DCSONeNBIdentification'(Enc6@element) end, begin %% attribute targetengNB(2) with type EN-DCSONengNBIdentification Enc7@element = element(3, Val), 'enc_EN-DCSONengNBIdentification'(Enc7@element) end, begin %% attribute targeteNB(3) with type EN-DCSONeNBIdentification Enc8@element = element(4, Val), if Enc8@element =:= asn1_NOVALUE -> []; true -> 'enc_EN-DCSONeNBIdentification'(Enc8@element) end end, begin %% attribute associatedTAI(4) with type TAI Enc10@element = element(5, Val), if Enc10@element =:= asn1_NOVALUE -> []; true -> enc_TAI(Enc10@element) end end, begin %% attribute broadcast5GSTAI(5) with type FiveGSTAI Enc12@element = element(6, Val), if Enc12@element =:= asn1_NOVALUE -> []; true -> enc_FiveGSTAI(Enc12@element) end end|begin %% attribute iE-Extensions(6) with type SEQUENCE OF Enc14@element = element(7, Val), if Enc14@element =:= asn1_NOVALUE -> []; true -> 'enc_EN-DCTransferTypeRequest_iE-Extensions'(Enc14@element) end end]. 'enc_EN-DCTransferTypeRequest_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_EN-DCTransferTypeRequest_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_EN-DCTransferTypeRequest_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_EN-DCTransferTypeRequest'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute sourceeNB(1) with type EN-DCSONeNBIdentification {Term1,Bytes3} = 'dec_EN-DCSONeNBIdentification'(Bytes2), %% attribute targetengNB(2) with type EN-DCSONengNBIdentification {Term2,Bytes4} = 'dec_EN-DCSONengNBIdentification'(Bytes3), %% attribute targeteNB(3) with type EN-DCSONeNBIdentification {Term3,Bytes5} = case (Opt bsr 3) band 1 of 1 -> 'dec_EN-DCSONeNBIdentification'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% attribute associatedTAI(4) with type TAI {Term4,Bytes6} = case (Opt bsr 2) band 1 of 1 -> dec_TAI(Bytes5); 0 -> {asn1_NOVALUE,Bytes5} end, %% attribute broadcast5GSTAI(5) with type FiveGSTAI {Term5,Bytes7} = case (Opt bsr 1) band 1 of 1 -> dec_FiveGSTAI(Bytes6); 0 -> {asn1_NOVALUE,Bytes6} end, %% attribute iE-Extensions(6) with type SEQUENCE OF {Term6,Bytes8} = case Opt band 1 of 1 -> 'dec_EN-DCTransferTypeRequest_iE-Extensions'(Bytes7); 0 -> {asn1_NOVALUE,Bytes7} end, %% Extensions {Extensions,Bytes9} = case Ext of 0 -> {<<>>,Bytes8}; 1 -> {V3@V0,V3@Buf1} = case Bytes8 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes10= skipextensions(Bytes9, 1, Extensions), Res1 = {'EN-DCTransferTypeRequest',Term1,Term2,Term3,Term4,Term5,Term6}, {Res1,Bytes10}. 'dec_EN-DCTransferTypeRequest_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components78(V1@Add4, V1@Buf1, []). 'dec_EN-DCTransferTypeRequest_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_EN-DCTransferTypeReply'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute sourceengNB(1) with type EN-DCSONengNBIdentification Enc3@element = element(2, Val), 'enc_EN-DCSONengNBIdentification'(Enc3@element) end, begin %% attribute targeteNB(2) with type EN-DCSONeNBIdentification Enc4@element = element(3, Val), 'enc_EN-DCSONeNBIdentification'(Enc4@element) end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc5@element = element(4, Val), if Enc5@element =:= asn1_NOVALUE -> []; true -> 'enc_EN-DCTransferTypeReply_iE-Extensions'(Enc5@element) end end]. 'enc_EN-DCTransferTypeReply_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_EN-DCTransferTypeReply_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_EN-DCTransferTypeReply_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_EN-DCTransferTypeReply'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute sourceengNB(1) with type EN-DCSONengNBIdentification {Term1,Bytes3} = 'dec_EN-DCSONengNBIdentification'(Bytes2), %% attribute targeteNB(2) with type EN-DCSONeNBIdentification {Term2,Bytes4} = 'dec_EN-DCSONeNBIdentification'(Bytes3), %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_EN-DCTransferTypeReply_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V3@V0,V3@Buf1} = case Bytes5 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'EN-DCTransferTypeReply',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_EN-DCTransferTypeReply_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components79(V1@Add4, V1@Buf1, []). 'dec_EN-DCTransferTypeReply_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_EN-DCSONeNBIdentification'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute globaleNBID(1) with type Global-ENB-ID Enc3@element = element(2, Val), 'enc_Global-ENB-ID'(Enc3@element) end, begin %% attribute selectedTAI(2) with type TAI Enc4@element = element(3, Val), enc_TAI(Enc4@element) end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc5@element = element(4, Val), if Enc5@element =:= asn1_NOVALUE -> []; true -> 'enc_EN-DCSONeNBIdentification_iE-Extensions'(Enc5@element) end end]. 'enc_EN-DCSONeNBIdentification_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_EN-DCSONeNBIdentification_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_EN-DCSONeNBIdentification_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_EN-DCSONeNBIdentification'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute globaleNBID(1) with type Global-ENB-ID {Term1,Bytes3} = 'dec_Global-ENB-ID'(Bytes2), %% attribute selectedTAI(2) with type TAI {Term2,Bytes4} = dec_TAI(Bytes3), %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_EN-DCSONeNBIdentification_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V3@V0,V3@Buf1} = case Bytes5 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'EN-DCSONeNBIdentification',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_EN-DCSONeNBIdentification_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components80(V1@Add4, V1@Buf1, []). 'dec_EN-DCSONeNBIdentification_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_EN-DCSONengNBIdentification'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute globalengNBID(1) with type Global-en-gNB-ID Enc3@element = element(2, Val), 'enc_Global-en-gNB-ID'(Enc3@element) end, begin %% attribute selectedTAI(2) with type TAI Enc4@element = element(3, Val), enc_TAI(Enc4@element) end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc5@element = element(4, Val), if Enc5@element =:= asn1_NOVALUE -> []; true -> 'enc_EN-DCSONengNBIdentification_iE-Extensions'(Enc5@element) end end]. 'enc_EN-DCSONengNBIdentification_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_EN-DCSONengNBIdentification_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_EN-DCSONengNBIdentification_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_EN-DCSONengNBIdentification'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute globalengNBID(1) with type Global-en-gNB-ID {Term1,Bytes3} = 'dec_Global-en-gNB-ID'(Bytes2), %% attribute selectedTAI(2) with type TAI {Term2,Bytes4} = dec_TAI(Bytes3), %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_EN-DCSONengNBIdentification_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V3@V0,V3@Buf1} = case Bytes5 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'EN-DCSONengNBIdentification',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_EN-DCSONengNBIdentification_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components81(V1@Add4, V1@Buf1, []). 'dec_EN-DCSONengNBIdentification_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_EndIndication(Val) -> if Val =:= 'no-further-data' -> <<0:1,0:1>>; Val =:= 'further-data-exists' -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_EndIndication(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:1/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> 'no-further-data'; 1 -> 'further-data-exists' end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_EnhancedCoverageRestricted(Val) -> if Val =:= restricted -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_EnhancedCoverageRestricted(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'restricted',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. 'enc_CE-ModeBRestricted'(Val) -> if Val =:= restricted -> <<0:1,0:1>>; Val =:= 'not-restricted' -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_CE-ModeBRestricted'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:1/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> restricted; 1 -> 'not-restricted' end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_EPLMNs(Val) -> Enc2@len = length(Val), Enc2@len@sub = Enc2@len - 1, if 0 =< Enc2@len@sub, Enc2@len@sub < 15 -> [<>, align|[begin Enc1@len = byte_size(Comp), if Enc1@len =:= 3 -> Comp end end || Comp <- Val]] end. dec_EPLMNs(Bytes) -> %% Length with constraint {1,15} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components82(V1@Add2, V1@Buf1, []). enc_EventType(Val) -> if Val =:= direct -> <<0:1,0:2>>; Val =:= 'change-of-serve-cell' -> <<0:1,1:2>>; Val =:= 'stop-change-of-serve-cell' -> <<0:1,2:2>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_EventType(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:2/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> direct; 1 -> 'change-of-serve-cell'; 2 -> 'stop-change-of-serve-cell'; _ -> exit({error,{asn1,{decode_enumerated,V1@V3}}}) end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. 'enc_E-RAB-ID'(Val) -> if Val bsr 4 =:= 0 -> <<0:1,Val:4>>; true -> [<<1:1>>, align|encode_unconstrained_number(Val)] end. 'dec_E-RAB-ID'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:4/unsigned-unit:1,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end. 'enc_E-RABInformationList'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 8 =:= 0 -> [align, Enc1@len@sub|['enc_E-RABInformationList_ProtocolIE-Field'(Comp) || Comp <- Val]] end. 'enc_E-RABInformationList_ProtocolIE-Field'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute value(3) with type Value Enc6@element = element(4, Val), Enc7@output = enc_os_Value83(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_E-RABInformationList'(Bytes) -> %% Length with constraint {1,256} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:1/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components84(V1@Add4, V1@Buf1, []). 'dec_E-RABInformationList_ProtocolIE-Field'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute value(3) with type Value {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Value85(Tmpterm1, Term1), Res1 = {'ProtocolIE-Field',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_E-RABInformationListItem'(Val) -> [begin Enc1@element = element(3, Val), Enc2@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin %% attribute e-RAB-ID(1) with type INTEGER Enc4@element = element(2, Val), if Enc4@element bsr 4 =:= 0 -> <<0:1,Enc4@element:4>>; true -> [<<1:1>>, align|encode_unconstrained_number(Enc4@element)] end end, begin %% attribute dL-Forwarding(2) with type ENUMERATED Enc6@element = element(3, Val), if Enc6@element =:= asn1_NOVALUE -> []; Enc6@element =:= 'dL-Forwarding-proposed' -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc6@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc9@element = element(4, Val), if Enc9@element =:= asn1_NOVALUE -> []; true -> 'enc_E-RABInformationListItem_iE-Extensions'(Enc9@element) end end]. 'enc_E-RABInformationListItem_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_E-RABInformationListItem_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_E-RABInformationListItem_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension86(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_E-RABInformationListItem'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute e-RAB-ID(1) with type INTEGER {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:4/unsigned-unit:1,V3@Buf4/bitstring>> -> {V3@V3,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, <> = V3@Buf4, {V3@V12,V3@Buf13} end, {V3@V0,V3@Buf1} end, %% attribute dL-Forwarding(2) with type ENUMERATED {Term2,Bytes4} = case (Opt bsr 1) band 1 of 1 -> begin {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@Buf2/bitstring>> -> {'dL-Forwarding-proposed',V4@Buf2}; <<1:1,V4@Buf2/bitstring>> -> {V4@V3,V4@Buf4} = case V4@Buf2 of <<0:1,V4@V6:6,V4@Buf7/bitstring>> -> {V4@V6,V4@Buf7}; <<1:1,V4@Buf5/bitstring>> -> V4@Pad9 = bit_size(V4@Buf5) band 7, {V4@V6,V4@Buf7} = case V4@Buf5 of <<_:V4@Pad9,0:1,V4@V11:7,V4@Buf12/bitstring>> when V4@V11 =/= 0 -> {V4@V11,V4@Buf12}; <<_:V4@Pad9,1:1,0:1,V4@V12:14,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> {V4@V12,V4@Buf13}; <<_:V4@Pad9,1:1,1:1,V4@V12:6,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> V4@Mul14 = V4@V12 * 16384, {V4@Mul14,V4@Buf13} end, <> = V4@Buf7, {V4@V15,V4@Buf16} end, V4@Int17 = case V4@V3 of _ -> {asn1_enum,V4@V3} end, {V4@Int17,V4@Buf4} end, {V4@V0,V4@Buf1} end; 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_E-RABInformationListItem_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'E-RABInformationListItem',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_E-RABInformationListItem_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components87(V1@Add4, V1@Buf1, []). 'dec_E-RABInformationListItem_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension88(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_E-RABList'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 8 =:= 0 -> [align, Enc1@len@sub|['enc_E-RABList_ProtocolIE-Field'(Comp) || Comp <- Val]] end. 'enc_E-RABList_ProtocolIE-Field'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute value(3) with type Value Enc6@element = element(4, Val), Enc7@output = enc_os_Value89(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_E-RABList'(Bytes) -> %% Length with constraint {1,256} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:1/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components90(V1@Add4, V1@Buf1, []). 'dec_E-RABList_ProtocolIE-Field'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute value(3) with type Value {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Value91(Tmpterm1, Term1), Res1 = {'ProtocolIE-Field',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_E-RABItem'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute e-RAB-ID(1) with type INTEGER Enc3@element = element(2, Val), if Enc3@element bsr 4 =:= 0 -> <<0:1,Enc3@element:4>>; true -> [<<1:1>>, align|encode_unconstrained_number(Enc3@element)] end end, begin %% attribute cause(2) with type Cause Enc5@element = element(3, Val), enc_Cause(Enc5@element) end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc6@element = element(4, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> 'enc_E-RABItem_iE-Extensions'(Enc6@element) end end]. 'enc_E-RABItem_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_E-RABItem_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_E-RABItem_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_E-RABItem'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute e-RAB-ID(1) with type INTEGER {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:4/unsigned-unit:1,V3@Buf4/bitstring>> -> {V3@V3,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, <> = V3@Buf4, {V3@V12,V3@Buf13} end, {V3@V0,V3@Buf1} end, %% attribute cause(2) with type Cause {Term2,Bytes4} = dec_Cause(Bytes3), %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_E-RABItem_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V4@V0,V4@Buf1} = case Bytes5 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'E-RABItem',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_E-RABItem_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components92(V1@Add4, V1@Buf1, []). 'dec_E-RABItem_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_E-RABLevelQoSParameters'(Val) -> [begin Enc1@element = element(4, Val), Enc2@element = element(5, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, align, begin %% attribute qCI(1) with type INTEGER Enc4@element = element(2, Val), if Enc4@element bsr 8 =:= 0 -> Enc4@element; true -> exit({error,{asn1,{illegal_integer,Enc4@element}}}) end end, begin %% attribute allocationRetentionPriority(2) with type AllocationAndRetentionPriority Enc6@element = element(3, Val), enc_AllocationAndRetentionPriority(Enc6@element) end, begin %% attribute gbrQosInformation(3) with type GBR-QosInformation Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_GBR-QosInformation'(Enc7@element) end end|begin %% attribute iE-Extensions(4) with type SEQUENCE OF Enc9@element = element(5, Val), if Enc9@element =:= asn1_NOVALUE -> []; true -> 'enc_E-RABLevelQoSParameters_iE-Extensions'(Enc9@element) end end]. 'enc_E-RABLevelQoSParameters_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_E-RABLevelQoSParameters_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_E-RABLevelQoSParameters_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension93(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_E-RABLevelQoSParameters'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute qCI(1) with type INTEGER {Term1,Bytes3} = begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:1/unsigned-unit:8,V3@Buf1/bitstring>> = Bytes2, {V3@V0,V3@Buf1} end, %% attribute allocationRetentionPriority(2) with type AllocationAndRetentionPriority {Term2,Bytes4} = dec_AllocationAndRetentionPriority(Bytes3), %% attribute gbrQosInformation(3) with type GBR-QosInformation {Term3,Bytes5} = case (Opt bsr 1) band 1 of 1 -> 'dec_GBR-QosInformation'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% attribute iE-Extensions(4) with type SEQUENCE OF {Term4,Bytes6} = case Opt band 1 of 1 -> 'dec_E-RABLevelQoSParameters_iE-Extensions'(Bytes5); 0 -> {asn1_NOVALUE,Bytes5} end, %% Extensions {Extensions,Bytes7} = case Ext of 0 -> {<<>>,Bytes6}; 1 -> {V4@V0,V4@Buf1} = case Bytes6 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes8= skipextensions(Bytes7, 1, Extensions), Res1 = {'E-RABLevelQoSParameters',Term1,Term2,Term3,Term4}, {Res1,Bytes8}. 'dec_E-RABLevelQoSParameters_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components94(V1@Add4, V1@Buf1, []). 'dec_E-RABLevelQoSParameters_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension95(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_E-RABSecurityResultList'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 8 =:= 0 -> [align, Enc1@len@sub|['enc_E-RABSecurityResultList_ProtocolIE-Field'(Comp) || Comp <- Val]] end. 'enc_E-RABSecurityResultList_ProtocolIE-Field'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute value(3) with type Value Enc6@element = element(4, Val), Enc7@output = enc_os_Value96(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_E-RABSecurityResultList'(Bytes) -> %% Length with constraint {1,256} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:1/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components97(V1@Add4, V1@Buf1, []). 'dec_E-RABSecurityResultList_ProtocolIE-Field'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute value(3) with type Value {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Value98(Tmpterm1, Term1), Res1 = {'ProtocolIE-Field',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_E-RABSecurityResultItem'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute e-RAB-ID(1) with type INTEGER Enc3@element = element(2, Val), if Enc3@element bsr 4 =:= 0 -> <<0:1,Enc3@element:4>>; true -> [<<1:1>>, align|encode_unconstrained_number(Enc3@element)] end end, begin %% attribute securityResult(2) with type SecurityResult Enc5@element = element(3, Val), enc_SecurityResult(Enc5@element) end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc6@element = element(4, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> 'enc_E-RABSecurityResultItem_iE-Extensions'(Enc6@element) end end]. 'enc_E-RABSecurityResultItem_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_E-RABSecurityResultItem_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_E-RABSecurityResultItem_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_E-RABSecurityResultItem'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute e-RAB-ID(1) with type INTEGER {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:4/unsigned-unit:1,V3@Buf4/bitstring>> -> {V3@V3,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, <> = V3@Buf4, {V3@V12,V3@Buf13} end, {V3@V0,V3@Buf1} end, %% attribute securityResult(2) with type SecurityResult {Term2,Bytes4} = dec_SecurityResult(Bytes3), %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_E-RABSecurityResultItem_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V4@V0,V4@Buf1} = case Bytes5 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'E-RABSecurityResultItem',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_E-RABSecurityResultItem_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components99(V1@Add4, V1@Buf1, []). 'dec_E-RABSecurityResultItem_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_E-RABUsageReportList'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 1 =:= 0 -> [<>|['enc_E-RABUsageReportList_ProtocolIE-Field'(Comp) || Comp <- Val]] end. 'enc_E-RABUsageReportList_ProtocolIE-Field'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute value(3) with type Value Enc6@element = element(4, Val), Enc7@output = enc_os_Value100(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_E-RABUsageReportList'(Bytes) -> %% Length with constraint {1,2} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components101(V1@Add2, V1@Buf1, []). 'dec_E-RABUsageReportList_ProtocolIE-Field'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute value(3) with type Value {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Value102(Tmpterm1, Term1), Res1 = {'ProtocolIE-Field',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_E-RABUsageReportItem'(Val) -> [begin Enc1@element = element(6, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, align, begin %% attribute startTimestamp(1) with type OCTET STRING Enc3@element = element(2, Val), Enc4@len = byte_size(Enc3@element), if Enc4@len =:= 4 -> Enc3@element end end, begin %% attribute endTimestamp(2) with type OCTET STRING Enc5@element = element(3, Val), Enc6@len = byte_size(Enc5@element), if Enc6@len =:= 4 -> Enc5@element end end, begin %% attribute usageCountUL(3) with type INTEGER Enc7@element = element(4, Val), if Enc7@element bsr 64 =:= 0 -> begin Enc7@element@bin = binary:encode_unsigned(Enc7@element), Enc7@element@bin_size0 = byte_size(Enc7@element@bin), Enc7@element@bin_size = Enc7@element@bin_size0 - 1, [<>|Enc7@element@bin] end; true -> exit({error,{asn1,{illegal_integer,Enc7@element}}}) end end, begin %% attribute usageCountDL(4) with type INTEGER Enc9@element = element(5, Val), if Enc9@element bsr 64 =:= 0 -> begin Enc9@element@bin = binary:encode_unsigned(Enc9@element), Enc9@element@bin_size0 = byte_size(Enc9@element@bin), Enc9@element@bin_size = Enc9@element@bin_size0 - 1, [<>|Enc9@element@bin] end; true -> exit({error,{asn1,{illegal_integer,Enc9@element}}}) end end|begin %% attribute iE-Extensions(5) with type SEQUENCE OF Enc11@element = element(6, Val), if Enc11@element =:= asn1_NOVALUE -> []; true -> 'enc_E-RABUsageReportItem_iE-Extensions'(Enc11@element) end end]. 'enc_E-RABUsageReportItem_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_E-RABUsageReportItem_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_E-RABUsageReportItem_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_E-RABUsageReportItem'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute startTimestamp(1) with type OCTET STRING {Term1,Bytes3} = begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:4/binary-unit:8,V3@Buf1/bitstring>> = Bytes2, V3@Conv4 = binary:copy(V3@V0), {V3@Conv4,V3@Buf1} end, %% attribute endTimestamp(2) with type OCTET STRING {Term2,Bytes4} = begin <> = Bytes3, V4@Conv2 = binary:copy(V4@V0), {V4@Conv2,V4@Buf1} end, %% attribute usageCountUL(3) with type INTEGER {Term3,Bytes5} = begin <> = Bytes4, V5@Add2 = V5@V0 + 1, <<_:5,V5@V3:V5@Add2/unsigned-unit:8,V5@Buf4/bitstring>> = V5@Buf1, {V5@V3,V5@Buf4} end, %% attribute usageCountDL(4) with type INTEGER {Term4,Bytes6} = begin <> = Bytes5, V6@Add2 = V6@V0 + 1, <<_:5,V6@V3:V6@Add2/unsigned-unit:8,V6@Buf4/bitstring>> = V6@Buf1, {V6@V3,V6@Buf4} end, %% attribute iE-Extensions(5) with type SEQUENCE OF {Term5,Bytes7} = case Opt band 1 of 1 -> 'dec_E-RABUsageReportItem_iE-Extensions'(Bytes6); 0 -> {asn1_NOVALUE,Bytes6} end, %% Extensions {Extensions,Bytes8} = case Ext of 0 -> {<<>>,Bytes7}; 1 -> {V7@V0,V7@Buf1} = case Bytes7 of <<0:1,V7@V3:6,V7@Buf4/bitstring>> -> V7@Add5 = V7@V3 + 1, {V7@Add5,V7@Buf4}; <<1:1,V7@Buf2/bitstring>> -> V7@Pad6 = bit_size(V7@Buf2) band 7, {V7@V3,V7@Buf4} = case V7@Buf2 of <<_:V7@Pad6,0:1,V7@V8:7,V7@Buf9/bitstring>> when V7@V8 =/= 0 -> {V7@V8,V7@Buf9}; <<_:V7@Pad6,1:1,0:1,V7@V9:14,V7@Buf10/bitstring>> when V7@V9 =/= 0 -> {V7@V9,V7@Buf10}; <<_:V7@Pad6,1:1,1:1,V7@V9:6,V7@Buf10/bitstring>> when V7@V9 =/= 0 -> V7@Mul11 = V7@V9 * 16384, {V7@Mul11,V7@Buf10} end, {V7@V3,V7@Buf4} end, <> = V7@Buf1, {V7@V12,V7@Buf13} end, Bytes9= skipextensions(Bytes8, 1, Extensions), Res1 = {'E-RABUsageReportItem',Term1,Term2,Term3,Term4,Term5}, {Res1,Bytes9}. 'dec_E-RABUsageReportItem_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components103(V1@Add4, V1@Buf1, []). 'dec_E-RABUsageReportItem_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_Ethernet-Type'(Val) -> if Val =:= true -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_Ethernet-Type'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'true',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. 'enc_EUTRAN-CGI'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, align, begin %% attribute pLMNidentity(1) with type OCTET STRING Enc3@element = element(2, Val), Enc4@len = byte_size(Enc3@element), if Enc4@len =:= 3 -> Enc3@element end end, begin %% attribute cell-ID(2) with type BIT STRING Enc5@element = element(3, Val), Enc6@bits = bit_size(Enc5@element), if Enc6@bits =:= 28 -> Enc5@element end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_EUTRAN-CGI_iE-Extensions'(Enc7@element) end end]. 'enc_EUTRAN-CGI_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_EUTRAN-CGI_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_EUTRAN-CGI_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_EUTRAN-CGI'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute pLMNidentity(1) with type OCTET STRING {Term1,Bytes3} = begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:3/binary-unit:8,V3@Buf1/bitstring>> = Bytes2, V3@Conv4 = binary:copy(V3@V0), {V3@Conv4,V3@Buf1} end, %% attribute cell-ID(2) with type BIT STRING {Term2,Bytes4} = begin <> = Bytes3, {V4@V2,V4@Buf3} = {list_to_bitstring([V4@V0]),V4@Buf1}, {V4@V2,V4@Buf3} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_EUTRAN-CGI_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'EUTRAN-CGI',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_EUTRAN-CGI_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components104(V1@Add4, V1@Buf1, []). 'dec_EUTRAN-CGI_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_EUTRANRoundTripDelayEstimationInfo(Val) -> if Val bsr 11 =:= 0 -> [align|<>]; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. dec_EUTRANRoundTripDelayEstimationInfo(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end. enc_EventL1LoggedMDTConfig(Val) -> [begin Enc1@element = element(5, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute l1Threshold(1) with type MeasurementThresholdL1LoggedMDT Enc3@element = element(2, Val), enc_MeasurementThresholdL1LoggedMDT(Enc3@element) end, begin %% attribute hysteresis(2) with type INTEGER Enc4@element = element(3, Val), if 0 =< Enc4@element, Enc4@element < 31 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc4@element}}}) end end, begin %% attribute timeToTrigger(3) with type ENUMERATED Enc6@element = element(4, Val), if Enc6@element =:= ms0 -> <<0:4>>; Enc6@element =:= ms40 -> <<1:4>>; Enc6@element =:= ms64 -> <<2:4>>; Enc6@element =:= ms80 -> <<3:4>>; Enc6@element =:= ms100 -> <<4:4>>; Enc6@element =:= ms128 -> <<5:4>>; Enc6@element =:= ms160 -> <<6:4>>; Enc6@element =:= ms256 -> <<7:4>>; Enc6@element =:= ms320 -> <<8:4>>; Enc6@element =:= ms480 -> <<9:4>>; Enc6@element =:= ms512 -> <<10:4>>; Enc6@element =:= ms640 -> <<11:4>>; Enc6@element =:= ms1024 -> <<12:4>>; Enc6@element =:= ms1280 -> <<13:4>>; Enc6@element =:= ms2560 -> <<14:4>>; Enc6@element =:= ms5120 -> <<15:4>>; true -> exit({error,{asn1,{illegal_enumerated,Enc6@element}}}) end end|begin %% attribute iE-Extensions(4) with type SEQUENCE OF Enc8@element = element(5, Val), if Enc8@element =:= asn1_NOVALUE -> []; true -> 'enc_EventL1LoggedMDTConfig_iE-Extensions'(Enc8@element) end end]. 'enc_EventL1LoggedMDTConfig_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_EventL1LoggedMDTConfig_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_EventL1LoggedMDTConfig_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_EventL1LoggedMDTConfig(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute l1Threshold(1) with type MeasurementThresholdL1LoggedMDT {Term1,Bytes3} = dec_MeasurementThresholdL1LoggedMDT(Bytes2), %% attribute hysteresis(2) with type INTEGER {Term2,Bytes4} = begin <> = Bytes3, {V3@V0,V3@Buf1} end, %% attribute timeToTrigger(3) with type ENUMERATED {Term3,Bytes5} = begin <> = Bytes4, V4@Int2 = case V4@V0 of 0 -> ms0; 1 -> ms40; 2 -> ms64; 3 -> ms80; 4 -> ms100; 5 -> ms128; 6 -> ms160; 7 -> ms256; 8 -> ms320; 9 -> ms480; 10 -> ms512; 11 -> ms640; 12 -> ms1024; 13 -> ms1280; 14 -> ms2560; 15 -> ms5120 end, {V4@Int2,V4@Buf1} end, %% attribute iE-Extensions(4) with type SEQUENCE OF {Term4,Bytes6} = case Opt band 1 of 1 -> 'dec_EventL1LoggedMDTConfig_iE-Extensions'(Bytes5); 0 -> {asn1_NOVALUE,Bytes5} end, %% Extensions {Extensions,Bytes7} = case Ext of 0 -> {<<>>,Bytes6}; 1 -> {V5@V0,V5@Buf1} = case Bytes6 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes8= skipextensions(Bytes7, 1, Extensions), Res1 = {'EventL1LoggedMDTConfig',Term1,Term2,Term3,Term4}, {Res1,Bytes8}. 'dec_EventL1LoggedMDTConfig_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components105(V1@Add4, V1@Buf1, []). 'dec_EventL1LoggedMDTConfig_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_EventTrigger(Val) -> {ChoiceTag,ChoiceVal} = Val, if ChoiceTag =:= outOfCoverage -> if ChoiceVal =:= true -> <<0:2,0:1>>; true -> exit({error,{asn1,{illegal_enumerated,ChoiceVal}}}) end; ChoiceTag =:= eventL1LoggedMDTConfig -> [<<1:2>>|enc_EventL1LoggedMDTConfig(ChoiceVal)]; ChoiceTag =:= 'choice-Extensions' -> [<<2:2>>|'enc_EventTrigger_choice-Extensions'(ChoiceVal)] end. 'enc_EventTrigger_choice-Extensions'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute value(3) with type Value Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_EventTrigger(Bytes) -> {Choice,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, case Choice of 0 -> {Val,NewBytes} = begin begin {V2@V0,V2@Buf1} = case Bytes1 of <<0:1,V2@Buf2/bitstring>> -> {'true',V2@Buf2}; <<1:1,V2@Buf2/bitstring>> -> {V2@V3,V2@Buf4} = case V2@Buf2 of <<0:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V6,V2@Buf7}; <<1:1,V2@Buf5/bitstring>> -> V2@Pad9 = bit_size(V2@Buf5) band 7, {V2@V6,V2@Buf7} = case V2@Buf5 of <<_:V2@Pad9,0:1,V2@V11:7,V2@Buf12/bitstring>> when V2@V11 =/= 0 -> {V2@V11,V2@Buf12}; <<_:V2@Pad9,1:1,0:1,V2@V12:14,V2@Buf13/bitstring>> when V2@V12 =/= 0 -> {V2@V12,V2@Buf13}; <<_:V2@Pad9,1:1,1:1,V2@V12:6,V2@Buf13/bitstring>> when V2@V12 =/= 0 -> V2@Mul14 = V2@V12 * 16384, {V2@Mul14,V2@Buf13} end, <> = V2@Buf7, {V2@V15,V2@Buf16} end, V2@Int17 = case V2@V3 of _ -> {asn1_enum,V2@V3} end, {V2@Int17,V2@Buf4} end, {V2@V0,V2@Buf1} end end, {{outOfCoverage,Val},NewBytes}; 1 -> {Val,NewBytes} = begin dec_EventL1LoggedMDTConfig(Bytes1) end, {{eventL1LoggedMDTConfig,Val},NewBytes}; 2 -> {Val,NewBytes} = begin 'dec_EventTrigger_choice-Extensions'(Bytes1) end, {{'choice-Extensions',Val},NewBytes} end. 'dec_EventTrigger_choice-Extensions'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute value(3) with type Value {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'EventTrigger_choice-Extensions',Term1,Term2,Term3}, {Res1,Bytes3}. enc_ExpectedUEBehaviour(Val) -> [begin Enc1@element = element(2, Val), Enc2@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin Enc3@element = element(4, Val), if Enc3@element =:= asn1_NOVALUE -> <<0:1>>; true -> <<1:1>> end end, begin %% attribute expectedActivity(1) with type ExpectedUEActivityBehaviour Enc5@element = element(2, Val), if Enc5@element =:= asn1_NOVALUE -> []; true -> enc_ExpectedUEActivityBehaviour(Enc5@element) end end, begin %% attribute expectedHOInterval(2) with type ENUMERATED Enc7@element = element(3, Val), if Enc7@element =:= asn1_NOVALUE -> []; Enc7@element =:= sec15 -> <<0:1,0:3>>; Enc7@element =:= sec30 -> <<0:1,1:3>>; Enc7@element =:= sec60 -> <<0:1,2:3>>; Enc7@element =:= sec90 -> <<0:1,3:3>>; Enc7@element =:= sec120 -> <<0:1,4:3>>; Enc7@element =:= sec180 -> <<0:1,5:3>>; Enc7@element =:= 'long-time' -> <<0:1,6:3>>; true -> exit({error,{asn1,{illegal_enumerated,Enc7@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc10@element = element(4, Val), if Enc10@element =:= asn1_NOVALUE -> []; true -> 'enc_ExpectedUEBehaviour_iE-Extensions'(Enc10@element) end end]. 'enc_ExpectedUEBehaviour_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_ExpectedUEBehaviour_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_ExpectedUEBehaviour_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_ExpectedUEBehaviour(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute expectedActivity(1) with type ExpectedUEActivityBehaviour {Term1,Bytes3} = case (Opt bsr 2) band 1 of 1 -> dec_ExpectedUEActivityBehaviour(Bytes2); 0 -> {asn1_NOVALUE,Bytes2} end, %% attribute expectedHOInterval(2) with type ENUMERATED {Term2,Bytes4} = case (Opt bsr 1) band 1 of 1 -> begin {V3@V0,V3@Buf1} = case Bytes3 of <<0:1,V3@V3:3/unsigned-unit:1,V3@Buf4/bitstring>> -> V3@Int5 = case V3@V3 of 0 -> sec15; 1 -> sec30; 2 -> sec60; 3 -> sec90; 4 -> sec120; 5 -> sec180; 6 -> 'long-time'; _ -> exit({error,{asn1,{decode_enumerated,V3@V3}}}) end, {V3@Int5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> {V3@V3,V3@Buf4} = case V3@Buf2 of <<0:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V6,V3@Buf7}; <<1:1,V3@Buf5/bitstring>> -> V3@Pad9 = bit_size(V3@Buf5) band 7, {V3@V6,V3@Buf7} = case V3@Buf5 of <<_:V3@Pad9,0:1,V3@V11:7,V3@Buf12/bitstring>> when V3@V11 =/= 0 -> {V3@V11,V3@Buf12}; <<_:V3@Pad9,1:1,0:1,V3@V12:14,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> {V3@V12,V3@Buf13}; <<_:V3@Pad9,1:1,1:1,V3@V12:6,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> V3@Mul14 = V3@V12 * 16384, {V3@Mul14,V3@Buf13} end, <> = V3@Buf7, {V3@V15,V3@Buf16} end, V3@Int17 = case V3@V3 of _ -> {asn1_enum,V3@V3} end, {V3@Int17,V3@Buf4} end, {V3@V0,V3@Buf1} end; 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_ExpectedUEBehaviour_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V4@V0,V4@Buf1} = case Bytes5 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'ExpectedUEBehaviour',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_ExpectedUEBehaviour_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components106(V1@Add4, V1@Buf1, []). 'dec_ExpectedUEBehaviour_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_ExpectedUEActivityBehaviour(Val) -> [begin Enc1@element = element(2, Val), Enc2@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin Enc3@element = element(4, Val), Enc4@element = element(5, Val), if Enc3@element =:= asn1_NOVALUE -> if Enc4@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end; true -> if Enc4@element =:= asn1_NOVALUE -> <<1:1,0:1>>; true -> <<1:1,1:1>> end end end, begin %% attribute expectedActivityPeriod(1) with type INTEGER Enc6@element = element(2, Val), if Enc6@element =:= asn1_NOVALUE -> []; Enc6@element =:= 1 -> [<<0:1,0:8>>]; Enc6@element =:= 2 -> [<<0:1,1:8>>]; Enc6@element =:= 3 -> [<<0:1,2:8>>]; Enc6@element =:= 4 -> [<<0:1,3:8>>]; Enc6@element =:= 5 -> [<<0:1,4:8>>]; Enc6@element =:= 6 -> [<<0:1,5:8>>]; Enc6@element =:= 7 -> [<<0:1,6:8>>]; Enc6@element =:= 8 -> [<<0:1,7:8>>]; Enc6@element =:= 9 -> [<<0:1,8:8>>]; Enc6@element =:= 10 -> [<<0:1,9:8>>]; Enc6@element =:= 11 -> [<<0:1,10:8>>]; Enc6@element =:= 12 -> [<<0:1,11:8>>]; Enc6@element =:= 13 -> [<<0:1,12:8>>]; Enc6@element =:= 14 -> [<<0:1,13:8>>]; Enc6@element =:= 15 -> [<<0:1,14:8>>]; Enc6@element =:= 16 -> [<<0:1,15:8>>]; Enc6@element =:= 17 -> [<<0:1,16:8>>]; Enc6@element =:= 18 -> [<<0:1,17:8>>]; Enc6@element =:= 19 -> [<<0:1,18:8>>]; Enc6@element =:= 20 -> [<<0:1,19:8>>]; Enc6@element =:= 21 -> [<<0:1,20:8>>]; Enc6@element =:= 22 -> [<<0:1,21:8>>]; Enc6@element =:= 23 -> [<<0:1,22:8>>]; Enc6@element =:= 24 -> [<<0:1,23:8>>]; Enc6@element =:= 25 -> [<<0:1,24:8>>]; Enc6@element =:= 26 -> [<<0:1,25:8>>]; Enc6@element =:= 27 -> [<<0:1,26:8>>]; Enc6@element =:= 28 -> [<<0:1,27:8>>]; Enc6@element =:= 29 -> [<<0:1,28:8>>]; Enc6@element =:= 30 -> [<<0:1,29:8>>]; Enc6@element =:= 40 -> [<<0:1,39:8>>]; Enc6@element =:= 50 -> [<<0:1,49:8>>]; Enc6@element =:= 60 -> [<<0:1,59:8>>]; Enc6@element =:= 80 -> [<<0:1,79:8>>]; Enc6@element =:= 100 -> [<<0:1,99:8>>]; Enc6@element =:= 120 -> [<<0:1,119:8>>]; Enc6@element =:= 150 -> [<<0:1,149:8>>]; Enc6@element =:= 180 -> [<<0:1,179:8>>]; Enc6@element =:= 181 -> [<<0:1,180:8>>]; true -> [<<1:1>>, align|encode_unconstrained_number(Enc6@element)] end end, begin %% attribute expectedIdlePeriod(2) with type INTEGER Enc9@element = element(3, Val), if Enc9@element =:= asn1_NOVALUE -> []; Enc9@element =:= 1 -> [<<0:1,0:8>>]; Enc9@element =:= 2 -> [<<0:1,1:8>>]; Enc9@element =:= 3 -> [<<0:1,2:8>>]; Enc9@element =:= 4 -> [<<0:1,3:8>>]; Enc9@element =:= 5 -> [<<0:1,4:8>>]; Enc9@element =:= 6 -> [<<0:1,5:8>>]; Enc9@element =:= 7 -> [<<0:1,6:8>>]; Enc9@element =:= 8 -> [<<0:1,7:8>>]; Enc9@element =:= 9 -> [<<0:1,8:8>>]; Enc9@element =:= 10 -> [<<0:1,9:8>>]; Enc9@element =:= 11 -> [<<0:1,10:8>>]; Enc9@element =:= 12 -> [<<0:1,11:8>>]; Enc9@element =:= 13 -> [<<0:1,12:8>>]; Enc9@element =:= 14 -> [<<0:1,13:8>>]; Enc9@element =:= 15 -> [<<0:1,14:8>>]; Enc9@element =:= 16 -> [<<0:1,15:8>>]; Enc9@element =:= 17 -> [<<0:1,16:8>>]; Enc9@element =:= 18 -> [<<0:1,17:8>>]; Enc9@element =:= 19 -> [<<0:1,18:8>>]; Enc9@element =:= 20 -> [<<0:1,19:8>>]; Enc9@element =:= 21 -> [<<0:1,20:8>>]; Enc9@element =:= 22 -> [<<0:1,21:8>>]; Enc9@element =:= 23 -> [<<0:1,22:8>>]; Enc9@element =:= 24 -> [<<0:1,23:8>>]; Enc9@element =:= 25 -> [<<0:1,24:8>>]; Enc9@element =:= 26 -> [<<0:1,25:8>>]; Enc9@element =:= 27 -> [<<0:1,26:8>>]; Enc9@element =:= 28 -> [<<0:1,27:8>>]; Enc9@element =:= 29 -> [<<0:1,28:8>>]; Enc9@element =:= 30 -> [<<0:1,29:8>>]; Enc9@element =:= 40 -> [<<0:1,39:8>>]; Enc9@element =:= 50 -> [<<0:1,49:8>>]; Enc9@element =:= 60 -> [<<0:1,59:8>>]; Enc9@element =:= 80 -> [<<0:1,79:8>>]; Enc9@element =:= 100 -> [<<0:1,99:8>>]; Enc9@element =:= 120 -> [<<0:1,119:8>>]; Enc9@element =:= 150 -> [<<0:1,149:8>>]; Enc9@element =:= 180 -> [<<0:1,179:8>>]; Enc9@element =:= 181 -> [<<0:1,180:8>>]; true -> [<<1:1>>, align|encode_unconstrained_number(Enc9@element)] end end, begin %% attribute sourceofUEActivityBehaviourInformation(3) with type ENUMERATED Enc12@element = element(4, Val), if Enc12@element =:= asn1_NOVALUE -> []; Enc12@element =:= 'subscription-information' -> <<0:1,0:1>>; Enc12@element =:= statistics -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc12@element}}}) end end|begin %% attribute iE-Extensions(4) with type SEQUENCE OF Enc15@element = element(5, Val), if Enc15@element =:= asn1_NOVALUE -> []; true -> 'enc_ExpectedUEActivityBehaviour_iE-Extensions'(Enc15@element) end end]. 'enc_ExpectedUEActivityBehaviour_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_ExpectedUEActivityBehaviour_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_ExpectedUEActivityBehaviour_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_ExpectedUEActivityBehaviour(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute expectedActivityPeriod(1) with type INTEGER {Term1,Bytes3} = case (Opt bsr 3) band 1 of 1 -> begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:8/unsigned-unit:1,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, <> = V3@Buf4, {V3@V12,V3@Buf13} end, {V3@V0,V3@Buf1} end; 0 -> {asn1_NOVALUE,Bytes2} end, %% attribute expectedIdlePeriod(2) with type INTEGER {Term2,Bytes4} = case (Opt bsr 2) band 1 of 1 -> begin {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@V3:8/unsigned-unit:1,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, <> = V4@Buf4, {V4@V12,V4@Buf13} end, {V4@V0,V4@Buf1} end; 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute sourceofUEActivityBehaviourInformation(3) with type ENUMERATED {Term3,Bytes5} = case (Opt bsr 1) band 1 of 1 -> begin {V5@V0,V5@Buf1} = case Bytes4 of <<0:1,V5@V3:1/unsigned-unit:1,V5@Buf4/bitstring>> -> V5@Int5 = case V5@V3 of 0 -> 'subscription-information'; 1 -> statistics end, {V5@Int5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> {V5@V3,V5@Buf4} = case V5@Buf2 of <<0:1,V5@V6:6,V5@Buf7/bitstring>> -> {V5@V6,V5@Buf7}; <<1:1,V5@Buf5/bitstring>> -> V5@Pad9 = bit_size(V5@Buf5) band 7, {V5@V6,V5@Buf7} = case V5@Buf5 of <<_:V5@Pad9,0:1,V5@V11:7,V5@Buf12/bitstring>> when V5@V11 =/= 0 -> {V5@V11,V5@Buf12}; <<_:V5@Pad9,1:1,0:1,V5@V12:14,V5@Buf13/bitstring>> when V5@V12 =/= 0 -> {V5@V12,V5@Buf13}; <<_:V5@Pad9,1:1,1:1,V5@V12:6,V5@Buf13/bitstring>> when V5@V12 =/= 0 -> V5@Mul14 = V5@V12 * 16384, {V5@Mul14,V5@Buf13} end, <> = V5@Buf7, {V5@V15,V5@Buf16} end, V5@Int17 = case V5@V3 of _ -> {asn1_enum,V5@V3} end, {V5@Int17,V5@Buf4} end, {V5@V0,V5@Buf1} end; 0 -> {asn1_NOVALUE,Bytes4} end, %% attribute iE-Extensions(4) with type SEQUENCE OF {Term4,Bytes6} = case Opt band 1 of 1 -> 'dec_ExpectedUEActivityBehaviour_iE-Extensions'(Bytes5); 0 -> {asn1_NOVALUE,Bytes5} end, %% Extensions {Extensions,Bytes7} = case Ext of 0 -> {<<>>,Bytes6}; 1 -> {V6@V0,V6@Buf1} = case Bytes6 of <<0:1,V6@V3:6,V6@Buf4/bitstring>> -> V6@Add5 = V6@V3 + 1, {V6@Add5,V6@Buf4}; <<1:1,V6@Buf2/bitstring>> -> V6@Pad6 = bit_size(V6@Buf2) band 7, {V6@V3,V6@Buf4} = case V6@Buf2 of <<_:V6@Pad6,0:1,V6@V8:7,V6@Buf9/bitstring>> when V6@V8 =/= 0 -> {V6@V8,V6@Buf9}; <<_:V6@Pad6,1:1,0:1,V6@V9:14,V6@Buf10/bitstring>> when V6@V9 =/= 0 -> {V6@V9,V6@Buf10}; <<_:V6@Pad6,1:1,1:1,V6@V9:6,V6@Buf10/bitstring>> when V6@V9 =/= 0 -> V6@Mul11 = V6@V9 * 16384, {V6@Mul11,V6@Buf10} end, {V6@V3,V6@Buf4} end, <> = V6@Buf1, {V6@V12,V6@Buf13} end, Bytes8= skipextensions(Bytes7, 1, Extensions), Res1 = {'ExpectedUEActivityBehaviour',Term1,Term2,Term3,Term4}, {Res1,Bytes8}. 'dec_ExpectedUEActivityBehaviour_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components107(V1@Add4, V1@Buf1, []). 'dec_ExpectedUEActivityBehaviour_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_ExpectedActivityPeriod(Val) -> if Val =:= 1 -> [<<0:1,0:8>>]; Val =:= 2 -> [<<0:1,1:8>>]; Val =:= 3 -> [<<0:1,2:8>>]; Val =:= 4 -> [<<0:1,3:8>>]; Val =:= 5 -> [<<0:1,4:8>>]; Val =:= 6 -> [<<0:1,5:8>>]; Val =:= 7 -> [<<0:1,6:8>>]; Val =:= 8 -> [<<0:1,7:8>>]; Val =:= 9 -> [<<0:1,8:8>>]; Val =:= 10 -> [<<0:1,9:8>>]; Val =:= 11 -> [<<0:1,10:8>>]; Val =:= 12 -> [<<0:1,11:8>>]; Val =:= 13 -> [<<0:1,12:8>>]; Val =:= 14 -> [<<0:1,13:8>>]; Val =:= 15 -> [<<0:1,14:8>>]; Val =:= 16 -> [<<0:1,15:8>>]; Val =:= 17 -> [<<0:1,16:8>>]; Val =:= 18 -> [<<0:1,17:8>>]; Val =:= 19 -> [<<0:1,18:8>>]; Val =:= 20 -> [<<0:1,19:8>>]; Val =:= 21 -> [<<0:1,20:8>>]; Val =:= 22 -> [<<0:1,21:8>>]; Val =:= 23 -> [<<0:1,22:8>>]; Val =:= 24 -> [<<0:1,23:8>>]; Val =:= 25 -> [<<0:1,24:8>>]; Val =:= 26 -> [<<0:1,25:8>>]; Val =:= 27 -> [<<0:1,26:8>>]; Val =:= 28 -> [<<0:1,27:8>>]; Val =:= 29 -> [<<0:1,28:8>>]; Val =:= 30 -> [<<0:1,29:8>>]; Val =:= 40 -> [<<0:1,39:8>>]; Val =:= 50 -> [<<0:1,49:8>>]; Val =:= 60 -> [<<0:1,59:8>>]; Val =:= 80 -> [<<0:1,79:8>>]; Val =:= 100 -> [<<0:1,99:8>>]; Val =:= 120 -> [<<0:1,119:8>>]; Val =:= 150 -> [<<0:1,149:8>>]; Val =:= 180 -> [<<0:1,179:8>>]; Val =:= 181 -> [<<0:1,180:8>>]; true -> [<<1:1>>, align|encode_unconstrained_number(Val)] end. dec_ExpectedActivityPeriod(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:8/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Add5 = V1@V3 + 1, {V1@Add5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end. enc_ExpectedIdlePeriod(Val) -> if Val =:= 1 -> [<<0:1,0:8>>]; Val =:= 2 -> [<<0:1,1:8>>]; Val =:= 3 -> [<<0:1,2:8>>]; Val =:= 4 -> [<<0:1,3:8>>]; Val =:= 5 -> [<<0:1,4:8>>]; Val =:= 6 -> [<<0:1,5:8>>]; Val =:= 7 -> [<<0:1,6:8>>]; Val =:= 8 -> [<<0:1,7:8>>]; Val =:= 9 -> [<<0:1,8:8>>]; Val =:= 10 -> [<<0:1,9:8>>]; Val =:= 11 -> [<<0:1,10:8>>]; Val =:= 12 -> [<<0:1,11:8>>]; Val =:= 13 -> [<<0:1,12:8>>]; Val =:= 14 -> [<<0:1,13:8>>]; Val =:= 15 -> [<<0:1,14:8>>]; Val =:= 16 -> [<<0:1,15:8>>]; Val =:= 17 -> [<<0:1,16:8>>]; Val =:= 18 -> [<<0:1,17:8>>]; Val =:= 19 -> [<<0:1,18:8>>]; Val =:= 20 -> [<<0:1,19:8>>]; Val =:= 21 -> [<<0:1,20:8>>]; Val =:= 22 -> [<<0:1,21:8>>]; Val =:= 23 -> [<<0:1,22:8>>]; Val =:= 24 -> [<<0:1,23:8>>]; Val =:= 25 -> [<<0:1,24:8>>]; Val =:= 26 -> [<<0:1,25:8>>]; Val =:= 27 -> [<<0:1,26:8>>]; Val =:= 28 -> [<<0:1,27:8>>]; Val =:= 29 -> [<<0:1,28:8>>]; Val =:= 30 -> [<<0:1,29:8>>]; Val =:= 40 -> [<<0:1,39:8>>]; Val =:= 50 -> [<<0:1,49:8>>]; Val =:= 60 -> [<<0:1,59:8>>]; Val =:= 80 -> [<<0:1,79:8>>]; Val =:= 100 -> [<<0:1,99:8>>]; Val =:= 120 -> [<<0:1,119:8>>]; Val =:= 150 -> [<<0:1,149:8>>]; Val =:= 180 -> [<<0:1,179:8>>]; Val =:= 181 -> [<<0:1,180:8>>]; true -> [<<1:1>>, align|encode_unconstrained_number(Val)] end. dec_ExpectedIdlePeriod(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:8/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Add5 = V1@V3 + 1, {V1@Add5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end. enc_SourceOfUEActivityBehaviourInformation(Val) -> if Val =:= 'subscription-information' -> <<0:1,0:1>>; Val =:= statistics -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_SourceOfUEActivityBehaviourInformation(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:1/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> 'subscription-information'; 1 -> statistics end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_ExpectedHOInterval(Val) -> if Val =:= sec15 -> <<0:1,0:3>>; Val =:= sec30 -> <<0:1,1:3>>; Val =:= sec60 -> <<0:1,2:3>>; Val =:= sec90 -> <<0:1,3:3>>; Val =:= sec120 -> <<0:1,4:3>>; Val =:= sec180 -> <<0:1,5:3>>; Val =:= 'long-time' -> <<0:1,6:3>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_ExpectedHOInterval(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:3/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> sec15; 1 -> sec30; 2 -> sec60; 3 -> sec90; 4 -> sec120; 5 -> sec180; 6 -> 'long-time'; _ -> exit({error,{asn1,{decode_enumerated,V1@V3}}}) end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_ExtendedBitRate(Val) -> Val@sub = Val - 10000000001, if 0 =< Val@sub, Val@sub < 3990000000000 -> [<<0:1>>|begin Val@sub@bin = binary:encode_unsigned(Val@sub), Val@sub@bin_size0 = byte_size(Val@sub@bin), Val@sub@bin_size = Val@sub@bin_size0 - 1, [<>, align|Val@sub@bin] end]; true -> [<<1:1>>, align|encode_unconstrained_number(Val)] end. dec_ExtendedBitRate(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:3/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Add5 = V1@V3 + 1, V1@Pad8 = bit_size(V1@Buf4) band 7, <<_:V1@Pad8,V1@V6:V1@Add5/unsigned-unit:8,V1@Buf7/bitstring>> = V1@Buf4, V1@Add10 = V1@V6 + 10000000001, {V1@Add10,V1@Buf7}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end. 'enc_ExtendedRNC-ID'(Val) -> Val@sub = Val - 4096, if 0 =< Val@sub, Val@sub < 61440 -> [align|<>]; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. 'dec_ExtendedRNC-ID'(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 4096, {V1@Add4,V1@Buf1} end. enc_ExtendedRepetitionPeriod(Val) -> Val@sub = Val - 4096, if 0 =< Val@sub, Val@sub < 126976 -> begin Val@sub@bin = binary:encode_unsigned(Val@sub), Val@sub@bin_size0 = byte_size(Val@sub@bin), Val@sub@bin_size = Val@sub@bin_size0 - 1, [<>, align|Val@sub@bin] end; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. dec_ExtendedRepetitionPeriod(Bytes) -> begin <> = Bytes, V1@Add2 = V1@V0 + 1, V1@Pad5 = bit_size(V1@Buf1) band 7, <<_:V1@Pad5,V1@V3:V1@Add2/unsigned-unit:8,V1@Buf4/bitstring>> = V1@Buf1, V1@Add7 = V1@V3 + 4096, {V1@Add7,V1@Buf4} end. 'enc_Extended-UEIdentityIndexValue'(Val) -> Enc1@bits = bit_size(Val), if Enc1@bits =:= 14 -> Val end. 'dec_Extended-UEIdentityIndexValue'(Bytes) -> begin <> = Bytes, {V1@V2,V1@Buf3} = {list_to_bitstring([V1@V0]),V1@Buf1}, {V1@V2,V1@Buf3} end. enc_FiveGSTAC(Val) -> Enc1@len = byte_size(Val), if Enc1@len =:= 3 -> [align|Val] end. dec_FiveGSTAC(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:3/binary-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Conv4 = binary:copy(V1@V0), {V1@Conv4,V1@Buf1} end. enc_FiveGSTAI(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, align, begin %% attribute pLMNidentity(1) with type OCTET STRING Enc3@element = element(2, Val), Enc4@len = byte_size(Enc3@element), if Enc4@len =:= 3 -> Enc3@element end end, begin %% attribute fiveGSTAC(2) with type OCTET STRING Enc5@element = element(3, Val), Enc6@len = byte_size(Enc5@element), if Enc6@len =:= 3 -> Enc5@element end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_FiveGSTAI_iE-Extensions'(Enc7@element) end end]. 'enc_FiveGSTAI_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_FiveGSTAI_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_FiveGSTAI_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_FiveGSTAI(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute pLMNidentity(1) with type OCTET STRING {Term1,Bytes3} = begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:3/binary-unit:8,V3@Buf1/bitstring>> = Bytes2, V3@Conv4 = binary:copy(V3@V0), {V3@Conv4,V3@Buf1} end, %% attribute fiveGSTAC(2) with type OCTET STRING {Term2,Bytes4} = begin <> = Bytes3, V4@Conv2 = binary:copy(V4@V0), {V4@Conv2,V4@Buf1} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_FiveGSTAI_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'FiveGSTAI',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_FiveGSTAI_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components108(V1@Add4, V1@Buf1, []). 'dec_FiveGSTAI_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_FiveQI(Val) -> if Val bsr 8 =:= 0 -> [<<0:1>>, align, Val]; true -> [<<1:1>>, align|encode_unconstrained_number(Val)] end. dec_FiveQI(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> V1@Pad5 = bit_size(V1@Buf2) band 7, <<_:V1@Pad5,V1@V3:1/unsigned-unit:8,V1@Buf4/bitstring>> = V1@Buf2, {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end. enc_ForbiddenInterRATs(Val) -> if Val =:= all -> <<0:1,0:2>>; Val =:= geran -> <<0:1,1:2>>; Val =:= utran -> <<0:1,2:2>>; Val =:= cdma2000 -> <<0:1,3:2>>; Val =:= geranandutran -> <<1:1,0:7>>; Val =:= cdma2000andutran -> <<1:1,1:7>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_ForbiddenInterRATs(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:2/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> all; 1 -> geran; 2 -> utran; 3 -> cdma2000 end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of 0 -> geranandutran; 1 -> cdma2000andutran; _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_ForbiddenTAs(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 4 =:= 0 -> [<>|['enc_ForbiddenTAs-Item'(Comp) || Comp <- Val]] end. dec_ForbiddenTAs(Bytes) -> %% Length with constraint {1,16} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components109(V1@Add2, V1@Buf1, []). 'enc_ForbiddenTAs-Item'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, align, begin %% attribute pLMN-Identity(1) with type OCTET STRING Enc3@element = element(2, Val), Enc4@len = byte_size(Enc3@element), if Enc4@len =:= 3 -> Enc3@element end end, begin %% attribute forbiddenTACs(2) with type ForbiddenTACs Enc5@element = element(3, Val), enc_ForbiddenTACs(Enc5@element) end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc6@element = element(4, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> 'enc_ForbiddenTAs-Item_iE-Extensions'(Enc6@element) end end]. 'enc_ForbiddenTAs-Item_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_ForbiddenTAs-Item_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_ForbiddenTAs-Item_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_ForbiddenTAs-Item'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute pLMN-Identity(1) with type OCTET STRING {Term1,Bytes3} = begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:3/binary-unit:8,V3@Buf1/bitstring>> = Bytes2, V3@Conv4 = binary:copy(V3@V0), {V3@Conv4,V3@Buf1} end, %% attribute forbiddenTACs(2) with type ForbiddenTACs {Term2,Bytes4} = dec_ForbiddenTACs(Bytes3), %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_ForbiddenTAs-Item_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V4@V0,V4@Buf1} = case Bytes5 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'ForbiddenTAs-Item',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_ForbiddenTAs-Item_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components110(V1@Add4, V1@Buf1, []). 'dec_ForbiddenTAs-Item_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_ForbiddenTACs(Val) -> Enc2@len = length(Val), Enc2@len@sub = Enc2@len - 1, if Enc2@len@sub bsr 12 =:= 0 -> [align, <>|[begin Enc1@len = byte_size(Comp), if Enc1@len =:= 2 -> Comp end end || Comp <- Val]] end. dec_ForbiddenTACs(Bytes) -> %% Length with constraint {1,4096} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components111(V1@Add4, V1@Buf1, []). enc_ForbiddenLAs(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 4 =:= 0 -> [<>|['enc_ForbiddenLAs-Item'(Comp) || Comp <- Val]] end. dec_ForbiddenLAs(Bytes) -> %% Length with constraint {1,16} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components112(V1@Add2, V1@Buf1, []). 'enc_ForbiddenLAs-Item'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, align, begin %% attribute pLMN-Identity(1) with type OCTET STRING Enc3@element = element(2, Val), Enc4@len = byte_size(Enc3@element), if Enc4@len =:= 3 -> Enc3@element end end, begin %% attribute forbiddenLACs(2) with type ForbiddenLACs Enc5@element = element(3, Val), enc_ForbiddenLACs(Enc5@element) end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc6@element = element(4, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> 'enc_ForbiddenLAs-Item_iE-Extensions'(Enc6@element) end end]. 'enc_ForbiddenLAs-Item_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_ForbiddenLAs-Item_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_ForbiddenLAs-Item_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_ForbiddenLAs-Item'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute pLMN-Identity(1) with type OCTET STRING {Term1,Bytes3} = begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:3/binary-unit:8,V3@Buf1/bitstring>> = Bytes2, V3@Conv4 = binary:copy(V3@V0), {V3@Conv4,V3@Buf1} end, %% attribute forbiddenLACs(2) with type ForbiddenLACs {Term2,Bytes4} = dec_ForbiddenLACs(Bytes3), %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_ForbiddenLAs-Item_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V4@V0,V4@Buf1} = case Bytes5 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'ForbiddenLAs-Item',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_ForbiddenLAs-Item_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components113(V1@Add4, V1@Buf1, []). 'dec_ForbiddenLAs-Item_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_ForbiddenLACs(Val) -> Enc2@len = length(Val), Enc2@len@sub = Enc2@len - 1, if Enc2@len@sub bsr 12 =:= 0 -> [align, <>|[begin Enc1@len = byte_size(Comp), if Enc1@len =:= 2 -> Comp end end || Comp <- Val]] end. dec_ForbiddenLACs(Bytes) -> %% Length with constraint {1,4096} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components114(V1@Add4, V1@Buf1, []). 'enc_GBR-QosInformation'(Val) -> [begin Enc1@element = element(6, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute e-RAB-MaximumBitrateDL(1) with type INTEGER Enc3@element = element(2, Val), if 0 =< Enc3@element, Enc3@element < 10000000001 -> begin Enc3@element@bin = binary:encode_unsigned(Enc3@element), Enc3@element@bin_size0 = byte_size(Enc3@element@bin), Enc3@element@bin_size = Enc3@element@bin_size0 - 1, [<>, align|Enc3@element@bin] end; true -> exit({error,{asn1,{illegal_integer,Enc3@element}}}) end end, begin %% attribute e-RAB-MaximumBitrateUL(2) with type INTEGER Enc5@element = element(3, Val), if 0 =< Enc5@element, Enc5@element < 10000000001 -> begin Enc5@element@bin = binary:encode_unsigned(Enc5@element), Enc5@element@bin_size0 = byte_size(Enc5@element@bin), Enc5@element@bin_size = Enc5@element@bin_size0 - 1, [<>|Enc5@element@bin] end; true -> exit({error,{asn1,{illegal_integer,Enc5@element}}}) end end, begin %% attribute e-RAB-GuaranteedBitrateDL(3) with type INTEGER Enc7@element = element(4, Val), if 0 =< Enc7@element, Enc7@element < 10000000001 -> begin Enc7@element@bin = binary:encode_unsigned(Enc7@element), Enc7@element@bin_size0 = byte_size(Enc7@element@bin), Enc7@element@bin_size = Enc7@element@bin_size0 - 1, [<>|Enc7@element@bin] end; true -> exit({error,{asn1,{illegal_integer,Enc7@element}}}) end end, begin %% attribute e-RAB-GuaranteedBitrateUL(4) with type INTEGER Enc9@element = element(5, Val), if 0 =< Enc9@element, Enc9@element < 10000000001 -> begin Enc9@element@bin = binary:encode_unsigned(Enc9@element), Enc9@element@bin_size0 = byte_size(Enc9@element@bin), Enc9@element@bin_size = Enc9@element@bin_size0 - 1, [<>|Enc9@element@bin] end; true -> exit({error,{asn1,{illegal_integer,Enc9@element}}}) end end|begin %% attribute iE-Extensions(5) with type SEQUENCE OF Enc11@element = element(6, Val), if Enc11@element =:= asn1_NOVALUE -> []; true -> 'enc_GBR-QosInformation_iE-Extensions'(Enc11@element) end end]. 'enc_GBR-QosInformation_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_GBR-QosInformation_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_GBR-QosInformation_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension115(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_GBR-QosInformation'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute e-RAB-MaximumBitrateDL(1) with type INTEGER {Term1,Bytes3} = begin <> = Bytes2, V3@Add2 = V3@V0 + 1, V3@Pad5 = bit_size(V3@Buf1) band 7, <<_:V3@Pad5,V3@V3:V3@Add2/unsigned-unit:8,V3@Buf4/bitstring>> = V3@Buf1, {V3@V3,V3@Buf4} end, %% attribute e-RAB-MaximumBitrateUL(2) with type INTEGER {Term2,Bytes4} = begin <> = Bytes3, V4@Add2 = V4@V0 + 1, <<_:5,V4@V3:V4@Add2/unsigned-unit:8,V4@Buf4/bitstring>> = V4@Buf1, {V4@V3,V4@Buf4} end, %% attribute e-RAB-GuaranteedBitrateDL(3) with type INTEGER {Term3,Bytes5} = begin <> = Bytes4, V5@Add2 = V5@V0 + 1, <<_:5,V5@V3:V5@Add2/unsigned-unit:8,V5@Buf4/bitstring>> = V5@Buf1, {V5@V3,V5@Buf4} end, %% attribute e-RAB-GuaranteedBitrateUL(4) with type INTEGER {Term4,Bytes6} = begin <> = Bytes5, V6@Add2 = V6@V0 + 1, <<_:5,V6@V3:V6@Add2/unsigned-unit:8,V6@Buf4/bitstring>> = V6@Buf1, {V6@V3,V6@Buf4} end, %% attribute iE-Extensions(5) with type SEQUENCE OF {Term5,Bytes7} = case Opt band 1 of 1 -> 'dec_GBR-QosInformation_iE-Extensions'(Bytes6); 0 -> {asn1_NOVALUE,Bytes6} end, %% Extensions {Extensions,Bytes8} = case Ext of 0 -> {<<>>,Bytes7}; 1 -> {V7@V0,V7@Buf1} = case Bytes7 of <<0:1,V7@V3:6,V7@Buf4/bitstring>> -> V7@Add5 = V7@V3 + 1, {V7@Add5,V7@Buf4}; <<1:1,V7@Buf2/bitstring>> -> V7@Pad6 = bit_size(V7@Buf2) band 7, {V7@V3,V7@Buf4} = case V7@Buf2 of <<_:V7@Pad6,0:1,V7@V8:7,V7@Buf9/bitstring>> when V7@V8 =/= 0 -> {V7@V8,V7@Buf9}; <<_:V7@Pad6,1:1,0:1,V7@V9:14,V7@Buf10/bitstring>> when V7@V9 =/= 0 -> {V7@V9,V7@Buf10}; <<_:V7@Pad6,1:1,1:1,V7@V9:6,V7@Buf10/bitstring>> when V7@V9 =/= 0 -> V7@Mul11 = V7@V9 * 16384, {V7@Mul11,V7@Buf10} end, {V7@V3,V7@Buf4} end, <> = V7@Buf1, {V7@V12,V7@Buf13} end, Bytes9= skipextensions(Bytes8, 1, Extensions), Res1 = {'GBR-QosInformation',Term1,Term2,Term3,Term4,Term5}, {Res1,Bytes9}. 'dec_GBR-QosInformation_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components116(V1@Add4, V1@Buf1, []). 'dec_GBR-QosInformation_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension117(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_GTP-TEID'(Val) -> Enc1@len = byte_size(Val), if Enc1@len =:= 4 -> [align|Val] end. 'dec_GTP-TEID'(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:4/binary-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Conv4 = binary:copy(V1@V0), {V1@Conv4,V1@Buf1} end. enc_GUMMEI(Val) -> [begin Enc1@element = element(5, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, align, begin %% attribute pLMN-Identity(1) with type OCTET STRING Enc3@element = element(2, Val), Enc4@len = byte_size(Enc3@element), if Enc4@len =:= 3 -> Enc3@element end end, begin %% attribute mME-Group-ID(2) with type OCTET STRING Enc5@element = element(3, Val), Enc6@len = byte_size(Enc5@element), if Enc6@len =:= 2 -> Enc5@element end end, begin %% attribute mME-Code(3) with type OCTET STRING Enc7@element = element(4, Val), Enc8@len = byte_size(Enc7@element), if Enc8@len =:= 1 -> Enc7@element end end|begin %% attribute iE-Extensions(4) with type SEQUENCE OF Enc9@element = element(5, Val), if Enc9@element =:= asn1_NOVALUE -> []; true -> 'enc_GUMMEI_iE-Extensions'(Enc9@element) end end]. 'enc_GUMMEI_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_GUMMEI_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_GUMMEI_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_GUMMEI(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute pLMN-Identity(1) with type OCTET STRING {Term1,Bytes3} = begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:3/binary-unit:8,V3@Buf1/bitstring>> = Bytes2, V3@Conv4 = binary:copy(V3@V0), {V3@Conv4,V3@Buf1} end, %% attribute mME-Group-ID(2) with type OCTET STRING {Term2,Bytes4} = begin <> = Bytes3, V4@Conv2 = binary:copy(V4@V0), {V4@Conv2,V4@Buf1} end, %% attribute mME-Code(3) with type OCTET STRING {Term3,Bytes5} = begin <> = Bytes4, V5@Conv2 = binary:copy(V5@V0), {V5@Conv2,V5@Buf1} end, %% attribute iE-Extensions(4) with type SEQUENCE OF {Term4,Bytes6} = case Opt band 1 of 1 -> 'dec_GUMMEI_iE-Extensions'(Bytes5); 0 -> {asn1_NOVALUE,Bytes5} end, %% Extensions {Extensions,Bytes7} = case Ext of 0 -> {<<>>,Bytes6}; 1 -> {V6@V0,V6@Buf1} = case Bytes6 of <<0:1,V6@V3:6,V6@Buf4/bitstring>> -> V6@Add5 = V6@V3 + 1, {V6@Add5,V6@Buf4}; <<1:1,V6@Buf2/bitstring>> -> V6@Pad6 = bit_size(V6@Buf2) band 7, {V6@V3,V6@Buf4} = case V6@Buf2 of <<_:V6@Pad6,0:1,V6@V8:7,V6@Buf9/bitstring>> when V6@V8 =/= 0 -> {V6@V8,V6@Buf9}; <<_:V6@Pad6,1:1,0:1,V6@V9:14,V6@Buf10/bitstring>> when V6@V9 =/= 0 -> {V6@V9,V6@Buf10}; <<_:V6@Pad6,1:1,1:1,V6@V9:6,V6@Buf10/bitstring>> when V6@V9 =/= 0 -> V6@Mul11 = V6@V9 * 16384, {V6@Mul11,V6@Buf10} end, {V6@V3,V6@Buf4} end, <> = V6@Buf1, {V6@V12,V6@Buf13} end, Bytes8= skipextensions(Bytes7, 1, Extensions), Res1 = {'GUMMEI',Term1,Term2,Term3,Term4}, {Res1,Bytes8}. 'dec_GUMMEI_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components118(V1@Add4, V1@Buf1, []). 'dec_GUMMEI_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_GUMMEIType(Val) -> if Val =:= native -> <<0:1,0:1>>; Val =:= mapped -> <<0:1,1:1>>; Val =:= mappedFrom5G -> <<1:1,0:7>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_GUMMEIType(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:1/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> native; 1 -> mapped end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of 0 -> mappedFrom5G; _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_GWContextReleaseIndication(Val) -> if Val =:= true -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_GWContextReleaseIndication(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'true',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_HandoverFlag(Val) -> if Val =:= handoverPreparation -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_HandoverFlag(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'handoverPreparation',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_HandoverRestrictionList(Val) -> [begin Enc1@element = element(3, Val), Enc2@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin Enc3@element = element(5, Val), Enc4@element = element(6, Val), if Enc3@element =:= asn1_NOVALUE -> if Enc4@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end; true -> if Enc4@element =:= asn1_NOVALUE -> <<1:1,0:1>>; true -> <<1:1,1:1>> end end end, begin Enc5@element = element(7, Val), if Enc5@element =:= asn1_NOVALUE -> <<0:1>>; true -> <<1:1>> end end, align, begin %% attribute servingPLMN(1) with type OCTET STRING Enc7@element = element(2, Val), Enc8@len = byte_size(Enc7@element), if Enc8@len =:= 3 -> Enc7@element end end, begin %% attribute equivalentPLMNs(2) with type EPLMNs Enc9@element = element(3, Val), if Enc9@element =:= asn1_NOVALUE -> []; true -> enc_EPLMNs(Enc9@element) end end, begin %% attribute forbiddenTAs(3) with type ForbiddenTAs Enc11@element = element(4, Val), if Enc11@element =:= asn1_NOVALUE -> []; true -> enc_ForbiddenTAs(Enc11@element) end end, begin %% attribute forbiddenLAs(4) with type ForbiddenLAs Enc13@element = element(5, Val), if Enc13@element =:= asn1_NOVALUE -> []; true -> enc_ForbiddenLAs(Enc13@element) end end, begin %% attribute forbiddenInterRATs(5) with type ENUMERATED Enc15@element = element(6, Val), if Enc15@element =:= asn1_NOVALUE -> []; Enc15@element =:= all -> <<0:1,0:2>>; Enc15@element =:= geran -> <<0:1,1:2>>; Enc15@element =:= utran -> <<0:1,2:2>>; Enc15@element =:= cdma2000 -> <<0:1,3:2>>; Enc15@element =:= geranandutran -> <<1:1,0:7>>; Enc15@element =:= cdma2000andutran -> <<1:1,1:7>>; true -> exit({error,{asn1,{illegal_enumerated,Enc15@element}}}) end end|begin %% attribute iE-Extensions(6) with type SEQUENCE OF Enc18@element = element(7, Val), if Enc18@element =:= asn1_NOVALUE -> []; true -> 'enc_HandoverRestrictionList_iE-Extensions'(Enc18@element) end end]. 'enc_HandoverRestrictionList_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_HandoverRestrictionList_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_HandoverRestrictionList_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension119(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_HandoverRestrictionList(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute servingPLMN(1) with type OCTET STRING {Term1,Bytes3} = begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:3/binary-unit:8,V3@Buf1/bitstring>> = Bytes2, V3@Conv4 = binary:copy(V3@V0), {V3@Conv4,V3@Buf1} end, %% attribute equivalentPLMNs(2) with type EPLMNs {Term2,Bytes4} = case (Opt bsr 4) band 1 of 1 -> dec_EPLMNs(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute forbiddenTAs(3) with type ForbiddenTAs {Term3,Bytes5} = case (Opt bsr 3) band 1 of 1 -> dec_ForbiddenTAs(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% attribute forbiddenLAs(4) with type ForbiddenLAs {Term4,Bytes6} = case (Opt bsr 2) band 1 of 1 -> dec_ForbiddenLAs(Bytes5); 0 -> {asn1_NOVALUE,Bytes5} end, %% attribute forbiddenInterRATs(5) with type ENUMERATED {Term5,Bytes7} = case (Opt bsr 1) band 1 of 1 -> begin {V4@V0,V4@Buf1} = case Bytes6 of <<0:1,V4@V3:2/unsigned-unit:1,V4@Buf4/bitstring>> -> V4@Int5 = case V4@V3 of 0 -> all; 1 -> geran; 2 -> utran; 3 -> cdma2000 end, {V4@Int5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> {V4@V3,V4@Buf4} = case V4@Buf2 of <<0:1,V4@V6:6,V4@Buf7/bitstring>> -> {V4@V6,V4@Buf7}; <<1:1,V4@Buf5/bitstring>> -> V4@Pad9 = bit_size(V4@Buf5) band 7, {V4@V6,V4@Buf7} = case V4@Buf5 of <<_:V4@Pad9,0:1,V4@V11:7,V4@Buf12/bitstring>> when V4@V11 =/= 0 -> {V4@V11,V4@Buf12}; <<_:V4@Pad9,1:1,0:1,V4@V12:14,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> {V4@V12,V4@Buf13}; <<_:V4@Pad9,1:1,1:1,V4@V12:6,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> V4@Mul14 = V4@V12 * 16384, {V4@Mul14,V4@Buf13} end, <> = V4@Buf7, {V4@V15,V4@Buf16} end, V4@Int17 = case V4@V3 of 0 -> geranandutran; 1 -> cdma2000andutran; _ -> {asn1_enum,V4@V3} end, {V4@Int17,V4@Buf4} end, {V4@V0,V4@Buf1} end; 0 -> {asn1_NOVALUE,Bytes6} end, %% attribute iE-Extensions(6) with type SEQUENCE OF {Term6,Bytes8} = case Opt band 1 of 1 -> 'dec_HandoverRestrictionList_iE-Extensions'(Bytes7); 0 -> {asn1_NOVALUE,Bytes7} end, %% Extensions {Extensions,Bytes9} = case Ext of 0 -> {<<>>,Bytes8}; 1 -> {V5@V0,V5@Buf1} = case Bytes8 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes10= skipextensions(Bytes9, 1, Extensions), Res1 = {'HandoverRestrictionList',Term1,Term2,Term3,Term4,Term5,Term6}, {Res1,Bytes10}. 'dec_HandoverRestrictionList_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components120(V1@Add4, V1@Buf1, []). 'dec_HandoverRestrictionList_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension121(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_HandoverType(Val) -> if Val =:= intralte -> <<0:1,0:3>>; Val =:= ltetoutran -> <<0:1,1:3>>; Val =:= ltetogeran -> <<0:1,2:3>>; Val =:= utrantolte -> <<0:1,3:3>>; Val =:= gerantolte -> <<0:1,4:3>>; Val =:= 'eps-to-5gs' -> <<1:1,0:7>>; Val =:= 'fivegs-to-eps' -> <<1:1,1:7>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_HandoverType(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:3/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> intralte; 1 -> ltetoutran; 2 -> ltetogeran; 3 -> utrantolte; 4 -> gerantolte; _ -> exit({error,{asn1,{decode_enumerated,V1@V3}}}) end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of 0 -> 'eps-to-5gs'; 1 -> 'fivegs-to-eps'; _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_HFN(Val) -> if Val bsr 20 =:= 0 -> begin Val@bin = binary:encode_unsigned(Val), Val@bin_size0 = byte_size(Val@bin), Val@bin_size = Val@bin_size0 - 1, [<>, align|Val@bin] end; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. dec_HFN(Bytes) -> begin <> = Bytes, V1@Add2 = V1@V0 + 1, V1@Pad5 = bit_size(V1@Buf1) band 7, <<_:V1@Pad5,V1@V3:V1@Add2/unsigned-unit:8,V1@Buf4/bitstring>> = V1@Buf1, {V1@V3,V1@Buf4} end. enc_HFNModified(Val) -> if Val bsr 17 =:= 0 -> begin Val@bin = binary:encode_unsigned(Val), Val@bin_size0 = byte_size(Val@bin), Val@bin_size = Val@bin_size0 - 1, [<>, align|Val@bin] end; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. dec_HFNModified(Bytes) -> begin <> = Bytes, V1@Add2 = V1@V0 + 1, V1@Pad5 = bit_size(V1@Buf1) band 7, <<_:V1@Pad5,V1@V3:V1@Add2/unsigned-unit:8,V1@Buf4/bitstring>> = V1@Buf1, {V1@V3,V1@Buf4} end. 'enc_HFNforPDCP-SNlength18'(Val) -> if Val bsr 14 =:= 0 -> [align|<>]; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. 'dec_HFNforPDCP-SNlength18'(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end. enc_Hysteresis(Val) -> if 0 =< Val, Val < 31 -> <>; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. dec_Hysteresis(Bytes) -> begin <> = Bytes, {V1@V0,V1@Buf1} end. 'enc_Masked-IMEISV'(Val) -> Enc1@bits = bit_size(Val), if Enc1@bits =:= 64 -> [align|Val] end. 'dec_Masked-IMEISV'(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:64/binary-unit:1,V1@Buf1/bitstring>> = Bytes, {V1@V4,V1@Buf5} = {list_to_bitstring([V1@V0]),V1@Buf1}, {V1@V4,V1@Buf5} end. enc_ImmediateMDT(Val) -> [begin Enc1@element = element(4, Val), Enc2@element = element(5, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin Enc3@element = element(6, Val), if Enc3@element =:= asn1_NOVALUE -> <<0:1>>; true -> <<1:1>> end end, begin %% attribute measurementsToActivate(1) with type BIT STRING Enc5@element = element(2, Val), Enc6@bits = bit_size(Enc5@element), if Enc6@bits =:= 8 -> Enc5@element end end, begin %% attribute m1reportingTrigger(2) with type ENUMERATED Enc7@element = element(3, Val), if Enc7@element =:= periodic -> <<0:1,0:1>>; Enc7@element =:= a2eventtriggered -> <<0:1,1:1>>; Enc7@element =:= 'a2eventtriggered-periodic' -> <<1:1,0:7>>; true -> exit({error,{asn1,{illegal_enumerated,Enc7@element}}}) end end, begin %% attribute m1thresholdeventA2(3) with type M1ThresholdEventA2 Enc9@element = element(4, Val), if Enc9@element =:= asn1_NOVALUE -> []; true -> enc_M1ThresholdEventA2(Enc9@element) end end, begin %% attribute m1periodicReporting(4) with type M1PeriodicReporting Enc11@element = element(5, Val), if Enc11@element =:= asn1_NOVALUE -> []; true -> enc_M1PeriodicReporting(Enc11@element) end end|begin %% attribute iE-Extensions(5) with type SEQUENCE OF Enc13@element = element(6, Val), if Enc13@element =:= asn1_NOVALUE -> []; true -> 'enc_ImmediateMDT_iE-Extensions'(Enc13@element) end end]. 'enc_ImmediateMDT_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_ImmediateMDT_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_ImmediateMDT_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension122(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_ImmediateMDT(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute measurementsToActivate(1) with type BIT STRING {Term1,Bytes3} = begin <> = Bytes2, {V3@V2,V3@Buf3} = {list_to_bitstring([V3@V0]),V3@Buf1}, {V3@V2,V3@Buf3} end, %% attribute m1reportingTrigger(2) with type ENUMERATED {Term2,Bytes4} = begin {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@V3:1/unsigned-unit:1,V4@Buf4/bitstring>> -> V4@Int5 = case V4@V3 of 0 -> periodic; 1 -> a2eventtriggered end, {V4@Int5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> {V4@V3,V4@Buf4} = case V4@Buf2 of <<0:1,V4@V6:6,V4@Buf7/bitstring>> -> {V4@V6,V4@Buf7}; <<1:1,V4@Buf5/bitstring>> -> V4@Pad9 = bit_size(V4@Buf5) band 7, {V4@V6,V4@Buf7} = case V4@Buf5 of <<_:V4@Pad9,0:1,V4@V11:7,V4@Buf12/bitstring>> when V4@V11 =/= 0 -> {V4@V11,V4@Buf12}; <<_:V4@Pad9,1:1,0:1,V4@V12:14,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> {V4@V12,V4@Buf13}; <<_:V4@Pad9,1:1,1:1,V4@V12:6,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> V4@Mul14 = V4@V12 * 16384, {V4@Mul14,V4@Buf13} end, <> = V4@Buf7, {V4@V15,V4@Buf16} end, V4@Int17 = case V4@V3 of 0 -> 'a2eventtriggered-periodic'; _ -> {asn1_enum,V4@V3} end, {V4@Int17,V4@Buf4} end, {V4@V0,V4@Buf1} end, %% attribute m1thresholdeventA2(3) with type M1ThresholdEventA2 {Term3,Bytes5} = case (Opt bsr 2) band 1 of 1 -> dec_M1ThresholdEventA2(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% attribute m1periodicReporting(4) with type M1PeriodicReporting {Term4,Bytes6} = case (Opt bsr 1) band 1 of 1 -> dec_M1PeriodicReporting(Bytes5); 0 -> {asn1_NOVALUE,Bytes5} end, %% attribute iE-Extensions(5) with type SEQUENCE OF {Term5,Bytes7} = case Opt band 1 of 1 -> 'dec_ImmediateMDT_iE-Extensions'(Bytes6); 0 -> {asn1_NOVALUE,Bytes6} end, %% Extensions {Extensions,Bytes8} = case Ext of 0 -> {<<>>,Bytes7}; 1 -> {V5@V0,V5@Buf1} = case Bytes7 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes9= skipextensions(Bytes8, 1, Extensions), Res1 = {'ImmediateMDT',Term1,Term2,Term3,Term4,Term5}, {Res1,Bytes9}. 'dec_ImmediateMDT_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components123(V1@Add4, V1@Buf1, []). 'dec_ImmediateMDT_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension124(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_IMSI(Val) -> Enc1@len = byte_size(Val), Enc1@len@sub = Enc1@len - 3, if 0 =< Enc1@len@sub, Enc1@len@sub < 6 -> [<>, align|Val] end. dec_IMSI(Bytes) -> begin <> = Bytes, V1@Add2 = V1@V0 + 3, V1@Pad5 = bit_size(V1@Buf1) band 7, <<_:V1@Pad5,V1@V3:V1@Add2/binary-unit:8,V1@Buf4/bitstring>> = V1@Buf1, V1@Conv7 = binary:copy(V1@V3), {V1@Conv7,V1@Buf4} end. enc_InformationOnRecommendedCellsAndENBsForPaging(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute recommendedCellsForPaging(1) with type RecommendedCellsForPaging Enc3@element = element(2, Val), enc_RecommendedCellsForPaging(Enc3@element) end, begin %% attribute recommendENBsForPaging(2) with type RecommendedENBsForPaging Enc4@element = element(3, Val), enc_RecommendedENBsForPaging(Enc4@element) end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc5@element = element(4, Val), if Enc5@element =:= asn1_NOVALUE -> []; true -> 'enc_InformationOnRecommendedCellsAndENBsForPaging_iE-Extensions'(Enc5@element) end end]. 'enc_InformationOnRecommendedCellsAndENBsForPaging_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_InformationOnRecommendedCellsAndENBsForPaging_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_InformationOnRecommendedCellsAndENBsForPaging_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_InformationOnRecommendedCellsAndENBsForPaging(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute recommendedCellsForPaging(1) with type RecommendedCellsForPaging {Term1,Bytes3} = dec_RecommendedCellsForPaging(Bytes2), %% attribute recommendENBsForPaging(2) with type RecommendedENBsForPaging {Term2,Bytes4} = dec_RecommendedENBsForPaging(Bytes3), %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_InformationOnRecommendedCellsAndENBsForPaging_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V3@V0,V3@Buf1} = case Bytes5 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'InformationOnRecommendedCellsAndENBsForPaging',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_InformationOnRecommendedCellsAndENBsForPaging_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components125(V1@Add4, V1@Buf1, []). 'dec_InformationOnRecommendedCellsAndENBsForPaging_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_IntegrityProtectionAlgorithms(Val) -> Enc1@bits = bit_size(Val), if Enc1@bits =:= 16 -> [<<0:1>>|Val]; Enc1@bits < 128 -> [<<1:1>>, align, Enc1@bits|Val]; Enc1@bits < 16384 -> [<<1:1>>, align, <<2:2,Enc1@bits:14>>|Val]; true -> [<<1:1>>, align|encode_fragmented(Val, 1)] end. dec_IntegrityProtectionAlgorithms(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:16/binary-unit:1,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@V10:V1@V8/binary-unit:1,V1@Buf11/bitstring>> -> {V1@V10,V1@Buf11}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@V11:V1@V9/binary-unit:1,V1@Buf12/bitstring>> -> {V1@V11,V1@Buf12}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> -> {V1@V11,V1@Buf12} = decode_fragmented(V1@V9, V1@Buf10, 1), {V1@V11,V1@Buf12} end, {V1@V3,V1@Buf4} end, {V1@V13,V1@Buf14} = {list_to_bitstring([V1@V0]),V1@Buf1}, {V1@V13,V1@Buf14} end. enc_IntegrityProtectionIndication(Val) -> if Val =:= required -> <<0:1,0:2>>; Val =:= preferred -> <<0:1,1:2>>; Val =:= 'not-needed' -> <<0:1,2:2>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_IntegrityProtectionIndication(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:2/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> required; 1 -> preferred; 2 -> 'not-needed'; _ -> exit({error,{asn1,{decode_enumerated,V1@V3}}}) end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_IntegrityProtectionResult(Val) -> if Val =:= performed -> <<0:1,0:1>>; Val =:= 'not-performed' -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_IntegrityProtectionResult(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:1/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> performed; 1 -> 'not-performed' end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_IntendedNumberOfPagingAttempts(Val) -> Val@sub = Val - 1, if Val@sub bsr 4 =:= 0 -> <<0:1,Val@sub:4>>; true -> [<<1:1>>, align|encode_unconstrained_number(Val)] end. dec_IntendedNumberOfPagingAttempts(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:4/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Add5 = V1@V3 + 1, {V1@Add5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end. enc_InterfacesToTrace(Val) -> Enc1@bits = bit_size(Val), if Enc1@bits =:= 8 -> Val end. dec_InterfacesToTrace(Bytes) -> begin <> = Bytes, {V1@V2,V1@Buf3} = {list_to_bitstring([V1@V0]),V1@Buf1}, {V1@V2,V1@Buf3} end. enc_IntersystemMeasurementConfiguration(Val) -> [begin Enc1@element = element(2, Val), Enc2@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin Enc3@element = element(4, Val), Enc4@element = element(6, Val), if Enc3@element =:= asn1_NOVALUE -> if Enc4@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end; true -> if Enc4@element =:= asn1_NOVALUE -> <<1:1,0:1>>; true -> <<1:1,1:1>> end end end, begin %% attribute rSRP(1) with type INTEGER Enc6@element = element(2, Val), if Enc6@element =:= asn1_NOVALUE -> []; Enc6@element bsr 7 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc6@element}}}) end end, begin %% attribute rSRQ(2) with type INTEGER Enc9@element = element(3, Val), if Enc9@element =:= asn1_NOVALUE -> []; Enc9@element bsr 7 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc9@element}}}) end end, begin %% attribute sINR(3) with type INTEGER Enc12@element = element(4, Val), if Enc12@element =:= asn1_NOVALUE -> []; Enc12@element bsr 7 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc12@element}}}) end end, begin %% attribute interSystemMeasurementParameters(4) with type InterSystemMeasurementParameters Enc15@element = element(5, Val), enc_InterSystemMeasurementParameters(Enc15@element) end|begin %% attribute iE-Extensions(5) with type SEQUENCE OF Enc16@element = element(6, Val), if Enc16@element =:= asn1_NOVALUE -> []; true -> 'enc_IntersystemMeasurementConfiguration_iE-Extensions'(Enc16@element) end end]. 'enc_IntersystemMeasurementConfiguration_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_IntersystemMeasurementConfiguration_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_IntersystemMeasurementConfiguration_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_IntersystemMeasurementConfiguration(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute rSRP(1) with type INTEGER {Term1,Bytes3} = case (Opt bsr 3) band 1 of 1 -> begin <> = Bytes2, {V3@V0,V3@Buf1} end; 0 -> {asn1_NOVALUE,Bytes2} end, %% attribute rSRQ(2) with type INTEGER {Term2,Bytes4} = case (Opt bsr 2) band 1 of 1 -> begin <> = Bytes3, {V4@V0,V4@Buf1} end; 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute sINR(3) with type INTEGER {Term3,Bytes5} = case (Opt bsr 1) band 1 of 1 -> begin <> = Bytes4, {V5@V0,V5@Buf1} end; 0 -> {asn1_NOVALUE,Bytes4} end, %% attribute interSystemMeasurementParameters(4) with type InterSystemMeasurementParameters {Term4,Bytes6} = dec_InterSystemMeasurementParameters(Bytes5), %% attribute iE-Extensions(5) with type SEQUENCE OF {Term5,Bytes7} = case Opt band 1 of 1 -> 'dec_IntersystemMeasurementConfiguration_iE-Extensions'(Bytes6); 0 -> {asn1_NOVALUE,Bytes6} end, %% Extensions {Extensions,Bytes8} = case Ext of 0 -> {<<>>,Bytes7}; 1 -> {V6@V0,V6@Buf1} = case Bytes7 of <<0:1,V6@V3:6,V6@Buf4/bitstring>> -> V6@Add5 = V6@V3 + 1, {V6@Add5,V6@Buf4}; <<1:1,V6@Buf2/bitstring>> -> V6@Pad6 = bit_size(V6@Buf2) band 7, {V6@V3,V6@Buf4} = case V6@Buf2 of <<_:V6@Pad6,0:1,V6@V8:7,V6@Buf9/bitstring>> when V6@V8 =/= 0 -> {V6@V8,V6@Buf9}; <<_:V6@Pad6,1:1,0:1,V6@V9:14,V6@Buf10/bitstring>> when V6@V9 =/= 0 -> {V6@V9,V6@Buf10}; <<_:V6@Pad6,1:1,1:1,V6@V9:6,V6@Buf10/bitstring>> when V6@V9 =/= 0 -> V6@Mul11 = V6@V9 * 16384, {V6@Mul11,V6@Buf10} end, {V6@V3,V6@Buf4} end, <> = V6@Buf1, {V6@V12,V6@Buf13} end, Bytes9= skipextensions(Bytes8, 1, Extensions), Res1 = {'IntersystemMeasurementConfiguration',Term1,Term2,Term3,Term4,Term5}, {Res1,Bytes9}. 'dec_IntersystemMeasurementConfiguration_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components126(V1@Add4, V1@Buf1, []). 'dec_IntersystemMeasurementConfiguration_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_InterSystemMeasurementParameters(Val) -> [begin Enc1@element = element(3, Val), Enc2@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin %% attribute measurementDuration(1) with type INTEGER Enc4@element = element(2, Val), Enc4@element@sub = Enc4@element - 1, if 0 =< Enc4@element@sub, Enc4@element@sub < 100 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc4@element}}}) end end, begin %% attribute interSystemMeasurementList(2) with type InterSystemMeasurementList Enc6@element = element(3, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> enc_InterSystemMeasurementList(Enc6@element) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc8@element = element(4, Val), if Enc8@element =:= asn1_NOVALUE -> []; true -> 'enc_InterSystemMeasurementParameters_iE-Extensions'(Enc8@element) end end]. 'enc_InterSystemMeasurementParameters_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_InterSystemMeasurementParameters_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_InterSystemMeasurementParameters_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_InterSystemMeasurementParameters(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute measurementDuration(1) with type INTEGER {Term1,Bytes3} = begin <> = Bytes2, V3@Add2 = V3@V0 + 1, {V3@Add2,V3@Buf1} end, %% attribute interSystemMeasurementList(2) with type InterSystemMeasurementList {Term2,Bytes4} = case (Opt bsr 1) band 1 of 1 -> dec_InterSystemMeasurementList(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_InterSystemMeasurementParameters_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V4@V0,V4@Buf1} = case Bytes5 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'InterSystemMeasurementParameters',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_InterSystemMeasurementParameters_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components127(V1@Add4, V1@Buf1, []). 'dec_InterSystemMeasurementParameters_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_InterSystemMeasurementList(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 6 =:= 0 -> [<>|[enc_InterSystemMeasurementItem(Comp) || Comp <- Val]] end. dec_InterSystemMeasurementList(Bytes) -> %% Length with constraint {1,64} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components128(V1@Add2, V1@Buf1, []). enc_InterSystemMeasurementItem(Val) -> [begin Enc1@element = element(5, Val), Enc2@element = element(6, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<1:1,0:1>>; true -> <<1:1,1:1>> end end end, begin Enc3@element = element(7, Val), Enc4@element = element(8, Val), if Enc3@element =:= asn1_NOVALUE -> if Enc4@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end; true -> if Enc4@element =:= asn1_NOVALUE -> <<1:1,0:1>>; true -> <<1:1,1:1>> end end end, begin Enc5@element = element(9, Val), Enc6@element = element(10, Val), if Enc5@element =:= asn1_NOVALUE -> if Enc6@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end; true -> if Enc6@element =:= asn1_NOVALUE -> <<1:1,0:1>>; true -> <<1:1,1:1>> end end end, begin Enc7@element = element(11, Val), Enc8@element = element(12, Val), if Enc7@element =:= asn1_NOVALUE -> if Enc8@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end; true -> if Enc8@element =:= asn1_NOVALUE -> <<1:1,0:1>>; true -> <<1:1,1:1>> end end end, align, begin %% attribute freqBandIndicatorNR(1) with type INTEGER Enc9@element = element(2, Val), Enc9@element@sub = Enc9@element - 1, if Enc9@element@sub bsr 10 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc9@element}}}) end end, begin %% attribute sSBfrequencies(2) with type INTEGER Enc11@element = element(3, Val), if 0 =< Enc11@element, Enc11@element < 3279166 -> begin Enc11@element@bin = binary:encode_unsigned(Enc11@element), Enc11@element@bin_size0 = byte_size(Enc11@element@bin), Enc11@element@bin_size = Enc11@element@bin_size0 - 1, [<>|Enc11@element@bin] end; true -> exit({error,{asn1,{illegal_integer,Enc11@element}}}) end end, begin %% attribute subcarrierSpacingSSB(3) with type ENUMERATED Enc13@element = element(4, Val), if Enc13@element =:= kHz15 -> <<0:1,0:3>>; Enc13@element =:= kHz30 -> <<0:1,1:3>>; Enc13@element =:= kHz60 -> <<0:1,2:3>>; Enc13@element =:= kHz120 -> <<0:1,3:3>>; Enc13@element =:= kHz240 -> <<0:1,4:3>>; Enc13@element =:= kHz480 -> <<1:1,0:7>>; Enc13@element =:= kHz960 -> <<1:1,1:7>>; true -> exit({error,{asn1,{illegal_enumerated,Enc13@element}}}) end end, begin %% attribute maxRSIndexCellQual(4) with type INTEGER Enc15@element = element(5, Val), if Enc15@element =:= asn1_NOVALUE -> []; true -> begin Enc15@element@sub = Enc15@element - 1, if Enc15@element@sub bsr 4 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc15@element}}}) end end end end, begin %% attribute sMTC(5) with type OCTET STRING Enc18@element = element(6, Val), if Enc18@element =:= asn1_NOVALUE -> []; true -> begin Enc19@len = byte_size(Enc18@element), if Enc19@len < 128 -> [align, Enc19@len|Enc18@element]; Enc19@len < 16384 -> [align, <<2:2,Enc19@len:14>>|Enc18@element]; true -> [align|encode_fragmented(Enc18@element, 8)] end end end end, begin %% attribute threshRS-Index-r15(6) with type OCTET STRING Enc21@element = element(7, Val), if Enc21@element =:= asn1_NOVALUE -> []; true -> begin Enc22@len = byte_size(Enc21@element), if Enc22@len < 128 -> [align, Enc22@len|Enc21@element]; Enc22@len < 16384 -> [align, <<2:2,Enc22@len:14>>|Enc21@element]; true -> [align|encode_fragmented(Enc21@element, 8)] end end end end, begin %% attribute sSBToMeasure(7) with type OCTET STRING Enc24@element = element(8, Val), if Enc24@element =:= asn1_NOVALUE -> []; true -> begin Enc25@len = byte_size(Enc24@element), if Enc25@len < 128 -> [align, Enc25@len|Enc24@element]; Enc25@len < 16384 -> [align, <<2:2,Enc25@len:14>>|Enc24@element]; true -> [align|encode_fragmented(Enc24@element, 8)] end end end end, begin %% attribute sSRSSIMeasurement(8) with type OCTET STRING Enc27@element = element(9, Val), if Enc27@element =:= asn1_NOVALUE -> []; true -> begin Enc28@len = byte_size(Enc27@element), if Enc28@len < 128 -> [align, Enc28@len|Enc27@element]; Enc28@len < 16384 -> [align, <<2:2,Enc28@len:14>>|Enc27@element]; true -> [align|encode_fragmented(Enc27@element, 8)] end end end end, begin %% attribute quantityConfigNR-R15(9) with type OCTET STRING Enc30@element = element(10, Val), if Enc30@element =:= asn1_NOVALUE -> []; true -> begin Enc31@len = byte_size(Enc30@element), if Enc31@len < 128 -> [align, Enc31@len|Enc30@element]; Enc31@len < 16384 -> [align, <<2:2,Enc31@len:14>>|Enc30@element]; true -> [align|encode_fragmented(Enc30@element, 8)] end end end end, begin %% attribute excludedCellsToAddModList(10) with type OCTET STRING Enc33@element = element(11, Val), if Enc33@element =:= asn1_NOVALUE -> []; true -> begin Enc34@len = byte_size(Enc33@element), if Enc34@len < 128 -> [align, Enc34@len|Enc33@element]; Enc34@len < 16384 -> [align, <<2:2,Enc34@len:14>>|Enc33@element]; true -> [align|encode_fragmented(Enc33@element, 8)] end end end end|begin %% attribute iE-Extensions(11) with type SEQUENCE OF Enc36@element = element(12, Val), if Enc36@element =:= asn1_NOVALUE -> []; true -> 'enc_InterSystemMeasurementItem_iE-Extensions'(Enc36@element) end end]. 'enc_InterSystemMeasurementItem_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_InterSystemMeasurementItem_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_InterSystemMeasurementItem_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_InterSystemMeasurementItem(Bytes) -> {Opt,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, %% attribute freqBandIndicatorNR(1) with type INTEGER {Term1,Bytes2} = begin V2@Pad2 = bit_size(Bytes1) band 7, <<_:V2@Pad2,V2@V0:2/unsigned-unit:8,V2@Buf1/bitstring>> = Bytes1, V2@Add4 = V2@V0 + 1, {V2@Add4,V2@Buf1} end, %% attribute sSBfrequencies(2) with type INTEGER {Term2,Bytes3} = begin <> = Bytes2, V3@Add2 = V3@V0 + 1, <<_:6,V3@V3:V3@Add2/unsigned-unit:8,V3@Buf4/bitstring>> = V3@Buf1, {V3@V3,V3@Buf4} end, %% attribute subcarrierSpacingSSB(3) with type ENUMERATED {Term3,Bytes4} = begin {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@V3:3/unsigned-unit:1,V4@Buf4/bitstring>> -> V4@Int5 = case V4@V3 of 0 -> kHz15; 1 -> kHz30; 2 -> kHz60; 3 -> kHz120; 4 -> kHz240; _ -> exit({error,{asn1,{decode_enumerated,V4@V3}}}) end, {V4@Int5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> {V4@V3,V4@Buf4} = case V4@Buf2 of <<0:1,V4@V6:6,V4@Buf7/bitstring>> -> {V4@V6,V4@Buf7}; <<1:1,V4@Buf5/bitstring>> -> {V4@V6,V4@Buf7} = case V4@Buf5 of <<_:6,0:1,V4@V10:7,V4@Buf11/bitstring>> when V4@V10 =/= 0 -> {V4@V10,V4@Buf11}; <<_:6,1:1,0:1,V4@V11:14,V4@Buf12/bitstring>> when V4@V11 =/= 0 -> {V4@V11,V4@Buf12}; <<_:6,1:1,1:1,V4@V11:6,V4@Buf12/bitstring>> when V4@V11 =/= 0 -> V4@Mul13 = V4@V11 * 16384, {V4@Mul13,V4@Buf12} end, <> = V4@Buf7, {V4@V14,V4@Buf15} end, V4@Int16 = case V4@V3 of 0 -> kHz480; 1 -> kHz960; _ -> {asn1_enum,V4@V3} end, {V4@Int16,V4@Buf4} end, {V4@V0,V4@Buf1} end, %% attribute maxRSIndexCellQual(4) with type INTEGER {Term4,Bytes5} = case (Opt bsr 7) band 1 of 1 -> begin <> = Bytes4, V5@Add2 = V5@V0 + 1, {V5@Add2,V5@Buf1} end; 0 -> {asn1_NOVALUE,Bytes4} end, %% attribute sMTC(5) with type OCTET STRING {Term5,Bytes6} = case (Opt bsr 6) band 1 of 1 -> begin V6@Pad3 = bit_size(Bytes5) band 7, {V6@V0,V6@Buf1} = case Bytes5 of <<_:V6@Pad3,0:1,V6@V5:7,V6@V7:V6@V5/binary-unit:8,V6@Buf8/bitstring>> -> {V6@V7,V6@Buf8}; <<_:V6@Pad3,1:1,0:1,V6@V6:14,V6@V8:V6@V6/binary-unit:8,V6@Buf9/bitstring>> -> {V6@V8,V6@Buf9}; <<_:V6@Pad3,1:1,1:1,V6@V6:6,V6@Buf7/bitstring>> -> {V6@V8,V6@Buf9} = decode_fragmented(V6@V6, V6@Buf7, 8), {V6@V8,V6@Buf9} end, V6@Conv10 = binary:copy(V6@V0), {V6@Conv10,V6@Buf1} end; 0 -> {asn1_NOVALUE,Bytes5} end, %% attribute threshRS-Index-r15(6) with type OCTET STRING {Term6,Bytes7} = case (Opt bsr 5) band 1 of 1 -> begin V7@Pad3 = bit_size(Bytes6) band 7, {V7@V0,V7@Buf1} = case Bytes6 of <<_:V7@Pad3,0:1,V7@V5:7,V7@V7:V7@V5/binary-unit:8,V7@Buf8/bitstring>> -> {V7@V7,V7@Buf8}; <<_:V7@Pad3,1:1,0:1,V7@V6:14,V7@V8:V7@V6/binary-unit:8,V7@Buf9/bitstring>> -> {V7@V8,V7@Buf9}; <<_:V7@Pad3,1:1,1:1,V7@V6:6,V7@Buf7/bitstring>> -> {V7@V8,V7@Buf9} = decode_fragmented(V7@V6, V7@Buf7, 8), {V7@V8,V7@Buf9} end, V7@Conv10 = binary:copy(V7@V0), {V7@Conv10,V7@Buf1} end; 0 -> {asn1_NOVALUE,Bytes6} end, %% attribute sSBToMeasure(7) with type OCTET STRING {Term7,Bytes8} = case (Opt bsr 4) band 1 of 1 -> begin V8@Pad3 = bit_size(Bytes7) band 7, {V8@V0,V8@Buf1} = case Bytes7 of <<_:V8@Pad3,0:1,V8@V5:7,V8@V7:V8@V5/binary-unit:8,V8@Buf8/bitstring>> -> {V8@V7,V8@Buf8}; <<_:V8@Pad3,1:1,0:1,V8@V6:14,V8@V8:V8@V6/binary-unit:8,V8@Buf9/bitstring>> -> {V8@V8,V8@Buf9}; <<_:V8@Pad3,1:1,1:1,V8@V6:6,V8@Buf7/bitstring>> -> {V8@V8,V8@Buf9} = decode_fragmented(V8@V6, V8@Buf7, 8), {V8@V8,V8@Buf9} end, V8@Conv10 = binary:copy(V8@V0), {V8@Conv10,V8@Buf1} end; 0 -> {asn1_NOVALUE,Bytes7} end, %% attribute sSRSSIMeasurement(8) with type OCTET STRING {Term8,Bytes9} = case (Opt bsr 3) band 1 of 1 -> begin V9@Pad3 = bit_size(Bytes8) band 7, {V9@V0,V9@Buf1} = case Bytes8 of <<_:V9@Pad3,0:1,V9@V5:7,V9@V7:V9@V5/binary-unit:8,V9@Buf8/bitstring>> -> {V9@V7,V9@Buf8}; <<_:V9@Pad3,1:1,0:1,V9@V6:14,V9@V8:V9@V6/binary-unit:8,V9@Buf9/bitstring>> -> {V9@V8,V9@Buf9}; <<_:V9@Pad3,1:1,1:1,V9@V6:6,V9@Buf7/bitstring>> -> {V9@V8,V9@Buf9} = decode_fragmented(V9@V6, V9@Buf7, 8), {V9@V8,V9@Buf9} end, V9@Conv10 = binary:copy(V9@V0), {V9@Conv10,V9@Buf1} end; 0 -> {asn1_NOVALUE,Bytes8} end, %% attribute quantityConfigNR-R15(9) with type OCTET STRING {Term9,Bytes10} = case (Opt bsr 2) band 1 of 1 -> begin V10@Pad3 = bit_size(Bytes9) band 7, {V10@V0,V10@Buf1} = case Bytes9 of <<_:V10@Pad3,0:1,V10@V5:7,V10@V7:V10@V5/binary-unit:8,V10@Buf8/bitstring>> -> {V10@V7,V10@Buf8}; <<_:V10@Pad3,1:1,0:1,V10@V6:14,V10@V8:V10@V6/binary-unit:8,V10@Buf9/bitstring>> -> {V10@V8,V10@Buf9}; <<_:V10@Pad3,1:1,1:1,V10@V6:6,V10@Buf7/bitstring>> -> {V10@V8,V10@Buf9} = decode_fragmented(V10@V6, V10@Buf7, 8), {V10@V8,V10@Buf9} end, V10@Conv10 = binary:copy(V10@V0), {V10@Conv10,V10@Buf1} end; 0 -> {asn1_NOVALUE,Bytes9} end, %% attribute excludedCellsToAddModList(10) with type OCTET STRING {Term10,Bytes11} = case (Opt bsr 1) band 1 of 1 -> begin V11@Pad3 = bit_size(Bytes10) band 7, {V11@V0,V11@Buf1} = case Bytes10 of <<_:V11@Pad3,0:1,V11@V5:7,V11@V7:V11@V5/binary-unit:8,V11@Buf8/bitstring>> -> {V11@V7,V11@Buf8}; <<_:V11@Pad3,1:1,0:1,V11@V6:14,V11@V8:V11@V6/binary-unit:8,V11@Buf9/bitstring>> -> {V11@V8,V11@Buf9}; <<_:V11@Pad3,1:1,1:1,V11@V6:6,V11@Buf7/bitstring>> -> {V11@V8,V11@Buf9} = decode_fragmented(V11@V6, V11@Buf7, 8), {V11@V8,V11@Buf9} end, V11@Conv10 = binary:copy(V11@V0), {V11@Conv10,V11@Buf1} end; 0 -> {asn1_NOVALUE,Bytes10} end, %% attribute iE-Extensions(11) with type SEQUENCE OF {Term11,Bytes12} = case Opt band 1 of 1 -> 'dec_InterSystemMeasurementItem_iE-Extensions'(Bytes11); 0 -> {asn1_NOVALUE,Bytes11} end, Res1 = {'InterSystemMeasurementItem',Term1,Term2,Term3,Term4,Term5,Term6,Term7,Term8,Term9,Term10,Term11}, {Res1,Bytes12}. 'dec_InterSystemMeasurementItem_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components129(V1@Add4, V1@Buf1, []). 'dec_InterSystemMeasurementItem_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_IntersystemSONConfigurationTransfer(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. dec_IntersystemSONConfigurationTransfer(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. enc_IMSvoiceEPSfallbackfrom5G(Val) -> if Val =:= true -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_IMSvoiceEPSfallbackfrom5G(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'true',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. 'enc_IAB-Authorized'(Val) -> if Val =:= authorized -> <<0:1,0:1>>; Val =:= 'not-authorized' -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_IAB-Authorized'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:1/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> authorized; 1 -> 'not-authorized' end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. 'enc_IAB-Node-Indication'(Val) -> if Val =:= true -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_IAB-Node-Indication'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'true',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. 'enc_IAB-Supported'(Val) -> if Val =:= true -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_IAB-Supported'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'true',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_KillAllWarningMessages(Val) -> if Val =:= true -> []; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_KillAllWarningMessages(Bytes) -> begin ignore, {'true',Bytes} end. enc_LAC(Val) -> Enc1@len = byte_size(Val), if Enc1@len =:= 2 -> Val end. dec_LAC(Bytes) -> begin <> = Bytes, V1@Conv2 = binary:copy(V1@V0), {V1@Conv2,V1@Buf1} end. enc_LAI(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, align, begin %% attribute pLMNidentity(1) with type OCTET STRING Enc3@element = element(2, Val), Enc4@len = byte_size(Enc3@element), if Enc4@len =:= 3 -> Enc3@element end end, begin %% attribute lAC(2) with type OCTET STRING Enc5@element = element(3, Val), Enc6@len = byte_size(Enc5@element), if Enc6@len =:= 2 -> Enc5@element end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_LAI_iE-Extensions'(Enc7@element) end end]. 'enc_LAI_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_LAI_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_LAI_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_LAI(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute pLMNidentity(1) with type OCTET STRING {Term1,Bytes3} = begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:3/binary-unit:8,V3@Buf1/bitstring>> = Bytes2, V3@Conv4 = binary:copy(V3@V0), {V3@Conv4,V3@Buf1} end, %% attribute lAC(2) with type OCTET STRING {Term2,Bytes4} = begin <> = Bytes3, V4@Conv2 = binary:copy(V4@V0), {V4@Conv2,V4@Buf1} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_LAI_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'LAI',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_LAI_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components130(V1@Add4, V1@Buf1, []). 'dec_LAI_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_LastVisitedCell-Item'(Val) -> {ChoiceTag,ChoiceVal} = Val, if ChoiceTag =:= 'e-UTRAN-Cell' -> [<<0:1,0:2>>|enc_LastVisitedEUTRANCellInformation(ChoiceVal)]; ChoiceTag =:= 'uTRAN-Cell' -> begin Enc3@len = byte_size(ChoiceVal), if Enc3@len < 128 -> [<<0:1,1:2>>, align, Enc3@len|ChoiceVal]; Enc3@len < 16384 -> [<<0:1,1:2>>, align, <<2:2,Enc3@len:14>>|ChoiceVal]; true -> [<<0:1,1:2>>, align|encode_fragmented(ChoiceVal, 8)] end end; ChoiceTag =:= 'gERAN-Cell' -> [<<0:1,2:2>>|enc_LastVisitedGERANCellInformation(ChoiceVal)]; ChoiceTag =:= 'nG-RAN-Cell' -> begin Enc6@output = begin Enc5@len = byte_size(ChoiceVal), if Enc5@len < 128 -> [Enc5@len|ChoiceVal]; Enc5@len < 16384 -> [<<2:2,Enc5@len:14>>|ChoiceVal]; true -> encode_fragmented(ChoiceVal, 8) end end, Enc6@bin = iolist_to_binary(Enc6@output), Enc6@len = byte_size(Enc6@bin), if Enc6@len < 128 -> [<<1:1,0:7>>, align, Enc6@len|Enc6@bin]; Enc6@len < 16384 -> [<<1:1,0:7>>, align, <<2:2,Enc6@len:14>>|Enc6@bin]; true -> [<<1:1,0:7>>, align|encode_fragmented(Enc6@bin, 8)] end end end. 'dec_LastVisitedCell-Item'(Bytes) -> case Bytes of <<0:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin <> = Bytes1, {V1@V0,V1@Buf1} end, case Choice of 0 -> {Val,NewBytes} = begin dec_LastVisitedEUTRANCellInformation(Bytes2) end, {{'e-UTRAN-Cell',Val},NewBytes}; 1 -> {Val,NewBytes} = begin begin V2@Pad3 = bit_size(Bytes2) band 7, {V2@V0,V2@Buf1} = case Bytes2 of <<_:V2@Pad3,0:1,V2@V5:7,V2@V7:V2@V5/binary-unit:8,V2@Buf8/bitstring>> -> {V2@V7,V2@Buf8}; <<_:V2@Pad3,1:1,0:1,V2@V6:14,V2@V8:V2@V6/binary-unit:8,V2@Buf9/bitstring>> -> {V2@V8,V2@Buf9}; <<_:V2@Pad3,1:1,1:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V8,V2@Buf9} = decode_fragmented(V2@V6, V2@Buf7, 8), {V2@V8,V2@Buf9} end, V2@Conv10 = binary:copy(V2@V0), {V2@Conv10,V2@Buf1} end end, {{'uTRAN-Cell',Val},NewBytes}; 2 -> {Val,NewBytes} = begin dec_LastVisitedGERANCellInformation(Bytes2) end, {{'gERAN-Cell',Val},NewBytes} end; <<1:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin {V1@V0,V1@Buf1} = case Bytes1 of <<0:1,V1@V3:6,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end, begin V2@Pad3 = bit_size(Bytes2) band 7, {V2@V0,V2@Buf1} = case Bytes2 of <<_:V2@Pad3,0:1,V2@V5:7,V2@V7:V2@V5/binary-unit:8,V2@Buf8/bitstring>> -> {V2@V7,V2@Buf8}; <<_:V2@Pad3,1:1,0:1,V2@V6:14,V2@V8:V2@V6/binary-unit:8,V2@Buf9/bitstring>> -> {V2@V8,V2@Buf9}; <<_:V2@Pad3,1:1,1:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V8,V2@Buf9} = decode_fragmented(V2@V6, V2@Buf7, 8), {V2@V8,V2@Buf9} end end, case Choice of 0 -> {Val,NewBytes} = begin {TmpVal,_} = begin V3@Pad3 = bit_size(V2@V0) band 7, {V3@V0,V3@Buf1} = case V2@V0 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, V3@Conv10 = binary:copy(V3@V0), {V3@Conv10,V3@Buf1} end, {TmpVal,V2@Buf1} end, {{'nG-RAN-Cell',Val},NewBytes}; _ -> {{asn1_ExtAlt,V2@V0},V2@Buf1} end end. enc_LastVisitedEUTRANCellInformation(Val) -> [begin Enc1@element = element(5, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute global-Cell-ID(1) with type EUTRAN-CGI Enc3@element = element(2, Val), 'enc_EUTRAN-CGI'(Enc3@element) end, begin %% attribute cellType(2) with type CellType Enc4@element = element(3, Val), enc_CellType(Enc4@element) end, align, begin %% attribute time-UE-StayedInCell(3) with type INTEGER Enc5@element = element(4, Val), if Enc5@element bsr 12 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc5@element}}}) end end|begin %% attribute iE-Extensions(4) with type SEQUENCE OF Enc7@element = element(5, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_LastVisitedEUTRANCellInformation_iE-Extensions'(Enc7@element) end end]. 'enc_LastVisitedEUTRANCellInformation_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_LastVisitedEUTRANCellInformation_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_LastVisitedEUTRANCellInformation_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension131(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_LastVisitedEUTRANCellInformation(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute global-Cell-ID(1) with type EUTRAN-CGI {Term1,Bytes3} = 'dec_EUTRAN-CGI'(Bytes2), %% attribute cellType(2) with type CellType {Term2,Bytes4} = dec_CellType(Bytes3), %% attribute time-UE-StayedInCell(3) with type INTEGER {Term3,Bytes5} = begin V3@Pad2 = bit_size(Bytes4) band 7, <<_:V3@Pad2,V3@V0:2/unsigned-unit:8,V3@Buf1/bitstring>> = Bytes4, {V3@V0,V3@Buf1} end, %% attribute iE-Extensions(4) with type SEQUENCE OF {Term4,Bytes6} = case Opt band 1 of 1 -> 'dec_LastVisitedEUTRANCellInformation_iE-Extensions'(Bytes5); 0 -> {asn1_NOVALUE,Bytes5} end, %% Extensions {Extensions,Bytes7} = case Ext of 0 -> {<<>>,Bytes6}; 1 -> {V4@V0,V4@Buf1} = case Bytes6 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes8= skipextensions(Bytes7, 1, Extensions), Res1 = {'LastVisitedEUTRANCellInformation',Term1,Term2,Term3,Term4}, {Res1,Bytes8}. 'dec_LastVisitedEUTRANCellInformation_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components132(V1@Add4, V1@Buf1, []). 'dec_LastVisitedEUTRANCellInformation_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension133(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_LastVisitedPSCellList(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 3 =:= 0 -> [<>|[enc_LastVisitedPSCellInformation(Comp) || Comp <- Val]] end. dec_LastVisitedPSCellList(Bytes) -> %% Length with constraint {1,8} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components134(V1@Add2, V1@Buf1, []). enc_LastVisitedPSCellInformation(Val) -> [begin Enc1@element = element(2, Val), Enc2@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin %% attribute pSCellID(1) with type PSCellInformation Enc4@element = element(2, Val), if Enc4@element =:= asn1_NOVALUE -> []; true -> enc_PSCellInformation(Enc4@element) end end, align, begin %% attribute timeStay(2) with type INTEGER Enc6@element = element(3, Val), if 0 =< Enc6@element, Enc6@element < 40951 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc6@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc8@element = element(4, Val), if Enc8@element =:= asn1_NOVALUE -> []; true -> 'enc_LastVisitedPSCellInformation_iE-Extensions'(Enc8@element) end end]. 'enc_LastVisitedPSCellInformation_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_LastVisitedPSCellInformation_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_LastVisitedPSCellInformation_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_LastVisitedPSCellInformation(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute pSCellID(1) with type PSCellInformation {Term1,Bytes3} = case (Opt bsr 1) band 1 of 1 -> dec_PSCellInformation(Bytes2); 0 -> {asn1_NOVALUE,Bytes2} end, %% attribute timeStay(2) with type INTEGER {Term2,Bytes4} = begin V3@Pad2 = bit_size(Bytes3) band 7, <<_:V3@Pad2,V3@V0:2/unsigned-unit:8,V3@Buf1/bitstring>> = Bytes3, {V3@V0,V3@Buf1} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_LastVisitedPSCellInformation_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V4@V0,V4@Buf1} = case Bytes5 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'LastVisitedPSCellInformation',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_LastVisitedPSCellInformation_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components135(V1@Add4, V1@Buf1, []). 'dec_LastVisitedPSCellInformation_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_LastVisitedNGRANCellInformation(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. dec_LastVisitedNGRANCellInformation(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. enc_LastVisitedUTRANCellInformation(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. dec_LastVisitedUTRANCellInformation(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. enc_LastVisitedGERANCellInformation(Val) -> {ChoiceTag,ChoiceVal} = Val, if ChoiceTag =:= undefined -> <<0:1>> end. dec_LastVisitedGERANCellInformation(Bytes) -> case Bytes of <<0:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin ignore, {0,Bytes1} end, case Choice of 0 -> {Val,NewBytes} = begin begin ignore, {'NULL',Bytes2} end end, {{undefined,Val},NewBytes} end; <<1:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin {V1@V0,V1@Buf1} = case Bytes1 of <<0:1,V1@V3:6,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end, begin V2@Pad3 = bit_size(Bytes2) band 7, {V2@V0,V2@Buf1} = case Bytes2 of <<_:V2@Pad3,0:1,V2@V5:7,V2@V7:V2@V5/binary-unit:8,V2@Buf8/bitstring>> -> {V2@V7,V2@Buf8}; <<_:V2@Pad3,1:1,0:1,V2@V6:14,V2@V8:V2@V6/binary-unit:8,V2@Buf9/bitstring>> -> {V2@V8,V2@Buf9}; <<_:V2@Pad3,1:1,1:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V8,V2@Buf9} = decode_fragmented(V2@V6, V2@Buf7, 8), {V2@V8,V2@Buf9} end end, case Choice of _ -> {{asn1_ExtAlt,V2@V0},V2@Buf1} end end. 'enc_L3-Information'(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. 'dec_L3-Information'(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. 'enc_LPPa-PDU'(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. 'dec_LPPa-PDU'(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. 'enc_LHN-ID'(Val) -> Enc1@len = byte_size(Val), Enc1@len@sub = Enc1@len - 32, if 0 =< Enc1@len@sub, Enc1@len@sub < 225 -> [Enc1@len@sub, align|Val] end. 'dec_LHN-ID'(Bytes) -> begin <> = Bytes, V1@Add2 = V1@V0 + 32, V1@Pad5 = bit_size(V1@Buf1) band 7, <<_:V1@Pad5,V1@V3:V1@Add2/binary-unit:8,V1@Buf4/bitstring>> = V1@Buf1, V1@Conv7 = binary:copy(V1@V3), {V1@Conv7,V1@Buf4} end. 'enc_Links-to-log'(Val) -> if Val =:= uplink -> <<0:1,0:2>>; Val =:= downlink -> <<0:1,1:2>>; Val =:= 'both-uplink-and-downlink' -> <<0:1,2:2>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_Links-to-log'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:2/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> uplink; 1 -> downlink; 2 -> 'both-uplink-and-downlink'; _ -> exit({error,{asn1,{decode_enumerated,V1@V3}}}) end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_ListeningSubframePattern(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute pattern-period(1) with type ENUMERATED Enc3@element = element(2, Val), if Enc3@element =:= ms1280 -> <<0:1,0:2>>; Enc3@element =:= ms2560 -> <<0:1,1:2>>; Enc3@element =:= ms5120 -> <<0:1,2:2>>; Enc3@element =:= ms10240 -> <<0:1,3:2>>; true -> exit({error,{asn1,{illegal_enumerated,Enc3@element}}}) end end, begin %% attribute pattern-offset(2) with type INTEGER Enc5@element = element(3, Val), if 0 =< Enc5@element, Enc5@element < 10240 -> [<<0:1>>, align|<>]; true -> [<<1:1>>, align|encode_unconstrained_number(Enc5@element)] end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_ListeningSubframePattern_iE-Extensions'(Enc7@element) end end]. 'enc_ListeningSubframePattern_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_ListeningSubframePattern_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_ListeningSubframePattern_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_ListeningSubframePattern(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute pattern-period(1) with type ENUMERATED {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:2/unsigned-unit:1,V3@Buf4/bitstring>> -> V3@Int5 = case V3@V3 of 0 -> ms1280; 1 -> ms2560; 2 -> ms5120; 3 -> ms10240 end, {V3@Int5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> {V3@V3,V3@Buf4} = case V3@Buf2 of <<0:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V6,V3@Buf7}; <<1:1,V3@Buf5/bitstring>> -> V3@Pad9 = bit_size(V3@Buf5) band 7, {V3@V6,V3@Buf7} = case V3@Buf5 of <<_:V3@Pad9,0:1,V3@V11:7,V3@Buf12/bitstring>> when V3@V11 =/= 0 -> {V3@V11,V3@Buf12}; <<_:V3@Pad9,1:1,0:1,V3@V12:14,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> {V3@V12,V3@Buf13}; <<_:V3@Pad9,1:1,1:1,V3@V12:6,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> V3@Mul14 = V3@V12 * 16384, {V3@Mul14,V3@Buf13} end, <> = V3@Buf7, {V3@V15,V3@Buf16} end, V3@Int17 = case V3@V3 of _ -> {asn1_enum,V3@V3} end, {V3@Int17,V3@Buf4} end, {V3@V0,V3@Buf1} end, %% attribute pattern-offset(2) with type INTEGER {Term2,Bytes4} = begin {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@Buf2/bitstring>> -> V4@Pad5 = bit_size(V4@Buf2) band 7, <<_:V4@Pad5,V4@V3:2/unsigned-unit:8,V4@Buf4/bitstring>> = V4@Buf2, {V4@V3,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, <> = V4@Buf4, {V4@V12,V4@Buf13} end, {V4@V0,V4@Buf1} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_ListeningSubframePattern_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'ListeningSubframePattern',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_ListeningSubframePattern_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components136(V1@Add4, V1@Buf1, []). 'dec_ListeningSubframePattern_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_LoggedMDT(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute loggingInterval(1) with type ENUMERATED Enc3@element = element(2, Val), if Enc3@element =:= ms1280 -> <<0:3>>; Enc3@element =:= ms2560 -> <<1:3>>; Enc3@element =:= ms5120 -> <<2:3>>; Enc3@element =:= ms10240 -> <<3:3>>; Enc3@element =:= ms20480 -> <<4:3>>; Enc3@element =:= ms30720 -> <<5:3>>; Enc3@element =:= ms40960 -> <<6:3>>; Enc3@element =:= ms61440 -> <<7:3>>; true -> exit({error,{asn1,{illegal_enumerated,Enc3@element}}}) end end, begin %% attribute loggingDuration(2) with type ENUMERATED Enc5@element = element(3, Val), if Enc5@element =:= m10 -> <<0:3>>; Enc5@element =:= m20 -> <<1:3>>; Enc5@element =:= m40 -> <<2:3>>; Enc5@element =:= m60 -> <<3:3>>; Enc5@element =:= m90 -> <<4:3>>; Enc5@element =:= m120 -> <<5:3>>; true -> exit({error,{asn1,{illegal_enumerated,Enc5@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_LoggedMDT_iE-Extensions'(Enc7@element) end end]. 'enc_LoggedMDT_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_LoggedMDT_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_LoggedMDT_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension137(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_LoggedMDT(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute loggingInterval(1) with type ENUMERATED {Term1,Bytes3} = begin <> = Bytes2, V3@Int2 = case V3@V0 of 0 -> ms1280; 1 -> ms2560; 2 -> ms5120; 3 -> ms10240; 4 -> ms20480; 5 -> ms30720; 6 -> ms40960; 7 -> ms61440 end, {V3@Int2,V3@Buf1} end, %% attribute loggingDuration(2) with type ENUMERATED {Term2,Bytes4} = begin <> = Bytes3, V4@Int2 = case V4@V0 of 0 -> m10; 1 -> m20; 2 -> m40; 3 -> m60; 4 -> m90; 5 -> m120; _ -> exit({error,{asn1,{decode_enumerated,V4@V0}}}) end, {V4@Int2,V4@Buf1} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_LoggedMDT_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'LoggedMDT',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_LoggedMDT_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components138(V1@Add4, V1@Buf1, []). 'dec_LoggedMDT_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension139(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_LoggingInterval(Val) -> if Val =:= ms1280 -> <<0:3>>; Val =:= ms2560 -> <<1:3>>; Val =:= ms5120 -> <<2:3>>; Val =:= ms10240 -> <<3:3>>; Val =:= ms20480 -> <<4:3>>; Val =:= ms30720 -> <<5:3>>; Val =:= ms40960 -> <<6:3>>; Val =:= ms61440 -> <<7:3>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_LoggingInterval(Bytes) -> begin <> = Bytes, V1@Int2 = case V1@V0 of 0 -> ms1280; 1 -> ms2560; 2 -> ms5120; 3 -> ms10240; 4 -> ms20480; 5 -> ms30720; 6 -> ms40960; 7 -> ms61440 end, {V1@Int2,V1@Buf1} end. enc_LoggingDuration(Val) -> if Val =:= m10 -> <<0:3>>; Val =:= m20 -> <<1:3>>; Val =:= m40 -> <<2:3>>; Val =:= m60 -> <<3:3>>; Val =:= m90 -> <<4:3>>; Val =:= m120 -> <<5:3>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_LoggingDuration(Bytes) -> begin <> = Bytes, V1@Int2 = case V1@V0 of 0 -> m10; 1 -> m20; 2 -> m40; 3 -> m60; 4 -> m90; 5 -> m120; _ -> exit({error,{asn1,{decode_enumerated,V1@V0}}}) end, {V1@Int2,V1@Buf1} end. enc_LoggedMBSFNMDT(Val) -> [begin Enc1@element = element(4, Val), Enc2@element = element(5, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin %% attribute loggingInterval(1) with type ENUMERATED Enc4@element = element(2, Val), if Enc4@element =:= ms1280 -> <<0:3>>; Enc4@element =:= ms2560 -> <<1:3>>; Enc4@element =:= ms5120 -> <<2:3>>; Enc4@element =:= ms10240 -> <<3:3>>; Enc4@element =:= ms20480 -> <<4:3>>; Enc4@element =:= ms30720 -> <<5:3>>; Enc4@element =:= ms40960 -> <<6:3>>; Enc4@element =:= ms61440 -> <<7:3>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end, begin %% attribute loggingDuration(2) with type ENUMERATED Enc6@element = element(3, Val), if Enc6@element =:= m10 -> <<0:3>>; Enc6@element =:= m20 -> <<1:3>>; Enc6@element =:= m40 -> <<2:3>>; Enc6@element =:= m60 -> <<3:3>>; Enc6@element =:= m90 -> <<4:3>>; Enc6@element =:= m120 -> <<5:3>>; true -> exit({error,{asn1,{illegal_enumerated,Enc6@element}}}) end end, begin %% attribute mBSFN-ResultToLog(3) with type MBSFN-ResultToLog Enc8@element = element(4, Val), if Enc8@element =:= asn1_NOVALUE -> []; true -> 'enc_MBSFN-ResultToLog'(Enc8@element) end end|begin %% attribute iE-Extensions(4) with type SEQUENCE OF Enc10@element = element(5, Val), if Enc10@element =:= asn1_NOVALUE -> []; true -> 'enc_LoggedMBSFNMDT_iE-Extensions'(Enc10@element) end end]. 'enc_LoggedMBSFNMDT_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_LoggedMBSFNMDT_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_LoggedMBSFNMDT_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_LoggedMBSFNMDT(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute loggingInterval(1) with type ENUMERATED {Term1,Bytes3} = begin <> = Bytes2, V3@Int2 = case V3@V0 of 0 -> ms1280; 1 -> ms2560; 2 -> ms5120; 3 -> ms10240; 4 -> ms20480; 5 -> ms30720; 6 -> ms40960; 7 -> ms61440 end, {V3@Int2,V3@Buf1} end, %% attribute loggingDuration(2) with type ENUMERATED {Term2,Bytes4} = begin <> = Bytes3, V4@Int2 = case V4@V0 of 0 -> m10; 1 -> m20; 2 -> m40; 3 -> m60; 4 -> m90; 5 -> m120; _ -> exit({error,{asn1,{decode_enumerated,V4@V0}}}) end, {V4@Int2,V4@Buf1} end, %% attribute mBSFN-ResultToLog(3) with type MBSFN-ResultToLog {Term3,Bytes5} = case (Opt bsr 1) band 1 of 1 -> 'dec_MBSFN-ResultToLog'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% attribute iE-Extensions(4) with type SEQUENCE OF {Term4,Bytes6} = case Opt band 1 of 1 -> 'dec_LoggedMBSFNMDT_iE-Extensions'(Bytes5); 0 -> {asn1_NOVALUE,Bytes5} end, %% Extensions {Extensions,Bytes7} = case Ext of 0 -> {<<>>,Bytes6}; 1 -> {V5@V0,V5@Buf1} = case Bytes6 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes8= skipextensions(Bytes7, 1, Extensions), Res1 = {'LoggedMBSFNMDT',Term1,Term2,Term3,Term4}, {Res1,Bytes8}. 'dec_LoggedMBSFNMDT_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components140(V1@Add4, V1@Buf1, []). 'dec_LoggedMBSFNMDT_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_LoggedMDTTrigger(Val) -> {ChoiceTag,ChoiceVal} = Val, if ChoiceTag =:= periodical -> <<0:1,0:1>>; ChoiceTag =:= eventTrigger -> [<<0:1,1:1>>|enc_EventTrigger(ChoiceVal)] end. dec_LoggedMDTTrigger(Bytes) -> case Bytes of <<0:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin <> = Bytes1, {V1@V0,V1@Buf1} end, case Choice of 0 -> {Val,NewBytes} = begin begin ignore, {'NULL',Bytes2} end end, {{periodical,Val},NewBytes}; 1 -> {Val,NewBytes} = begin dec_EventTrigger(Bytes2) end, {{eventTrigger,Val},NewBytes} end; <<1:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin {V1@V0,V1@Buf1} = case Bytes1 of <<0:1,V1@V3:6,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end, begin V2@Pad3 = bit_size(Bytes2) band 7, {V2@V0,V2@Buf1} = case Bytes2 of <<_:V2@Pad3,0:1,V2@V5:7,V2@V7:V2@V5/binary-unit:8,V2@Buf8/bitstring>> -> {V2@V7,V2@Buf8}; <<_:V2@Pad3,1:1,0:1,V2@V6:14,V2@V8:V2@V6/binary-unit:8,V2@Buf9/bitstring>> -> {V2@V8,V2@Buf9}; <<_:V2@Pad3,1:1,1:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V8,V2@Buf9} = decode_fragmented(V2@V6, V2@Buf7, 8), {V2@V8,V2@Buf9} end end, case Choice of _ -> {{asn1_ExtAlt,V2@V0},V2@Buf1} end end. 'enc_LTE-M-Indication'(Val) -> if Val =:= 'lte-m' -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_LTE-M-Indication'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'lte-m',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. 'enc_LTE-NTN-TAI-Information'(Val) -> [begin Enc1@element = element(4, Val), Enc2@element = element(5, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, align, begin %% attribute servingPLMN(1) with type OCTET STRING Enc4@element = element(2, Val), Enc5@len = byte_size(Enc4@element), if Enc5@len =:= 3 -> Enc4@element end end, begin %% attribute tACList-In-LTE-NTN(2) with type TACList-In-LTE-NTN Enc6@element = element(3, Val), 'enc_TACList-In-LTE-NTN'(Enc6@element) end, begin %% attribute uE-Location-Derived-TAC(3) with type OCTET STRING Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> begin Enc8@len = byte_size(Enc7@element), if Enc8@len =:= 2 -> Enc7@element end end end end|begin %% attribute iE-Extensions(4) with type SEQUENCE OF Enc10@element = element(5, Val), if Enc10@element =:= asn1_NOVALUE -> []; true -> 'enc_LTE-NTN-TAI-Information_iE-Extensions'(Enc10@element) end end]. 'enc_LTE-NTN-TAI-Information_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_LTE-NTN-TAI-Information_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_LTE-NTN-TAI-Information_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_LTE-NTN-TAI-Information'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute servingPLMN(1) with type OCTET STRING {Term1,Bytes3} = begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:3/binary-unit:8,V3@Buf1/bitstring>> = Bytes2, V3@Conv4 = binary:copy(V3@V0), {V3@Conv4,V3@Buf1} end, %% attribute tACList-In-LTE-NTN(2) with type TACList-In-LTE-NTN {Term2,Bytes4} = 'dec_TACList-In-LTE-NTN'(Bytes3), %% attribute uE-Location-Derived-TAC(3) with type OCTET STRING {Term3,Bytes5} = case (Opt bsr 1) band 1 of 1 -> begin <> = Bytes4, V4@Conv2 = binary:copy(V4@V0), {V4@Conv2,V4@Buf1} end; 0 -> {asn1_NOVALUE,Bytes4} end, %% attribute iE-Extensions(4) with type SEQUENCE OF {Term4,Bytes6} = case Opt band 1 of 1 -> 'dec_LTE-NTN-TAI-Information_iE-Extensions'(Bytes5); 0 -> {asn1_NOVALUE,Bytes5} end, %% Extensions {Extensions,Bytes7} = case Ext of 0 -> {<<>>,Bytes6}; 1 -> {V5@V0,V5@Buf1} = case Bytes6 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes8= skipextensions(Bytes7, 1, Extensions), Res1 = {'LTE-NTN-TAI-Information',Term1,Term2,Term3,Term4}, {Res1,Bytes8}. 'dec_LTE-NTN-TAI-Information_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components141(V1@Add4, V1@Buf1, []). 'dec_LTE-NTN-TAI-Information_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_M3Configuration(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute m3period(1) with type ENUMERATED Enc3@element = element(2, Val), if Enc3@element =:= ms100 -> <<0:1,0:2>>; Enc3@element =:= ms1000 -> <<0:1,1:2>>; Enc3@element =:= ms10000 -> <<0:1,2:2>>; Enc3@element =:= ms1024 -> <<1:1,0:7>>; Enc3@element =:= ms1280 -> <<1:1,1:7>>; Enc3@element =:= ms2048 -> <<1:1,2:7>>; Enc3@element =:= ms2560 -> <<1:1,3:7>>; Enc3@element =:= ms5120 -> <<1:1,4:7>>; Enc3@element =:= ms10240 -> <<1:1,5:7>>; Enc3@element =:= min1 -> <<1:1,6:7>>; true -> exit({error,{asn1,{illegal_enumerated,Enc3@element}}}) end end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc5@element = element(3, Val), if Enc5@element =:= asn1_NOVALUE -> []; true -> 'enc_M3Configuration_iE-Extensions'(Enc5@element) end end]. 'enc_M3Configuration_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_M3Configuration_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_M3Configuration_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_M3Configuration(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute m3period(1) with type ENUMERATED {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:2/unsigned-unit:1,V3@Buf4/bitstring>> -> V3@Int5 = case V3@V3 of 0 -> ms100; 1 -> ms1000; 2 -> ms10000; _ -> exit({error,{asn1,{decode_enumerated,V3@V3}}}) end, {V3@Int5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> {V3@V3,V3@Buf4} = case V3@Buf2 of <<0:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V6,V3@Buf7}; <<1:1,V3@Buf5/bitstring>> -> V3@Pad9 = bit_size(V3@Buf5) band 7, {V3@V6,V3@Buf7} = case V3@Buf5 of <<_:V3@Pad9,0:1,V3@V11:7,V3@Buf12/bitstring>> when V3@V11 =/= 0 -> {V3@V11,V3@Buf12}; <<_:V3@Pad9,1:1,0:1,V3@V12:14,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> {V3@V12,V3@Buf13}; <<_:V3@Pad9,1:1,1:1,V3@V12:6,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> V3@Mul14 = V3@V12 * 16384, {V3@Mul14,V3@Buf13} end, <> = V3@Buf7, {V3@V15,V3@Buf16} end, V3@Int17 = case V3@V3 of 0 -> ms1024; 1 -> ms1280; 2 -> ms2048; 3 -> ms2560; 4 -> ms5120; 5 -> ms10240; 6 -> min1; _ -> {asn1_enum,V3@V3} end, {V3@Int17,V3@Buf4} end, {V3@V0,V3@Buf1} end, %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_M3Configuration_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V4@V0,V4@Buf1} = case Bytes4 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'M3Configuration',Term1,Term2}, {Res1,Bytes6}. 'dec_M3Configuration_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components142(V1@Add4, V1@Buf1, []). 'dec_M3Configuration_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_M3period(Val) -> if Val =:= ms100 -> <<0:1,0:2>>; Val =:= ms1000 -> <<0:1,1:2>>; Val =:= ms10000 -> <<0:1,2:2>>; Val =:= ms1024 -> <<1:1,0:7>>; Val =:= ms1280 -> <<1:1,1:7>>; Val =:= ms2048 -> <<1:1,2:7>>; Val =:= ms2560 -> <<1:1,3:7>>; Val =:= ms5120 -> <<1:1,4:7>>; Val =:= ms10240 -> <<1:1,5:7>>; Val =:= min1 -> <<1:1,6:7>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_M3period(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:2/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> ms100; 1 -> ms1000; 2 -> ms10000; _ -> exit({error,{asn1,{decode_enumerated,V1@V3}}}) end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of 0 -> ms1024; 1 -> ms1280; 2 -> ms2048; 3 -> ms2560; 4 -> ms5120; 5 -> ms10240; 6 -> min1; _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_M4Configuration(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute m4period(1) with type ENUMERATED Enc3@element = element(2, Val), if Enc3@element =:= ms1024 -> <<0:1,0:3>>; Enc3@element =:= ms2048 -> <<0:1,1:3>>; Enc3@element =:= ms5120 -> <<0:1,2:3>>; Enc3@element =:= ms10240 -> <<0:1,3:3>>; Enc3@element =:= min1 -> <<0:1,4:3>>; true -> exit({error,{asn1,{illegal_enumerated,Enc3@element}}}) end end, begin %% attribute m4-links-to-log(2) with type ENUMERATED Enc5@element = element(3, Val), if Enc5@element =:= uplink -> <<0:1,0:2>>; Enc5@element =:= downlink -> <<0:1,1:2>>; Enc5@element =:= 'both-uplink-and-downlink' -> <<0:1,2:2>>; true -> exit({error,{asn1,{illegal_enumerated,Enc5@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_M4Configuration_iE-Extensions'(Enc7@element) end end]. 'enc_M4Configuration_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_M4Configuration_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_M4Configuration_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_M4Configuration(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute m4period(1) with type ENUMERATED {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:3/unsigned-unit:1,V3@Buf4/bitstring>> -> V3@Int5 = case V3@V3 of 0 -> ms1024; 1 -> ms2048; 2 -> ms5120; 3 -> ms10240; 4 -> min1; _ -> exit({error,{asn1,{decode_enumerated,V3@V3}}}) end, {V3@Int5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> {V3@V3,V3@Buf4} = case V3@Buf2 of <<0:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V6,V3@Buf7}; <<1:1,V3@Buf5/bitstring>> -> V3@Pad9 = bit_size(V3@Buf5) band 7, {V3@V6,V3@Buf7} = case V3@Buf5 of <<_:V3@Pad9,0:1,V3@V11:7,V3@Buf12/bitstring>> when V3@V11 =/= 0 -> {V3@V11,V3@Buf12}; <<_:V3@Pad9,1:1,0:1,V3@V12:14,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> {V3@V12,V3@Buf13}; <<_:V3@Pad9,1:1,1:1,V3@V12:6,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> V3@Mul14 = V3@V12 * 16384, {V3@Mul14,V3@Buf13} end, <> = V3@Buf7, {V3@V15,V3@Buf16} end, V3@Int17 = case V3@V3 of _ -> {asn1_enum,V3@V3} end, {V3@Int17,V3@Buf4} end, {V3@V0,V3@Buf1} end, %% attribute m4-links-to-log(2) with type ENUMERATED {Term2,Bytes4} = begin {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@V3:2/unsigned-unit:1,V4@Buf4/bitstring>> -> V4@Int5 = case V4@V3 of 0 -> uplink; 1 -> downlink; 2 -> 'both-uplink-and-downlink'; _ -> exit({error,{asn1,{decode_enumerated,V4@V3}}}) end, {V4@Int5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> {V4@V3,V4@Buf4} = case V4@Buf2 of <<0:1,V4@V6:6,V4@Buf7/bitstring>> -> {V4@V6,V4@Buf7}; <<1:1,V4@Buf5/bitstring>> -> V4@Pad9 = bit_size(V4@Buf5) band 7, {V4@V6,V4@Buf7} = case V4@Buf5 of <<_:V4@Pad9,0:1,V4@V11:7,V4@Buf12/bitstring>> when V4@V11 =/= 0 -> {V4@V11,V4@Buf12}; <<_:V4@Pad9,1:1,0:1,V4@V12:14,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> {V4@V12,V4@Buf13}; <<_:V4@Pad9,1:1,1:1,V4@V12:6,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> V4@Mul14 = V4@V12 * 16384, {V4@Mul14,V4@Buf13} end, <> = V4@Buf7, {V4@V15,V4@Buf16} end, V4@Int17 = case V4@V3 of _ -> {asn1_enum,V4@V3} end, {V4@Int17,V4@Buf4} end, {V4@V0,V4@Buf1} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_M4Configuration_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'M4Configuration',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_M4Configuration_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components143(V1@Add4, V1@Buf1, []). 'dec_M4Configuration_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_M4period(Val) -> if Val =:= ms1024 -> <<0:1,0:3>>; Val =:= ms2048 -> <<0:1,1:3>>; Val =:= ms5120 -> <<0:1,2:3>>; Val =:= ms10240 -> <<0:1,3:3>>; Val =:= min1 -> <<0:1,4:3>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_M4period(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:3/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> ms1024; 1 -> ms2048; 2 -> ms5120; 3 -> ms10240; 4 -> min1; _ -> exit({error,{asn1,{decode_enumerated,V1@V3}}}) end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_M5Configuration(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute m5period(1) with type ENUMERATED Enc3@element = element(2, Val), if Enc3@element =:= ms1024 -> <<0:1,0:3>>; Enc3@element =:= ms2048 -> <<0:1,1:3>>; Enc3@element =:= ms5120 -> <<0:1,2:3>>; Enc3@element =:= ms10240 -> <<0:1,3:3>>; Enc3@element =:= min1 -> <<0:1,4:3>>; true -> exit({error,{asn1,{illegal_enumerated,Enc3@element}}}) end end, begin %% attribute m5-links-to-log(2) with type ENUMERATED Enc5@element = element(3, Val), if Enc5@element =:= uplink -> <<0:1,0:2>>; Enc5@element =:= downlink -> <<0:1,1:2>>; Enc5@element =:= 'both-uplink-and-downlink' -> <<0:1,2:2>>; true -> exit({error,{asn1,{illegal_enumerated,Enc5@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_M5Configuration_iE-Extensions'(Enc7@element) end end]. 'enc_M5Configuration_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_M5Configuration_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_M5Configuration_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_M5Configuration(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute m5period(1) with type ENUMERATED {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:3/unsigned-unit:1,V3@Buf4/bitstring>> -> V3@Int5 = case V3@V3 of 0 -> ms1024; 1 -> ms2048; 2 -> ms5120; 3 -> ms10240; 4 -> min1; _ -> exit({error,{asn1,{decode_enumerated,V3@V3}}}) end, {V3@Int5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> {V3@V3,V3@Buf4} = case V3@Buf2 of <<0:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V6,V3@Buf7}; <<1:1,V3@Buf5/bitstring>> -> V3@Pad9 = bit_size(V3@Buf5) band 7, {V3@V6,V3@Buf7} = case V3@Buf5 of <<_:V3@Pad9,0:1,V3@V11:7,V3@Buf12/bitstring>> when V3@V11 =/= 0 -> {V3@V11,V3@Buf12}; <<_:V3@Pad9,1:1,0:1,V3@V12:14,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> {V3@V12,V3@Buf13}; <<_:V3@Pad9,1:1,1:1,V3@V12:6,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> V3@Mul14 = V3@V12 * 16384, {V3@Mul14,V3@Buf13} end, <> = V3@Buf7, {V3@V15,V3@Buf16} end, V3@Int17 = case V3@V3 of _ -> {asn1_enum,V3@V3} end, {V3@Int17,V3@Buf4} end, {V3@V0,V3@Buf1} end, %% attribute m5-links-to-log(2) with type ENUMERATED {Term2,Bytes4} = begin {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@V3:2/unsigned-unit:1,V4@Buf4/bitstring>> -> V4@Int5 = case V4@V3 of 0 -> uplink; 1 -> downlink; 2 -> 'both-uplink-and-downlink'; _ -> exit({error,{asn1,{decode_enumerated,V4@V3}}}) end, {V4@Int5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> {V4@V3,V4@Buf4} = case V4@Buf2 of <<0:1,V4@V6:6,V4@Buf7/bitstring>> -> {V4@V6,V4@Buf7}; <<1:1,V4@Buf5/bitstring>> -> V4@Pad9 = bit_size(V4@Buf5) band 7, {V4@V6,V4@Buf7} = case V4@Buf5 of <<_:V4@Pad9,0:1,V4@V11:7,V4@Buf12/bitstring>> when V4@V11 =/= 0 -> {V4@V11,V4@Buf12}; <<_:V4@Pad9,1:1,0:1,V4@V12:14,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> {V4@V12,V4@Buf13}; <<_:V4@Pad9,1:1,1:1,V4@V12:6,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> V4@Mul14 = V4@V12 * 16384, {V4@Mul14,V4@Buf13} end, <> = V4@Buf7, {V4@V15,V4@Buf16} end, V4@Int17 = case V4@V3 of _ -> {asn1_enum,V4@V3} end, {V4@Int17,V4@Buf4} end, {V4@V0,V4@Buf1} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_M5Configuration_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'M5Configuration',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_M5Configuration_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components144(V1@Add4, V1@Buf1, []). 'dec_M5Configuration_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_M5period(Val) -> if Val =:= ms1024 -> <<0:1,0:3>>; Val =:= ms2048 -> <<0:1,1:3>>; Val =:= ms5120 -> <<0:1,2:3>>; Val =:= ms10240 -> <<0:1,3:3>>; Val =:= min1 -> <<0:1,4:3>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_M5period(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:3/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> ms1024; 1 -> ms2048; 2 -> ms5120; 3 -> ms10240; 4 -> min1; _ -> exit({error,{asn1,{decode_enumerated,V1@V3}}}) end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_M6Configuration(Val) -> [begin Enc1@element = element(3, Val), Enc2@element = element(5, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin %% attribute m6report-Interval(1) with type ENUMERATED Enc4@element = element(2, Val), if Enc4@element =:= ms1024 -> <<0:1,0:2>>; Enc4@element =:= ms2048 -> <<0:1,1:2>>; Enc4@element =:= ms5120 -> <<0:1,2:2>>; Enc4@element =:= ms10240 -> <<0:1,3:2>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end, begin %% attribute m6delay-threshold(2) with type ENUMERATED Enc6@element = element(3, Val), if Enc6@element =:= asn1_NOVALUE -> []; Enc6@element =:= ms30 -> <<0:1,0:4>>; Enc6@element =:= ms40 -> <<0:1,1:4>>; Enc6@element =:= ms50 -> <<0:1,2:4>>; Enc6@element =:= ms60 -> <<0:1,3:4>>; Enc6@element =:= ms70 -> <<0:1,4:4>>; Enc6@element =:= ms80 -> <<0:1,5:4>>; Enc6@element =:= ms90 -> <<0:1,6:4>>; Enc6@element =:= ms100 -> <<0:1,7:4>>; Enc6@element =:= ms150 -> <<0:1,8:4>>; Enc6@element =:= ms300 -> <<0:1,9:4>>; Enc6@element =:= ms500 -> <<0:1,10:4>>; Enc6@element =:= ms750 -> <<0:1,11:4>>; true -> exit({error,{asn1,{illegal_enumerated,Enc6@element}}}) end end, begin %% attribute m6-links-to-log(3) with type ENUMERATED Enc9@element = element(4, Val), if Enc9@element =:= uplink -> <<0:1,0:2>>; Enc9@element =:= downlink -> <<0:1,1:2>>; Enc9@element =:= 'both-uplink-and-downlink' -> <<0:1,2:2>>; true -> exit({error,{asn1,{illegal_enumerated,Enc9@element}}}) end end|begin %% attribute iE-Extensions(4) with type SEQUENCE OF Enc11@element = element(5, Val), if Enc11@element =:= asn1_NOVALUE -> []; true -> 'enc_M6Configuration_iE-Extensions'(Enc11@element) end end]. 'enc_M6Configuration_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_M6Configuration_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_M6Configuration_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_M6Configuration(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute m6report-Interval(1) with type ENUMERATED {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:2/unsigned-unit:1,V3@Buf4/bitstring>> -> V3@Int5 = case V3@V3 of 0 -> ms1024; 1 -> ms2048; 2 -> ms5120; 3 -> ms10240 end, {V3@Int5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> {V3@V3,V3@Buf4} = case V3@Buf2 of <<0:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V6,V3@Buf7}; <<1:1,V3@Buf5/bitstring>> -> V3@Pad9 = bit_size(V3@Buf5) band 7, {V3@V6,V3@Buf7} = case V3@Buf5 of <<_:V3@Pad9,0:1,V3@V11:7,V3@Buf12/bitstring>> when V3@V11 =/= 0 -> {V3@V11,V3@Buf12}; <<_:V3@Pad9,1:1,0:1,V3@V12:14,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> {V3@V12,V3@Buf13}; <<_:V3@Pad9,1:1,1:1,V3@V12:6,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> V3@Mul14 = V3@V12 * 16384, {V3@Mul14,V3@Buf13} end, <> = V3@Buf7, {V3@V15,V3@Buf16} end, V3@Int17 = case V3@V3 of _ -> {asn1_enum,V3@V3} end, {V3@Int17,V3@Buf4} end, {V3@V0,V3@Buf1} end, %% attribute m6delay-threshold(2) with type ENUMERATED {Term2,Bytes4} = case (Opt bsr 1) band 1 of 1 -> begin {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@V3:4/unsigned-unit:1,V4@Buf4/bitstring>> -> V4@Int5 = case V4@V3 of 0 -> ms30; 1 -> ms40; 2 -> ms50; 3 -> ms60; 4 -> ms70; 5 -> ms80; 6 -> ms90; 7 -> ms100; 8 -> ms150; 9 -> ms300; 10 -> ms500; 11 -> ms750; _ -> exit({error,{asn1,{decode_enumerated,V4@V3}}}) end, {V4@Int5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> {V4@V3,V4@Buf4} = case V4@Buf2 of <<0:1,V4@V6:6,V4@Buf7/bitstring>> -> {V4@V6,V4@Buf7}; <<1:1,V4@Buf5/bitstring>> -> V4@Pad9 = bit_size(V4@Buf5) band 7, {V4@V6,V4@Buf7} = case V4@Buf5 of <<_:V4@Pad9,0:1,V4@V11:7,V4@Buf12/bitstring>> when V4@V11 =/= 0 -> {V4@V11,V4@Buf12}; <<_:V4@Pad9,1:1,0:1,V4@V12:14,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> {V4@V12,V4@Buf13}; <<_:V4@Pad9,1:1,1:1,V4@V12:6,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> V4@Mul14 = V4@V12 * 16384, {V4@Mul14,V4@Buf13} end, <> = V4@Buf7, {V4@V15,V4@Buf16} end, V4@Int17 = case V4@V3 of _ -> {asn1_enum,V4@V3} end, {V4@Int17,V4@Buf4} end, {V4@V0,V4@Buf1} end; 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute m6-links-to-log(3) with type ENUMERATED {Term3,Bytes5} = begin {V5@V0,V5@Buf1} = case Bytes4 of <<0:1,V5@V3:2/unsigned-unit:1,V5@Buf4/bitstring>> -> V5@Int5 = case V5@V3 of 0 -> uplink; 1 -> downlink; 2 -> 'both-uplink-and-downlink'; _ -> exit({error,{asn1,{decode_enumerated,V5@V3}}}) end, {V5@Int5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> {V5@V3,V5@Buf4} = case V5@Buf2 of <<0:1,V5@V6:6,V5@Buf7/bitstring>> -> {V5@V6,V5@Buf7}; <<1:1,V5@Buf5/bitstring>> -> V5@Pad9 = bit_size(V5@Buf5) band 7, {V5@V6,V5@Buf7} = case V5@Buf5 of <<_:V5@Pad9,0:1,V5@V11:7,V5@Buf12/bitstring>> when V5@V11 =/= 0 -> {V5@V11,V5@Buf12}; <<_:V5@Pad9,1:1,0:1,V5@V12:14,V5@Buf13/bitstring>> when V5@V12 =/= 0 -> {V5@V12,V5@Buf13}; <<_:V5@Pad9,1:1,1:1,V5@V12:6,V5@Buf13/bitstring>> when V5@V12 =/= 0 -> V5@Mul14 = V5@V12 * 16384, {V5@Mul14,V5@Buf13} end, <> = V5@Buf7, {V5@V15,V5@Buf16} end, V5@Int17 = case V5@V3 of _ -> {asn1_enum,V5@V3} end, {V5@Int17,V5@Buf4} end, {V5@V0,V5@Buf1} end, %% attribute iE-Extensions(4) with type SEQUENCE OF {Term4,Bytes6} = case Opt band 1 of 1 -> 'dec_M6Configuration_iE-Extensions'(Bytes5); 0 -> {asn1_NOVALUE,Bytes5} end, %% Extensions {Extensions,Bytes7} = case Ext of 0 -> {<<>>,Bytes6}; 1 -> {V6@V0,V6@Buf1} = case Bytes6 of <<0:1,V6@V3:6,V6@Buf4/bitstring>> -> V6@Add5 = V6@V3 + 1, {V6@Add5,V6@Buf4}; <<1:1,V6@Buf2/bitstring>> -> V6@Pad6 = bit_size(V6@Buf2) band 7, {V6@V3,V6@Buf4} = case V6@Buf2 of <<_:V6@Pad6,0:1,V6@V8:7,V6@Buf9/bitstring>> when V6@V8 =/= 0 -> {V6@V8,V6@Buf9}; <<_:V6@Pad6,1:1,0:1,V6@V9:14,V6@Buf10/bitstring>> when V6@V9 =/= 0 -> {V6@V9,V6@Buf10}; <<_:V6@Pad6,1:1,1:1,V6@V9:6,V6@Buf10/bitstring>> when V6@V9 =/= 0 -> V6@Mul11 = V6@V9 * 16384, {V6@Mul11,V6@Buf10} end, {V6@V3,V6@Buf4} end, <> = V6@Buf1, {V6@V12,V6@Buf13} end, Bytes8= skipextensions(Bytes7, 1, Extensions), Res1 = {'M6Configuration',Term1,Term2,Term3,Term4}, {Res1,Bytes8}. 'dec_M6Configuration_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components145(V1@Add4, V1@Buf1, []). 'dec_M6Configuration_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_M6report-Interval'(Val) -> if Val =:= ms1024 -> <<0:1,0:2>>; Val =:= ms2048 -> <<0:1,1:2>>; Val =:= ms5120 -> <<0:1,2:2>>; Val =:= ms10240 -> <<0:1,3:2>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_M6report-Interval'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:2/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> ms1024; 1 -> ms2048; 2 -> ms5120; 3 -> ms10240 end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. 'enc_M6delay-threshold'(Val) -> if Val =:= ms30 -> <<0:1,0:4>>; Val =:= ms40 -> <<0:1,1:4>>; Val =:= ms50 -> <<0:1,2:4>>; Val =:= ms60 -> <<0:1,3:4>>; Val =:= ms70 -> <<0:1,4:4>>; Val =:= ms80 -> <<0:1,5:4>>; Val =:= ms90 -> <<0:1,6:4>>; Val =:= ms100 -> <<0:1,7:4>>; Val =:= ms150 -> <<0:1,8:4>>; Val =:= ms300 -> <<0:1,9:4>>; Val =:= ms500 -> <<0:1,10:4>>; Val =:= ms750 -> <<0:1,11:4>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_M6delay-threshold'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:4/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> ms30; 1 -> ms40; 2 -> ms50; 3 -> ms60; 4 -> ms70; 5 -> ms80; 6 -> ms90; 7 -> ms100; 8 -> ms150; 9 -> ms300; 10 -> ms500; 11 -> ms750; _ -> exit({error,{asn1,{decode_enumerated,V1@V3}}}) end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_M7Configuration(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute m7period(1) with type INTEGER Enc3@element = element(2, Val), Enc3@element@sub = Enc3@element - 1, if 0 =< Enc3@element@sub, Enc3@element@sub < 60 -> <<0:1,Enc3@element@sub:6>>; true -> [<<1:1>>, align|encode_unconstrained_number(Enc3@element)] end end, begin %% attribute m7-links-to-log(2) with type ENUMERATED Enc5@element = element(3, Val), if Enc5@element =:= uplink -> <<0:1,0:2>>; Enc5@element =:= downlink -> <<0:1,1:2>>; Enc5@element =:= 'both-uplink-and-downlink' -> <<0:1,2:2>>; true -> exit({error,{asn1,{illegal_enumerated,Enc5@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_M7Configuration_iE-Extensions'(Enc7@element) end end]. 'enc_M7Configuration_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_M7Configuration_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_M7Configuration_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_M7Configuration(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute m7period(1) with type INTEGER {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:6/unsigned-unit:1,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, <> = V3@Buf4, {V3@V12,V3@Buf13} end, {V3@V0,V3@Buf1} end, %% attribute m7-links-to-log(2) with type ENUMERATED {Term2,Bytes4} = begin {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@V3:2/unsigned-unit:1,V4@Buf4/bitstring>> -> V4@Int5 = case V4@V3 of 0 -> uplink; 1 -> downlink; 2 -> 'both-uplink-and-downlink'; _ -> exit({error,{asn1,{decode_enumerated,V4@V3}}}) end, {V4@Int5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> {V4@V3,V4@Buf4} = case V4@Buf2 of <<0:1,V4@V6:6,V4@Buf7/bitstring>> -> {V4@V6,V4@Buf7}; <<1:1,V4@Buf5/bitstring>> -> V4@Pad9 = bit_size(V4@Buf5) band 7, {V4@V6,V4@Buf7} = case V4@Buf5 of <<_:V4@Pad9,0:1,V4@V11:7,V4@Buf12/bitstring>> when V4@V11 =/= 0 -> {V4@V11,V4@Buf12}; <<_:V4@Pad9,1:1,0:1,V4@V12:14,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> {V4@V12,V4@Buf13}; <<_:V4@Pad9,1:1,1:1,V4@V12:6,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> V4@Mul14 = V4@V12 * 16384, {V4@Mul14,V4@Buf13} end, <> = V4@Buf7, {V4@V15,V4@Buf16} end, V4@Int17 = case V4@V3 of _ -> {asn1_enum,V4@V3} end, {V4@Int17,V4@Buf4} end, {V4@V0,V4@Buf1} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_M7Configuration_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'M7Configuration',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_M7Configuration_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components146(V1@Add4, V1@Buf1, []). 'dec_M7Configuration_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_M7period(Val) -> Val@sub = Val - 1, if 0 =< Val@sub, Val@sub < 60 -> <<0:1,Val@sub:6>>; true -> [<<1:1>>, align|encode_unconstrained_number(Val)] end. dec_M7period(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:6/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Add5 = V1@V3 + 1, {V1@Add5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end. 'enc_MDT-Activation'(Val) -> if Val =:= 'immediate-MDT-only' -> <<0:1,0:2>>; Val =:= 'immediate-MDT-and-Trace' -> <<0:1,1:2>>; Val =:= 'logged-MDT-only' -> <<0:1,2:2>>; Val =:= 'logged-MBSFN-MDT' -> <<1:1,0:7>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_MDT-Activation'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:2/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> 'immediate-MDT-only'; 1 -> 'immediate-MDT-and-Trace'; 2 -> 'logged-MDT-only'; _ -> exit({error,{asn1,{decode_enumerated,V1@V3}}}) end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of 0 -> 'logged-MBSFN-MDT'; _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. 'enc_MDT-Location-Info'(Val) -> Enc1@bits = bit_size(Val), if Enc1@bits =:= 8 -> Val end. 'dec_MDT-Location-Info'(Bytes) -> begin <> = Bytes, {V1@V2,V1@Buf3} = {list_to_bitstring([V1@V0]),V1@Buf1}, {V1@V2,V1@Buf3} end. 'enc_MDT-Configuration'(Val) -> [begin Enc1@element = element(5, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute mdt-Activation(1) with type ENUMERATED Enc3@element = element(2, Val), if Enc3@element =:= 'immediate-MDT-only' -> <<0:1,0:2>>; Enc3@element =:= 'immediate-MDT-and-Trace' -> <<0:1,1:2>>; Enc3@element =:= 'logged-MDT-only' -> <<0:1,2:2>>; Enc3@element =:= 'logged-MBSFN-MDT' -> <<1:1,0:7>>; true -> exit({error,{asn1,{illegal_enumerated,Enc3@element}}}) end end, begin %% attribute areaScopeOfMDT(2) with type AreaScopeOfMDT Enc5@element = element(3, Val), enc_AreaScopeOfMDT(Enc5@element) end, begin %% attribute mDTMode(3) with type MDTMode Enc6@element = element(4, Val), enc_MDTMode(Enc6@element) end|begin %% attribute iE-Extensions(4) with type SEQUENCE OF Enc7@element = element(5, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_MDT-Configuration_iE-Extensions'(Enc7@element) end end]. 'enc_MDT-Configuration_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_MDT-Configuration_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_MDT-Configuration_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension147(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_MDT-Configuration'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute mdt-Activation(1) with type ENUMERATED {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:2/unsigned-unit:1,V3@Buf4/bitstring>> -> V3@Int5 = case V3@V3 of 0 -> 'immediate-MDT-only'; 1 -> 'immediate-MDT-and-Trace'; 2 -> 'logged-MDT-only'; _ -> exit({error,{asn1,{decode_enumerated,V3@V3}}}) end, {V3@Int5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> {V3@V3,V3@Buf4} = case V3@Buf2 of <<0:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V6,V3@Buf7}; <<1:1,V3@Buf5/bitstring>> -> V3@Pad9 = bit_size(V3@Buf5) band 7, {V3@V6,V3@Buf7} = case V3@Buf5 of <<_:V3@Pad9,0:1,V3@V11:7,V3@Buf12/bitstring>> when V3@V11 =/= 0 -> {V3@V11,V3@Buf12}; <<_:V3@Pad9,1:1,0:1,V3@V12:14,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> {V3@V12,V3@Buf13}; <<_:V3@Pad9,1:1,1:1,V3@V12:6,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> V3@Mul14 = V3@V12 * 16384, {V3@Mul14,V3@Buf13} end, <> = V3@Buf7, {V3@V15,V3@Buf16} end, V3@Int17 = case V3@V3 of 0 -> 'logged-MBSFN-MDT'; _ -> {asn1_enum,V3@V3} end, {V3@Int17,V3@Buf4} end, {V3@V0,V3@Buf1} end, %% attribute areaScopeOfMDT(2) with type AreaScopeOfMDT {Term2,Bytes4} = dec_AreaScopeOfMDT(Bytes3), %% attribute mDTMode(3) with type MDTMode {Term3,Bytes5} = dec_MDTMode(Bytes4), %% attribute iE-Extensions(4) with type SEQUENCE OF {Term4,Bytes6} = case Opt band 1 of 1 -> 'dec_MDT-Configuration_iE-Extensions'(Bytes5); 0 -> {asn1_NOVALUE,Bytes5} end, %% Extensions {Extensions,Bytes7} = case Ext of 0 -> {<<>>,Bytes6}; 1 -> {V4@V0,V4@Buf1} = case Bytes6 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes8= skipextensions(Bytes7, 1, Extensions), Res1 = {'MDT-Configuration',Term1,Term2,Term3,Term4}, {Res1,Bytes8}. 'dec_MDT-Configuration_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components148(V1@Add4, V1@Buf1, []). 'dec_MDT-Configuration_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension149(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_ManagementBasedMDTAllowed(Val) -> if Val =:= allowed -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_ManagementBasedMDTAllowed(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'allowed',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. 'enc_MBSFN-ResultToLog'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 3 =:= 0 -> [<>|['enc_MBSFN-ResultToLogInfo'(Comp) || Comp <- Val]] end. 'dec_MBSFN-ResultToLog'(Bytes) -> %% Length with constraint {1,8} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components150(V1@Add2, V1@Buf1, []). 'enc_MBSFN-ResultToLogInfo'(Val) -> [begin Enc1@element = element(2, Val), Enc2@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin %% attribute mBSFN-AreaId(1) with type INTEGER Enc4@element = element(2, Val), if Enc4@element =:= asn1_NOVALUE -> []; Enc4@element bsr 8 =:= 0 -> [align, Enc4@element]; true -> exit({error,{asn1,{illegal_integer,Enc4@element}}}) end end, begin %% attribute carrierFreq(2) with type INTEGER Enc7@element = element(3, Val), if Enc7@element bsr 18 =:= 0 -> [<<0:1>>|begin Enc7@element@bin = binary:encode_unsigned(Enc7@element), Enc7@element@bin_size0 = byte_size(Enc7@element@bin), Enc7@element@bin_size = Enc7@element@bin_size0 - 1, [<>, align|Enc7@element@bin] end]; true -> [<<1:1>>, align|encode_unconstrained_number(Enc7@element)] end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc9@element = element(4, Val), if Enc9@element =:= asn1_NOVALUE -> []; true -> 'enc_MBSFN-ResultToLogInfo_iE-Extensions'(Enc9@element) end end]. 'enc_MBSFN-ResultToLogInfo_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_MBSFN-ResultToLogInfo_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_MBSFN-ResultToLogInfo_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_MBSFN-ResultToLogInfo'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute mBSFN-AreaId(1) with type INTEGER {Term1,Bytes3} = case (Opt bsr 1) band 1 of 1 -> begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:1/unsigned-unit:8,V3@Buf1/bitstring>> = Bytes2, {V3@V0,V3@Buf1} end; 0 -> {asn1_NOVALUE,Bytes2} end, %% attribute carrierFreq(2) with type INTEGER {Term2,Bytes4} = begin {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@V3:2/unsigned-unit:1,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, V4@Pad8 = bit_size(V4@Buf4) band 7, <<_:V4@Pad8,V4@V6:V4@Add5/unsigned-unit:8,V4@Buf7/bitstring>> = V4@Buf4, {V4@V6,V4@Buf7}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, <> = V4@Buf4, {V4@V12,V4@Buf13} end, {V4@V0,V4@Buf1} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_MBSFN-ResultToLogInfo_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'MBSFN-ResultToLogInfo',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_MBSFN-ResultToLogInfo_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components151(V1@Add4, V1@Buf1, []). 'dec_MBSFN-ResultToLogInfo_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_MDTPLMNList(Val) -> Enc2@len = length(Val), Enc2@len@sub = Enc2@len - 1, if Enc2@len@sub bsr 4 =:= 0 -> [<>, align|[begin Enc1@len = byte_size(Comp), if Enc1@len =:= 3 -> Comp end end || Comp <- Val]] end. dec_MDTPLMNList(Bytes) -> %% Length with constraint {1,16} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components152(V1@Add2, V1@Buf1, []). enc_PrivacyIndicator(Val) -> if Val =:= 'immediate-MDT' -> <<0:1,0:1>>; Val =:= 'logged-MDT' -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_PrivacyIndicator(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:1/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> 'immediate-MDT'; 1 -> 'logged-MDT' end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_MDTMode(Val) -> {ChoiceTag,ChoiceVal} = Val, if ChoiceTag =:= immediateMDT -> [<<0:1,0:1>>|enc_ImmediateMDT(ChoiceVal)]; ChoiceTag =:= loggedMDT -> [<<0:1,1:1>>|enc_LoggedMDT(ChoiceVal)]; ChoiceTag =:= 'mDTMode-Extension' -> begin Enc3@output = 'enc_MDTMode-Extension'(ChoiceVal), Enc3@bin = complete(Enc3@output), Enc3@len = byte_size(Enc3@bin), if Enc3@len < 128 -> [<<1:1,0:7>>, align, Enc3@len|Enc3@bin]; Enc3@len < 16384 -> [<<1:1,0:7>>, align, <<2:2,Enc3@len:14>>|Enc3@bin]; true -> [<<1:1,0:7>>, align|encode_fragmented(Enc3@bin, 8)] end end end. dec_MDTMode(Bytes) -> case Bytes of <<0:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin <> = Bytes1, {V1@V0,V1@Buf1} end, case Choice of 0 -> {Val,NewBytes} = begin dec_ImmediateMDT(Bytes2) end, {{immediateMDT,Val},NewBytes}; 1 -> {Val,NewBytes} = begin dec_LoggedMDT(Bytes2) end, {{loggedMDT,Val},NewBytes} end; <<1:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin {V1@V0,V1@Buf1} = case Bytes1 of <<0:1,V1@V3:6,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end, begin V2@Pad3 = bit_size(Bytes2) band 7, {V2@V0,V2@Buf1} = case Bytes2 of <<_:V2@Pad3,0:1,V2@V5:7,V2@V7:V2@V5/binary-unit:8,V2@Buf8/bitstring>> -> {V2@V7,V2@Buf8}; <<_:V2@Pad3,1:1,0:1,V2@V6:14,V2@V8:V2@V6/binary-unit:8,V2@Buf9/bitstring>> -> {V2@V8,V2@Buf9}; <<_:V2@Pad3,1:1,1:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V8,V2@Buf9} = decode_fragmented(V2@V6, V2@Buf7, 8), {V2@V8,V2@Buf9} end end, case Choice of 0 -> {Val,NewBytes} = begin {TmpVal,_} = 'dec_MDTMode-Extension'(V2@V0), {TmpVal,V2@Buf1} end, {{'mDTMode-Extension',Val},NewBytes}; _ -> {{asn1_ExtAlt,V2@V0},V2@Buf1} end end. 'enc_MDTMode-Extension'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute value(3) with type Value Enc6@element = element(4, Val), Enc7@output = enc_os_Value153(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_MDTMode-Extension'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute value(3) with type Value {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Value154(Tmpterm1, Term1), Res1 = {'MDTMode-Extension',Term1,Term2,Term3}, {Res1,Bytes3}. enc_MeasurementsToActivate(Val) -> Enc1@bits = bit_size(Val), if Enc1@bits =:= 8 -> Val end. dec_MeasurementsToActivate(Bytes) -> begin <> = Bytes, {V1@V2,V1@Buf3} = {list_to_bitstring([V1@V0]),V1@Buf1}, {V1@V2,V1@Buf3} end. enc_MeasurementThresholdA2(Val) -> {ChoiceTag,ChoiceVal} = Val, if ChoiceTag =:= 'threshold-RSRP' -> if 0 =< ChoiceVal, ChoiceVal < 98 -> <<0:1,0:1,ChoiceVal:7>>; true -> exit({error,{asn1,{illegal_integer,ChoiceVal}}}) end; ChoiceTag =:= 'threshold-RSRQ' -> if 0 =< ChoiceVal, ChoiceVal < 35 -> <<0:1,1:1,ChoiceVal:6>>; true -> exit({error,{asn1,{illegal_integer,ChoiceVal}}}) end end. dec_MeasurementThresholdA2(Bytes) -> case Bytes of <<0:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin <> = Bytes1, {V1@V0,V1@Buf1} end, case Choice of 0 -> {Val,NewBytes} = begin begin <> = Bytes2, {V2@V0,V2@Buf1} end end, {{'threshold-RSRP',Val},NewBytes}; 1 -> {Val,NewBytes} = begin begin <> = Bytes2, {V3@V0,V3@Buf1} end end, {{'threshold-RSRQ',Val},NewBytes} end; <<1:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin {V1@V0,V1@Buf1} = case Bytes1 of <<0:1,V1@V3:6,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end, begin V2@Pad3 = bit_size(Bytes2) band 7, {V2@V0,V2@Buf1} = case Bytes2 of <<_:V2@Pad3,0:1,V2@V5:7,V2@V7:V2@V5/binary-unit:8,V2@Buf8/bitstring>> -> {V2@V7,V2@Buf8}; <<_:V2@Pad3,1:1,0:1,V2@V6:14,V2@V8:V2@V6/binary-unit:8,V2@Buf9/bitstring>> -> {V2@V8,V2@Buf9}; <<_:V2@Pad3,1:1,1:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V8,V2@Buf9} = decode_fragmented(V2@V6, V2@Buf7, 8), {V2@V8,V2@Buf9} end end, case Choice of _ -> {{asn1_ExtAlt,V2@V0},V2@Buf1} end end. enc_MeasurementThresholdL1LoggedMDT(Val) -> {ChoiceTag,ChoiceVal} = Val, if ChoiceTag =:= 'threshold-RSRP' -> if 0 =< ChoiceVal, ChoiceVal < 98 -> <<0:2,ChoiceVal:7>>; true -> exit({error,{asn1,{illegal_integer,ChoiceVal}}}) end; ChoiceTag =:= 'threshold-RSRQ' -> if 0 =< ChoiceVal, ChoiceVal < 35 -> <<1:2,ChoiceVal:6>>; true -> exit({error,{asn1,{illegal_integer,ChoiceVal}}}) end; ChoiceTag =:= 'choice-Extensions' -> [<<2:2>>|'enc_MeasurementThresholdL1LoggedMDT_choice-Extensions'(ChoiceVal)] end. 'enc_MeasurementThresholdL1LoggedMDT_choice-Extensions'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute value(3) with type Value Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_MeasurementThresholdL1LoggedMDT(Bytes) -> {Choice,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, case Choice of 0 -> {Val,NewBytes} = begin begin <> = Bytes1, {V2@V0,V2@Buf1} end end, {{'threshold-RSRP',Val},NewBytes}; 1 -> {Val,NewBytes} = begin begin <> = Bytes1, {V3@V0,V3@Buf1} end end, {{'threshold-RSRQ',Val},NewBytes}; 2 -> {Val,NewBytes} = begin 'dec_MeasurementThresholdL1LoggedMDT_choice-Extensions'(Bytes1) end, {{'choice-Extensions',Val},NewBytes} end. 'dec_MeasurementThresholdL1LoggedMDT_choice-Extensions'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute value(3) with type Value {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'MeasurementThresholdL1LoggedMDT_choice-Extensions',Term1,Term2,Term3}, {Res1,Bytes3}. enc_MessageIdentifier(Val) -> Enc1@bits = bit_size(Val), if Enc1@bits =:= 16 -> Val end. dec_MessageIdentifier(Bytes) -> begin <> = Bytes, {V1@V2,V1@Buf3} = {list_to_bitstring([V1@V0]),V1@Buf1}, {V1@V2,V1@Buf3} end. enc_MobilityInformation(Val) -> Enc1@bits = bit_size(Val), if Enc1@bits =:= 32 -> [align|Val] end. dec_MobilityInformation(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:32/binary-unit:1,V1@Buf1/bitstring>> = Bytes, {V1@V4,V1@Buf5} = {list_to_bitstring([V1@V0]),V1@Buf1}, {V1@V4,V1@Buf5} end. enc_MMEname(Val) -> Enc1@bin = list_to_binary(Val), Enc1@len = byte_size(Enc1@bin), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 150 -> [<<0:1,Enc1@len@sub:8>>, align|Enc1@bin]; Enc1@len < 16384 -> [<<1:1>>, align, <<2:2,Enc1@len:14>>|Enc1@bin]; true -> [<<1:1>>, align|encode_fragmented(Enc1@bin, 8)] end. dec_MMEname(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:8/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Add5 = V1@V3 + 1, V1@Pad8 = bit_size(V1@Buf4) band 7, <<_:V1@Pad8,V1@V6:V1@Add5/binary-unit:8,V1@Buf7/bitstring>> = V1@Buf4, {V1@V6,V1@Buf7}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@V10:V1@V8/binary-unit:8,V1@Buf11/bitstring>> -> {V1@V10,V1@Buf11}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@V11:V1@V9/binary-unit:8,V1@Buf12/bitstring>> -> {V1@V11,V1@Buf12}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> -> {V1@V11,V1@Buf12} = decode_fragmented(V1@V9, V1@Buf10, 8), {V1@V11,V1@Buf12} end, {V1@V3,V1@Buf4} end, V1@Conv13 = binary_to_list(V1@V0), {V1@Conv13,V1@Buf1} end. enc_MMEPagingTarget(Val) -> {ChoiceTag,ChoiceVal} = Val, if ChoiceTag =:= 'global-ENB-ID' -> [<<0:1,0:1>>|'enc_Global-ENB-ID'(ChoiceVal)]; ChoiceTag =:= tAI -> [<<0:1,1:1>>|enc_TAI(ChoiceVal)] end. dec_MMEPagingTarget(Bytes) -> case Bytes of <<0:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin <> = Bytes1, {V1@V0,V1@Buf1} end, case Choice of 0 -> {Val,NewBytes} = begin 'dec_Global-ENB-ID'(Bytes2) end, {{'global-ENB-ID',Val},NewBytes}; 1 -> {Val,NewBytes} = begin dec_TAI(Bytes2) end, {{tAI,Val},NewBytes} end; <<1:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin {V1@V0,V1@Buf1} = case Bytes1 of <<0:1,V1@V3:6,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end, begin V2@Pad3 = bit_size(Bytes2) band 7, {V2@V0,V2@Buf1} = case Bytes2 of <<_:V2@Pad3,0:1,V2@V5:7,V2@V7:V2@V5/binary-unit:8,V2@Buf8/bitstring>> -> {V2@V7,V2@Buf8}; <<_:V2@Pad3,1:1,0:1,V2@V6:14,V2@V8:V2@V6/binary-unit:8,V2@Buf9/bitstring>> -> {V2@V8,V2@Buf9}; <<_:V2@Pad3,1:1,1:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V8,V2@Buf9} = decode_fragmented(V2@V6, V2@Buf7, 8), {V2@V8,V2@Buf9} end end, case Choice of _ -> {{asn1_ExtAlt,V2@V0},V2@Buf1} end end. enc_MMERelaySupportIndicator(Val) -> if Val =:= true -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_MMERelaySupportIndicator(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'true',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. 'enc_MME-Group-ID'(Val) -> Enc1@len = byte_size(Val), if Enc1@len =:= 2 -> Val end. 'dec_MME-Group-ID'(Bytes) -> begin <> = Bytes, V1@Conv2 = binary:copy(V1@V0), {V1@Conv2,V1@Buf1} end. 'enc_MME-Code'(Val) -> Enc1@len = byte_size(Val), if Enc1@len =:= 1 -> Val end. 'dec_MME-Code'(Bytes) -> begin <> = Bytes, V1@Conv2 = binary:copy(V1@V0), {V1@Conv2,V1@Buf1} end. 'enc_MME-UE-S1AP-ID'(Val) -> if Val bsr 32 =:= 0 -> begin Val@bin = binary:encode_unsigned(Val), Val@bin_size0 = byte_size(Val@bin), Val@bin_size = Val@bin_size0 - 1, [<>, align|Val@bin] end; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. 'dec_MME-UE-S1AP-ID'(Bytes) -> begin <> = Bytes, V1@Add2 = V1@V0 + 1, V1@Pad5 = bit_size(V1@Buf1) band 7, <<_:V1@Pad5,V1@V3:V1@Add2/unsigned-unit:8,V1@Buf4/bitstring>> = V1@Buf1, {V1@V3,V1@Buf4} end. 'enc_M-TMSI'(Val) -> Enc1@len = byte_size(Val), if Enc1@len =:= 4 -> [align|Val] end. 'dec_M-TMSI'(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:4/binary-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Conv4 = binary:copy(V1@V0), {V1@Conv4,V1@Buf1} end. enc_MSClassmark2(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. dec_MSClassmark2(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. enc_MSClassmark3(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. dec_MSClassmark3(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. enc_MutingAvailabilityIndication(Val) -> if Val =:= available -> <<0:1,0:1>>; Val =:= unavailable -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_MutingAvailabilityIndication(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:1/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> available; 1 -> unavailable end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_MutingPatternInformation(Val) -> [begin Enc1@element = element(3, Val), Enc2@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin %% attribute muting-pattern-period(1) with type ENUMERATED Enc4@element = element(2, Val), if Enc4@element =:= ms0 -> <<0:1,0:3>>; Enc4@element =:= ms1280 -> <<0:1,1:3>>; Enc4@element =:= ms2560 -> <<0:1,2:3>>; Enc4@element =:= ms5120 -> <<0:1,3:3>>; Enc4@element =:= ms10240 -> <<0:1,4:3>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end, begin %% attribute muting-pattern-offset(2) with type INTEGER Enc6@element = element(3, Val), if Enc6@element =:= asn1_NOVALUE -> []; 0 =< Enc6@element, Enc6@element < 10240 -> [<<0:1>>, align|<>]; true -> [<<1:1>>, align|encode_unconstrained_number(Enc6@element)] end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc9@element = element(4, Val), if Enc9@element =:= asn1_NOVALUE -> []; true -> 'enc_MutingPatternInformation_iE-Extensions'(Enc9@element) end end]. 'enc_MutingPatternInformation_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_MutingPatternInformation_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_MutingPatternInformation_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_MutingPatternInformation(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute muting-pattern-period(1) with type ENUMERATED {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:3/unsigned-unit:1,V3@Buf4/bitstring>> -> V3@Int5 = case V3@V3 of 0 -> ms0; 1 -> ms1280; 2 -> ms2560; 3 -> ms5120; 4 -> ms10240; _ -> exit({error,{asn1,{decode_enumerated,V3@V3}}}) end, {V3@Int5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> {V3@V3,V3@Buf4} = case V3@Buf2 of <<0:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V6,V3@Buf7}; <<1:1,V3@Buf5/bitstring>> -> V3@Pad9 = bit_size(V3@Buf5) band 7, {V3@V6,V3@Buf7} = case V3@Buf5 of <<_:V3@Pad9,0:1,V3@V11:7,V3@Buf12/bitstring>> when V3@V11 =/= 0 -> {V3@V11,V3@Buf12}; <<_:V3@Pad9,1:1,0:1,V3@V12:14,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> {V3@V12,V3@Buf13}; <<_:V3@Pad9,1:1,1:1,V3@V12:6,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> V3@Mul14 = V3@V12 * 16384, {V3@Mul14,V3@Buf13} end, <> = V3@Buf7, {V3@V15,V3@Buf16} end, V3@Int17 = case V3@V3 of _ -> {asn1_enum,V3@V3} end, {V3@Int17,V3@Buf4} end, {V3@V0,V3@Buf1} end, %% attribute muting-pattern-offset(2) with type INTEGER {Term2,Bytes4} = case (Opt bsr 1) band 1 of 1 -> begin {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@Buf2/bitstring>> -> V4@Pad5 = bit_size(V4@Buf2) band 7, <<_:V4@Pad5,V4@V3:2/unsigned-unit:8,V4@Buf4/bitstring>> = V4@Buf2, {V4@V3,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, <> = V4@Buf4, {V4@V12,V4@Buf13} end, {V4@V0,V4@Buf1} end; 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_MutingPatternInformation_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'MutingPatternInformation',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_MutingPatternInformation_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components155(V1@Add4, V1@Buf1, []). 'dec_MutingPatternInformation_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_MDT-ConfigurationNR'(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. 'dec_MDT-ConfigurationNR'(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. 'enc_NAS-PDU'(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. 'dec_NAS-PDU'(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. 'enc_NASSecurityParametersfromE-UTRAN'(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. 'dec_NASSecurityParametersfromE-UTRAN'(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. 'enc_NASSecurityParameterstoE-UTRAN'(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. 'dec_NASSecurityParameterstoE-UTRAN'(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. 'enc_NB-IoT-DefaultPagingDRX'(Val) -> if Val =:= v128 -> <<0:1,0:2>>; Val =:= v256 -> <<0:1,1:2>>; Val =:= v512 -> <<0:1,2:2>>; Val =:= v1024 -> <<0:1,3:2>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_NB-IoT-DefaultPagingDRX'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:2/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> v128; 1 -> v256; 2 -> v512; 3 -> v1024 end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. 'enc_NB-IoT-PagingDRX'(Val) -> if Val =:= v32 -> <<0:1,0:3>>; Val =:= v64 -> <<0:1,1:3>>; Val =:= v128 -> <<0:1,2:3>>; Val =:= v256 -> <<0:1,3:3>>; Val =:= v512 -> <<0:1,4:3>>; Val =:= v1024 -> <<0:1,5:3>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_NB-IoT-PagingDRX'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:3/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> v32; 1 -> v64; 2 -> v128; 3 -> v256; 4 -> v512; 5 -> v1024; _ -> exit({error,{asn1,{decode_enumerated,V1@V3}}}) end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. 'enc_NB-IoT-Paging-eDRXInformation'(Val) -> [begin Enc1@element = element(3, Val), Enc2@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin %% attribute nB-IoT-paging-eDRX-Cycle(1) with type ENUMERATED Enc4@element = element(2, Val), if Enc4@element =:= hf2 -> <<0:1,0:4>>; Enc4@element =:= hf4 -> <<0:1,1:4>>; Enc4@element =:= hf6 -> <<0:1,2:4>>; Enc4@element =:= hf8 -> <<0:1,3:4>>; Enc4@element =:= hf10 -> <<0:1,4:4>>; Enc4@element =:= hf12 -> <<0:1,5:4>>; Enc4@element =:= hf14 -> <<0:1,6:4>>; Enc4@element =:= hf16 -> <<0:1,7:4>>; Enc4@element =:= hf32 -> <<0:1,8:4>>; Enc4@element =:= hf64 -> <<0:1,9:4>>; Enc4@element =:= hf128 -> <<0:1,10:4>>; Enc4@element =:= hf256 -> <<0:1,11:4>>; Enc4@element =:= hf512 -> <<0:1,12:4>>; Enc4@element =:= hf1024 -> <<0:1,13:4>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end, begin %% attribute nB-IoT-pagingTimeWindow(2) with type ENUMERATED Enc6@element = element(3, Val), if Enc6@element =:= asn1_NOVALUE -> []; Enc6@element =:= s1 -> <<0:1,0:4>>; Enc6@element =:= s2 -> <<0:1,1:4>>; Enc6@element =:= s3 -> <<0:1,2:4>>; Enc6@element =:= s4 -> <<0:1,3:4>>; Enc6@element =:= s5 -> <<0:1,4:4>>; Enc6@element =:= s6 -> <<0:1,5:4>>; Enc6@element =:= s7 -> <<0:1,6:4>>; Enc6@element =:= s8 -> <<0:1,7:4>>; Enc6@element =:= s9 -> <<0:1,8:4>>; Enc6@element =:= s10 -> <<0:1,9:4>>; Enc6@element =:= s11 -> <<0:1,10:4>>; Enc6@element =:= s12 -> <<0:1,11:4>>; Enc6@element =:= s13 -> <<0:1,12:4>>; Enc6@element =:= s14 -> <<0:1,13:4>>; Enc6@element =:= s15 -> <<0:1,14:4>>; Enc6@element =:= s16 -> <<0:1,15:4>>; true -> exit({error,{asn1,{illegal_enumerated,Enc6@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc9@element = element(4, Val), if Enc9@element =:= asn1_NOVALUE -> []; true -> 'enc_NB-IoT-Paging-eDRXInformation_iE-Extensions'(Enc9@element) end end]. 'enc_NB-IoT-Paging-eDRXInformation_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_NB-IoT-Paging-eDRXInformation_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_NB-IoT-Paging-eDRXInformation_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_NB-IoT-Paging-eDRXInformation'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute nB-IoT-paging-eDRX-Cycle(1) with type ENUMERATED {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:4/unsigned-unit:1,V3@Buf4/bitstring>> -> V3@Int5 = case V3@V3 of 0 -> hf2; 1 -> hf4; 2 -> hf6; 3 -> hf8; 4 -> hf10; 5 -> hf12; 6 -> hf14; 7 -> hf16; 8 -> hf32; 9 -> hf64; 10 -> hf128; 11 -> hf256; 12 -> hf512; 13 -> hf1024; _ -> exit({error,{asn1,{decode_enumerated,V3@V3}}}) end, {V3@Int5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> {V3@V3,V3@Buf4} = case V3@Buf2 of <<0:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V6,V3@Buf7}; <<1:1,V3@Buf5/bitstring>> -> V3@Pad9 = bit_size(V3@Buf5) band 7, {V3@V6,V3@Buf7} = case V3@Buf5 of <<_:V3@Pad9,0:1,V3@V11:7,V3@Buf12/bitstring>> when V3@V11 =/= 0 -> {V3@V11,V3@Buf12}; <<_:V3@Pad9,1:1,0:1,V3@V12:14,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> {V3@V12,V3@Buf13}; <<_:V3@Pad9,1:1,1:1,V3@V12:6,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> V3@Mul14 = V3@V12 * 16384, {V3@Mul14,V3@Buf13} end, <> = V3@Buf7, {V3@V15,V3@Buf16} end, V3@Int17 = case V3@V3 of _ -> {asn1_enum,V3@V3} end, {V3@Int17,V3@Buf4} end, {V3@V0,V3@Buf1} end, %% attribute nB-IoT-pagingTimeWindow(2) with type ENUMERATED {Term2,Bytes4} = case (Opt bsr 1) band 1 of 1 -> begin {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@V3:4/unsigned-unit:1,V4@Buf4/bitstring>> -> V4@Int5 = case V4@V3 of 0 -> s1; 1 -> s2; 2 -> s3; 3 -> s4; 4 -> s5; 5 -> s6; 6 -> s7; 7 -> s8; 8 -> s9; 9 -> s10; 10 -> s11; 11 -> s12; 12 -> s13; 13 -> s14; 14 -> s15; 15 -> s16 end, {V4@Int5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> {V4@V3,V4@Buf4} = case V4@Buf2 of <<0:1,V4@V6:6,V4@Buf7/bitstring>> -> {V4@V6,V4@Buf7}; <<1:1,V4@Buf5/bitstring>> -> V4@Pad9 = bit_size(V4@Buf5) band 7, {V4@V6,V4@Buf7} = case V4@Buf5 of <<_:V4@Pad9,0:1,V4@V11:7,V4@Buf12/bitstring>> when V4@V11 =/= 0 -> {V4@V11,V4@Buf12}; <<_:V4@Pad9,1:1,0:1,V4@V12:14,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> {V4@V12,V4@Buf13}; <<_:V4@Pad9,1:1,1:1,V4@V12:6,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> V4@Mul14 = V4@V12 * 16384, {V4@Mul14,V4@Buf13} end, <> = V4@Buf7, {V4@V15,V4@Buf16} end, V4@Int17 = case V4@V3 of _ -> {asn1_enum,V4@V3} end, {V4@Int17,V4@Buf4} end, {V4@V0,V4@Buf1} end; 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_NB-IoT-Paging-eDRXInformation_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'NB-IoT-Paging-eDRXInformation',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_NB-IoT-Paging-eDRXInformation_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components156(V1@Add4, V1@Buf1, []). 'dec_NB-IoT-Paging-eDRXInformation_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_NB-IoT-Paging-eDRX-Cycle'(Val) -> if Val =:= hf2 -> <<0:1,0:4>>; Val =:= hf4 -> <<0:1,1:4>>; Val =:= hf6 -> <<0:1,2:4>>; Val =:= hf8 -> <<0:1,3:4>>; Val =:= hf10 -> <<0:1,4:4>>; Val =:= hf12 -> <<0:1,5:4>>; Val =:= hf14 -> <<0:1,6:4>>; Val =:= hf16 -> <<0:1,7:4>>; Val =:= hf32 -> <<0:1,8:4>>; Val =:= hf64 -> <<0:1,9:4>>; Val =:= hf128 -> <<0:1,10:4>>; Val =:= hf256 -> <<0:1,11:4>>; Val =:= hf512 -> <<0:1,12:4>>; Val =:= hf1024 -> <<0:1,13:4>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_NB-IoT-Paging-eDRX-Cycle'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:4/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> hf2; 1 -> hf4; 2 -> hf6; 3 -> hf8; 4 -> hf10; 5 -> hf12; 6 -> hf14; 7 -> hf16; 8 -> hf32; 9 -> hf64; 10 -> hf128; 11 -> hf256; 12 -> hf512; 13 -> hf1024; _ -> exit({error,{asn1,{decode_enumerated,V1@V3}}}) end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. 'enc_NB-IoT-PagingTimeWindow'(Val) -> if Val =:= s1 -> <<0:1,0:4>>; Val =:= s2 -> <<0:1,1:4>>; Val =:= s3 -> <<0:1,2:4>>; Val =:= s4 -> <<0:1,3:4>>; Val =:= s5 -> <<0:1,4:4>>; Val =:= s6 -> <<0:1,5:4>>; Val =:= s7 -> <<0:1,6:4>>; Val =:= s8 -> <<0:1,7:4>>; Val =:= s9 -> <<0:1,8:4>>; Val =:= s10 -> <<0:1,9:4>>; Val =:= s11 -> <<0:1,10:4>>; Val =:= s12 -> <<0:1,11:4>>; Val =:= s13 -> <<0:1,12:4>>; Val =:= s14 -> <<0:1,13:4>>; Val =:= s15 -> <<0:1,14:4>>; Val =:= s16 -> <<0:1,15:4>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_NB-IoT-PagingTimeWindow'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:4/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> s1; 1 -> s2; 2 -> s3; 3 -> s4; 4 -> s5; 5 -> s6; 6 -> s7; 7 -> s8; 8 -> s9; 9 -> s10; 10 -> s11; 11 -> s12; 12 -> s13; 13 -> s14; 14 -> s15; 15 -> s16 end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. 'enc_NB-IoT-RLF-Report-Container'(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. 'dec_NB-IoT-RLF-Report-Container'(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. 'enc_NB-IoT-UEIdentityIndexValue'(Val) -> Enc1@bits = bit_size(Val), if Enc1@bits =:= 12 -> Val end. 'dec_NB-IoT-UEIdentityIndexValue'(Bytes) -> begin <> = Bytes, {V1@V2,V1@Buf3} = {list_to_bitstring([V1@V0]),V1@Buf1}, {V1@V2,V1@Buf3} end. enc_NextPagingAreaScope(Val) -> if Val =:= same -> <<0:1,0:1>>; Val =:= changed -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_NextPagingAreaScope(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:1/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> same; 1 -> changed end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_NotifySourceeNB(Val) -> if Val =:= notifySource -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_NotifySourceeNB(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'notifySource',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_NRCellIdentity(Val) -> Enc1@bits = bit_size(Val), if Enc1@bits =:= 36 -> [align|Val] end. dec_NRCellIdentity(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:36/binary-unit:1,V1@Buf1/bitstring>> = Bytes, {V1@V4,V1@Buf5} = {list_to_bitstring([V1@V0]),V1@Buf1}, {V1@V4,V1@Buf5} end. 'enc_NR-CGI'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, align, begin %% attribute pLMNIdentity(1) with type OCTET STRING Enc3@element = element(2, Val), Enc4@len = byte_size(Enc3@element), if Enc4@len =:= 3 -> Enc3@element end end, begin %% attribute nRCellIdentity(2) with type BIT STRING Enc5@element = element(3, Val), Enc6@bits = bit_size(Enc5@element), if Enc6@bits =:= 36 -> Enc5@element end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_NR-CGI_iE-Extensions'(Enc7@element) end end]. 'enc_NR-CGI_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_NR-CGI_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_NR-CGI_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_NR-CGI'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute pLMNIdentity(1) with type OCTET STRING {Term1,Bytes3} = begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:3/binary-unit:8,V3@Buf1/bitstring>> = Bytes2, V3@Conv4 = binary:copy(V3@V0), {V3@Conv4,V3@Buf1} end, %% attribute nRCellIdentity(2) with type BIT STRING {Term2,Bytes4} = begin <> = Bytes3, {V4@V2,V4@Buf3} = {list_to_bitstring([V4@V0]),V4@Buf1}, {V4@V2,V4@Buf3} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_NR-CGI_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'NR-CGI',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_NR-CGI_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components157(V1@Add4, V1@Buf1, []). 'dec_NR-CGI_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_NRencryptionAlgorithms(Val) -> Enc1@bits = bit_size(Val), if Enc1@bits =:= 16 -> [<<0:1>>|Val]; Enc1@bits < 128 -> [<<1:1>>, align, Enc1@bits|Val]; Enc1@bits < 16384 -> [<<1:1>>, align, <<2:2,Enc1@bits:14>>|Val]; true -> [<<1:1>>, align|encode_fragmented(Val, 1)] end. dec_NRencryptionAlgorithms(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:16/binary-unit:1,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@V10:V1@V8/binary-unit:1,V1@Buf11/bitstring>> -> {V1@V10,V1@Buf11}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@V11:V1@V9/binary-unit:1,V1@Buf12/bitstring>> -> {V1@V11,V1@Buf12}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> -> {V1@V11,V1@Buf12} = decode_fragmented(V1@V9, V1@Buf10, 1), {V1@V11,V1@Buf12} end, {V1@V3,V1@Buf4} end, {V1@V13,V1@Buf14} = {list_to_bitstring([V1@V0]),V1@Buf1}, {V1@V13,V1@Buf14} end. enc_NRintegrityProtectionAlgorithms(Val) -> Enc1@bits = bit_size(Val), if Enc1@bits =:= 16 -> [<<0:1>>|Val]; Enc1@bits < 128 -> [<<1:1>>, align, Enc1@bits|Val]; Enc1@bits < 16384 -> [<<1:1>>, align, <<2:2,Enc1@bits:14>>|Val]; true -> [<<1:1>>, align|encode_fragmented(Val, 1)] end. dec_NRintegrityProtectionAlgorithms(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:16/binary-unit:1,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@V10:V1@V8/binary-unit:1,V1@Buf11/bitstring>> -> {V1@V10,V1@Buf11}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@V11:V1@V9/binary-unit:1,V1@Buf12/bitstring>> -> {V1@V11,V1@Buf12}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> -> {V1@V11,V1@Buf12} = decode_fragmented(V1@V9, V1@Buf10, 1), {V1@V11,V1@Buf12} end, {V1@V3,V1@Buf4} end, {V1@V13,V1@Buf14} = {list_to_bitstring([V1@V0]),V1@Buf1}, {V1@V13,V1@Buf14} end. enc_NRrestrictioninEPSasSecondaryRAT(Val) -> if Val =:= nRrestrictedinEPSasSecondaryRAT -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_NRrestrictioninEPSasSecondaryRAT(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'nRrestrictedinEPSasSecondaryRAT',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_NRrestrictionin5GS(Val) -> if Val =:= nRrestrictedin5GS -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_NRrestrictionin5GS(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'nRrestrictedin5GS',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_NRUESecurityCapabilities(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute nRencryptionAlgorithms(1) with type BIT STRING Enc3@element = element(2, Val), Enc4@bits = bit_size(Enc3@element), if Enc4@bits =:= 16 -> [<<0:1>>|Enc3@element]; Enc4@bits < 128 -> [<<1:1>>, align, Enc4@bits|Enc3@element]; Enc4@bits < 16384 -> [<<1:1>>, align, <<2:2,Enc4@bits:14>>|Enc3@element]; true -> [<<1:1>>, align|encode_fragmented(Enc3@element, 1)] end end, begin %% attribute nRintegrityProtectionAlgorithms(2) with type BIT STRING Enc5@element = element(3, Val), Enc6@bits = bit_size(Enc5@element), if Enc6@bits =:= 16 -> [<<0:1>>|Enc5@element]; Enc6@bits < 128 -> [<<1:1>>, align, Enc6@bits|Enc5@element]; Enc6@bits < 16384 -> [<<1:1>>, align, <<2:2,Enc6@bits:14>>|Enc5@element]; true -> [<<1:1>>, align|encode_fragmented(Enc5@element, 1)] end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_NRUESecurityCapabilities_iE-Extensions'(Enc7@element) end end]. 'enc_NRUESecurityCapabilities_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_NRUESecurityCapabilities_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_NRUESecurityCapabilities_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_NRUESecurityCapabilities(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute nRencryptionAlgorithms(1) with type BIT STRING {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:16/binary-unit:1,V3@Buf4/bitstring>> -> {V3@V3,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@V10:V3@V8/binary-unit:1,V3@Buf11/bitstring>> -> {V3@V10,V3@Buf11}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@V11:V3@V9/binary-unit:1,V3@Buf12/bitstring>> -> {V3@V11,V3@Buf12}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> -> {V3@V11,V3@Buf12} = decode_fragmented(V3@V9, V3@Buf10, 1), {V3@V11,V3@Buf12} end, {V3@V3,V3@Buf4} end, {V3@V13,V3@Buf14} = {list_to_bitstring([V3@V0]),V3@Buf1}, {V3@V13,V3@Buf14} end, %% attribute nRintegrityProtectionAlgorithms(2) with type BIT STRING {Term2,Bytes4} = begin {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@V3:16/binary-unit:1,V4@Buf4/bitstring>> -> {V4@V3,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@V10:V4@V8/binary-unit:1,V4@Buf11/bitstring>> -> {V4@V10,V4@Buf11}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@V11:V4@V9/binary-unit:1,V4@Buf12/bitstring>> -> {V4@V11,V4@Buf12}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> -> {V4@V11,V4@Buf12} = decode_fragmented(V4@V9, V4@Buf10, 1), {V4@V11,V4@Buf12} end, {V4@V3,V4@Buf4} end, {V4@V13,V4@Buf14} = {list_to_bitstring([V4@V0]),V4@Buf1}, {V4@V13,V4@Buf14} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_NRUESecurityCapabilities_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'NRUESecurityCapabilities',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_NRUESecurityCapabilities_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components158(V1@Add4, V1@Buf1, []). 'dec_NRUESecurityCapabilities_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_NumberofBroadcastRequest(Val) -> if Val bsr 16 =:= 0 -> [align|<>]; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. dec_NumberofBroadcastRequest(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end. enc_NumberOfBroadcasts(Val) -> if Val bsr 16 =:= 0 -> [align|<>]; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. dec_NumberOfBroadcasts(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end. enc_NRV2XServicesAuthorized(Val) -> [begin Enc1@element = element(2, Val), Enc2@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin Enc3@element = element(4, Val), %% attribute vehicleUE(1) with type ENUMERATED Enc5@element = element(2, Val), if Enc3@element =:= asn1_NOVALUE -> if Enc5@element =:= asn1_NOVALUE -> <<0:1>>; Enc5@element =:= authorized -> <<0:1,0:1,0:1>>; Enc5@element =:= 'not-authorized' -> <<0:1,0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc5@element}}}) end; true -> if Enc5@element =:= asn1_NOVALUE -> <<1:1>>; Enc5@element =:= authorized -> <<1:1,0:1,0:1>>; Enc5@element =:= 'not-authorized' -> <<1:1,0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc5@element}}}) end end end, begin %% attribute pedestrianUE(2) with type ENUMERATED Enc8@element = element(3, Val), if Enc8@element =:= asn1_NOVALUE -> []; Enc8@element =:= authorized -> <<0:1,0:1>>; Enc8@element =:= 'not-authorized' -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc8@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc11@element = element(4, Val), if Enc11@element =:= asn1_NOVALUE -> []; true -> 'enc_NRV2XServicesAuthorized_iE-Extensions'(Enc11@element) end end]. 'enc_NRV2XServicesAuthorized_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_NRV2XServicesAuthorized_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_NRV2XServicesAuthorized_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_NRV2XServicesAuthorized(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute vehicleUE(1) with type ENUMERATED {Term1,Bytes3} = case (Opt bsr 2) band 1 of 1 -> begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:1/unsigned-unit:1,V3@Buf4/bitstring>> -> V3@Int5 = case V3@V3 of 0 -> authorized; 1 -> 'not-authorized' end, {V3@Int5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> {V3@V3,V3@Buf4} = case V3@Buf2 of <<0:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V6,V3@Buf7}; <<1:1,V3@Buf5/bitstring>> -> V3@Pad9 = bit_size(V3@Buf5) band 7, {V3@V6,V3@Buf7} = case V3@Buf5 of <<_:V3@Pad9,0:1,V3@V11:7,V3@Buf12/bitstring>> when V3@V11 =/= 0 -> {V3@V11,V3@Buf12}; <<_:V3@Pad9,1:1,0:1,V3@V12:14,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> {V3@V12,V3@Buf13}; <<_:V3@Pad9,1:1,1:1,V3@V12:6,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> V3@Mul14 = V3@V12 * 16384, {V3@Mul14,V3@Buf13} end, <> = V3@Buf7, {V3@V15,V3@Buf16} end, V3@Int17 = case V3@V3 of _ -> {asn1_enum,V3@V3} end, {V3@Int17,V3@Buf4} end, {V3@V0,V3@Buf1} end; 0 -> {asn1_NOVALUE,Bytes2} end, %% attribute pedestrianUE(2) with type ENUMERATED {Term2,Bytes4} = case (Opt bsr 1) band 1 of 1 -> begin {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@V3:1/unsigned-unit:1,V4@Buf4/bitstring>> -> V4@Int5 = case V4@V3 of 0 -> authorized; 1 -> 'not-authorized' end, {V4@Int5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> {V4@V3,V4@Buf4} = case V4@Buf2 of <<0:1,V4@V6:6,V4@Buf7/bitstring>> -> {V4@V6,V4@Buf7}; <<1:1,V4@Buf5/bitstring>> -> V4@Pad9 = bit_size(V4@Buf5) band 7, {V4@V6,V4@Buf7} = case V4@Buf5 of <<_:V4@Pad9,0:1,V4@V11:7,V4@Buf12/bitstring>> when V4@V11 =/= 0 -> {V4@V11,V4@Buf12}; <<_:V4@Pad9,1:1,0:1,V4@V12:14,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> {V4@V12,V4@Buf13}; <<_:V4@Pad9,1:1,1:1,V4@V12:6,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> V4@Mul14 = V4@V12 * 16384, {V4@Mul14,V4@Buf13} end, <> = V4@Buf7, {V4@V15,V4@Buf16} end, V4@Int17 = case V4@V3 of _ -> {asn1_enum,V4@V3} end, {V4@Int17,V4@Buf4} end, {V4@V0,V4@Buf1} end; 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_NRV2XServicesAuthorized_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'NRV2XServicesAuthorized',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_NRV2XServicesAuthorized_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components159(V1@Add4, V1@Buf1, []). 'dec_NRV2XServicesAuthorized_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_NRUESidelinkAggregateMaximumBitrate(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute uEaggregateMaximumBitRate(1) with type INTEGER Enc3@element = element(2, Val), if 0 =< Enc3@element, Enc3@element < 10000000001 -> begin Enc3@element@bin = binary:encode_unsigned(Enc3@element), Enc3@element@bin_size0 = byte_size(Enc3@element@bin), Enc3@element@bin_size = Enc3@element@bin_size0 - 1, [<>, align|Enc3@element@bin] end; true -> exit({error,{asn1,{illegal_integer,Enc3@element}}}) end end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc5@element = element(3, Val), if Enc5@element =:= asn1_NOVALUE -> []; true -> 'enc_NRUESidelinkAggregateMaximumBitrate_iE-Extensions'(Enc5@element) end end]. 'enc_NRUESidelinkAggregateMaximumBitrate_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_NRUESidelinkAggregateMaximumBitrate_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_NRUESidelinkAggregateMaximumBitrate_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_NRUESidelinkAggregateMaximumBitrate(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute uEaggregateMaximumBitRate(1) with type INTEGER {Term1,Bytes3} = begin <> = Bytes2, V3@Add2 = V3@V0 + 1, V3@Pad5 = bit_size(V3@Buf1) band 7, <<_:V3@Pad5,V3@V3:V3@Add2/unsigned-unit:8,V3@Buf4/bitstring>> = V3@Buf1, {V3@V3,V3@Buf4} end, %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_NRUESidelinkAggregateMaximumBitrate_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V4@V0,V4@Buf1} = case Bytes4 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'NRUESidelinkAggregateMaximumBitrate',Term1,Term2}, {Res1,Bytes6}. 'dec_NRUESidelinkAggregateMaximumBitrate_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components160(V1@Add4, V1@Buf1, []). 'dec_NRUESidelinkAggregateMaximumBitrate_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_OldBSS-ToNewBSS-Information'(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. 'dec_OldBSS-ToNewBSS-Information'(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. enc_OverloadAction(Val) -> if Val =:= 'reject-non-emergency-mo-dt' -> <<0:1,0:2>>; Val =:= 'reject-rrc-cr-signalling' -> <<0:1,1:2>>; Val =:= 'permit-emergency-sessions-and-mobile-terminated-services-only' -> <<0:1,2:2>>; Val =:= 'permit-high-priority-sessions-and-mobile-terminated-services-only' -> <<1:1,0:7>>; Val =:= 'reject-delay-tolerant-access' -> <<1:1,1:7>>; Val =:= 'permit-high-priority-sessions-and-exception-reporting-and-mobile-terminated-services-only' -> <<1:1,2:7>>; Val =:= 'not-accept-mo-data-or-delay-tolerant-access-from-CP-CIoT' -> <<1:1,3:7>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_OverloadAction(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:2/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> 'reject-non-emergency-mo-dt'; 1 -> 'reject-rrc-cr-signalling'; 2 -> 'permit-emergency-sessions-and-mobile-terminated-services-only'; _ -> exit({error,{asn1,{decode_enumerated,V1@V3}}}) end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of 0 -> 'permit-high-priority-sessions-and-mobile-terminated-services-only'; 1 -> 'reject-delay-tolerant-access'; 2 -> 'permit-high-priority-sessions-and-exception-reporting-and-mobile-terminated-services-only'; 3 -> 'not-accept-mo-data-or-delay-tolerant-access-from-CP-CIoT'; _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_OverloadResponse(Val) -> {ChoiceTag,ChoiceVal} = Val, if ChoiceTag =:= overloadAction -> if ChoiceVal =:= 'reject-non-emergency-mo-dt' -> <<0:1,0:1,0:2>>; ChoiceVal =:= 'reject-rrc-cr-signalling' -> <<0:1,0:1,1:2>>; ChoiceVal =:= 'permit-emergency-sessions-and-mobile-terminated-services-only' -> <<0:1,0:1,2:2>>; ChoiceVal =:= 'permit-high-priority-sessions-and-mobile-terminated-services-only' -> <<0:1,1:1,0:7>>; ChoiceVal =:= 'reject-delay-tolerant-access' -> <<0:1,1:1,1:7>>; ChoiceVal =:= 'permit-high-priority-sessions-and-exception-reporting-and-mobile-terminated-services-only' -> <<0:1,1:1,2:7>>; ChoiceVal =:= 'not-accept-mo-data-or-delay-tolerant-access-from-CP-CIoT' -> <<0:1,1:1,3:7>>; true -> exit({error,{asn1,{illegal_enumerated,ChoiceVal}}}) end end. dec_OverloadResponse(Bytes) -> case Bytes of <<0:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin ignore, {0,Bytes1} end, case Choice of 0 -> {Val,NewBytes} = begin begin {V2@V0,V2@Buf1} = case Bytes2 of <<0:1,V2@V3:2/unsigned-unit:1,V2@Buf4/bitstring>> -> V2@Int5 = case V2@V3 of 0 -> 'reject-non-emergency-mo-dt'; 1 -> 'reject-rrc-cr-signalling'; 2 -> 'permit-emergency-sessions-and-mobile-terminated-services-only'; _ -> exit({error,{asn1,{decode_enumerated,V2@V3}}}) end, {V2@Int5,V2@Buf4}; <<1:1,V2@Buf2/bitstring>> -> {V2@V3,V2@Buf4} = case V2@Buf2 of <<0:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V6,V2@Buf7}; <<1:1,V2@Buf5/bitstring>> -> V2@Pad9 = bit_size(V2@Buf5) band 7, {V2@V6,V2@Buf7} = case V2@Buf5 of <<_:V2@Pad9,0:1,V2@V11:7,V2@Buf12/bitstring>> when V2@V11 =/= 0 -> {V2@V11,V2@Buf12}; <<_:V2@Pad9,1:1,0:1,V2@V12:14,V2@Buf13/bitstring>> when V2@V12 =/= 0 -> {V2@V12,V2@Buf13}; <<_:V2@Pad9,1:1,1:1,V2@V12:6,V2@Buf13/bitstring>> when V2@V12 =/= 0 -> V2@Mul14 = V2@V12 * 16384, {V2@Mul14,V2@Buf13} end, <> = V2@Buf7, {V2@V15,V2@Buf16} end, V2@Int17 = case V2@V3 of 0 -> 'permit-high-priority-sessions-and-mobile-terminated-services-only'; 1 -> 'reject-delay-tolerant-access'; 2 -> 'permit-high-priority-sessions-and-exception-reporting-and-mobile-terminated-services-only'; 3 -> 'not-accept-mo-data-or-delay-tolerant-access-from-CP-CIoT'; _ -> {asn1_enum,V2@V3} end, {V2@Int17,V2@Buf4} end, {V2@V0,V2@Buf1} end end, {{overloadAction,Val},NewBytes} end; <<1:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin {V1@V0,V1@Buf1} = case Bytes1 of <<0:1,V1@V3:6,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end, begin V2@Pad3 = bit_size(Bytes2) band 7, {V2@V0,V2@Buf1} = case Bytes2 of <<_:V2@Pad3,0:1,V2@V5:7,V2@V7:V2@V5/binary-unit:8,V2@Buf8/bitstring>> -> {V2@V7,V2@Buf8}; <<_:V2@Pad3,1:1,0:1,V2@V6:14,V2@V8:V2@V6/binary-unit:8,V2@Buf9/bitstring>> -> {V2@V8,V2@Buf9}; <<_:V2@Pad3,1:1,1:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V8,V2@Buf9} = decode_fragmented(V2@V6, V2@Buf7, 8), {V2@V8,V2@Buf9} end end, case Choice of _ -> {{asn1_ExtAlt,V2@V0},V2@Buf1} end end. 'enc_Packet-LossRate'(Val) -> if 0 =< Val, Val < 1001 -> [align|<>]; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. 'dec_Packet-LossRate'(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end. enc_PagingAttemptInformation(Val) -> [begin Enc1@element = element(4, Val), Enc2@element = element(5, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin %% attribute pagingAttemptCount(1) with type INTEGER Enc4@element = element(2, Val), Enc4@element@sub = Enc4@element - 1, if Enc4@element@sub bsr 4 =:= 0 -> <<0:1,Enc4@element@sub:4>>; true -> [<<1:1>>, align|encode_unconstrained_number(Enc4@element)] end end, begin %% attribute intendedNumberOfPagingAttempts(2) with type INTEGER Enc6@element = element(3, Val), Enc6@element@sub = Enc6@element - 1, if Enc6@element@sub bsr 4 =:= 0 -> <<0:1,Enc6@element@sub:4>>; true -> [<<1:1>>, align|encode_unconstrained_number(Enc6@element)] end end, begin %% attribute nextPagingAreaScope(3) with type ENUMERATED Enc8@element = element(4, Val), if Enc8@element =:= asn1_NOVALUE -> []; Enc8@element =:= same -> <<0:1,0:1>>; Enc8@element =:= changed -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc8@element}}}) end end|begin %% attribute iE-Extensions(4) with type SEQUENCE OF Enc11@element = element(5, Val), if Enc11@element =:= asn1_NOVALUE -> []; true -> 'enc_PagingAttemptInformation_iE-Extensions'(Enc11@element) end end]. 'enc_PagingAttemptInformation_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_PagingAttemptInformation_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_PagingAttemptInformation_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_PagingAttemptInformation(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute pagingAttemptCount(1) with type INTEGER {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:4/unsigned-unit:1,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, <> = V3@Buf4, {V3@V12,V3@Buf13} end, {V3@V0,V3@Buf1} end, %% attribute intendedNumberOfPagingAttempts(2) with type INTEGER {Term2,Bytes4} = begin {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@V3:4/unsigned-unit:1,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, <> = V4@Buf4, {V4@V12,V4@Buf13} end, {V4@V0,V4@Buf1} end, %% attribute nextPagingAreaScope(3) with type ENUMERATED {Term3,Bytes5} = case (Opt bsr 1) band 1 of 1 -> begin {V5@V0,V5@Buf1} = case Bytes4 of <<0:1,V5@V3:1/unsigned-unit:1,V5@Buf4/bitstring>> -> V5@Int5 = case V5@V3 of 0 -> same; 1 -> changed end, {V5@Int5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> {V5@V3,V5@Buf4} = case V5@Buf2 of <<0:1,V5@V6:6,V5@Buf7/bitstring>> -> {V5@V6,V5@Buf7}; <<1:1,V5@Buf5/bitstring>> -> V5@Pad9 = bit_size(V5@Buf5) band 7, {V5@V6,V5@Buf7} = case V5@Buf5 of <<_:V5@Pad9,0:1,V5@V11:7,V5@Buf12/bitstring>> when V5@V11 =/= 0 -> {V5@V11,V5@Buf12}; <<_:V5@Pad9,1:1,0:1,V5@V12:14,V5@Buf13/bitstring>> when V5@V12 =/= 0 -> {V5@V12,V5@Buf13}; <<_:V5@Pad9,1:1,1:1,V5@V12:6,V5@Buf13/bitstring>> when V5@V12 =/= 0 -> V5@Mul14 = V5@V12 * 16384, {V5@Mul14,V5@Buf13} end, <> = V5@Buf7, {V5@V15,V5@Buf16} end, V5@Int17 = case V5@V3 of _ -> {asn1_enum,V5@V3} end, {V5@Int17,V5@Buf4} end, {V5@V0,V5@Buf1} end; 0 -> {asn1_NOVALUE,Bytes4} end, %% attribute iE-Extensions(4) with type SEQUENCE OF {Term4,Bytes6} = case Opt band 1 of 1 -> 'dec_PagingAttemptInformation_iE-Extensions'(Bytes5); 0 -> {asn1_NOVALUE,Bytes5} end, %% Extensions {Extensions,Bytes7} = case Ext of 0 -> {<<>>,Bytes6}; 1 -> {V6@V0,V6@Buf1} = case Bytes6 of <<0:1,V6@V3:6,V6@Buf4/bitstring>> -> V6@Add5 = V6@V3 + 1, {V6@Add5,V6@Buf4}; <<1:1,V6@Buf2/bitstring>> -> V6@Pad6 = bit_size(V6@Buf2) band 7, {V6@V3,V6@Buf4} = case V6@Buf2 of <<_:V6@Pad6,0:1,V6@V8:7,V6@Buf9/bitstring>> when V6@V8 =/= 0 -> {V6@V8,V6@Buf9}; <<_:V6@Pad6,1:1,0:1,V6@V9:14,V6@Buf10/bitstring>> when V6@V9 =/= 0 -> {V6@V9,V6@Buf10}; <<_:V6@Pad6,1:1,1:1,V6@V9:6,V6@Buf10/bitstring>> when V6@V9 =/= 0 -> V6@Mul11 = V6@V9 * 16384, {V6@Mul11,V6@Buf10} end, {V6@V3,V6@Buf4} end, <> = V6@Buf1, {V6@V12,V6@Buf13} end, Bytes8= skipextensions(Bytes7, 1, Extensions), Res1 = {'PagingAttemptInformation',Term1,Term2,Term3,Term4}, {Res1,Bytes8}. 'dec_PagingAttemptInformation_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components161(V1@Add4, V1@Buf1, []). 'dec_PagingAttemptInformation_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_PagingAttemptCount(Val) -> Val@sub = Val - 1, if Val@sub bsr 4 =:= 0 -> <<0:1,Val@sub:4>>; true -> [<<1:1>>, align|encode_unconstrained_number(Val)] end. dec_PagingAttemptCount(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:4/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Add5 = V1@V3 + 1, {V1@Add5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end. 'enc_Paging-eDRXInformation'(Val) -> [begin Enc1@element = element(3, Val), Enc2@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin %% attribute paging-eDRX-Cycle(1) with type ENUMERATED Enc4@element = element(2, Val), if Enc4@element =:= hfhalf -> <<0:1,0:4>>; Enc4@element =:= hf1 -> <<0:1,1:4>>; Enc4@element =:= hf2 -> <<0:1,2:4>>; Enc4@element =:= hf4 -> <<0:1,3:4>>; Enc4@element =:= hf6 -> <<0:1,4:4>>; Enc4@element =:= hf8 -> <<0:1,5:4>>; Enc4@element =:= hf10 -> <<0:1,6:4>>; Enc4@element =:= hf12 -> <<0:1,7:4>>; Enc4@element =:= hf14 -> <<0:1,8:4>>; Enc4@element =:= hf16 -> <<0:1,9:4>>; Enc4@element =:= hf32 -> <<0:1,10:4>>; Enc4@element =:= hf64 -> <<0:1,11:4>>; Enc4@element =:= hf128 -> <<0:1,12:4>>; Enc4@element =:= hf256 -> <<0:1,13:4>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end, begin %% attribute pagingTimeWindow(2) with type ENUMERATED Enc6@element = element(3, Val), if Enc6@element =:= asn1_NOVALUE -> []; Enc6@element =:= s1 -> <<0:1,0:4>>; Enc6@element =:= s2 -> <<0:1,1:4>>; Enc6@element =:= s3 -> <<0:1,2:4>>; Enc6@element =:= s4 -> <<0:1,3:4>>; Enc6@element =:= s5 -> <<0:1,4:4>>; Enc6@element =:= s6 -> <<0:1,5:4>>; Enc6@element =:= s7 -> <<0:1,6:4>>; Enc6@element =:= s8 -> <<0:1,7:4>>; Enc6@element =:= s9 -> <<0:1,8:4>>; Enc6@element =:= s10 -> <<0:1,9:4>>; Enc6@element =:= s11 -> <<0:1,10:4>>; Enc6@element =:= s12 -> <<0:1,11:4>>; Enc6@element =:= s13 -> <<0:1,12:4>>; Enc6@element =:= s14 -> <<0:1,13:4>>; Enc6@element =:= s15 -> <<0:1,14:4>>; Enc6@element =:= s16 -> <<0:1,15:4>>; true -> exit({error,{asn1,{illegal_enumerated,Enc6@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc9@element = element(4, Val), if Enc9@element =:= asn1_NOVALUE -> []; true -> 'enc_Paging-eDRXInformation_iE-Extensions'(Enc9@element) end end]. 'enc_Paging-eDRXInformation_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_Paging-eDRXInformation_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_Paging-eDRXInformation_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_Paging-eDRXInformation'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute paging-eDRX-Cycle(1) with type ENUMERATED {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:4/unsigned-unit:1,V3@Buf4/bitstring>> -> V3@Int5 = case V3@V3 of 0 -> hfhalf; 1 -> hf1; 2 -> hf2; 3 -> hf4; 4 -> hf6; 5 -> hf8; 6 -> hf10; 7 -> hf12; 8 -> hf14; 9 -> hf16; 10 -> hf32; 11 -> hf64; 12 -> hf128; 13 -> hf256; _ -> exit({error,{asn1,{decode_enumerated,V3@V3}}}) end, {V3@Int5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> {V3@V3,V3@Buf4} = case V3@Buf2 of <<0:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V6,V3@Buf7}; <<1:1,V3@Buf5/bitstring>> -> V3@Pad9 = bit_size(V3@Buf5) band 7, {V3@V6,V3@Buf7} = case V3@Buf5 of <<_:V3@Pad9,0:1,V3@V11:7,V3@Buf12/bitstring>> when V3@V11 =/= 0 -> {V3@V11,V3@Buf12}; <<_:V3@Pad9,1:1,0:1,V3@V12:14,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> {V3@V12,V3@Buf13}; <<_:V3@Pad9,1:1,1:1,V3@V12:6,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> V3@Mul14 = V3@V12 * 16384, {V3@Mul14,V3@Buf13} end, <> = V3@Buf7, {V3@V15,V3@Buf16} end, V3@Int17 = case V3@V3 of _ -> {asn1_enum,V3@V3} end, {V3@Int17,V3@Buf4} end, {V3@V0,V3@Buf1} end, %% attribute pagingTimeWindow(2) with type ENUMERATED {Term2,Bytes4} = case (Opt bsr 1) band 1 of 1 -> begin {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@V3:4/unsigned-unit:1,V4@Buf4/bitstring>> -> V4@Int5 = case V4@V3 of 0 -> s1; 1 -> s2; 2 -> s3; 3 -> s4; 4 -> s5; 5 -> s6; 6 -> s7; 7 -> s8; 8 -> s9; 9 -> s10; 10 -> s11; 11 -> s12; 12 -> s13; 13 -> s14; 14 -> s15; 15 -> s16 end, {V4@Int5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> {V4@V3,V4@Buf4} = case V4@Buf2 of <<0:1,V4@V6:6,V4@Buf7/bitstring>> -> {V4@V6,V4@Buf7}; <<1:1,V4@Buf5/bitstring>> -> V4@Pad9 = bit_size(V4@Buf5) band 7, {V4@V6,V4@Buf7} = case V4@Buf5 of <<_:V4@Pad9,0:1,V4@V11:7,V4@Buf12/bitstring>> when V4@V11 =/= 0 -> {V4@V11,V4@Buf12}; <<_:V4@Pad9,1:1,0:1,V4@V12:14,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> {V4@V12,V4@Buf13}; <<_:V4@Pad9,1:1,1:1,V4@V12:6,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> V4@Mul14 = V4@V12 * 16384, {V4@Mul14,V4@Buf13} end, <> = V4@Buf7, {V4@V15,V4@Buf16} end, V4@Int17 = case V4@V3 of _ -> {asn1_enum,V4@V3} end, {V4@Int17,V4@Buf4} end, {V4@V0,V4@Buf1} end; 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_Paging-eDRXInformation_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'Paging-eDRXInformation',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_Paging-eDRXInformation_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components162(V1@Add4, V1@Buf1, []). 'dec_Paging-eDRXInformation_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_Paging-eDRX-Cycle'(Val) -> if Val =:= hfhalf -> <<0:1,0:4>>; Val =:= hf1 -> <<0:1,1:4>>; Val =:= hf2 -> <<0:1,2:4>>; Val =:= hf4 -> <<0:1,3:4>>; Val =:= hf6 -> <<0:1,4:4>>; Val =:= hf8 -> <<0:1,5:4>>; Val =:= hf10 -> <<0:1,6:4>>; Val =:= hf12 -> <<0:1,7:4>>; Val =:= hf14 -> <<0:1,8:4>>; Val =:= hf16 -> <<0:1,9:4>>; Val =:= hf32 -> <<0:1,10:4>>; Val =:= hf64 -> <<0:1,11:4>>; Val =:= hf128 -> <<0:1,12:4>>; Val =:= hf256 -> <<0:1,13:4>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_Paging-eDRX-Cycle'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:4/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> hfhalf; 1 -> hf1; 2 -> hf2; 3 -> hf4; 4 -> hf6; 5 -> hf8; 6 -> hf10; 7 -> hf12; 8 -> hf14; 9 -> hf16; 10 -> hf32; 11 -> hf64; 12 -> hf128; 13 -> hf256; _ -> exit({error,{asn1,{decode_enumerated,V1@V3}}}) end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_PagingTimeWindow(Val) -> if Val =:= s1 -> <<0:1,0:4>>; Val =:= s2 -> <<0:1,1:4>>; Val =:= s3 -> <<0:1,2:4>>; Val =:= s4 -> <<0:1,3:4>>; Val =:= s5 -> <<0:1,4:4>>; Val =:= s6 -> <<0:1,5:4>>; Val =:= s7 -> <<0:1,6:4>>; Val =:= s8 -> <<0:1,7:4>>; Val =:= s9 -> <<0:1,8:4>>; Val =:= s10 -> <<0:1,9:4>>; Val =:= s11 -> <<0:1,10:4>>; Val =:= s12 -> <<0:1,11:4>>; Val =:= s13 -> <<0:1,12:4>>; Val =:= s14 -> <<0:1,13:4>>; Val =:= s15 -> <<0:1,14:4>>; Val =:= s16 -> <<0:1,15:4>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_PagingTimeWindow(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:4/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> s1; 1 -> s2; 2 -> s3; 3 -> s4; 4 -> s5; 5 -> s6; 6 -> s7; 7 -> s8; 8 -> s9; 9 -> s10; 10 -> s11; 11 -> s12; 12 -> s13; 13 -> s14; 14 -> s15; 15 -> s16 end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_PagingDRX(Val) -> if Val =:= v32 -> <<0:1,0:2>>; Val =:= v64 -> <<0:1,1:2>>; Val =:= v128 -> <<0:1,2:2>>; Val =:= v256 -> <<0:1,3:2>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_PagingDRX(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:2/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> v32; 1 -> v64; 2 -> v128; 3 -> v256 end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_PagingPriority(Val) -> if Val =:= priolevel1 -> <<0:1,0:3>>; Val =:= priolevel2 -> <<0:1,1:3>>; Val =:= priolevel3 -> <<0:1,2:3>>; Val =:= priolevel4 -> <<0:1,3:3>>; Val =:= priolevel5 -> <<0:1,4:3>>; Val =:= priolevel6 -> <<0:1,5:3>>; Val =:= priolevel7 -> <<0:1,6:3>>; Val =:= priolevel8 -> <<0:1,7:3>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_PagingPriority(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:3/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> priolevel1; 1 -> priolevel2; 2 -> priolevel3; 3 -> priolevel4; 4 -> priolevel5; 5 -> priolevel6; 6 -> priolevel7; 7 -> priolevel8 end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_PagingProbabilityInformation(Val) -> if Val =:= p00 -> <<0:1,0:5>>; Val =:= p05 -> <<0:1,1:5>>; Val =:= p10 -> <<0:1,2:5>>; Val =:= p15 -> <<0:1,3:5>>; Val =:= p20 -> <<0:1,4:5>>; Val =:= p25 -> <<0:1,5:5>>; Val =:= p30 -> <<0:1,6:5>>; Val =:= p35 -> <<0:1,7:5>>; Val =:= p40 -> <<0:1,8:5>>; Val =:= p45 -> <<0:1,9:5>>; Val =:= p50 -> <<0:1,10:5>>; Val =:= p55 -> <<0:1,11:5>>; Val =:= p60 -> <<0:1,12:5>>; Val =:= p65 -> <<0:1,13:5>>; Val =:= p70 -> <<0:1,14:5>>; Val =:= p75 -> <<0:1,15:5>>; Val =:= p80 -> <<0:1,16:5>>; Val =:= p85 -> <<0:1,17:5>>; Val =:= p90 -> <<0:1,18:5>>; Val =:= p95 -> <<0:1,19:5>>; Val =:= p100 -> <<0:1,20:5>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_PagingProbabilityInformation(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:5/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> p00; 1 -> p05; 2 -> p10; 3 -> p15; 4 -> p20; 5 -> p25; 6 -> p30; 7 -> p35; 8 -> p40; 9 -> p45; 10 -> p50; 11 -> p55; 12 -> p60; 13 -> p65; 14 -> p70; 15 -> p75; 16 -> p80; 17 -> p85; 18 -> p90; 19 -> p95; 20 -> p100; _ -> exit({error,{asn1,{decode_enumerated,V1@V3}}}) end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_PagingCause(Val) -> if Val =:= voice -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_PagingCause(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'voice',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_PC5QoSParameters(Val) -> [begin Enc1@element = element(3, Val), Enc2@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin %% attribute pc5QoSFlowList(1) with type PC5QoSFlowList Enc4@element = element(2, Val), enc_PC5QoSFlowList(Enc4@element) end, begin %% attribute pc5LinkAggregatedBitRates(2) with type INTEGER Enc5@element = element(3, Val), if Enc5@element =:= asn1_NOVALUE -> []; 0 =< Enc5@element, Enc5@element < 10000000001 -> begin Enc5@element@bin = binary:encode_unsigned(Enc5@element), Enc5@element@bin_size0 = byte_size(Enc5@element@bin), Enc5@element@bin_size = Enc5@element@bin_size0 - 1, [<>, align|Enc5@element@bin] end; true -> exit({error,{asn1,{illegal_integer,Enc5@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc8@element = element(4, Val), if Enc8@element =:= asn1_NOVALUE -> []; true -> 'enc_PC5QoSParameters_iE-Extensions'(Enc8@element) end end]. 'enc_PC5QoSParameters_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_PC5QoSParameters_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_PC5QoSParameters_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_PC5QoSParameters(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute pc5QoSFlowList(1) with type PC5QoSFlowList {Term1,Bytes3} = dec_PC5QoSFlowList(Bytes2), %% attribute pc5LinkAggregatedBitRates(2) with type INTEGER {Term2,Bytes4} = case (Opt bsr 1) band 1 of 1 -> begin <> = Bytes3, V3@Add2 = V3@V0 + 1, V3@Pad5 = bit_size(V3@Buf1) band 7, <<_:V3@Pad5,V3@V3:V3@Add2/unsigned-unit:8,V3@Buf4/bitstring>> = V3@Buf1, {V3@V3,V3@Buf4} end; 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_PC5QoSParameters_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V4@V0,V4@Buf1} = case Bytes5 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'PC5QoSParameters',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_PC5QoSParameters_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components163(V1@Add4, V1@Buf1, []). 'dec_PC5QoSParameters_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_PC5QoSFlowList(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 11 =:= 0 -> [align, <>|[enc_PC5QoSFlowItem(Comp) || Comp <- Val]] end. dec_PC5QoSFlowList(Bytes) -> %% Length with constraint {1,2048} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components164(V1@Add4, V1@Buf1, []). enc_PC5QoSFlowItem(Val) -> [begin Enc1@element = element(3, Val), Enc2@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin Enc3@element = element(5, Val), if Enc3@element =:= asn1_NOVALUE -> <<0:1>>; true -> <<1:1>> end end, begin %% attribute pQI(1) with type INTEGER Enc5@element = element(2, Val), if Enc5@element bsr 8 =:= 0 -> [<<0:1>>, align, Enc5@element]; true -> [<<1:1>>, align|encode_unconstrained_number(Enc5@element)] end end, begin %% attribute pc5FlowBitRates(2) with type PC5FlowBitRates Enc7@element = element(3, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> enc_PC5FlowBitRates(Enc7@element) end end, begin %% attribute range(3) with type ENUMERATED Enc9@element = element(4, Val), if Enc9@element =:= asn1_NOVALUE -> []; Enc9@element =:= m50 -> <<0:1,0:4>>; Enc9@element =:= m80 -> <<0:1,1:4>>; Enc9@element =:= m180 -> <<0:1,2:4>>; Enc9@element =:= m200 -> <<0:1,3:4>>; Enc9@element =:= m350 -> <<0:1,4:4>>; Enc9@element =:= m400 -> <<0:1,5:4>>; Enc9@element =:= m500 -> <<0:1,6:4>>; Enc9@element =:= m700 -> <<0:1,7:4>>; Enc9@element =:= m1000 -> <<0:1,8:4>>; true -> exit({error,{asn1,{illegal_enumerated,Enc9@element}}}) end end|begin %% attribute iE-Extensions(4) with type SEQUENCE OF Enc12@element = element(5, Val), if Enc12@element =:= asn1_NOVALUE -> []; true -> 'enc_PC5QoSFlowItem_iE-Extensions'(Enc12@element) end end]. 'enc_PC5QoSFlowItem_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_PC5QoSFlowItem_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_PC5QoSFlowItem_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_PC5QoSFlowItem(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute pQI(1) with type INTEGER {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@Buf2/bitstring>> -> V3@Pad5 = bit_size(V3@Buf2) band 7, <<_:V3@Pad5,V3@V3:1/unsigned-unit:8,V3@Buf4/bitstring>> = V3@Buf2, {V3@V3,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, <> = V3@Buf4, {V3@V12,V3@Buf13} end, {V3@V0,V3@Buf1} end, %% attribute pc5FlowBitRates(2) with type PC5FlowBitRates {Term2,Bytes4} = case (Opt bsr 2) band 1 of 1 -> dec_PC5FlowBitRates(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute range(3) with type ENUMERATED {Term3,Bytes5} = case (Opt bsr 1) band 1 of 1 -> begin {V4@V0,V4@Buf1} = case Bytes4 of <<0:1,V4@V3:4/unsigned-unit:1,V4@Buf4/bitstring>> -> V4@Int5 = case V4@V3 of 0 -> m50; 1 -> m80; 2 -> m180; 3 -> m200; 4 -> m350; 5 -> m400; 6 -> m500; 7 -> m700; 8 -> m1000; _ -> exit({error,{asn1,{decode_enumerated,V4@V3}}}) end, {V4@Int5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> {V4@V3,V4@Buf4} = case V4@Buf2 of <<0:1,V4@V6:6,V4@Buf7/bitstring>> -> {V4@V6,V4@Buf7}; <<1:1,V4@Buf5/bitstring>> -> V4@Pad9 = bit_size(V4@Buf5) band 7, {V4@V6,V4@Buf7} = case V4@Buf5 of <<_:V4@Pad9,0:1,V4@V11:7,V4@Buf12/bitstring>> when V4@V11 =/= 0 -> {V4@V11,V4@Buf12}; <<_:V4@Pad9,1:1,0:1,V4@V12:14,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> {V4@V12,V4@Buf13}; <<_:V4@Pad9,1:1,1:1,V4@V12:6,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> V4@Mul14 = V4@V12 * 16384, {V4@Mul14,V4@Buf13} end, <> = V4@Buf7, {V4@V15,V4@Buf16} end, V4@Int17 = case V4@V3 of _ -> {asn1_enum,V4@V3} end, {V4@Int17,V4@Buf4} end, {V4@V0,V4@Buf1} end; 0 -> {asn1_NOVALUE,Bytes4} end, %% attribute iE-Extensions(4) with type SEQUENCE OF {Term4,Bytes6} = case Opt band 1 of 1 -> 'dec_PC5QoSFlowItem_iE-Extensions'(Bytes5); 0 -> {asn1_NOVALUE,Bytes5} end, %% Extensions {Extensions,Bytes7} = case Ext of 0 -> {<<>>,Bytes6}; 1 -> {V5@V0,V5@Buf1} = case Bytes6 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes8= skipextensions(Bytes7, 1, Extensions), Res1 = {'PC5QoSFlowItem',Term1,Term2,Term3,Term4}, {Res1,Bytes8}. 'dec_PC5QoSFlowItem_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components165(V1@Add4, V1@Buf1, []). 'dec_PC5QoSFlowItem_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_PC5FlowBitRates(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute guaranteedFlowBitRate(1) with type INTEGER Enc3@element = element(2, Val), if 0 =< Enc3@element, Enc3@element < 10000000001 -> begin Enc3@element@bin = binary:encode_unsigned(Enc3@element), Enc3@element@bin_size0 = byte_size(Enc3@element@bin), Enc3@element@bin_size = Enc3@element@bin_size0 - 1, [<>, align|Enc3@element@bin] end; true -> exit({error,{asn1,{illegal_integer,Enc3@element}}}) end end, begin %% attribute maximumFlowBitRate(2) with type INTEGER Enc5@element = element(3, Val), if 0 =< Enc5@element, Enc5@element < 10000000001 -> begin Enc5@element@bin = binary:encode_unsigned(Enc5@element), Enc5@element@bin_size0 = byte_size(Enc5@element@bin), Enc5@element@bin_size = Enc5@element@bin_size0 - 1, [<>|Enc5@element@bin] end; true -> exit({error,{asn1,{illegal_integer,Enc5@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_PC5FlowBitRates_iE-Extensions'(Enc7@element) end end]. 'enc_PC5FlowBitRates_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_PC5FlowBitRates_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_PC5FlowBitRates_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_PC5FlowBitRates(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute guaranteedFlowBitRate(1) with type INTEGER {Term1,Bytes3} = begin <> = Bytes2, V3@Add2 = V3@V0 + 1, V3@Pad5 = bit_size(V3@Buf1) band 7, <<_:V3@Pad5,V3@V3:V3@Add2/unsigned-unit:8,V3@Buf4/bitstring>> = V3@Buf1, {V3@V3,V3@Buf4} end, %% attribute maximumFlowBitRate(2) with type INTEGER {Term2,Bytes4} = begin <> = Bytes3, V4@Add2 = V4@V0 + 1, <<_:5,V4@V3:V4@Add2/unsigned-unit:8,V4@Buf4/bitstring>> = V4@Buf1, {V4@V3,V4@Buf4} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_PC5FlowBitRates_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'PC5FlowBitRates',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_PC5FlowBitRates_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components166(V1@Add4, V1@Buf1, []). 'dec_PC5FlowBitRates_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_PDCP-SN'(Val) -> if Val bsr 12 =:= 0 -> [align|<>]; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. 'dec_PDCP-SN'(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end. 'enc_PDCP-SNExtended'(Val) -> if Val bsr 15 =:= 0 -> [align|<>]; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. 'dec_PDCP-SNExtended'(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end. 'enc_PDCP-SNlength18'(Val) -> if Val bsr 18 =:= 0 -> begin Val@bin = binary:encode_unsigned(Val), Val@bin_size0 = byte_size(Val@bin), Val@bin_size = Val@bin_size0 - 1, [<>, align|Val@bin] end; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. 'dec_PDCP-SNlength18'(Bytes) -> begin <> = Bytes, V1@Add2 = V1@V0 + 1, V1@Pad5 = bit_size(V1@Buf1) band 7, <<_:V1@Pad5,V1@V3:V1@Add2/unsigned-unit:8,V1@Buf4/bitstring>> = V1@Buf1, {V1@V3,V1@Buf4} end. enc_PendingDataIndication(Val) -> if Val =:= true -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_PendingDataIndication(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'true',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_M1PeriodicReporting(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute reportInterval(1) with type ENUMERATED Enc3@element = element(2, Val), if Enc3@element =:= ms120 -> <<0:4>>; Enc3@element =:= ms240 -> <<1:4>>; Enc3@element =:= ms480 -> <<2:4>>; Enc3@element =:= ms640 -> <<3:4>>; Enc3@element =:= ms1024 -> <<4:4>>; Enc3@element =:= ms2048 -> <<5:4>>; Enc3@element =:= ms5120 -> <<6:4>>; Enc3@element =:= ms10240 -> <<7:4>>; Enc3@element =:= min1 -> <<8:4>>; Enc3@element =:= min6 -> <<9:4>>; Enc3@element =:= min12 -> <<10:4>>; Enc3@element =:= min30 -> <<11:4>>; Enc3@element =:= min60 -> <<12:4>>; true -> exit({error,{asn1,{illegal_enumerated,Enc3@element}}}) end end, begin %% attribute reportAmount(2) with type ENUMERATED Enc5@element = element(3, Val), if Enc5@element =:= r1 -> <<0:3>>; Enc5@element =:= r2 -> <<1:3>>; Enc5@element =:= r4 -> <<2:3>>; Enc5@element =:= r8 -> <<3:3>>; Enc5@element =:= r16 -> <<4:3>>; Enc5@element =:= r32 -> <<5:3>>; Enc5@element =:= r64 -> <<6:3>>; Enc5@element =:= rinfinity -> <<7:3>>; true -> exit({error,{asn1,{illegal_enumerated,Enc5@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_M1PeriodicReporting_iE-Extensions'(Enc7@element) end end]. 'enc_M1PeriodicReporting_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_M1PeriodicReporting_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_M1PeriodicReporting_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_M1PeriodicReporting(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute reportInterval(1) with type ENUMERATED {Term1,Bytes3} = begin <> = Bytes2, V3@Int2 = case V3@V0 of 0 -> ms120; 1 -> ms240; 2 -> ms480; 3 -> ms640; 4 -> ms1024; 5 -> ms2048; 6 -> ms5120; 7 -> ms10240; 8 -> min1; 9 -> min6; 10 -> min12; 11 -> min30; 12 -> min60; _ -> exit({error,{asn1,{decode_enumerated,V3@V0}}}) end, {V3@Int2,V3@Buf1} end, %% attribute reportAmount(2) with type ENUMERATED {Term2,Bytes4} = begin <> = Bytes3, V4@Int2 = case V4@V0 of 0 -> r1; 1 -> r2; 2 -> r4; 3 -> r8; 4 -> r16; 5 -> r32; 6 -> r64; 7 -> rinfinity end, {V4@Int2,V4@Buf1} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_M1PeriodicReporting_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'M1PeriodicReporting',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_M1PeriodicReporting_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components167(V1@Add4, V1@Buf1, []). 'dec_M1PeriodicReporting_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_PLMNidentity(Val) -> Enc1@len = byte_size(Val), if Enc1@len =:= 3 -> [align|Val] end. dec_PLMNidentity(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:3/binary-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Conv4 = binary:copy(V1@V0), {V1@Conv4,V1@Buf1} end. enc_PLMNAreaBasedQMC(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute plmnListforQMC(1) with type PLMNListforQMC Enc3@element = element(2, Val), enc_PLMNListforQMC(Enc3@element) end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc4@element = element(3, Val), if Enc4@element =:= asn1_NOVALUE -> []; true -> 'enc_PLMNAreaBasedQMC_iE-Extensions'(Enc4@element) end end]. 'enc_PLMNAreaBasedQMC_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_PLMNAreaBasedQMC_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_PLMNAreaBasedQMC_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_PLMNAreaBasedQMC(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute plmnListforQMC(1) with type PLMNListforQMC {Term1,Bytes3} = dec_PLMNListforQMC(Bytes2), %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_PLMNAreaBasedQMC_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V3@V0,V3@Buf1} = case Bytes4 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'PLMNAreaBasedQMC',Term1,Term2}, {Res1,Bytes6}. 'dec_PLMNAreaBasedQMC_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components168(V1@Add4, V1@Buf1, []). 'dec_PLMNAreaBasedQMC_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_PLMNListforQMC(Val) -> Enc2@len = length(Val), Enc2@len@sub = Enc2@len - 1, if Enc2@len@sub bsr 4 =:= 0 -> [<>, align|[begin Enc1@len = byte_size(Comp), if Enc1@len =:= 3 -> Comp end end || Comp <- Val]] end. dec_PLMNListforQMC(Bytes) -> %% Length with constraint {1,16} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components169(V1@Add2, V1@Buf1, []). 'enc_Port-Number'(Val) -> Enc1@len = byte_size(Val), if Enc1@len =:= 2 -> Val end. 'dec_Port-Number'(Bytes) -> begin <> = Bytes, V1@Conv2 = binary:copy(V1@V0), {V1@Conv2,V1@Buf1} end. 'enc_Pre-emptionCapability'(Val) -> if Val =:= 'shall-not-trigger-pre-emption' -> <<0:1>>; Val =:= 'may-trigger-pre-emption' -> <<1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_Pre-emptionCapability'(Bytes) -> begin <> = Bytes, V1@Int2 = case V1@V0 of 0 -> 'shall-not-trigger-pre-emption'; 1 -> 'may-trigger-pre-emption' end, {V1@Int2,V1@Buf1} end. 'enc_Pre-emptionVulnerability'(Val) -> if Val =:= 'not-pre-emptable' -> <<0:1>>; Val =:= 'pre-emptable' -> <<1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_Pre-emptionVulnerability'(Bytes) -> begin <> = Bytes, V1@Int2 = case V1@V0 of 0 -> 'not-pre-emptable'; 1 -> 'pre-emptable' end, {V1@Int2,V1@Buf1} end. enc_PriorityLevel(Val) -> if Val =:= spare -> <<0:4>>; Val =:= highest -> <<1:4>>; Val =:= lowest -> <<14:4>>; Val =:= 'no-priority' -> <<15:4>>; Val bsr 4 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. dec_PriorityLevel(Bytes) -> begin <> = Bytes, V1@Int2 = case V1@V0 of 0 -> spare; 1 -> highest; 14 -> lowest; 15 -> 'no-priority'; _ -> V1@V0 end, {V1@Int2,V1@Buf1} end. enc_ProSeAuthorized(Val) -> [begin Enc1@element = element(2, Val), Enc2@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin Enc3@element = element(4, Val), %% attribute proSeDirectDiscovery(1) with type ENUMERATED Enc5@element = element(2, Val), if Enc3@element =:= asn1_NOVALUE -> if Enc5@element =:= asn1_NOVALUE -> <<0:1>>; Enc5@element =:= authorized -> <<0:1,0:1,0:1>>; Enc5@element =:= 'not-authorized' -> <<0:1,0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc5@element}}}) end; true -> if Enc5@element =:= asn1_NOVALUE -> <<1:1>>; Enc5@element =:= authorized -> <<1:1,0:1,0:1>>; Enc5@element =:= 'not-authorized' -> <<1:1,0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc5@element}}}) end end end, begin %% attribute proSeDirectCommunication(2) with type ENUMERATED Enc8@element = element(3, Val), if Enc8@element =:= asn1_NOVALUE -> []; Enc8@element =:= authorized -> <<0:1,0:1>>; Enc8@element =:= 'not-authorized' -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc8@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc11@element = element(4, Val), if Enc11@element =:= asn1_NOVALUE -> []; true -> 'enc_ProSeAuthorized_iE-Extensions'(Enc11@element) end end]. 'enc_ProSeAuthorized_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_ProSeAuthorized_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_ProSeAuthorized_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension170(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_ProSeAuthorized(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute proSeDirectDiscovery(1) with type ENUMERATED {Term1,Bytes3} = case (Opt bsr 2) band 1 of 1 -> begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:1/unsigned-unit:1,V3@Buf4/bitstring>> -> V3@Int5 = case V3@V3 of 0 -> authorized; 1 -> 'not-authorized' end, {V3@Int5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> {V3@V3,V3@Buf4} = case V3@Buf2 of <<0:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V6,V3@Buf7}; <<1:1,V3@Buf5/bitstring>> -> V3@Pad9 = bit_size(V3@Buf5) band 7, {V3@V6,V3@Buf7} = case V3@Buf5 of <<_:V3@Pad9,0:1,V3@V11:7,V3@Buf12/bitstring>> when V3@V11 =/= 0 -> {V3@V11,V3@Buf12}; <<_:V3@Pad9,1:1,0:1,V3@V12:14,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> {V3@V12,V3@Buf13}; <<_:V3@Pad9,1:1,1:1,V3@V12:6,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> V3@Mul14 = V3@V12 * 16384, {V3@Mul14,V3@Buf13} end, <> = V3@Buf7, {V3@V15,V3@Buf16} end, V3@Int17 = case V3@V3 of _ -> {asn1_enum,V3@V3} end, {V3@Int17,V3@Buf4} end, {V3@V0,V3@Buf1} end; 0 -> {asn1_NOVALUE,Bytes2} end, %% attribute proSeDirectCommunication(2) with type ENUMERATED {Term2,Bytes4} = case (Opt bsr 1) band 1 of 1 -> begin {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@V3:1/unsigned-unit:1,V4@Buf4/bitstring>> -> V4@Int5 = case V4@V3 of 0 -> authorized; 1 -> 'not-authorized' end, {V4@Int5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> {V4@V3,V4@Buf4} = case V4@Buf2 of <<0:1,V4@V6:6,V4@Buf7/bitstring>> -> {V4@V6,V4@Buf7}; <<1:1,V4@Buf5/bitstring>> -> V4@Pad9 = bit_size(V4@Buf5) band 7, {V4@V6,V4@Buf7} = case V4@Buf5 of <<_:V4@Pad9,0:1,V4@V11:7,V4@Buf12/bitstring>> when V4@V11 =/= 0 -> {V4@V11,V4@Buf12}; <<_:V4@Pad9,1:1,0:1,V4@V12:14,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> {V4@V12,V4@Buf13}; <<_:V4@Pad9,1:1,1:1,V4@V12:6,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> V4@Mul14 = V4@V12 * 16384, {V4@Mul14,V4@Buf13} end, <> = V4@Buf7, {V4@V15,V4@Buf16} end, V4@Int17 = case V4@V3 of _ -> {asn1_enum,V4@V3} end, {V4@Int17,V4@Buf4} end, {V4@V0,V4@Buf1} end; 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_ProSeAuthorized_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'ProSeAuthorized',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_ProSeAuthorized_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components171(V1@Add4, V1@Buf1, []). 'dec_ProSeAuthorized_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension172(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_ProSeDirectDiscovery(Val) -> if Val =:= authorized -> <<0:1,0:1>>; Val =:= 'not-authorized' -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_ProSeDirectDiscovery(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:1/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> authorized; 1 -> 'not-authorized' end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_ProSeUEtoNetworkRelaying(Val) -> if Val =:= authorized -> <<0:1,0:1>>; Val =:= 'not-authorized' -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_ProSeUEtoNetworkRelaying(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:1/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> authorized; 1 -> 'not-authorized' end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_ProSeDirectCommunication(Val) -> if Val =:= authorized -> <<0:1,0:1>>; Val =:= 'not-authorized' -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_ProSeDirectCommunication(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:1/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> authorized; 1 -> 'not-authorized' end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. 'enc_PS-ServiceNotAvailable'(Val) -> if Val =:= 'ps-service-not-available' -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_PS-ServiceNotAvailable'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'ps-service-not-available',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_PSCellInformation(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute nCGI(1) with type NR-CGI Enc3@element = element(2, Val), 'enc_NR-CGI'(Enc3@element) end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc4@element = element(3, Val), if Enc4@element =:= asn1_NOVALUE -> []; true -> 'enc_PSCellInformation_iE-Extensions'(Enc4@element) end end]. 'enc_PSCellInformation_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_PSCellInformation_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_PSCellInformation_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_PSCellInformation(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute nCGI(1) with type NR-CGI {Term1,Bytes3} = 'dec_NR-CGI'(Bytes2), %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_PSCellInformation_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V3@V0,V3@Buf1} = case Bytes4 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'PSCellInformation',Term1,Term2}, {Res1,Bytes6}. 'dec_PSCellInformation_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components173(V1@Add4, V1@Buf1, []). 'dec_PSCellInformation_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_QCI(Val) -> if Val bsr 8 =:= 0 -> [align, Val]; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. dec_QCI(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:1/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end. enc_RACSIndication(Val) -> if Val =:= true -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_RACSIndication(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'true',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. 'enc_RAN-UE-NGAP-ID'(Val) -> if Val bsr 32 =:= 0 -> begin Val@bin = binary:encode_unsigned(Val), Val@bin_size0 = byte_size(Val@bin), Val@bin_size = Val@bin_size0 - 1, [<>, align|Val@bin] end; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. 'dec_RAN-UE-NGAP-ID'(Bytes) -> begin <> = Bytes, V1@Add2 = V1@V0 + 1, V1@Pad5 = bit_size(V1@Buf1) band 7, <<_:V1@Pad5,V1@V3:V1@Add2/unsigned-unit:8,V1@Buf4/bitstring>> = V1@Buf1, {V1@V3,V1@Buf4} end. enc_Range(Val) -> if Val =:= m50 -> <<0:1,0:4>>; Val =:= m80 -> <<0:1,1:4>>; Val =:= m180 -> <<0:1,2:4>>; Val =:= m200 -> <<0:1,3:4>>; Val =:= m350 -> <<0:1,4:4>>; Val =:= m400 -> <<0:1,5:4>>; Val =:= m500 -> <<0:1,6:4>>; Val =:= m700 -> <<0:1,7:4>>; Val =:= m1000 -> <<0:1,8:4>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_Range(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:4/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> m50; 1 -> m80; 2 -> m180; 3 -> m200; 4 -> m350; 5 -> m400; 6 -> m500; 7 -> m700; 8 -> m1000; _ -> exit({error,{asn1,{decode_enumerated,V1@V3}}}) end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_ReceiveStatusofULPDCPSDUs(Val) -> Enc1@bits = bit_size(Val), if Enc1@bits =:= 4096 -> [align|Val] end. dec_ReceiveStatusofULPDCPSDUs(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:4096/binary-unit:1,V1@Buf1/bitstring>> = Bytes, {V1@V4,V1@Buf5} = {list_to_bitstring([V1@V0]),V1@Buf1}, {V1@V4,V1@Buf5} end. enc_ReceiveStatusOfULPDCPSDUsExtended(Val) -> Enc1@bits = bit_size(Val), Enc1@bits@sub = Enc1@bits - 1, if Enc1@bits@sub bsr 14 =:= 0 -> [align, <>|Val] end. dec_ReceiveStatusOfULPDCPSDUsExtended(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, <> = V1@Buf1, {V1@V7,V1@Buf8} = {list_to_bitstring([V1@V5]),V1@Buf6}, {V1@V7,V1@Buf8} end. 'enc_ReceiveStatusOfULPDCPSDUsPDCP-SNlength18'(Val) -> Enc1@bits = bit_size(Val), if Enc1@bits < 128 -> [align, Enc1@bits|Val]; Enc1@bits < 16384 -> [align, <<2:2,Enc1@bits:14>>|Val]; true -> [align|encode_fragmented(Val, 1)] end. 'dec_ReceiveStatusOfULPDCPSDUsPDCP-SNlength18'(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:1,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:1,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 1), {V1@V8,V1@Buf9} end, {V1@V10,V1@Buf11} = {list_to_bitstring([V1@V0]),V1@Buf1}, {V1@V10,V1@Buf11} end. enc_RecommendedCellsForPaging(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute recommendedCellList(1) with type RecommendedCellList Enc3@element = element(2, Val), enc_RecommendedCellList(Enc3@element) end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc4@element = element(3, Val), if Enc4@element =:= asn1_NOVALUE -> []; true -> 'enc_RecommendedCellsForPaging_iE-Extensions'(Enc4@element) end end]. 'enc_RecommendedCellsForPaging_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_RecommendedCellsForPaging_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_RecommendedCellsForPaging_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_RecommendedCellsForPaging(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute recommendedCellList(1) with type RecommendedCellList {Term1,Bytes3} = dec_RecommendedCellList(Bytes2), %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_RecommendedCellsForPaging_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V3@V0,V3@Buf1} = case Bytes4 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'RecommendedCellsForPaging',Term1,Term2}, {Res1,Bytes6}. 'dec_RecommendedCellsForPaging_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components174(V1@Add4, V1@Buf1, []). 'dec_RecommendedCellsForPaging_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_RecommendedCellList(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 4 =:= 0 -> [<>|['enc_RecommendedCellList_ProtocolIE-Field'(Comp) || Comp <- Val]] end. 'enc_RecommendedCellList_ProtocolIE-Field'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute value(3) with type Value Enc6@element = element(4, Val), Enc7@output = enc_os_Value175(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_RecommendedCellList(Bytes) -> %% Length with constraint {1,16} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components176(V1@Add2, V1@Buf1, []). 'dec_RecommendedCellList_ProtocolIE-Field'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute value(3) with type Value {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Value177(Tmpterm1, Term1), Res1 = {'ProtocolIE-Field',Term1,Term2,Term3}, {Res1,Bytes3}. enc_RecommendedCellItem(Val) -> [begin Enc1@element = element(3, Val), Enc2@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin %% attribute eUTRAN-CGI(1) with type EUTRAN-CGI Enc4@element = element(2, Val), 'enc_EUTRAN-CGI'(Enc4@element) end, begin %% attribute timeStayedInCell(2) with type INTEGER Enc5@element = element(3, Val), if Enc5@element =:= asn1_NOVALUE -> []; Enc5@element bsr 12 =:= 0 -> [align|<>]; true -> exit({error,{asn1,{illegal_integer,Enc5@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc8@element = element(4, Val), if Enc8@element =:= asn1_NOVALUE -> []; true -> 'enc_RecommendedCellItem_iE-Extensions'(Enc8@element) end end]. 'enc_RecommendedCellItem_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_RecommendedCellItem_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_RecommendedCellItem_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_RecommendedCellItem(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute eUTRAN-CGI(1) with type EUTRAN-CGI {Term1,Bytes3} = 'dec_EUTRAN-CGI'(Bytes2), %% attribute timeStayedInCell(2) with type INTEGER {Term2,Bytes4} = case (Opt bsr 1) band 1 of 1 -> begin V3@Pad2 = bit_size(Bytes3) band 7, <<_:V3@Pad2,V3@V0:2/unsigned-unit:8,V3@Buf1/bitstring>> = Bytes3, {V3@V0,V3@Buf1} end; 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_RecommendedCellItem_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V4@V0,V4@Buf1} = case Bytes5 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'RecommendedCellItem',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_RecommendedCellItem_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components178(V1@Add4, V1@Buf1, []). 'dec_RecommendedCellItem_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_RecommendedENBsForPaging(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute recommendedENBList(1) with type RecommendedENBList Enc3@element = element(2, Val), enc_RecommendedENBList(Enc3@element) end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc4@element = element(3, Val), if Enc4@element =:= asn1_NOVALUE -> []; true -> 'enc_RecommendedENBsForPaging_iE-Extensions'(Enc4@element) end end]. 'enc_RecommendedENBsForPaging_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_RecommendedENBsForPaging_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_RecommendedENBsForPaging_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_RecommendedENBsForPaging(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute recommendedENBList(1) with type RecommendedENBList {Term1,Bytes3} = dec_RecommendedENBList(Bytes2), %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_RecommendedENBsForPaging_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V3@V0,V3@Buf1} = case Bytes4 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'RecommendedENBsForPaging',Term1,Term2}, {Res1,Bytes6}. 'dec_RecommendedENBsForPaging_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components179(V1@Add4, V1@Buf1, []). 'dec_RecommendedENBsForPaging_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_RecommendedENBList(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 4 =:= 0 -> [<>|['enc_RecommendedENBList_ProtocolIE-Field'(Comp) || Comp <- Val]] end. 'enc_RecommendedENBList_ProtocolIE-Field'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute value(3) with type Value Enc6@element = element(4, Val), Enc7@output = enc_os_Value180(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_RecommendedENBList(Bytes) -> %% Length with constraint {1,16} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components181(V1@Add2, V1@Buf1, []). 'dec_RecommendedENBList_ProtocolIE-Field'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute value(3) with type Value {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Value182(Tmpterm1, Term1), Res1 = {'ProtocolIE-Field',Term1,Term2,Term3}, {Res1,Bytes3}. enc_RecommendedENBItem(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute mMEPagingTarget(1) with type MMEPagingTarget Enc3@element = element(2, Val), enc_MMEPagingTarget(Enc3@element) end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc4@element = element(3, Val), if Enc4@element =:= asn1_NOVALUE -> []; true -> 'enc_RecommendedENBItem_iE-Extensions'(Enc4@element) end end]. 'enc_RecommendedENBItem_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_RecommendedENBItem_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_RecommendedENBItem_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_RecommendedENBItem(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute mMEPagingTarget(1) with type MMEPagingTarget {Term1,Bytes3} = dec_MMEPagingTarget(Bytes2), %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_RecommendedENBItem_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V3@V0,V3@Buf1} = case Bytes4 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'RecommendedENBItem',Term1,Term2}, {Res1,Bytes6}. 'dec_RecommendedENBItem_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components183(V1@Add4, V1@Buf1, []). 'dec_RecommendedENBItem_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_RelativeMMECapacity(Val) -> if Val bsr 8 =:= 0 -> [align, Val]; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. dec_RelativeMMECapacity(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:1/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end. 'enc_RelayNode-Indicator'(Val) -> if Val =:= true -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_RelayNode-Indicator'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'true',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_RAC(Val) -> Enc1@len = byte_size(Val), if Enc1@len =:= 1 -> Val end. dec_RAC(Bytes) -> begin <> = Bytes, V1@Conv2 = binary:copy(V1@V0), {V1@Conv2,V1@Buf1} end. 'enc_RAT-Restrictions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 4 =:= 0 -> [<>|['enc_RAT-RestrictionsItem'(Comp) || Comp <- Val]] end. 'dec_RAT-Restrictions'(Bytes) -> %% Length with constraint {1,16} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components184(V1@Add2, V1@Buf1, []). 'enc_RAT-RestrictionsItem'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, align, begin %% attribute pLMNidentity(1) with type OCTET STRING Enc3@element = element(2, Val), Enc4@len = byte_size(Enc3@element), if Enc4@len =:= 3 -> Enc3@element end end, begin %% attribute rAT-RestrictionInformation(2) with type BIT STRING Enc5@element = element(3, Val), Enc6@bits = bit_size(Enc5@element), if Enc6@bits =:= 8 -> [<<0:1>>|Enc5@element]; Enc6@bits < 128 -> [<<1:1,Enc6@bits:15>>|Enc5@element]; Enc6@bits < 16384 -> [<<1:1,2:9,Enc6@bits:14>>|Enc5@element]; true -> [<<1:1,0:7>>|encode_fragmented(Enc5@element, 1)] end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_RAT-RestrictionsItem_iE-Extensions'(Enc7@element) end end]. 'enc_RAT-RestrictionsItem_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_RAT-RestrictionsItem_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_RAT-RestrictionsItem_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_RAT-RestrictionsItem'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute pLMNidentity(1) with type OCTET STRING {Term1,Bytes3} = begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:3/binary-unit:8,V3@Buf1/bitstring>> = Bytes2, V3@Conv4 = binary:copy(V3@V0), {V3@Conv4,V3@Buf1} end, %% attribute rAT-RestrictionInformation(2) with type BIT STRING {Term2,Bytes4} = begin {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@V3:8/binary-unit:1,V4@Buf4/bitstring>> -> {V4@V3,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:7,0:1,V4@V7:7,V4@V9:V4@V7/binary-unit:1,V4@Buf10/bitstring>> -> {V4@V9,V4@Buf10}; <<_:7,1:1,0:1,V4@V8:14,V4@V10:V4@V8/binary-unit:1,V4@Buf11/bitstring>> -> {V4@V10,V4@Buf11}; <<_:7,1:1,1:1,V4@V8:6,V4@Buf9/bitstring>> -> {V4@V10,V4@Buf11} = decode_fragmented(V4@V8, V4@Buf9, 1), {V4@V10,V4@Buf11} end, {V4@V3,V4@Buf4} end, {V4@V12,V4@Buf13} = {list_to_bitstring([V4@V0]),V4@Buf1}, {V4@V12,V4@Buf13} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_RAT-RestrictionsItem_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'RAT-RestrictionsItem',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_RAT-RestrictionsItem_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components185(V1@Add4, V1@Buf1, []). 'dec_RAT-RestrictionsItem_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_RAT-Type'(Val) -> if Val =:= nbiot -> <<0:1>>; Val =:= 'nbiot-leo' -> <<1:1,0:7>>; Val =:= 'nbiot-meo' -> <<1:1,1:7>>; Val =:= 'nbiot-geo' -> <<1:1,2:7>>; Val =:= 'nbiot-othersat' -> <<1:1,3:7>>; Val =:= 'eutran-leo' -> <<1:1,4:7>>; Val =:= 'eutran-meo' -> <<1:1,5:7>>; Val =:= 'eutran-geo' -> <<1:1,6:7>>; Val =:= 'eutran-othersat' -> <<1:1,7:7>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_RAT-Type'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'nbiot',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of 0 -> 'nbiot-leo'; 1 -> 'nbiot-meo'; 2 -> 'nbiot-geo'; 3 -> 'nbiot-othersat'; 4 -> 'eutran-leo'; 5 -> 'eutran-meo'; 6 -> 'eutran-geo'; 7 -> 'eutran-othersat'; _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_ReportAmountMDT(Val) -> if Val =:= r1 -> <<0:3>>; Val =:= r2 -> <<1:3>>; Val =:= r4 -> <<2:3>>; Val =:= r8 -> <<3:3>>; Val =:= r16 -> <<4:3>>; Val =:= r32 -> <<5:3>>; Val =:= r64 -> <<6:3>>; Val =:= rinfinity -> <<7:3>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_ReportAmountMDT(Bytes) -> begin <> = Bytes, V1@Int2 = case V1@V0 of 0 -> r1; 1 -> r2; 2 -> r4; 3 -> r8; 4 -> r16; 5 -> r32; 6 -> r64; 7 -> rinfinity end, {V1@Int2,V1@Buf1} end. enc_ReportIntervalMDT(Val) -> if Val =:= ms120 -> <<0:4>>; Val =:= ms240 -> <<1:4>>; Val =:= ms480 -> <<2:4>>; Val =:= ms640 -> <<3:4>>; Val =:= ms1024 -> <<4:4>>; Val =:= ms2048 -> <<5:4>>; Val =:= ms5120 -> <<6:4>>; Val =:= ms10240 -> <<7:4>>; Val =:= min1 -> <<8:4>>; Val =:= min6 -> <<9:4>>; Val =:= min12 -> <<10:4>>; Val =:= min30 -> <<11:4>>; Val =:= min60 -> <<12:4>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_ReportIntervalMDT(Bytes) -> begin <> = Bytes, V1@Int2 = case V1@V0 of 0 -> ms120; 1 -> ms240; 2 -> ms480; 3 -> ms640; 4 -> ms1024; 5 -> ms2048; 6 -> ms5120; 7 -> ms10240; 8 -> min1; 9 -> min6; 10 -> min12; 11 -> min30; 12 -> min60; _ -> exit({error,{asn1,{decode_enumerated,V1@V0}}}) end, {V1@Int2,V1@Buf1} end. enc_M1ReportingTrigger(Val) -> if Val =:= periodic -> <<0:1,0:1>>; Val =:= a2eventtriggered -> <<0:1,1:1>>; Val =:= 'a2eventtriggered-periodic' -> <<1:1,0:7>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_M1ReportingTrigger(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:1/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> periodic; 1 -> a2eventtriggered end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of 0 -> 'a2eventtriggered-periodic'; _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_RequestType(Val) -> [begin Enc1@element = element(4, Val), %% attribute eventType(1) with type ENUMERATED Enc3@element = element(2, Val), %% attribute reportArea(2) with type ENUMERATED Enc5@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc3@element =:= direct -> if Enc5@element =:= ecgi -> <<0:1,0:1,0:1,0:2,0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc5@element}}}) end; Enc3@element =:= 'change-of-serve-cell' -> if Enc5@element =:= ecgi -> <<0:1,0:1,0:1,1:2,0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc5@element}}}) end; Enc3@element =:= 'stop-change-of-serve-cell' -> if Enc5@element =:= ecgi -> <<0:1,0:1,0:1,2:2,0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc5@element}}}) end; true -> exit({error,{asn1,{illegal_enumerated,Enc3@element}}}) end; true -> if Enc3@element =:= direct -> if Enc5@element =:= ecgi -> <<0:1,1:1,0:1,0:2,0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc5@element}}}) end; Enc3@element =:= 'change-of-serve-cell' -> if Enc5@element =:= ecgi -> <<0:1,1:1,0:1,1:2,0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc5@element}}}) end; Enc3@element =:= 'stop-change-of-serve-cell' -> if Enc5@element =:= ecgi -> <<0:1,1:1,0:1,2:2,0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc5@element}}}) end; true -> exit({error,{asn1,{illegal_enumerated,Enc3@element}}}) end end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_RequestType_iE-Extensions'(Enc7@element) end end]. 'enc_RequestType_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_RequestType_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_RequestType_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension186(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_RequestType(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute eventType(1) with type ENUMERATED {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:2/unsigned-unit:1,V3@Buf4/bitstring>> -> V3@Int5 = case V3@V3 of 0 -> direct; 1 -> 'change-of-serve-cell'; 2 -> 'stop-change-of-serve-cell'; _ -> exit({error,{asn1,{decode_enumerated,V3@V3}}}) end, {V3@Int5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> {V3@V3,V3@Buf4} = case V3@Buf2 of <<0:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V6,V3@Buf7}; <<1:1,V3@Buf5/bitstring>> -> V3@Pad9 = bit_size(V3@Buf5) band 7, {V3@V6,V3@Buf7} = case V3@Buf5 of <<_:V3@Pad9,0:1,V3@V11:7,V3@Buf12/bitstring>> when V3@V11 =/= 0 -> {V3@V11,V3@Buf12}; <<_:V3@Pad9,1:1,0:1,V3@V12:14,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> {V3@V12,V3@Buf13}; <<_:V3@Pad9,1:1,1:1,V3@V12:6,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> V3@Mul14 = V3@V12 * 16384, {V3@Mul14,V3@Buf13} end, <> = V3@Buf7, {V3@V15,V3@Buf16} end, V3@Int17 = case V3@V3 of _ -> {asn1_enum,V3@V3} end, {V3@Int17,V3@Buf4} end, {V3@V0,V3@Buf1} end, %% attribute reportArea(2) with type ENUMERATED {Term2,Bytes4} = begin {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@Buf2/bitstring>> -> {'ecgi',V4@Buf2}; <<1:1,V4@Buf2/bitstring>> -> {V4@V3,V4@Buf4} = case V4@Buf2 of <<0:1,V4@V6:6,V4@Buf7/bitstring>> -> {V4@V6,V4@Buf7}; <<1:1,V4@Buf5/bitstring>> -> V4@Pad9 = bit_size(V4@Buf5) band 7, {V4@V6,V4@Buf7} = case V4@Buf5 of <<_:V4@Pad9,0:1,V4@V11:7,V4@Buf12/bitstring>> when V4@V11 =/= 0 -> {V4@V11,V4@Buf12}; <<_:V4@Pad9,1:1,0:1,V4@V12:14,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> {V4@V12,V4@Buf13}; <<_:V4@Pad9,1:1,1:1,V4@V12:6,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> V4@Mul14 = V4@V12 * 16384, {V4@Mul14,V4@Buf13} end, <> = V4@Buf7, {V4@V15,V4@Buf16} end, V4@Int17 = case V4@V3 of _ -> {asn1_enum,V4@V3} end, {V4@Int17,V4@Buf4} end, {V4@V0,V4@Buf1} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_RequestType_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'RequestType',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_RequestType_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components187(V1@Add4, V1@Buf1, []). 'dec_RequestType_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension188(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_RequestTypeAdditionalInfo(Val) -> if Val =:= includePSCell -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_RequestTypeAdditionalInfo(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'includePSCell',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_RIMTransfer(Val) -> [begin Enc1@element = element(3, Val), Enc2@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, align, begin %% attribute rIMInformation(1) with type OCTET STRING Enc4@element = element(2, Val), Enc5@len = byte_size(Enc4@element), if Enc5@len < 128 -> [Enc5@len|Enc4@element]; Enc5@len < 16384 -> [<<2:2,Enc5@len:14>>|Enc4@element]; true -> encode_fragmented(Enc4@element, 8) end end, begin %% attribute rIMRoutingAddress(2) with type RIMRoutingAddress Enc6@element = element(3, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> enc_RIMRoutingAddress(Enc6@element) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc8@element = element(4, Val), if Enc8@element =:= asn1_NOVALUE -> []; true -> 'enc_RIMTransfer_iE-Extensions'(Enc8@element) end end]. 'enc_RIMTransfer_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_RIMTransfer_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_RIMTransfer_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_RIMTransfer(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute rIMInformation(1) with type OCTET STRING {Term1,Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, V3@Conv10 = binary:copy(V3@V0), {V3@Conv10,V3@Buf1} end, %% attribute rIMRoutingAddress(2) with type RIMRoutingAddress {Term2,Bytes4} = case (Opt bsr 1) band 1 of 1 -> dec_RIMRoutingAddress(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_RIMTransfer_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V4@V0,V4@Buf1} = case Bytes5 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'RIMTransfer',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_RIMTransfer_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components189(V1@Add4, V1@Buf1, []). 'dec_RIMTransfer_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_RIMInformation(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. dec_RIMInformation(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. enc_RIMRoutingAddress(Val) -> {ChoiceTag,ChoiceVal} = Val, if ChoiceTag =:= 'gERAN-Cell-ID' -> [<<0:1>>|'enc_GERAN-Cell-ID'(ChoiceVal)]; ChoiceTag =:= 'targetRNC-ID' -> begin Enc2@output = 'enc_TargetRNC-ID'(ChoiceVal), Enc2@bin = complete(Enc2@output), Enc2@len = byte_size(Enc2@bin), if Enc2@len < 128 -> [<<1:1,0:7>>, align, Enc2@len|Enc2@bin]; Enc2@len < 16384 -> [<<1:1,0:7>>, align, <<2:2,Enc2@len:14>>|Enc2@bin]; true -> [<<1:1,0:7>>, align|encode_fragmented(Enc2@bin, 8)] end end; ChoiceTag =:= 'eHRPD-Sector-ID' -> begin Enc4@output = begin Enc3@len = byte_size(ChoiceVal), if Enc3@len =:= 16 -> ChoiceVal end end, Enc4@bin = Enc4@output, [<<1:1,1:7>>, align, 16|Enc4@bin] end end. dec_RIMRoutingAddress(Bytes) -> case Bytes of <<0:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin ignore, {0,Bytes1} end, case Choice of 0 -> {Val,NewBytes} = begin 'dec_GERAN-Cell-ID'(Bytes2) end, {{'gERAN-Cell-ID',Val},NewBytes} end; <<1:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin {V1@V0,V1@Buf1} = case Bytes1 of <<0:1,V1@V3:6,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end, begin V2@Pad3 = bit_size(Bytes2) band 7, {V2@V0,V2@Buf1} = case Bytes2 of <<_:V2@Pad3,0:1,V2@V5:7,V2@V7:V2@V5/binary-unit:8,V2@Buf8/bitstring>> -> {V2@V7,V2@Buf8}; <<_:V2@Pad3,1:1,0:1,V2@V6:14,V2@V8:V2@V6/binary-unit:8,V2@Buf9/bitstring>> -> {V2@V8,V2@Buf9}; <<_:V2@Pad3,1:1,1:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V8,V2@Buf9} = decode_fragmented(V2@V6, V2@Buf7, 8), {V2@V8,V2@Buf9} end end, case Choice of 0 -> {Val,NewBytes} = begin {TmpVal,_} = 'dec_TargetRNC-ID'(V2@V0), {TmpVal,V2@Buf1} end, {{'targetRNC-ID',Val},NewBytes}; 1 -> {Val,NewBytes} = begin {TmpVal,_} = begin V3@Pad2 = bit_size(V2@V0) band 7, <<_:V3@Pad2,V3@V0:16/binary-unit:8,V3@Buf1/bitstring>> = V2@V0, V3@Conv4 = binary:copy(V3@V0), {V3@Conv4,V3@Buf1} end, {TmpVal,V2@Buf1} end, {{'eHRPD-Sector-ID',Val},NewBytes}; _ -> {{asn1_ExtAlt,V2@V0},V2@Buf1} end end. enc_ReportArea(Val) -> if Val =:= ecgi -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_ReportArea(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'ecgi',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_RepetitionPeriod(Val) -> if Val bsr 12 =:= 0 -> [align|<>]; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. dec_RepetitionPeriod(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end. enc_RLFReportInformation(Val) -> [begin Enc1@element = element(3, Val), Enc2@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, align, begin %% attribute uE-RLF-Report-Container(1) with type OCTET STRING Enc4@element = element(2, Val), Enc5@len = byte_size(Enc4@element), if Enc5@len < 128 -> [Enc5@len|Enc4@element]; Enc5@len < 16384 -> [<<2:2,Enc5@len:14>>|Enc4@element]; true -> encode_fragmented(Enc4@element, 8) end end, begin %% attribute uE-RLF-Report-Container-for-extended-bands(2) with type OCTET STRING Enc6@element = element(3, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> begin Enc7@len = byte_size(Enc6@element), if Enc7@len < 128 -> [Enc7@len|Enc6@element]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc6@element]; true -> encode_fragmented(Enc6@element, 8) end end end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc9@element = element(4, Val), if Enc9@element =:= asn1_NOVALUE -> []; true -> 'enc_RLFReportInformation_iE-Extensions'(Enc9@element) end end]. 'enc_RLFReportInformation_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_RLFReportInformation_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_RLFReportInformation_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension190(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_RLFReportInformation(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute uE-RLF-Report-Container(1) with type OCTET STRING {Term1,Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, V3@Conv10 = binary:copy(V3@V0), {V3@Conv10,V3@Buf1} end, %% attribute uE-RLF-Report-Container-for-extended-bands(2) with type OCTET STRING {Term2,Bytes4} = case (Opt bsr 1) band 1 of 1 -> begin V4@Pad3 = bit_size(Bytes3) band 7, {V4@V0,V4@Buf1} = case Bytes3 of <<_:V4@Pad3,0:1,V4@V5:7,V4@V7:V4@V5/binary-unit:8,V4@Buf8/bitstring>> -> {V4@V7,V4@Buf8}; <<_:V4@Pad3,1:1,0:1,V4@V6:14,V4@V8:V4@V6/binary-unit:8,V4@Buf9/bitstring>> -> {V4@V8,V4@Buf9}; <<_:V4@Pad3,1:1,1:1,V4@V6:6,V4@Buf7/bitstring>> -> {V4@V8,V4@Buf9} = decode_fragmented(V4@V6, V4@Buf7, 8), {V4@V8,V4@Buf9} end, V4@Conv10 = binary:copy(V4@V0), {V4@Conv10,V4@Buf1} end; 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_RLFReportInformation_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'RLFReportInformation',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_RLFReportInformation_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components191(V1@Add4, V1@Buf1, []). 'dec_RLFReportInformation_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension192(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_RNC-ID'(Val) -> if Val bsr 12 =:= 0 -> [align|<>]; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. 'dec_RNC-ID'(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end. 'enc_RRC-Container'(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. 'dec_RRC-Container'(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. 'enc_RRC-Establishment-Cause'(Val) -> if Val =:= emergency -> <<0:1,0:3>>; Val =:= highPriorityAccess -> <<0:1,1:3>>; Val =:= 'mt-Access' -> <<0:1,2:3>>; Val =:= 'mo-Signalling' -> <<0:1,3:3>>; Val =:= 'mo-Data' -> <<0:1,4:3>>; Val =:= 'delay-TolerantAccess' -> <<1:1,0:7>>; Val =:= 'mo-VoiceCall' -> <<1:1,1:7>>; Val =:= 'mo-ExceptionData' -> <<1:1,2:7>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_RRC-Establishment-Cause'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:3/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> emergency; 1 -> highPriorityAccess; 2 -> 'mt-Access'; 3 -> 'mo-Signalling'; 4 -> 'mo-Data'; _ -> exit({error,{asn1,{decode_enumerated,V1@V3}}}) end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of 0 -> 'delay-TolerantAccess'; 1 -> 'mo-VoiceCall'; 2 -> 'mo-ExceptionData'; _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_ECGIListForRestart(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 8 =:= 0 -> [align, Enc1@len@sub|['enc_EUTRAN-CGI'(Comp) || Comp <- Val]] end. dec_ECGIListForRestart(Bytes) -> %% Length with constraint {1,256} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:1/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components193(V1@Add4, V1@Buf1, []). 'enc_Routing-ID'(Val) -> if Val bsr 8 =:= 0 -> [align, Val]; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. 'dec_Routing-ID'(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:1/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end. enc_SecurityKey(Val) -> Enc1@bits = bit_size(Val), if Enc1@bits =:= 256 -> [align|Val] end. dec_SecurityKey(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:256/binary-unit:1,V1@Buf1/bitstring>> = Bytes, {V1@V4,V1@Buf5} = {list_to_bitstring([V1@V0]),V1@Buf1}, {V1@V4,V1@Buf5} end. enc_SecurityContext(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute nextHopChainingCount(1) with type INTEGER Enc3@element = element(2, Val), if Enc3@element bsr 3 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc3@element}}}) end end, align, begin %% attribute nextHopParameter(2) with type BIT STRING Enc5@element = element(3, Val), Enc6@bits = bit_size(Enc5@element), if Enc6@bits =:= 256 -> Enc5@element end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_SecurityContext_iE-Extensions'(Enc7@element) end end]. 'enc_SecurityContext_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_SecurityContext_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_SecurityContext_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_SecurityContext(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute nextHopChainingCount(1) with type INTEGER {Term1,Bytes3} = begin <> = Bytes2, {V3@V0,V3@Buf1} end, %% attribute nextHopParameter(2) with type BIT STRING {Term2,Bytes4} = begin V4@Pad2 = bit_size(Bytes3) band 7, <<_:V4@Pad2,V4@V0:256/binary-unit:1,V4@Buf1/bitstring>> = Bytes3, {V4@V4,V4@Buf5} = {list_to_bitstring([V4@V0]),V4@Buf1}, {V4@V4,V4@Buf5} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_SecurityContext_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'SecurityContext',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_SecurityContext_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components194(V1@Add4, V1@Buf1, []). 'dec_SecurityContext_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_SecondaryRATType(Val) -> if Val =:= nR -> <<0:1>>; Val =:= unlicensed -> <<1:1,0:7>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_SecondaryRATType(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'nR',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of 0 -> unlicensed; _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_SecondaryRATDataUsageRequest(Val) -> if Val =:= requested -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_SecondaryRATDataUsageRequest(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'requested',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_SecondaryRATDataUsageReportList(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 8 =:= 0 -> [align, Enc1@len@sub|['enc_SecondaryRATDataUsageReportList_ProtocolIE-Field'(Comp) || Comp <- Val]] end. 'enc_SecondaryRATDataUsageReportList_ProtocolIE-Field'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute value(3) with type Value Enc6@element = element(4, Val), Enc7@output = enc_os_Value195(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_SecondaryRATDataUsageReportList(Bytes) -> %% Length with constraint {1,256} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:1/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components196(V1@Add4, V1@Buf1, []). 'dec_SecondaryRATDataUsageReportList_ProtocolIE-Field'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute value(3) with type Value {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Value197(Tmpterm1, Term1), Res1 = {'ProtocolIE-Field',Term1,Term2,Term3}, {Res1,Bytes3}. enc_SecondaryRATDataUsageReportItem(Val) -> [begin Enc1@element = element(5, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute e-RAB-ID(1) with type INTEGER Enc3@element = element(2, Val), if Enc3@element bsr 4 =:= 0 -> <<0:1,Enc3@element:4>>; true -> [<<1:1>>, align|encode_unconstrained_number(Enc3@element)] end end, begin %% attribute secondaryRATType(2) with type ENUMERATED Enc5@element = element(3, Val), if Enc5@element =:= nR -> <<0:1>>; Enc5@element =:= unlicensed -> <<1:1,0:7>>; true -> exit({error,{asn1,{illegal_enumerated,Enc5@element}}}) end end, begin %% attribute e-RABUsageReportList(3) with type E-RABUsageReportList Enc7@element = element(4, Val), 'enc_E-RABUsageReportList'(Enc7@element) end|begin %% attribute iE-Extensions(4) with type SEQUENCE OF Enc8@element = element(5, Val), if Enc8@element =:= asn1_NOVALUE -> []; true -> 'enc_SecondaryRATDataUsageReportItem_iE-Extensions'(Enc8@element) end end]. 'enc_SecondaryRATDataUsageReportItem_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_SecondaryRATDataUsageReportItem_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_SecondaryRATDataUsageReportItem_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_SecondaryRATDataUsageReportItem(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute e-RAB-ID(1) with type INTEGER {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:4/unsigned-unit:1,V3@Buf4/bitstring>> -> {V3@V3,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, <> = V3@Buf4, {V3@V12,V3@Buf13} end, {V3@V0,V3@Buf1} end, %% attribute secondaryRATType(2) with type ENUMERATED {Term2,Bytes4} = begin {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@Buf2/bitstring>> -> {'nR',V4@Buf2}; <<1:1,V4@Buf2/bitstring>> -> {V4@V3,V4@Buf4} = case V4@Buf2 of <<0:1,V4@V6:6,V4@Buf7/bitstring>> -> {V4@V6,V4@Buf7}; <<1:1,V4@Buf5/bitstring>> -> V4@Pad9 = bit_size(V4@Buf5) band 7, {V4@V6,V4@Buf7} = case V4@Buf5 of <<_:V4@Pad9,0:1,V4@V11:7,V4@Buf12/bitstring>> when V4@V11 =/= 0 -> {V4@V11,V4@Buf12}; <<_:V4@Pad9,1:1,0:1,V4@V12:14,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> {V4@V12,V4@Buf13}; <<_:V4@Pad9,1:1,1:1,V4@V12:6,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> V4@Mul14 = V4@V12 * 16384, {V4@Mul14,V4@Buf13} end, <> = V4@Buf7, {V4@V15,V4@Buf16} end, V4@Int17 = case V4@V3 of 0 -> unlicensed; _ -> {asn1_enum,V4@V3} end, {V4@Int17,V4@Buf4} end, {V4@V0,V4@Buf1} end, %% attribute e-RABUsageReportList(3) with type E-RABUsageReportList {Term3,Bytes5} = 'dec_E-RABUsageReportList'(Bytes4), %% attribute iE-Extensions(4) with type SEQUENCE OF {Term4,Bytes6} = case Opt band 1 of 1 -> 'dec_SecondaryRATDataUsageReportItem_iE-Extensions'(Bytes5); 0 -> {asn1_NOVALUE,Bytes5} end, %% Extensions {Extensions,Bytes7} = case Ext of 0 -> {<<>>,Bytes6}; 1 -> {V5@V0,V5@Buf1} = case Bytes6 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes8= skipextensions(Bytes7, 1, Extensions), Res1 = {'SecondaryRATDataUsageReportItem',Term1,Term2,Term3,Term4}, {Res1,Bytes8}. 'dec_SecondaryRATDataUsageReportItem_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components198(V1@Add4, V1@Buf1, []). 'dec_SecondaryRATDataUsageReportItem_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_SecurityIndication(Val) -> [begin Enc1@element = element(3, Val), %% attribute integrityProtectionIndication(1) with type ENUMERATED Enc3@element = element(2, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc3@element =:= required -> <<0:1,0:1,0:1,0:2>>; Enc3@element =:= preferred -> <<0:1,0:1,0:1,1:2>>; Enc3@element =:= 'not-needed' -> <<0:1,0:1,0:1,2:2>>; true -> exit({error,{asn1,{illegal_enumerated,Enc3@element}}}) end; true -> if Enc3@element =:= required -> <<0:1,1:1,0:1,0:2>>; Enc3@element =:= preferred -> <<0:1,1:1,0:1,1:2>>; Enc3@element =:= 'not-needed' -> <<0:1,1:1,0:1,2:2>>; true -> exit({error,{asn1,{illegal_enumerated,Enc3@element}}}) end end end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc5@element = element(3, Val), if Enc5@element =:= asn1_NOVALUE -> []; true -> 'enc_SecurityIndication_iE-Extensions'(Enc5@element) end end]. 'enc_SecurityIndication_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_SecurityIndication_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_SecurityIndication_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_SecurityIndication(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute integrityProtectionIndication(1) with type ENUMERATED {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:2/unsigned-unit:1,V3@Buf4/bitstring>> -> V3@Int5 = case V3@V3 of 0 -> required; 1 -> preferred; 2 -> 'not-needed'; _ -> exit({error,{asn1,{decode_enumerated,V3@V3}}}) end, {V3@Int5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> {V3@V3,V3@Buf4} = case V3@Buf2 of <<0:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V6,V3@Buf7}; <<1:1,V3@Buf5/bitstring>> -> V3@Pad9 = bit_size(V3@Buf5) band 7, {V3@V6,V3@Buf7} = case V3@Buf5 of <<_:V3@Pad9,0:1,V3@V11:7,V3@Buf12/bitstring>> when V3@V11 =/= 0 -> {V3@V11,V3@Buf12}; <<_:V3@Pad9,1:1,0:1,V3@V12:14,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> {V3@V12,V3@Buf13}; <<_:V3@Pad9,1:1,1:1,V3@V12:6,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> V3@Mul14 = V3@V12 * 16384, {V3@Mul14,V3@Buf13} end, <> = V3@Buf7, {V3@V15,V3@Buf16} end, V3@Int17 = case V3@V3 of _ -> {asn1_enum,V3@V3} end, {V3@Int17,V3@Buf4} end, {V3@V0,V3@Buf1} end, %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_SecurityIndication_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V4@V0,V4@Buf1} = case Bytes4 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'SecurityIndication',Term1,Term2}, {Res1,Bytes6}. 'dec_SecurityIndication_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components199(V1@Add4, V1@Buf1, []). 'dec_SecurityIndication_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_SecurityResult(Val) -> [begin Enc1@element = element(3, Val), %% attribute integrityProtectionResult(1) with type ENUMERATED Enc3@element = element(2, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc3@element =:= performed -> <<0:1,0:1,0:1,0:1>>; Enc3@element =:= 'not-performed' -> <<0:1,0:1,0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc3@element}}}) end; true -> if Enc3@element =:= performed -> <<0:1,1:1,0:1,0:1>>; Enc3@element =:= 'not-performed' -> <<0:1,1:1,0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc3@element}}}) end end end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc5@element = element(3, Val), if Enc5@element =:= asn1_NOVALUE -> []; true -> 'enc_SecurityResult_iE-Extensions'(Enc5@element) end end]. 'enc_SecurityResult_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_SecurityResult_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_SecurityResult_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_SecurityResult(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute integrityProtectionResult(1) with type ENUMERATED {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:1/unsigned-unit:1,V3@Buf4/bitstring>> -> V3@Int5 = case V3@V3 of 0 -> performed; 1 -> 'not-performed' end, {V3@Int5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> {V3@V3,V3@Buf4} = case V3@Buf2 of <<0:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V6,V3@Buf7}; <<1:1,V3@Buf5/bitstring>> -> V3@Pad9 = bit_size(V3@Buf5) band 7, {V3@V6,V3@Buf7} = case V3@Buf5 of <<_:V3@Pad9,0:1,V3@V11:7,V3@Buf12/bitstring>> when V3@V11 =/= 0 -> {V3@V11,V3@Buf12}; <<_:V3@Pad9,1:1,0:1,V3@V12:14,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> {V3@V12,V3@Buf13}; <<_:V3@Pad9,1:1,1:1,V3@V12:6,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> V3@Mul14 = V3@V12 * 16384, {V3@Mul14,V3@Buf13} end, <> = V3@Buf7, {V3@V15,V3@Buf16} end, V3@Int17 = case V3@V3 of _ -> {asn1_enum,V3@V3} end, {V3@Int17,V3@Buf4} end, {V3@V0,V3@Buf1} end, %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_SecurityResult_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V4@V0,V4@Buf1} = case Bytes4 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'SecurityResult',Term1,Term2}, {Res1,Bytes6}. 'dec_SecurityResult_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components200(V1@Add4, V1@Buf1, []). 'dec_SecurityResult_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_SensorMeasConfig(Val) -> if Val =:= setup -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_SensorMeasConfig(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'setup',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_SensorMeasConfigNameItem(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute sensorNameConfig(1) with type SensorNameConfig Enc3@element = element(2, Val), enc_SensorNameConfig(Enc3@element) end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc4@element = element(3, Val), if Enc4@element =:= asn1_NOVALUE -> []; true -> 'enc_SensorMeasConfigNameItem_iE-Extensions'(Enc4@element) end end]. 'enc_SensorMeasConfigNameItem_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_SensorMeasConfigNameItem_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_SensorMeasConfigNameItem_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_SensorMeasConfigNameItem(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute sensorNameConfig(1) with type SensorNameConfig {Term1,Bytes3} = dec_SensorNameConfig(Bytes2), %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_SensorMeasConfigNameItem_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V3@V0,V3@Buf1} = case Bytes4 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'SensorMeasConfigNameItem',Term1,Term2}, {Res1,Bytes6}. 'dec_SensorMeasConfigNameItem_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components201(V1@Add4, V1@Buf1, []). 'dec_SensorMeasConfigNameItem_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_SensorMeasConfigNameList(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 3 -> [<>|[enc_SensorMeasConfigNameItem(Comp) || Comp <- Val]] end. dec_SensorMeasConfigNameList(Bytes) -> %% Length with constraint {1,3} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components202(V1@Add2, V1@Buf1, []). enc_SensorMeasurementConfiguration(Val) -> [begin Enc1@element = element(3, Val), Enc2@element = element(4, Val), %% attribute sensorMeasConfig(1) with type ENUMERATED Enc4@element = element(2, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> if Enc4@element =:= setup -> <<0:1,0:1,0:1,0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end; true -> if Enc4@element =:= setup -> <<0:1,0:1,1:1,0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end; true -> if Enc2@element =:= asn1_NOVALUE -> if Enc4@element =:= setup -> <<0:1,1:1,0:1,0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end; true -> if Enc4@element =:= setup -> <<0:1,1:1,1:1,0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end end end, begin %% attribute sensorMeasConfigNameList(2) with type SensorMeasConfigNameList Enc6@element = element(3, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> enc_SensorMeasConfigNameList(Enc6@element) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc8@element = element(4, Val), if Enc8@element =:= asn1_NOVALUE -> []; true -> 'enc_SensorMeasurementConfiguration_iE-Extensions'(Enc8@element) end end]. 'enc_SensorMeasurementConfiguration_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_SensorMeasurementConfiguration_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_SensorMeasurementConfiguration_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_SensorMeasurementConfiguration(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute sensorMeasConfig(1) with type ENUMERATED {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@Buf2/bitstring>> -> {'setup',V3@Buf2}; <<1:1,V3@Buf2/bitstring>> -> {V3@V3,V3@Buf4} = case V3@Buf2 of <<0:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V6,V3@Buf7}; <<1:1,V3@Buf5/bitstring>> -> V3@Pad9 = bit_size(V3@Buf5) band 7, {V3@V6,V3@Buf7} = case V3@Buf5 of <<_:V3@Pad9,0:1,V3@V11:7,V3@Buf12/bitstring>> when V3@V11 =/= 0 -> {V3@V11,V3@Buf12}; <<_:V3@Pad9,1:1,0:1,V3@V12:14,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> {V3@V12,V3@Buf13}; <<_:V3@Pad9,1:1,1:1,V3@V12:6,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> V3@Mul14 = V3@V12 * 16384, {V3@Mul14,V3@Buf13} end, <> = V3@Buf7, {V3@V15,V3@Buf16} end, V3@Int17 = case V3@V3 of _ -> {asn1_enum,V3@V3} end, {V3@Int17,V3@Buf4} end, {V3@V0,V3@Buf1} end, %% attribute sensorMeasConfigNameList(2) with type SensorMeasConfigNameList {Term2,Bytes4} = case (Opt bsr 1) band 1 of 1 -> dec_SensorMeasConfigNameList(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_SensorMeasurementConfiguration_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V4@V0,V4@Buf1} = case Bytes5 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'SensorMeasurementConfiguration',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_SensorMeasurementConfiguration_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components203(V1@Add4, V1@Buf1, []). 'dec_SensorMeasurementConfiguration_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_SensorNameConfig(Val) -> {ChoiceTag,ChoiceVal} = Val, if ChoiceTag =:= uncompensatedBarometricConfig -> if ChoiceVal =:= true -> <<0:1,0:1>>; true -> exit({error,{asn1,{illegal_enumerated,ChoiceVal}}}) end; ChoiceTag =:= 'choice-Extensions' -> [<<1:1>>|'enc_SensorNameConfig_choice-Extensions'(ChoiceVal)] end. 'enc_SensorNameConfig_choice-Extensions'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute value(3) with type Value Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_SensorNameConfig(Bytes) -> {Choice,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, case Choice of 0 -> {Val,NewBytes} = begin begin {V2@V0,V2@Buf1} = case Bytes1 of <<0:1,V2@Buf2/bitstring>> -> {'true',V2@Buf2}; <<1:1,V2@Buf2/bitstring>> -> {V2@V3,V2@Buf4} = case V2@Buf2 of <<0:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V6,V2@Buf7}; <<1:1,V2@Buf5/bitstring>> -> V2@Pad9 = bit_size(V2@Buf5) band 7, {V2@V6,V2@Buf7} = case V2@Buf5 of <<_:V2@Pad9,0:1,V2@V11:7,V2@Buf12/bitstring>> when V2@V11 =/= 0 -> {V2@V11,V2@Buf12}; <<_:V2@Pad9,1:1,0:1,V2@V12:14,V2@Buf13/bitstring>> when V2@V12 =/= 0 -> {V2@V12,V2@Buf13}; <<_:V2@Pad9,1:1,1:1,V2@V12:6,V2@Buf13/bitstring>> when V2@V12 =/= 0 -> V2@Mul14 = V2@V12 * 16384, {V2@Mul14,V2@Buf13} end, <> = V2@Buf7, {V2@V15,V2@Buf16} end, V2@Int17 = case V2@V3 of _ -> {asn1_enum,V2@V3} end, {V2@Int17,V2@Buf4} end, {V2@V0,V2@Buf1} end end, {{uncompensatedBarometricConfig,Val},NewBytes}; 1 -> {Val,NewBytes} = begin 'dec_SensorNameConfig_choice-Extensions'(Bytes1) end, {{'choice-Extensions',Val},NewBytes} end. 'dec_SensorNameConfig_choice-Extensions'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute value(3) with type Value {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'SensorNameConfig_choice-Extensions',Term1,Term2,Term3}, {Res1,Bytes3}. enc_SerialNumber(Val) -> Enc1@bits = bit_size(Val), if Enc1@bits =:= 16 -> Val end. dec_SerialNumber(Bytes) -> begin <> = Bytes, {V1@V2,V1@Buf3} = {list_to_bitstring([V1@V0]),V1@Buf1}, {V1@V2,V1@Buf3} end. enc_ServiceType(Val) -> if Val =:= 'qMC-for-streaming-service' -> <<0:1,0:1>>; Val =:= 'qMC-for-MTSI-service' -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_ServiceType(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:1/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> 'qMC-for-streaming-service'; 1 -> 'qMC-for-MTSI-service' end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_SONInformation(Val) -> {ChoiceTag,ChoiceVal} = Val, if ChoiceTag =:= sONInformationRequest -> if ChoiceVal =:= 'x2TNL-Configuration-Info' -> <<0:1,0:1,0:1>>; ChoiceVal =:= 'time-Synchronisation-Info' -> <<0:1,0:1,1:1,0:7>>; ChoiceVal =:= 'activate-Muting' -> <<0:1,0:1,1:1,1:7>>; ChoiceVal =:= 'deactivate-Muting' -> <<0:1,0:1,1:1,2:7>>; true -> exit({error,{asn1,{illegal_enumerated,ChoiceVal}}}) end; ChoiceTag =:= sONInformationReply -> [<<0:1,1:1>>|enc_SONInformationReply(ChoiceVal)]; ChoiceTag =:= 'sONInformation-Extension' -> begin Enc4@output = 'enc_SONInformation-Extension'(ChoiceVal), Enc4@bin = complete(Enc4@output), Enc4@len = byte_size(Enc4@bin), if Enc4@len < 128 -> [<<1:1,0:7>>, align, Enc4@len|Enc4@bin]; Enc4@len < 16384 -> [<<1:1,0:7>>, align, <<2:2,Enc4@len:14>>|Enc4@bin]; true -> [<<1:1,0:7>>, align|encode_fragmented(Enc4@bin, 8)] end end end. dec_SONInformation(Bytes) -> case Bytes of <<0:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin <> = Bytes1, {V1@V0,V1@Buf1} end, case Choice of 0 -> {Val,NewBytes} = begin begin {V2@V0,V2@Buf1} = case Bytes2 of <<0:1,V2@Buf2/bitstring>> -> {'x2TNL-Configuration-Info',V2@Buf2}; <<1:1,V2@Buf2/bitstring>> -> {V2@V3,V2@Buf4} = case V2@Buf2 of <<0:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V6,V2@Buf7}; <<1:1,V2@Buf5/bitstring>> -> V2@Pad9 = bit_size(V2@Buf5) band 7, {V2@V6,V2@Buf7} = case V2@Buf5 of <<_:V2@Pad9,0:1,V2@V11:7,V2@Buf12/bitstring>> when V2@V11 =/= 0 -> {V2@V11,V2@Buf12}; <<_:V2@Pad9,1:1,0:1,V2@V12:14,V2@Buf13/bitstring>> when V2@V12 =/= 0 -> {V2@V12,V2@Buf13}; <<_:V2@Pad9,1:1,1:1,V2@V12:6,V2@Buf13/bitstring>> when V2@V12 =/= 0 -> V2@Mul14 = V2@V12 * 16384, {V2@Mul14,V2@Buf13} end, <> = V2@Buf7, {V2@V15,V2@Buf16} end, V2@Int17 = case V2@V3 of 0 -> 'time-Synchronisation-Info'; 1 -> 'activate-Muting'; 2 -> 'deactivate-Muting'; _ -> {asn1_enum,V2@V3} end, {V2@Int17,V2@Buf4} end, {V2@V0,V2@Buf1} end end, {{sONInformationRequest,Val},NewBytes}; 1 -> {Val,NewBytes} = begin dec_SONInformationReply(Bytes2) end, {{sONInformationReply,Val},NewBytes} end; <<1:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin {V1@V0,V1@Buf1} = case Bytes1 of <<0:1,V1@V3:6,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end, begin V2@Pad3 = bit_size(Bytes2) band 7, {V2@V0,V2@Buf1} = case Bytes2 of <<_:V2@Pad3,0:1,V2@V5:7,V2@V7:V2@V5/binary-unit:8,V2@Buf8/bitstring>> -> {V2@V7,V2@Buf8}; <<_:V2@Pad3,1:1,0:1,V2@V6:14,V2@V8:V2@V6/binary-unit:8,V2@Buf9/bitstring>> -> {V2@V8,V2@Buf9}; <<_:V2@Pad3,1:1,1:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V8,V2@Buf9} = decode_fragmented(V2@V6, V2@Buf7, 8), {V2@V8,V2@Buf9} end end, case Choice of 0 -> {Val,NewBytes} = begin {TmpVal,_} = 'dec_SONInformation-Extension'(V2@V0), {TmpVal,V2@Buf1} end, {{'sONInformation-Extension',Val},NewBytes}; _ -> {{asn1_ExtAlt,V2@V0},V2@Buf1} end end. 'enc_SONInformation-Extension'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute value(3) with type Value Enc6@element = element(4, Val), Enc7@output = enc_os_Value204(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_SONInformation-Extension'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute value(3) with type Value {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Value205(Tmpterm1, Term1), Res1 = {'SONInformation-Extension',Term1,Term2,Term3}, {Res1,Bytes3}. enc_SONInformationRequest(Val) -> if Val =:= 'x2TNL-Configuration-Info' -> <<0:1>>; Val =:= 'time-Synchronisation-Info' -> <<1:1,0:7>>; Val =:= 'activate-Muting' -> <<1:1,1:7>>; Val =:= 'deactivate-Muting' -> <<1:1,2:7>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_SONInformationRequest(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'x2TNL-Configuration-Info',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of 0 -> 'time-Synchronisation-Info'; 1 -> 'activate-Muting'; 2 -> 'deactivate-Muting'; _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_SONInformationReply(Val) -> [begin Enc1@element = element(2, Val), Enc2@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin %% attribute x2TNLConfigurationInfo(1) with type X2TNLConfigurationInfo Enc4@element = element(2, Val), if Enc4@element =:= asn1_NOVALUE -> []; true -> enc_X2TNLConfigurationInfo(Enc4@element) end end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc6@element = element(3, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> 'enc_SONInformationReply_iE-Extensions'(Enc6@element) end end]. 'enc_SONInformationReply_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_SONInformationReply_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_SONInformationReply_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension206(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_SONInformationReply(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute x2TNLConfigurationInfo(1) with type X2TNLConfigurationInfo {Term1,Bytes3} = case (Opt bsr 1) band 1 of 1 -> dec_X2TNLConfigurationInfo(Bytes2); 0 -> {asn1_NOVALUE,Bytes2} end, %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_SONInformationReply_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V3@V0,V3@Buf1} = case Bytes4 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'SONInformationReply',Term1,Term2}, {Res1,Bytes6}. 'dec_SONInformationReply_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components207(V1@Add4, V1@Buf1, []). 'dec_SONInformationReply_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension208(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_SONInformationReport(Val) -> {ChoiceTag,ChoiceVal} = Val, if ChoiceTag =:= rLFReportInformation -> [<<0:1>>|enc_RLFReportInformation(ChoiceVal)] end. dec_SONInformationReport(Bytes) -> case Bytes of <<0:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin ignore, {0,Bytes1} end, case Choice of 0 -> {Val,NewBytes} = begin dec_RLFReportInformation(Bytes2) end, {{rLFReportInformation,Val},NewBytes} end; <<1:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin {V1@V0,V1@Buf1} = case Bytes1 of <<0:1,V1@V3:6,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end, begin V2@Pad3 = bit_size(Bytes2) band 7, {V2@V0,V2@Buf1} = case Bytes2 of <<_:V2@Pad3,0:1,V2@V5:7,V2@V7:V2@V5/binary-unit:8,V2@Buf8/bitstring>> -> {V2@V7,V2@Buf8}; <<_:V2@Pad3,1:1,0:1,V2@V6:14,V2@V8:V2@V6/binary-unit:8,V2@Buf9/bitstring>> -> {V2@V8,V2@Buf9}; <<_:V2@Pad3,1:1,1:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V8,V2@Buf9} = decode_fragmented(V2@V6, V2@Buf7, 8), {V2@V8,V2@Buf9} end end, case Choice of _ -> {{asn1_ExtAlt,V2@V0},V2@Buf1} end end. enc_SONConfigurationTransfer(Val) -> [begin Enc1@element = element(5, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute targeteNB-ID(1) with type TargeteNB-ID Enc3@element = element(2, Val), 'enc_TargeteNB-ID'(Enc3@element) end, begin %% attribute sourceeNB-ID(2) with type SourceeNB-ID Enc4@element = element(3, Val), 'enc_SourceeNB-ID'(Enc4@element) end, begin %% attribute sONInformation(3) with type SONInformation Enc5@element = element(4, Val), enc_SONInformation(Enc5@element) end|begin %% attribute iE-Extensions(4) with type SEQUENCE OF Enc6@element = element(5, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> 'enc_SONConfigurationTransfer_iE-Extensions'(Enc6@element) end end]. 'enc_SONConfigurationTransfer_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_SONConfigurationTransfer_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_SONConfigurationTransfer_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension209(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_SONConfigurationTransfer(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute targeteNB-ID(1) with type TargeteNB-ID {Term1,Bytes3} = 'dec_TargeteNB-ID'(Bytes2), %% attribute sourceeNB-ID(2) with type SourceeNB-ID {Term2,Bytes4} = 'dec_SourceeNB-ID'(Bytes3), %% attribute sONInformation(3) with type SONInformation {Term3,Bytes5} = dec_SONInformation(Bytes4), %% attribute iE-Extensions(4) with type SEQUENCE OF {Term4,Bytes6} = case Opt band 1 of 1 -> 'dec_SONConfigurationTransfer_iE-Extensions'(Bytes5); 0 -> {asn1_NOVALUE,Bytes5} end, %% Extensions {Extensions,Bytes7} = case Ext of 0 -> {<<>>,Bytes6}; 1 -> {V3@V0,V3@Buf1} = case Bytes6 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes8= skipextensions(Bytes7, 1, Extensions), Res1 = {'SONConfigurationTransfer',Term1,Term2,Term3,Term4}, {Res1,Bytes8}. 'dec_SONConfigurationTransfer_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components210(V1@Add4, V1@Buf1, []). 'dec_SONConfigurationTransfer_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension211(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_SynchronisationInformation(Val) -> [begin Enc1@element = element(2, Val), Enc2@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin Enc3@element = element(4, Val), Enc4@element = element(5, Val), if Enc3@element =:= asn1_NOVALUE -> if Enc4@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end; true -> if Enc4@element =:= asn1_NOVALUE -> <<1:1,0:1>>; true -> <<1:1,1:1>> end end end, begin %% attribute sourceStratumLevel(1) with type INTEGER Enc6@element = element(2, Val), if Enc6@element =:= asn1_NOVALUE -> []; Enc6@element bsr 2 =:= 0 -> <<0:1,Enc6@element:2>>; true -> [<<1:1>>, align|encode_unconstrained_number(Enc6@element)] end end, begin %% attribute listeningSubframePattern(2) with type ListeningSubframePattern Enc9@element = element(3, Val), if Enc9@element =:= asn1_NOVALUE -> []; true -> enc_ListeningSubframePattern(Enc9@element) end end, begin %% attribute aggressoreCGI-List(3) with type ECGI-List Enc11@element = element(4, Val), if Enc11@element =:= asn1_NOVALUE -> []; true -> 'enc_ECGI-List'(Enc11@element) end end|begin %% attribute iE-Extensions(4) with type SEQUENCE OF Enc13@element = element(5, Val), if Enc13@element =:= asn1_NOVALUE -> []; true -> 'enc_SynchronisationInformation_iE-Extensions'(Enc13@element) end end]. 'enc_SynchronisationInformation_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_SynchronisationInformation_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_SynchronisationInformation_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_SynchronisationInformation(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute sourceStratumLevel(1) with type INTEGER {Term1,Bytes3} = case (Opt bsr 3) band 1 of 1 -> begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:2/unsigned-unit:1,V3@Buf4/bitstring>> -> {V3@V3,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, <> = V3@Buf4, {V3@V12,V3@Buf13} end, {V3@V0,V3@Buf1} end; 0 -> {asn1_NOVALUE,Bytes2} end, %% attribute listeningSubframePattern(2) with type ListeningSubframePattern {Term2,Bytes4} = case (Opt bsr 2) band 1 of 1 -> dec_ListeningSubframePattern(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute aggressoreCGI-List(3) with type ECGI-List {Term3,Bytes5} = case (Opt bsr 1) band 1 of 1 -> 'dec_ECGI-List'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% attribute iE-Extensions(4) with type SEQUENCE OF {Term4,Bytes6} = case Opt band 1 of 1 -> 'dec_SynchronisationInformation_iE-Extensions'(Bytes5); 0 -> {asn1_NOVALUE,Bytes5} end, %% Extensions {Extensions,Bytes7} = case Ext of 0 -> {<<>>,Bytes6}; 1 -> {V4@V0,V4@Buf1} = case Bytes6 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes8= skipextensions(Bytes7, 1, Extensions), Res1 = {'SynchronisationInformation',Term1,Term2,Term3,Term4}, {Res1,Bytes8}. 'dec_SynchronisationInformation_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components212(V1@Add4, V1@Buf1, []). 'dec_SynchronisationInformation_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_Source-ToTarget-TransparentContainer'(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. 'dec_Source-ToTarget-TransparentContainer'(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. 'enc_SourceBSS-ToTargetBSS-TransparentContainer'(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. 'dec_SourceBSS-ToTargetBSS-TransparentContainer'(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. 'enc_SourceeNB-ID'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1>>; true -> <<1:1>> end end, begin %% attribute global-ENB-ID(1) with type Global-ENB-ID Enc2@element = element(2, Val), 'enc_Global-ENB-ID'(Enc2@element) end, begin %% attribute selected-TAI(2) with type TAI Enc3@element = element(3, Val), enc_TAI(Enc3@element) end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc4@element = element(4, Val), if Enc4@element =:= asn1_NOVALUE -> []; true -> 'enc_SourceeNB-ID_iE-Extensions'(Enc4@element) end end]. 'enc_SourceeNB-ID_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_SourceeNB-ID_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_SourceeNB-ID_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_SourceeNB-ID'(Bytes) -> {Opt,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, %% attribute global-ENB-ID(1) with type Global-ENB-ID {Term1,Bytes2} = 'dec_Global-ENB-ID'(Bytes1), %% attribute selected-TAI(2) with type TAI {Term2,Bytes3} = dec_TAI(Bytes2), %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes4} = case Opt band 1 of 1 -> 'dec_SourceeNB-ID_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, Res1 = {'SourceeNB-ID',Term1,Term2,Term3}, {Res1,Bytes4}. 'dec_SourceeNB-ID_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components213(V1@Add4, V1@Buf1, []). 'dec_SourceeNB-ID_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_SRVCCOperationNotPossible(Val) -> if Val =:= notPossible -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_SRVCCOperationNotPossible(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'notPossible',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_SRVCCOperationPossible(Val) -> if Val =:= possible -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_SRVCCOperationPossible(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'possible',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_SRVCCHOIndication(Val) -> if Val =:= pSandCS -> <<0:1,0:1>>; Val =:= cSonly -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_SRVCCHOIndication(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:1/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> pSandCS; 1 -> cSonly end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_SourceNodeID(Val) -> {ChoiceTag,ChoiceVal} = Val, if ChoiceTag =:= 'sourceNgRanNode-ID' -> [<<0:1>>|'enc_SourceNgRanNode-ID'(ChoiceVal)]; ChoiceTag =:= 'sourceNodeID-Extension' -> [<<1:1>>|'enc_SourceNodeID-Extension'(ChoiceVal)] end. dec_SourceNodeID(Bytes) -> {Choice,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, case Choice of 0 -> {Val,NewBytes} = begin 'dec_SourceNgRanNode-ID'(Bytes1) end, {{'sourceNgRanNode-ID',Val},NewBytes}; 1 -> {Val,NewBytes} = begin 'dec_SourceNodeID-Extension'(Bytes1) end, {{'sourceNodeID-Extension',Val},NewBytes} end. 'enc_SourceNodeID-Extension'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute value(3) with type Value Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_SourceNodeID-Extension'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute value(3) with type Value {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'SourceNodeID-Extension',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_SourceeNB-ToTargeteNB-TransparentContainer'(Val) -> [begin Enc1@element = element(3, Val), Enc2@element = element(5, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin Enc3@element = element(7, Val), if Enc3@element =:= asn1_NOVALUE -> <<0:1>>; true -> <<1:1>> end end, align, begin %% attribute rRC-Container(1) with type OCTET STRING Enc5@element = element(2, Val), Enc6@len = byte_size(Enc5@element), if Enc6@len < 128 -> [Enc6@len|Enc5@element]; Enc6@len < 16384 -> [<<2:2,Enc6@len:14>>|Enc5@element]; true -> encode_fragmented(Enc5@element, 8) end end, begin %% attribute e-RABInformationList(2) with type E-RABInformationList Enc7@element = element(3, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_E-RABInformationList'(Enc7@element) end end, begin %% attribute targetCell-ID(3) with type EUTRAN-CGI Enc9@element = element(4, Val), 'enc_EUTRAN-CGI'(Enc9@element) end, begin %% attribute subscriberProfileIDforRFP(4) with type INTEGER Enc10@element = element(5, Val), if Enc10@element =:= asn1_NOVALUE -> []; true -> begin Enc10@element@sub = Enc10@element - 1, if Enc10@element@sub bsr 8 =:= 0 -> [align, Enc10@element@sub]; true -> exit({error,{asn1,{illegal_integer,Enc10@element}}}) end end end end, begin %% attribute uE-HistoryInformation(5) with type UE-HistoryInformation Enc13@element = element(6, Val), 'enc_UE-HistoryInformation'(Enc13@element) end|begin %% attribute iE-Extensions(6) with type SEQUENCE OF Enc14@element = element(7, Val), if Enc14@element =:= asn1_NOVALUE -> []; true -> 'enc_SourceeNB-ToTargeteNB-TransparentContainer_iE-Extensions'(Enc14@element) end end]. 'enc_SourceeNB-ToTargeteNB-TransparentContainer_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_SourceeNB-ToTargeteNB-TransparentContainer_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_SourceeNB-ToTargeteNB-TransparentContainer_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension214(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_SourceeNB-ToTargeteNB-TransparentContainer'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute rRC-Container(1) with type OCTET STRING {Term1,Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, V3@Conv10 = binary:copy(V3@V0), {V3@Conv10,V3@Buf1} end, %% attribute e-RABInformationList(2) with type E-RABInformationList {Term2,Bytes4} = case (Opt bsr 2) band 1 of 1 -> 'dec_E-RABInformationList'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute targetCell-ID(3) with type EUTRAN-CGI {Term3,Bytes5} = 'dec_EUTRAN-CGI'(Bytes4), %% attribute subscriberProfileIDforRFP(4) with type INTEGER {Term4,Bytes6} = case (Opt bsr 1) band 1 of 1 -> begin V4@Pad2 = bit_size(Bytes5) band 7, <<_:V4@Pad2,V4@V0:1/unsigned-unit:8,V4@Buf1/bitstring>> = Bytes5, V4@Add4 = V4@V0 + 1, {V4@Add4,V4@Buf1} end; 0 -> {asn1_NOVALUE,Bytes5} end, %% attribute uE-HistoryInformation(5) with type UE-HistoryInformation {Term5,Bytes7} = 'dec_UE-HistoryInformation'(Bytes6), %% attribute iE-Extensions(6) with type SEQUENCE OF {Term6,Bytes8} = case Opt band 1 of 1 -> 'dec_SourceeNB-ToTargeteNB-TransparentContainer_iE-Extensions'(Bytes7); 0 -> {asn1_NOVALUE,Bytes7} end, %% Extensions {Extensions,Bytes9} = case Ext of 0 -> {<<>>,Bytes8}; 1 -> {V5@V0,V5@Buf1} = case Bytes8 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes10= skipextensions(Bytes9, 1, Extensions), Res1 = {'SourceeNB-ToTargeteNB-TransparentContainer',Term1,Term2,Term3,Term4,Term5,Term6}, {Res1,Bytes10}. 'dec_SourceeNB-ToTargeteNB-TransparentContainer_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components215(V1@Add4, V1@Buf1, []). 'dec_SourceeNB-ToTargeteNB-TransparentContainer_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension216(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_SourceNgRanNode-ID'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute global-RAN-NODE-ID(1) with type Global-RAN-NODE-ID Enc3@element = element(2, Val), 'enc_Global-RAN-NODE-ID'(Enc3@element) end, begin %% attribute selected-TAI(2) with type FiveGSTAI Enc4@element = element(3, Val), enc_FiveGSTAI(Enc4@element) end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc5@element = element(4, Val), if Enc5@element =:= asn1_NOVALUE -> []; true -> 'enc_SourceNgRanNode-ID_iE-Extensions'(Enc5@element) end end]. 'enc_SourceNgRanNode-ID_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_SourceNgRanNode-ID_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_SourceNgRanNode-ID_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_SourceNgRanNode-ID'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute global-RAN-NODE-ID(1) with type Global-RAN-NODE-ID {Term1,Bytes3} = 'dec_Global-RAN-NODE-ID'(Bytes2), %% attribute selected-TAI(2) with type FiveGSTAI {Term2,Bytes4} = dec_FiveGSTAI(Bytes3), %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_SourceNgRanNode-ID_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V3@V0,V3@Buf1} = case Bytes5 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'SourceNgRanNode-ID',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_SourceNgRanNode-ID_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components217(V1@Add4, V1@Buf1, []). 'dec_SourceNgRanNode-ID_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_SourceRNC-ToTargetRNC-TransparentContainer'(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. 'dec_SourceRNC-ToTargetRNC-TransparentContainer'(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. 'enc_SourceNgRanNode-ToTargetNgRanNode-TransparentContainer'(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. 'dec_SourceNgRanNode-ToTargetNgRanNode-TransparentContainer'(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. enc_ServedGUMMEIs(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 3 =:= 0 -> [<>|[enc_ServedGUMMEIsItem(Comp) || Comp <- Val]] end. dec_ServedGUMMEIs(Bytes) -> %% Length with constraint {1,8} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components218(V1@Add2, V1@Buf1, []). enc_ServedGUMMEIsItem(Val) -> [begin Enc1@element = element(5, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute servedPLMNs(1) with type ServedPLMNs Enc3@element = element(2, Val), enc_ServedPLMNs(Enc3@element) end, begin %% attribute servedGroupIDs(2) with type ServedGroupIDs Enc4@element = element(3, Val), enc_ServedGroupIDs(Enc4@element) end, begin %% attribute servedMMECs(3) with type ServedMMECs Enc5@element = element(4, Val), enc_ServedMMECs(Enc5@element) end|begin %% attribute iE-Extensions(4) with type SEQUENCE OF Enc6@element = element(5, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> 'enc_ServedGUMMEIsItem_iE-Extensions'(Enc6@element) end end]. 'enc_ServedGUMMEIsItem_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_ServedGUMMEIsItem_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_ServedGUMMEIsItem_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension219(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_ServedGUMMEIsItem(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute servedPLMNs(1) with type ServedPLMNs {Term1,Bytes3} = dec_ServedPLMNs(Bytes2), %% attribute servedGroupIDs(2) with type ServedGroupIDs {Term2,Bytes4} = dec_ServedGroupIDs(Bytes3), %% attribute servedMMECs(3) with type ServedMMECs {Term3,Bytes5} = dec_ServedMMECs(Bytes4), %% attribute iE-Extensions(4) with type SEQUENCE OF {Term4,Bytes6} = case Opt band 1 of 1 -> 'dec_ServedGUMMEIsItem_iE-Extensions'(Bytes5); 0 -> {asn1_NOVALUE,Bytes5} end, %% Extensions {Extensions,Bytes7} = case Ext of 0 -> {<<>>,Bytes6}; 1 -> {V3@V0,V3@Buf1} = case Bytes6 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes8= skipextensions(Bytes7, 1, Extensions), Res1 = {'ServedGUMMEIsItem',Term1,Term2,Term3,Term4}, {Res1,Bytes8}. 'dec_ServedGUMMEIsItem_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components220(V1@Add4, V1@Buf1, []). 'dec_ServedGUMMEIsItem_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension221(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_ServedGroupIDs(Val) -> Enc2@len = length(Val), Enc2@len@sub = Enc2@len - 1, if 0 =< Enc2@len@sub, Enc2@len@sub < 65535 -> [align, <>|[begin Enc1@len = byte_size(Comp), if Enc1@len =:= 2 -> Comp end end || Comp <- Val]] end. dec_ServedGroupIDs(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components222(V1@Add4, V1@Buf1, []). enc_ServedMMECs(Val) -> Enc2@len = length(Val), Enc2@len@sub = Enc2@len - 1, if Enc2@len@sub bsr 8 =:= 0 -> [align, Enc2@len@sub|[begin Enc1@len = byte_size(Comp), if Enc1@len =:= 1 -> Comp end end || Comp <- Val]] end. dec_ServedMMECs(Bytes) -> %% Length with constraint {1,256} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:1/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components223(V1@Add4, V1@Buf1, []). enc_ServedPLMNs(Val) -> Enc2@len = length(Val), Enc2@len@sub = Enc2@len - 1, if Enc2@len@sub bsr 5 =:= 0 -> [<>, align|[begin Enc1@len = byte_size(Comp), if Enc1@len =:= 3 -> Comp end end || Comp <- Val]] end. dec_ServedPLMNs(Bytes) -> %% Length with constraint {1,32} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components224(V1@Add2, V1@Buf1, []). enc_SubscriberProfileIDforRFP(Val) -> Val@sub = Val - 1, if Val@sub bsr 8 =:= 0 -> [align, Val@sub]; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. dec_SubscriberProfileIDforRFP(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:1/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, {V1@Add4,V1@Buf1} end. 'enc_Subscription-Based-UE-DifferentiationInfo'(Val) -> [begin Enc1@element = element(2, Val), Enc2@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin Enc3@element = element(4, Val), Enc4@element = element(5, Val), if Enc3@element =:= asn1_NOVALUE -> if Enc4@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end; true -> if Enc4@element =:= asn1_NOVALUE -> <<1:1,0:1>>; true -> <<1:1,1:1>> end end end, begin Enc5@element = element(6, Val), Enc6@element = element(7, Val), if Enc5@element =:= asn1_NOVALUE -> if Enc6@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end; true -> if Enc6@element =:= asn1_NOVALUE -> <<1:1,0:1>>; true -> <<1:1,1:1>> end end end, begin Enc7@element = element(8, Val), %% attribute periodicCommunicationIndicator(1) with type ENUMERATED Enc9@element = element(2, Val), if Enc7@element =:= asn1_NOVALUE -> if Enc9@element =:= asn1_NOVALUE -> <<0:1>>; Enc9@element =:= periodically -> <<0:1,0:1,0:1>>; Enc9@element =:= ondemand -> <<0:1,0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc9@element}}}) end; true -> if Enc9@element =:= asn1_NOVALUE -> <<1:1>>; Enc9@element =:= periodically -> <<1:1,0:1,0:1>>; Enc9@element =:= ondemand -> <<1:1,0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc9@element}}}) end end end, begin %% attribute periodicTime(2) with type INTEGER Enc12@element = element(3, Val), if Enc12@element =:= asn1_NOVALUE -> []; true -> begin Enc12@element@sub = Enc12@element - 1, if 0 =< Enc12@element@sub, Enc12@element@sub < 3600 -> [<<0:1>>, align|<>]; true -> [<<1:1>>, align|encode_unconstrained_number(Enc12@element)] end end end end, begin %% attribute scheduledCommunicationTime(3) with type ScheduledCommunicationTime Enc15@element = element(4, Val), if Enc15@element =:= asn1_NOVALUE -> []; true -> enc_ScheduledCommunicationTime(Enc15@element) end end, begin %% attribute stationaryIndication(4) with type ENUMERATED Enc17@element = element(5, Val), if Enc17@element =:= asn1_NOVALUE -> []; Enc17@element =:= stationary -> <<0:1,0:1>>; Enc17@element =:= mobile -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc17@element}}}) end end, begin %% attribute trafficProfile(5) with type ENUMERATED Enc20@element = element(6, Val), if Enc20@element =:= asn1_NOVALUE -> []; Enc20@element =:= 'single-packet' -> <<0:1,0:2>>; Enc20@element =:= 'dual-packets' -> <<0:1,1:2>>; Enc20@element =:= 'multiple-packets' -> <<0:1,2:2>>; true -> exit({error,{asn1,{illegal_enumerated,Enc20@element}}}) end end, begin %% attribute batteryIndication(6) with type ENUMERATED Enc23@element = element(7, Val), if Enc23@element =:= asn1_NOVALUE -> []; Enc23@element =:= 'battery-powered' -> <<0:1,0:2>>; Enc23@element =:= 'battery-powered-not-rechargeable-or-replaceable' -> <<0:1,1:2>>; Enc23@element =:= 'not-battery-powered' -> <<0:1,2:2>>; true -> exit({error,{asn1,{illegal_enumerated,Enc23@element}}}) end end|begin %% attribute iE-Extensions(7) with type SEQUENCE OF Enc26@element = element(8, Val), if Enc26@element =:= asn1_NOVALUE -> []; true -> 'enc_Subscription-Based-UE-DifferentiationInfo_iE-Extensions'(Enc26@element) end end]. 'enc_Subscription-Based-UE-DifferentiationInfo_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_Subscription-Based-UE-DifferentiationInfo_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_Subscription-Based-UE-DifferentiationInfo_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_Subscription-Based-UE-DifferentiationInfo'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute periodicCommunicationIndicator(1) with type ENUMERATED {Term1,Bytes3} = case (Opt bsr 6) band 1 of 1 -> begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:1/unsigned-unit:1,V3@Buf4/bitstring>> -> V3@Int5 = case V3@V3 of 0 -> periodically; 1 -> ondemand end, {V3@Int5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> {V3@V3,V3@Buf4} = case V3@Buf2 of <<0:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V6,V3@Buf7}; <<1:1,V3@Buf5/bitstring>> -> V3@Pad9 = bit_size(V3@Buf5) band 7, {V3@V6,V3@Buf7} = case V3@Buf5 of <<_:V3@Pad9,0:1,V3@V11:7,V3@Buf12/bitstring>> when V3@V11 =/= 0 -> {V3@V11,V3@Buf12}; <<_:V3@Pad9,1:1,0:1,V3@V12:14,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> {V3@V12,V3@Buf13}; <<_:V3@Pad9,1:1,1:1,V3@V12:6,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> V3@Mul14 = V3@V12 * 16384, {V3@Mul14,V3@Buf13} end, <> = V3@Buf7, {V3@V15,V3@Buf16} end, V3@Int17 = case V3@V3 of _ -> {asn1_enum,V3@V3} end, {V3@Int17,V3@Buf4} end, {V3@V0,V3@Buf1} end; 0 -> {asn1_NOVALUE,Bytes2} end, %% attribute periodicTime(2) with type INTEGER {Term2,Bytes4} = case (Opt bsr 5) band 1 of 1 -> begin {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@Buf2/bitstring>> -> V4@Pad5 = bit_size(V4@Buf2) band 7, <<_:V4@Pad5,V4@V3:2/unsigned-unit:8,V4@Buf4/bitstring>> = V4@Buf2, V4@Add7 = V4@V3 + 1, {V4@Add7,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, <> = V4@Buf4, {V4@V12,V4@Buf13} end, {V4@V0,V4@Buf1} end; 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute scheduledCommunicationTime(3) with type ScheduledCommunicationTime {Term3,Bytes5} = case (Opt bsr 4) band 1 of 1 -> dec_ScheduledCommunicationTime(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% attribute stationaryIndication(4) with type ENUMERATED {Term4,Bytes6} = case (Opt bsr 3) band 1 of 1 -> begin {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:1/unsigned-unit:1,V5@Buf4/bitstring>> -> V5@Int5 = case V5@V3 of 0 -> stationary; 1 -> mobile end, {V5@Int5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> {V5@V3,V5@Buf4} = case V5@Buf2 of <<0:1,V5@V6:6,V5@Buf7/bitstring>> -> {V5@V6,V5@Buf7}; <<1:1,V5@Buf5/bitstring>> -> V5@Pad9 = bit_size(V5@Buf5) band 7, {V5@V6,V5@Buf7} = case V5@Buf5 of <<_:V5@Pad9,0:1,V5@V11:7,V5@Buf12/bitstring>> when V5@V11 =/= 0 -> {V5@V11,V5@Buf12}; <<_:V5@Pad9,1:1,0:1,V5@V12:14,V5@Buf13/bitstring>> when V5@V12 =/= 0 -> {V5@V12,V5@Buf13}; <<_:V5@Pad9,1:1,1:1,V5@V12:6,V5@Buf13/bitstring>> when V5@V12 =/= 0 -> V5@Mul14 = V5@V12 * 16384, {V5@Mul14,V5@Buf13} end, <> = V5@Buf7, {V5@V15,V5@Buf16} end, V5@Int17 = case V5@V3 of _ -> {asn1_enum,V5@V3} end, {V5@Int17,V5@Buf4} end, {V5@V0,V5@Buf1} end; 0 -> {asn1_NOVALUE,Bytes5} end, %% attribute trafficProfile(5) with type ENUMERATED {Term5,Bytes7} = case (Opt bsr 2) band 1 of 1 -> begin {V6@V0,V6@Buf1} = case Bytes6 of <<0:1,V6@V3:2/unsigned-unit:1,V6@Buf4/bitstring>> -> V6@Int5 = case V6@V3 of 0 -> 'single-packet'; 1 -> 'dual-packets'; 2 -> 'multiple-packets'; _ -> exit({error,{asn1,{decode_enumerated,V6@V3}}}) end, {V6@Int5,V6@Buf4}; <<1:1,V6@Buf2/bitstring>> -> {V6@V3,V6@Buf4} = case V6@Buf2 of <<0:1,V6@V6:6,V6@Buf7/bitstring>> -> {V6@V6,V6@Buf7}; <<1:1,V6@Buf5/bitstring>> -> V6@Pad9 = bit_size(V6@Buf5) band 7, {V6@V6,V6@Buf7} = case V6@Buf5 of <<_:V6@Pad9,0:1,V6@V11:7,V6@Buf12/bitstring>> when V6@V11 =/= 0 -> {V6@V11,V6@Buf12}; <<_:V6@Pad9,1:1,0:1,V6@V12:14,V6@Buf13/bitstring>> when V6@V12 =/= 0 -> {V6@V12,V6@Buf13}; <<_:V6@Pad9,1:1,1:1,V6@V12:6,V6@Buf13/bitstring>> when V6@V12 =/= 0 -> V6@Mul14 = V6@V12 * 16384, {V6@Mul14,V6@Buf13} end, <> = V6@Buf7, {V6@V15,V6@Buf16} end, V6@Int17 = case V6@V3 of _ -> {asn1_enum,V6@V3} end, {V6@Int17,V6@Buf4} end, {V6@V0,V6@Buf1} end; 0 -> {asn1_NOVALUE,Bytes6} end, %% attribute batteryIndication(6) with type ENUMERATED {Term6,Bytes8} = case (Opt bsr 1) band 1 of 1 -> begin {V7@V0,V7@Buf1} = case Bytes7 of <<0:1,V7@V3:2/unsigned-unit:1,V7@Buf4/bitstring>> -> V7@Int5 = case V7@V3 of 0 -> 'battery-powered'; 1 -> 'battery-powered-not-rechargeable-or-replaceable'; 2 -> 'not-battery-powered'; _ -> exit({error,{asn1,{decode_enumerated,V7@V3}}}) end, {V7@Int5,V7@Buf4}; <<1:1,V7@Buf2/bitstring>> -> {V7@V3,V7@Buf4} = case V7@Buf2 of <<0:1,V7@V6:6,V7@Buf7/bitstring>> -> {V7@V6,V7@Buf7}; <<1:1,V7@Buf5/bitstring>> -> V7@Pad9 = bit_size(V7@Buf5) band 7, {V7@V6,V7@Buf7} = case V7@Buf5 of <<_:V7@Pad9,0:1,V7@V11:7,V7@Buf12/bitstring>> when V7@V11 =/= 0 -> {V7@V11,V7@Buf12}; <<_:V7@Pad9,1:1,0:1,V7@V12:14,V7@Buf13/bitstring>> when V7@V12 =/= 0 -> {V7@V12,V7@Buf13}; <<_:V7@Pad9,1:1,1:1,V7@V12:6,V7@Buf13/bitstring>> when V7@V12 =/= 0 -> V7@Mul14 = V7@V12 * 16384, {V7@Mul14,V7@Buf13} end, <> = V7@Buf7, {V7@V15,V7@Buf16} end, V7@Int17 = case V7@V3 of _ -> {asn1_enum,V7@V3} end, {V7@Int17,V7@Buf4} end, {V7@V0,V7@Buf1} end; 0 -> {asn1_NOVALUE,Bytes7} end, %% attribute iE-Extensions(7) with type SEQUENCE OF {Term7,Bytes9} = case Opt band 1 of 1 -> 'dec_Subscription-Based-UE-DifferentiationInfo_iE-Extensions'(Bytes8); 0 -> {asn1_NOVALUE,Bytes8} end, %% Extensions {Extensions,Bytes10} = case Ext of 0 -> {<<>>,Bytes9}; 1 -> {V8@V0,V8@Buf1} = case Bytes9 of <<0:1,V8@V3:6,V8@Buf4/bitstring>> -> V8@Add5 = V8@V3 + 1, {V8@Add5,V8@Buf4}; <<1:1,V8@Buf2/bitstring>> -> V8@Pad6 = bit_size(V8@Buf2) band 7, {V8@V3,V8@Buf4} = case V8@Buf2 of <<_:V8@Pad6,0:1,V8@V8:7,V8@Buf9/bitstring>> when V8@V8 =/= 0 -> {V8@V8,V8@Buf9}; <<_:V8@Pad6,1:1,0:1,V8@V9:14,V8@Buf10/bitstring>> when V8@V9 =/= 0 -> {V8@V9,V8@Buf10}; <<_:V8@Pad6,1:1,1:1,V8@V9:6,V8@Buf10/bitstring>> when V8@V9 =/= 0 -> V8@Mul11 = V8@V9 * 16384, {V8@Mul11,V8@Buf10} end, {V8@V3,V8@Buf4} end, <> = V8@Buf1, {V8@V12,V8@Buf13} end, Bytes11= skipextensions(Bytes10, 1, Extensions), Res1 = {'Subscription-Based-UE-DifferentiationInfo',Term1,Term2,Term3,Term4,Term5,Term6,Term7}, {Res1,Bytes11}. 'dec_Subscription-Based-UE-DifferentiationInfo_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components225(V1@Add4, V1@Buf1, []). 'dec_Subscription-Based-UE-DifferentiationInfo_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_ScheduledCommunicationTime(Val) -> [begin Enc1@element = element(2, Val), Enc2@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin Enc3@element = element(4, Val), Enc4@element = element(5, Val), if Enc3@element =:= asn1_NOVALUE -> if Enc4@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end; true -> if Enc4@element =:= asn1_NOVALUE -> <<1:1,0:1>>; true -> <<1:1,1:1>> end end end, begin %% attribute dayofWeek(1) with type BIT STRING Enc6@element = element(2, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> begin Enc7@bits = bit_size(Enc6@element), if Enc7@bits =:= 7 -> Enc6@element end end end end, begin %% attribute timeofDayStart(2) with type INTEGER Enc9@element = element(3, Val), if Enc9@element =:= asn1_NOVALUE -> []; 0 =< Enc9@element, Enc9@element < 86400 -> [<<0:1>>|begin Enc9@element@bin = binary:encode_unsigned(Enc9@element), Enc9@element@bin_size0 = byte_size(Enc9@element@bin), Enc9@element@bin_size = Enc9@element@bin_size0 - 1, [<>, align|Enc9@element@bin] end]; true -> [<<1:1>>, align|encode_unconstrained_number(Enc9@element)] end end, begin %% attribute timeofDayEnd(3) with type INTEGER Enc12@element = element(4, Val), if Enc12@element =:= asn1_NOVALUE -> []; 0 =< Enc12@element, Enc12@element < 86400 -> [<<0:1>>|begin Enc12@element@bin = binary:encode_unsigned(Enc12@element), Enc12@element@bin_size0 = byte_size(Enc12@element@bin), Enc12@element@bin_size = Enc12@element@bin_size0 - 1, [<>, align|Enc12@element@bin] end]; true -> [<<1:1>>, align|encode_unconstrained_number(Enc12@element)] end end|begin %% attribute iE-Extensions(4) with type SEQUENCE OF Enc15@element = element(5, Val), if Enc15@element =:= asn1_NOVALUE -> []; true -> 'enc_ScheduledCommunicationTime_iE-Extensions'(Enc15@element) end end]. 'enc_ScheduledCommunicationTime_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_ScheduledCommunicationTime_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_ScheduledCommunicationTime_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_ScheduledCommunicationTime(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute dayofWeek(1) with type BIT STRING {Term1,Bytes3} = case (Opt bsr 3) band 1 of 1 -> begin <> = Bytes2, {V3@V2,V3@Buf3} = {list_to_bitstring([V3@V0]),V3@Buf1}, {V3@V2,V3@Buf3} end; 0 -> {asn1_NOVALUE,Bytes2} end, %% attribute timeofDayStart(2) with type INTEGER {Term2,Bytes4} = case (Opt bsr 2) band 1 of 1 -> begin {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@V3:2/unsigned-unit:1,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, V4@Pad8 = bit_size(V4@Buf4) band 7, <<_:V4@Pad8,V4@V6:V4@Add5/unsigned-unit:8,V4@Buf7/bitstring>> = V4@Buf4, {V4@V6,V4@Buf7}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, <> = V4@Buf4, {V4@V12,V4@Buf13} end, {V4@V0,V4@Buf1} end; 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute timeofDayEnd(3) with type INTEGER {Term3,Bytes5} = case (Opt bsr 1) band 1 of 1 -> begin {V5@V0,V5@Buf1} = case Bytes4 of <<0:1,V5@V3:2/unsigned-unit:1,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, V5@Pad8 = bit_size(V5@Buf4) band 7, <<_:V5@Pad8,V5@V6:V5@Add5/unsigned-unit:8,V5@Buf7/bitstring>> = V5@Buf4, {V5@V6,V5@Buf7}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, <> = V5@Buf4, {V5@V12,V5@Buf13} end, {V5@V0,V5@Buf1} end; 0 -> {asn1_NOVALUE,Bytes4} end, %% attribute iE-Extensions(4) with type SEQUENCE OF {Term4,Bytes6} = case Opt band 1 of 1 -> 'dec_ScheduledCommunicationTime_iE-Extensions'(Bytes5); 0 -> {asn1_NOVALUE,Bytes5} end, %% Extensions {Extensions,Bytes7} = case Ext of 0 -> {<<>>,Bytes6}; 1 -> {V6@V0,V6@Buf1} = case Bytes6 of <<0:1,V6@V3:6,V6@Buf4/bitstring>> -> V6@Add5 = V6@V3 + 1, {V6@Add5,V6@Buf4}; <<1:1,V6@Buf2/bitstring>> -> V6@Pad6 = bit_size(V6@Buf2) band 7, {V6@V3,V6@Buf4} = case V6@Buf2 of <<_:V6@Pad6,0:1,V6@V8:7,V6@Buf9/bitstring>> when V6@V8 =/= 0 -> {V6@V8,V6@Buf9}; <<_:V6@Pad6,1:1,0:1,V6@V9:14,V6@Buf10/bitstring>> when V6@V9 =/= 0 -> {V6@V9,V6@Buf10}; <<_:V6@Pad6,1:1,1:1,V6@V9:6,V6@Buf10/bitstring>> when V6@V9 =/= 0 -> V6@Mul11 = V6@V9 * 16384, {V6@Mul11,V6@Buf10} end, {V6@V3,V6@Buf4} end, <> = V6@Buf1, {V6@V12,V6@Buf13} end, Bytes8= skipextensions(Bytes7, 1, Extensions), Res1 = {'ScheduledCommunicationTime',Term1,Term2,Term3,Term4}, {Res1,Bytes8}. 'dec_ScheduledCommunicationTime_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components226(V1@Add4, V1@Buf1, []). 'dec_ScheduledCommunicationTime_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_SupportedTAs(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 8 =:= 0 -> [align, Enc1@len@sub|['enc_SupportedTAs-Item'(Comp) || Comp <- Val]] end. dec_SupportedTAs(Bytes) -> %% Length with constraint {1,256} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:1/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components227(V1@Add4, V1@Buf1, []). 'enc_SupportedTAs-Item'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute tAC(1) with type OCTET STRING Enc3@element = element(2, Val), Enc4@len = byte_size(Enc3@element), if Enc4@len =:= 2 -> Enc3@element end end, begin %% attribute broadcastPLMNs(2) with type BPLMNs Enc5@element = element(3, Val), enc_BPLMNs(Enc5@element) end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc6@element = element(4, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> 'enc_SupportedTAs-Item_iE-Extensions'(Enc6@element) end end]. 'enc_SupportedTAs-Item_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_SupportedTAs-Item_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_SupportedTAs-Item_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension228(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_SupportedTAs-Item'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute tAC(1) with type OCTET STRING {Term1,Bytes3} = begin <> = Bytes2, V3@Conv2 = binary:copy(V3@V0), {V3@Conv2,V3@Buf1} end, %% attribute broadcastPLMNs(2) with type BPLMNs {Term2,Bytes4} = dec_BPLMNs(Bytes3), %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_SupportedTAs-Item_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V4@V0,V4@Buf1} = case Bytes5 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'SupportedTAs-Item',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_SupportedTAs-Item_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components229(V1@Add4, V1@Buf1, []). 'dec_SupportedTAs-Item_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension230(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_StratumLevel(Val) -> if Val bsr 2 =:= 0 -> <<0:1,Val:2>>; true -> [<<1:1>>, align|encode_unconstrained_number(Val)] end. dec_StratumLevel(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:2/unsigned-unit:1,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end. enc_SynchronisationStatus(Val) -> if Val =:= synchronous -> <<0:1,0:1>>; Val =:= asynchronous -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_SynchronisationStatus(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:1/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> synchronous; 1 -> asynchronous end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_TimeSynchronisationInfo(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute stratumLevel(1) with type INTEGER Enc3@element = element(2, Val), if Enc3@element bsr 2 =:= 0 -> <<0:1,Enc3@element:2>>; true -> [<<1:1>>, align|encode_unconstrained_number(Enc3@element)] end end, begin %% attribute synchronisationStatus(2) with type ENUMERATED Enc5@element = element(3, Val), if Enc5@element =:= synchronous -> <<0:1,0:1>>; Enc5@element =:= asynchronous -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc5@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_TimeSynchronisationInfo_iE-Extensions'(Enc7@element) end end]. 'enc_TimeSynchronisationInfo_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_TimeSynchronisationInfo_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_TimeSynchronisationInfo_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension231(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_TimeSynchronisationInfo(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute stratumLevel(1) with type INTEGER {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:2/unsigned-unit:1,V3@Buf4/bitstring>> -> {V3@V3,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, <> = V3@Buf4, {V3@V12,V3@Buf13} end, {V3@V0,V3@Buf1} end, %% attribute synchronisationStatus(2) with type ENUMERATED {Term2,Bytes4} = begin {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@V3:1/unsigned-unit:1,V4@Buf4/bitstring>> -> V4@Int5 = case V4@V3 of 0 -> synchronous; 1 -> asynchronous end, {V4@Int5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> {V4@V3,V4@Buf4} = case V4@Buf2 of <<0:1,V4@V6:6,V4@Buf7/bitstring>> -> {V4@V6,V4@Buf7}; <<1:1,V4@Buf5/bitstring>> -> V4@Pad9 = bit_size(V4@Buf5) band 7, {V4@V6,V4@Buf7} = case V4@Buf5 of <<_:V4@Pad9,0:1,V4@V11:7,V4@Buf12/bitstring>> when V4@V11 =/= 0 -> {V4@V11,V4@Buf12}; <<_:V4@Pad9,1:1,0:1,V4@V12:14,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> {V4@V12,V4@Buf13}; <<_:V4@Pad9,1:1,1:1,V4@V12:6,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> V4@Mul14 = V4@V12 * 16384, {V4@Mul14,V4@Buf13} end, <> = V4@Buf7, {V4@V15,V4@Buf16} end, V4@Int17 = case V4@V3 of _ -> {asn1_enum,V4@V3} end, {V4@Int17,V4@Buf4} end, {V4@V0,V4@Buf1} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_TimeSynchronisationInfo_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'TimeSynchronisationInfo',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_TimeSynchronisationInfo_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components232(V1@Add4, V1@Buf1, []). 'dec_TimeSynchronisationInfo_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension233(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_S-TMSI'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute mMEC(1) with type OCTET STRING Enc3@element = element(2, Val), Enc4@len = byte_size(Enc3@element), if Enc4@len =:= 1 -> Enc3@element end end, align, begin %% attribute m-TMSI(2) with type OCTET STRING Enc5@element = element(3, Val), Enc6@len = byte_size(Enc5@element), if Enc6@len =:= 4 -> Enc5@element end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_S-TMSI_iE-Extensions'(Enc7@element) end end]. 'enc_S-TMSI_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_S-TMSI_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_S-TMSI_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_S-TMSI'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute mMEC(1) with type OCTET STRING {Term1,Bytes3} = begin <> = Bytes2, V3@Conv2 = binary:copy(V3@V0), {V3@Conv2,V3@Buf1} end, %% attribute m-TMSI(2) with type OCTET STRING {Term2,Bytes4} = begin V4@Pad2 = bit_size(Bytes3) band 7, <<_:V4@Pad2,V4@V0:4/binary-unit:8,V4@Buf1/bitstring>> = Bytes3, V4@Conv4 = binary:copy(V4@V0), {V4@Conv4,V4@Buf1} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_S-TMSI_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'S-TMSI',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_S-TMSI_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components234(V1@Add4, V1@Buf1, []). 'dec_S-TMSI_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_TAC(Val) -> Enc1@len = byte_size(Val), if Enc1@len =:= 2 -> Val end. dec_TAC(Bytes) -> begin <> = Bytes, V1@Conv2 = binary:copy(V1@V0), {V1@Conv2,V1@Buf1} end. 'enc_TACList-In-LTE-NTN'(Val) -> Enc2@len = length(Val), Enc2@len@sub = Enc2@len - 1, if 0 =< Enc2@len@sub, Enc2@len@sub < 12 -> [<>|[begin Enc1@len = byte_size(Comp), if Enc1@len =:= 2 -> Comp end end || Comp <- Val]] end. 'dec_TACList-In-LTE-NTN'(Bytes) -> %% Length with constraint {1,12} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components235(V1@Add2, V1@Buf1, []). enc_TAIBasedMDT(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute tAIListforMDT(1) with type TAIListforMDT Enc3@element = element(2, Val), enc_TAIListforMDT(Enc3@element) end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc4@element = element(3, Val), if Enc4@element =:= asn1_NOVALUE -> []; true -> 'enc_TAIBasedMDT_iE-Extensions'(Enc4@element) end end]. 'enc_TAIBasedMDT_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_TAIBasedMDT_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_TAIBasedMDT_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_TAIBasedMDT(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute tAIListforMDT(1) with type TAIListforMDT {Term1,Bytes3} = dec_TAIListforMDT(Bytes2), %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_TAIBasedMDT_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V3@V0,V3@Buf1} = case Bytes4 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'TAIBasedMDT',Term1,Term2}, {Res1,Bytes6}. 'dec_TAIBasedMDT_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components236(V1@Add4, V1@Buf1, []). 'dec_TAIBasedMDT_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_TAIListforMDT(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 3 =:= 0 -> [<>|[enc_TAI(Comp) || Comp <- Val]] end. dec_TAIListforMDT(Bytes) -> %% Length with constraint {1,8} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components237(V1@Add2, V1@Buf1, []). enc_TAIListforWarning(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|[enc_TAI(Comp) || Comp <- Val]] end. dec_TAIListforWarning(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components238(V1@Add4, V1@Buf1, []). enc_TAI(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, align, begin %% attribute pLMNidentity(1) with type OCTET STRING Enc3@element = element(2, Val), Enc4@len = byte_size(Enc3@element), if Enc4@len =:= 3 -> Enc3@element end end, begin %% attribute tAC(2) with type OCTET STRING Enc5@element = element(3, Val), Enc6@len = byte_size(Enc5@element), if Enc6@len =:= 2 -> Enc5@element end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_TAI_iE-Extensions'(Enc7@element) end end]. 'enc_TAI_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_TAI_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_TAI_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_TAI(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute pLMNidentity(1) with type OCTET STRING {Term1,Bytes3} = begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:3/binary-unit:8,V3@Buf1/bitstring>> = Bytes2, V3@Conv4 = binary:copy(V3@V0), {V3@Conv4,V3@Buf1} end, %% attribute tAC(2) with type OCTET STRING {Term2,Bytes4} = begin <> = Bytes3, V4@Conv2 = binary:copy(V4@V0), {V4@Conv2,V4@Buf1} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_TAI_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'TAI',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_TAI_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components239(V1@Add4, V1@Buf1, []). 'dec_TAI_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_TAI-Broadcast'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_TAI-Broadcast-Item'(Comp) || Comp <- Val]] end. 'dec_TAI-Broadcast'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components240(V1@Add4, V1@Buf1, []). 'enc_TAI-Broadcast-Item'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute tAI(1) with type TAI Enc3@element = element(2, Val), enc_TAI(Enc3@element) end, begin %% attribute completedCellinTAI(2) with type CompletedCellinTAI Enc4@element = element(3, Val), enc_CompletedCellinTAI(Enc4@element) end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc5@element = element(4, Val), if Enc5@element =:= asn1_NOVALUE -> []; true -> 'enc_TAI-Broadcast-Item_iE-Extensions'(Enc5@element) end end]. 'enc_TAI-Broadcast-Item_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_TAI-Broadcast-Item_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_TAI-Broadcast-Item_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_TAI-Broadcast-Item'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute tAI(1) with type TAI {Term1,Bytes3} = dec_TAI(Bytes2), %% attribute completedCellinTAI(2) with type CompletedCellinTAI {Term2,Bytes4} = dec_CompletedCellinTAI(Bytes3), %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_TAI-Broadcast-Item_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V3@V0,V3@Buf1} = case Bytes5 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'TAI-Broadcast-Item',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_TAI-Broadcast-Item_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components241(V1@Add4, V1@Buf1, []). 'dec_TAI-Broadcast-Item_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_TAI-Cancelled'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_TAI-Cancelled-Item'(Comp) || Comp <- Val]] end. 'dec_TAI-Cancelled'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components242(V1@Add4, V1@Buf1, []). 'enc_TAI-Cancelled-Item'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute tAI(1) with type TAI Enc3@element = element(2, Val), enc_TAI(Enc3@element) end, begin %% attribute cancelledCellinTAI(2) with type CancelledCellinTAI Enc4@element = element(3, Val), enc_CancelledCellinTAI(Enc4@element) end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc5@element = element(4, Val), if Enc5@element =:= asn1_NOVALUE -> []; true -> 'enc_TAI-Cancelled-Item_iE-Extensions'(Enc5@element) end end]. 'enc_TAI-Cancelled-Item_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_TAI-Cancelled-Item_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_TAI-Cancelled-Item_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_TAI-Cancelled-Item'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute tAI(1) with type TAI {Term1,Bytes3} = dec_TAI(Bytes2), %% attribute cancelledCellinTAI(2) with type CancelledCellinTAI {Term2,Bytes4} = dec_CancelledCellinTAI(Bytes3), %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_TAI-Cancelled-Item_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V3@V0,V3@Buf1} = case Bytes5 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'TAI-Cancelled-Item',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_TAI-Cancelled-Item_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components243(V1@Add4, V1@Buf1, []). 'dec_TAI-Cancelled-Item_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_TABasedMDT(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute tAListforMDT(1) with type TAListforMDT Enc3@element = element(2, Val), enc_TAListforMDT(Enc3@element) end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc4@element = element(3, Val), if Enc4@element =:= asn1_NOVALUE -> []; true -> 'enc_TABasedMDT_iE-Extensions'(Enc4@element) end end]. 'enc_TABasedMDT_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_TABasedMDT_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_TABasedMDT_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_TABasedMDT(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute tAListforMDT(1) with type TAListforMDT {Term1,Bytes3} = dec_TAListforMDT(Bytes2), %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_TABasedMDT_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V3@V0,V3@Buf1} = case Bytes4 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'TABasedMDT',Term1,Term2}, {Res1,Bytes6}. 'dec_TABasedMDT_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components244(V1@Add4, V1@Buf1, []). 'dec_TABasedMDT_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_TAListforMDT(Val) -> Enc2@len = length(Val), Enc2@len@sub = Enc2@len - 1, if Enc2@len@sub bsr 3 =:= 0 -> [<>|[begin Enc1@len = byte_size(Comp), if Enc1@len =:= 2 -> Comp end end || Comp <- Val]] end. dec_TAListforMDT(Bytes) -> %% Length with constraint {1,8} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components245(V1@Add2, V1@Buf1, []). enc_TABasedQMC(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute tAListforQMC(1) with type TAListforQMC Enc3@element = element(2, Val), enc_TAListforQMC(Enc3@element) end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc4@element = element(3, Val), if Enc4@element =:= asn1_NOVALUE -> []; true -> 'enc_TABasedQMC_iE-Extensions'(Enc4@element) end end]. 'enc_TABasedQMC_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_TABasedQMC_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_TABasedQMC_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_TABasedQMC(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute tAListforQMC(1) with type TAListforQMC {Term1,Bytes3} = dec_TAListforQMC(Bytes2), %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_TABasedQMC_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V3@V0,V3@Buf1} = case Bytes4 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'TABasedQMC',Term1,Term2}, {Res1,Bytes6}. 'dec_TABasedQMC_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components246(V1@Add4, V1@Buf1, []). 'dec_TABasedQMC_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_TAListforQMC(Val) -> Enc2@len = length(Val), Enc2@len@sub = Enc2@len - 1, if Enc2@len@sub bsr 3 =:= 0 -> [<>|[begin Enc1@len = byte_size(Comp), if Enc1@len =:= 2 -> Comp end end || Comp <- Val]] end. dec_TAListforQMC(Bytes) -> %% Length with constraint {1,8} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components247(V1@Add2, V1@Buf1, []). enc_TAIBasedQMC(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute tAIListforQMC(1) with type TAIListforQMC Enc3@element = element(2, Val), enc_TAIListforQMC(Enc3@element) end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc4@element = element(3, Val), if Enc4@element =:= asn1_NOVALUE -> []; true -> 'enc_TAIBasedQMC_iE-Extensions'(Enc4@element) end end]. 'enc_TAIBasedQMC_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_TAIBasedQMC_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_TAIBasedQMC_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_TAIBasedQMC(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute tAIListforQMC(1) with type TAIListforQMC {Term1,Bytes3} = dec_TAIListforQMC(Bytes2), %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_TAIBasedQMC_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V3@V0,V3@Buf1} = case Bytes4 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'TAIBasedQMC',Term1,Term2}, {Res1,Bytes6}. 'dec_TAIBasedQMC_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components248(V1@Add4, V1@Buf1, []). 'dec_TAIBasedQMC_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_TAIListforQMC(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 3 =:= 0 -> [<>|[enc_TAI(Comp) || Comp <- Val]] end. dec_TAIListforQMC(Bytes) -> %% Length with constraint {1,8} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components249(V1@Add2, V1@Buf1, []). enc_CompletedCellinTAI(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_CompletedCellinTAI-Item'(Comp) || Comp <- Val]] end. dec_CompletedCellinTAI(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components250(V1@Add4, V1@Buf1, []). 'enc_CompletedCellinTAI-Item'(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute eCGI(1) with type EUTRAN-CGI Enc3@element = element(2, Val), 'enc_EUTRAN-CGI'(Enc3@element) end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc4@element = element(3, Val), if Enc4@element =:= asn1_NOVALUE -> []; true -> 'enc_CompletedCellinTAI-Item_iE-Extensions'(Enc4@element) end end]. 'enc_CompletedCellinTAI-Item_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_CompletedCellinTAI-Item_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_CompletedCellinTAI-Item_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_CompletedCellinTAI-Item'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute eCGI(1) with type EUTRAN-CGI {Term1,Bytes3} = 'dec_EUTRAN-CGI'(Bytes2), %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_CompletedCellinTAI-Item_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V3@V0,V3@Buf1} = case Bytes4 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'CompletedCellinTAI-Item',Term1,Term2}, {Res1,Bytes6}. 'dec_CompletedCellinTAI-Item_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components251(V1@Add4, V1@Buf1, []). 'dec_CompletedCellinTAI-Item_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_TBCD-STRING'(Val) -> Enc1@len = byte_size(Val), if Enc1@len =:= 3 -> [align|Val] end. 'dec_TBCD-STRING'(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:3/binary-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Conv4 = binary:copy(V1@V0), {V1@Conv4,V1@Buf1} end. enc_TargetID(Val) -> {ChoiceTag,ChoiceVal} = Val, if ChoiceTag =:= 'targeteNB-ID' -> [<<0:1,0:2>>|'enc_TargeteNB-ID'(ChoiceVal)]; ChoiceTag =:= 'targetRNC-ID' -> [<<0:1,1:2>>|'enc_TargetRNC-ID'(ChoiceVal)]; ChoiceTag =:= cGI -> [<<0:1,2:2>>|enc_CGI(ChoiceVal)]; ChoiceTag =:= 'targetgNgRanNode-ID' -> begin Enc4@output = 'enc_TargetNgRanNode-ID'(ChoiceVal), Enc4@bin = complete(Enc4@output), Enc4@len = byte_size(Enc4@bin), if Enc4@len < 128 -> [<<1:1,0:7>>, align, Enc4@len|Enc4@bin]; Enc4@len < 16384 -> [<<1:1,0:7>>, align, <<2:2,Enc4@len:14>>|Enc4@bin]; true -> [<<1:1,0:7>>, align|encode_fragmented(Enc4@bin, 8)] end end end. dec_TargetID(Bytes) -> case Bytes of <<0:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin <> = Bytes1, {V1@V0,V1@Buf1} end, case Choice of 0 -> {Val,NewBytes} = begin 'dec_TargeteNB-ID'(Bytes2) end, {{'targeteNB-ID',Val},NewBytes}; 1 -> {Val,NewBytes} = begin 'dec_TargetRNC-ID'(Bytes2) end, {{'targetRNC-ID',Val},NewBytes}; 2 -> {Val,NewBytes} = begin dec_CGI(Bytes2) end, {{cGI,Val},NewBytes} end; <<1:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin {V1@V0,V1@Buf1} = case Bytes1 of <<0:1,V1@V3:6,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end, begin V2@Pad3 = bit_size(Bytes2) band 7, {V2@V0,V2@Buf1} = case Bytes2 of <<_:V2@Pad3,0:1,V2@V5:7,V2@V7:V2@V5/binary-unit:8,V2@Buf8/bitstring>> -> {V2@V7,V2@Buf8}; <<_:V2@Pad3,1:1,0:1,V2@V6:14,V2@V8:V2@V6/binary-unit:8,V2@Buf9/bitstring>> -> {V2@V8,V2@Buf9}; <<_:V2@Pad3,1:1,1:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V8,V2@Buf9} = decode_fragmented(V2@V6, V2@Buf7, 8), {V2@V8,V2@Buf9} end end, case Choice of 0 -> {Val,NewBytes} = begin {TmpVal,_} = 'dec_TargetNgRanNode-ID'(V2@V0), {TmpVal,V2@Buf1} end, {{'targetgNgRanNode-ID',Val},NewBytes}; _ -> {{asn1_ExtAlt,V2@V0},V2@Buf1} end end. 'enc_TargeteNB-ID'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute global-ENB-ID(1) with type Global-ENB-ID Enc3@element = element(2, Val), 'enc_Global-ENB-ID'(Enc3@element) end, begin %% attribute selected-TAI(2) with type TAI Enc4@element = element(3, Val), enc_TAI(Enc4@element) end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc5@element = element(4, Val), if Enc5@element =:= asn1_NOVALUE -> []; true -> 'enc_TargeteNB-ID_iE-Extensions'(Enc5@element) end end]. 'enc_TargeteNB-ID_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_TargeteNB-ID_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_TargeteNB-ID_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_TargeteNB-ID'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute global-ENB-ID(1) with type Global-ENB-ID {Term1,Bytes3} = 'dec_Global-ENB-ID'(Bytes2), %% attribute selected-TAI(2) with type TAI {Term2,Bytes4} = dec_TAI(Bytes3), %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_TargeteNB-ID_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V3@V0,V3@Buf1} = case Bytes5 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'TargeteNB-ID',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_TargeteNB-ID_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components252(V1@Add4, V1@Buf1, []). 'dec_TargeteNB-ID_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_TargetRNC-ID'(Val) -> [begin Enc1@element = element(3, Val), Enc2@element = element(5, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin Enc3@element = element(6, Val), if Enc3@element =:= asn1_NOVALUE -> <<0:1>>; true -> <<1:1>> end end, begin %% attribute lAI(1) with type LAI Enc5@element = element(2, Val), enc_LAI(Enc5@element) end, begin %% attribute rAC(2) with type OCTET STRING Enc6@element = element(3, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> begin Enc7@len = byte_size(Enc6@element), if Enc7@len =:= 1 -> Enc6@element end end end end, align, begin %% attribute rNC-ID(3) with type INTEGER Enc9@element = element(4, Val), if Enc9@element bsr 12 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc9@element}}}) end end, begin %% attribute extendedRNC-ID(4) with type INTEGER Enc11@element = element(5, Val), if Enc11@element =:= asn1_NOVALUE -> []; true -> begin Enc11@element@sub = Enc11@element - 4096, if 0 =< Enc11@element@sub, Enc11@element@sub < 61440 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc11@element}}}) end end end end|begin %% attribute iE-Extensions(5) with type SEQUENCE OF Enc14@element = element(6, Val), if Enc14@element =:= asn1_NOVALUE -> []; true -> 'enc_TargetRNC-ID_iE-Extensions'(Enc14@element) end end]. 'enc_TargetRNC-ID_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_TargetRNC-ID_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_TargetRNC-ID_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_TargetRNC-ID'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute lAI(1) with type LAI {Term1,Bytes3} = dec_LAI(Bytes2), %% attribute rAC(2) with type OCTET STRING {Term2,Bytes4} = case (Opt bsr 2) band 1 of 1 -> begin <> = Bytes3, V3@Conv2 = binary:copy(V3@V0), {V3@Conv2,V3@Buf1} end; 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute rNC-ID(3) with type INTEGER {Term3,Bytes5} = begin V4@Pad2 = bit_size(Bytes4) band 7, <<_:V4@Pad2,V4@V0:2/unsigned-unit:8,V4@Buf1/bitstring>> = Bytes4, {V4@V0,V4@Buf1} end, %% attribute extendedRNC-ID(4) with type INTEGER {Term4,Bytes6} = case (Opt bsr 1) band 1 of 1 -> begin V5@Pad2 = bit_size(Bytes5) band 7, <<_:V5@Pad2,V5@V0:2/unsigned-unit:8,V5@Buf1/bitstring>> = Bytes5, V5@Add4 = V5@V0 + 4096, {V5@Add4,V5@Buf1} end; 0 -> {asn1_NOVALUE,Bytes5} end, %% attribute iE-Extensions(5) with type SEQUENCE OF {Term5,Bytes7} = case Opt band 1 of 1 -> 'dec_TargetRNC-ID_iE-Extensions'(Bytes6); 0 -> {asn1_NOVALUE,Bytes6} end, %% Extensions {Extensions,Bytes8} = case Ext of 0 -> {<<>>,Bytes7}; 1 -> {V6@V0,V6@Buf1} = case Bytes7 of <<0:1,V6@V3:6,V6@Buf4/bitstring>> -> V6@Add5 = V6@V3 + 1, {V6@Add5,V6@Buf4}; <<1:1,V6@Buf2/bitstring>> -> V6@Pad6 = bit_size(V6@Buf2) band 7, {V6@V3,V6@Buf4} = case V6@Buf2 of <<_:V6@Pad6,0:1,V6@V8:7,V6@Buf9/bitstring>> when V6@V8 =/= 0 -> {V6@V8,V6@Buf9}; <<_:V6@Pad6,1:1,0:1,V6@V9:14,V6@Buf10/bitstring>> when V6@V9 =/= 0 -> {V6@V9,V6@Buf10}; <<_:V6@Pad6,1:1,1:1,V6@V9:6,V6@Buf10/bitstring>> when V6@V9 =/= 0 -> V6@Mul11 = V6@V9 * 16384, {V6@Mul11,V6@Buf10} end, {V6@V3,V6@Buf4} end, <> = V6@Buf1, {V6@V12,V6@Buf13} end, Bytes9= skipextensions(Bytes8, 1, Extensions), Res1 = {'TargetRNC-ID',Term1,Term2,Term3,Term4,Term5}, {Res1,Bytes9}. 'dec_TargetRNC-ID_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components253(V1@Add4, V1@Buf1, []). 'dec_TargetRNC-ID_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_TargetNgRanNode-ID'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute global-RAN-NODE-ID(1) with type Global-RAN-NODE-ID Enc3@element = element(2, Val), 'enc_Global-RAN-NODE-ID'(Enc3@element) end, begin %% attribute selected-TAI(2) with type FiveGSTAI Enc4@element = element(3, Val), enc_FiveGSTAI(Enc4@element) end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc5@element = element(4, Val), if Enc5@element =:= asn1_NOVALUE -> []; true -> 'enc_TargetNgRanNode-ID_iE-Extensions'(Enc5@element) end end]. 'enc_TargetNgRanNode-ID_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_TargetNgRanNode-ID_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_TargetNgRanNode-ID_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_TargetNgRanNode-ID'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute global-RAN-NODE-ID(1) with type Global-RAN-NODE-ID {Term1,Bytes3} = 'dec_Global-RAN-NODE-ID'(Bytes2), %% attribute selected-TAI(2) with type FiveGSTAI {Term2,Bytes4} = dec_FiveGSTAI(Bytes3), %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_TargetNgRanNode-ID_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V3@V0,V3@Buf1} = case Bytes5 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'TargetNgRanNode-ID',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_TargetNgRanNode-ID_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components254(V1@Add4, V1@Buf1, []). 'dec_TargetNgRanNode-ID_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_Global-RAN-NODE-ID'(Val) -> {ChoiceTag,ChoiceVal} = Val, if ChoiceTag =:= gNB -> [<<0:1,0:1>>|enc_GNB(ChoiceVal)]; ChoiceTag =:= 'ng-eNB' -> [<<0:1,1:1>>|'enc_NG-eNB'(ChoiceVal)] end. 'dec_Global-RAN-NODE-ID'(Bytes) -> case Bytes of <<0:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin <> = Bytes1, {V1@V0,V1@Buf1} end, case Choice of 0 -> {Val,NewBytes} = begin dec_GNB(Bytes2) end, {{gNB,Val},NewBytes}; 1 -> {Val,NewBytes} = begin 'dec_NG-eNB'(Bytes2) end, {{'ng-eNB',Val},NewBytes} end; <<1:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin {V1@V0,V1@Buf1} = case Bytes1 of <<0:1,V1@V3:6,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end, begin V2@Pad3 = bit_size(Bytes2) band 7, {V2@V0,V2@Buf1} = case Bytes2 of <<_:V2@Pad3,0:1,V2@V5:7,V2@V7:V2@V5/binary-unit:8,V2@Buf8/bitstring>> -> {V2@V7,V2@Buf8}; <<_:V2@Pad3,1:1,0:1,V2@V6:14,V2@V8:V2@V6/binary-unit:8,V2@Buf9/bitstring>> -> {V2@V8,V2@Buf9}; <<_:V2@Pad3,1:1,1:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V8,V2@Buf9} = decode_fragmented(V2@V6, V2@Buf7, 8), {V2@V8,V2@Buf9} end end, case Choice of _ -> {{asn1_ExtAlt,V2@V0},V2@Buf1} end end. enc_GNB(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute global-gNB-ID(1) with type Global-GNB-ID Enc3@element = element(2, Val), 'enc_Global-GNB-ID'(Enc3@element) end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc4@element = element(3, Val), if Enc4@element =:= asn1_NOVALUE -> []; true -> 'enc_GNB_iE-Extensions'(Enc4@element) end end]. 'enc_GNB_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_GNB_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_GNB_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_GNB(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute global-gNB-ID(1) with type Global-GNB-ID {Term1,Bytes3} = 'dec_Global-GNB-ID'(Bytes2), %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_GNB_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V3@V0,V3@Buf1} = case Bytes4 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'GNB',Term1,Term2}, {Res1,Bytes6}. 'dec_GNB_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components255(V1@Add4, V1@Buf1, []). 'dec_GNB_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_Global-GNB-ID'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, align, begin %% attribute pLMN-Identity(1) with type OCTET STRING Enc3@element = element(2, Val), Enc4@len = byte_size(Enc3@element), if Enc4@len =:= 3 -> Enc3@element end end, begin %% attribute gNB-ID(2) with type GNB-Identity Enc5@element = element(3, Val), 'enc_GNB-Identity'(Enc5@element) end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc6@element = element(4, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> 'enc_Global-GNB-ID_iE-Extensions'(Enc6@element) end end]. 'enc_Global-GNB-ID_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_Global-GNB-ID_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_Global-GNB-ID_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_Global-GNB-ID'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute pLMN-Identity(1) with type OCTET STRING {Term1,Bytes3} = begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:3/binary-unit:8,V3@Buf1/bitstring>> = Bytes2, V3@Conv4 = binary:copy(V3@V0), {V3@Conv4,V3@Buf1} end, %% attribute gNB-ID(2) with type GNB-Identity {Term2,Bytes4} = 'dec_GNB-Identity'(Bytes3), %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_Global-GNB-ID_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V4@V0,V4@Buf1} = case Bytes5 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'Global-GNB-ID',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_Global-GNB-ID_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components256(V1@Add4, V1@Buf1, []). 'dec_Global-GNB-ID_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_GNB-Identity'(Val) -> {ChoiceTag,ChoiceVal} = Val, if ChoiceTag =:= 'gNB-ID' -> begin Enc2@bits = bit_size(ChoiceVal), Enc2@bits@sub = Enc2@bits - 22, if 0 =< Enc2@bits@sub, Enc2@bits@sub < 11 -> [<<0:1,Enc2@bits@sub:4>>, align|ChoiceVal] end end end. 'dec_GNB-Identity'(Bytes) -> case Bytes of <<0:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin ignore, {0,Bytes1} end, case Choice of 0 -> {Val,NewBytes} = begin begin <> = Bytes2, V2@Add2 = V2@V0 + 22, V2@Pad5 = bit_size(V2@Buf1) band 7, <<_:V2@Pad5,V2@V3:V2@Add2/binary-unit:1,V2@Buf4/bitstring>> = V2@Buf1, {V2@V7,V2@Buf8} = {list_to_bitstring([V2@V3]),V2@Buf4}, {V2@V7,V2@Buf8} end end, {{'gNB-ID',Val},NewBytes} end; <<1:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin {V1@V0,V1@Buf1} = case Bytes1 of <<0:1,V1@V3:6,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end, begin V2@Pad3 = bit_size(Bytes2) band 7, {V2@V0,V2@Buf1} = case Bytes2 of <<_:V2@Pad3,0:1,V2@V5:7,V2@V7:V2@V5/binary-unit:8,V2@Buf8/bitstring>> -> {V2@V7,V2@Buf8}; <<_:V2@Pad3,1:1,0:1,V2@V6:14,V2@V8:V2@V6/binary-unit:8,V2@Buf9/bitstring>> -> {V2@V8,V2@Buf9}; <<_:V2@Pad3,1:1,1:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V8,V2@Buf9} = decode_fragmented(V2@V6, V2@Buf7, 8), {V2@V8,V2@Buf9} end end, case Choice of _ -> {{asn1_ExtAlt,V2@V0},V2@Buf1} end end. 'enc_NG-eNB'(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute global-ng-eNB-ID(1) with type Global-ENB-ID Enc3@element = element(2, Val), 'enc_Global-ENB-ID'(Enc3@element) end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc4@element = element(3, Val), if Enc4@element =:= asn1_NOVALUE -> []; true -> 'enc_NG-eNB_iE-Extensions'(Enc4@element) end end]. 'enc_NG-eNB_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_NG-eNB_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_NG-eNB_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_NG-eNB'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute global-ng-eNB-ID(1) with type Global-ENB-ID {Term1,Bytes3} = 'dec_Global-ENB-ID'(Bytes2), %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_NG-eNB_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V3@V0,V3@Buf1} = case Bytes4 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'NG-eNB',Term1,Term2}, {Res1,Bytes6}. 'dec_NG-eNB_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components257(V1@Add4, V1@Buf1, []). 'dec_NG-eNB_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_GNB-ID'(Val) -> Enc1@bits = bit_size(Val), Enc1@bits@sub = Enc1@bits - 22, if 0 =< Enc1@bits@sub, Enc1@bits@sub < 11 -> [<>, align|Val] end. 'dec_GNB-ID'(Bytes) -> begin <> = Bytes, V1@Add2 = V1@V0 + 22, V1@Pad5 = bit_size(V1@Buf1) band 7, <<_:V1@Pad5,V1@V3:V1@Add2/binary-unit:1,V1@Buf4/bitstring>> = V1@Buf1, {V1@V7,V1@Buf8} = {list_to_bitstring([V1@V3]),V1@Buf4}, {V1@V7,V1@Buf8} end. 'enc_TargeteNB-ToSourceeNB-TransparentContainer'(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, align, begin %% attribute rRC-Container(1) with type OCTET STRING Enc3@element = element(2, Val), Enc4@len = byte_size(Enc3@element), if Enc4@len < 128 -> [Enc4@len|Enc3@element]; Enc4@len < 16384 -> [<<2:2,Enc4@len:14>>|Enc3@element]; true -> encode_fragmented(Enc3@element, 8) end end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc5@element = element(3, Val), if Enc5@element =:= asn1_NOVALUE -> []; true -> 'enc_TargeteNB-ToSourceeNB-TransparentContainer_iE-Extensions'(Enc5@element) end end]. 'enc_TargeteNB-ToSourceeNB-TransparentContainer_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_TargeteNB-ToSourceeNB-TransparentContainer_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_TargeteNB-ToSourceeNB-TransparentContainer_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension258(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_TargeteNB-ToSourceeNB-TransparentContainer'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute rRC-Container(1) with type OCTET STRING {Term1,Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, V3@Conv10 = binary:copy(V3@V0), {V3@Conv10,V3@Buf1} end, %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_TargeteNB-ToSourceeNB-TransparentContainer_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V4@V0,V4@Buf1} = case Bytes4 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'TargeteNB-ToSourceeNB-TransparentContainer',Term1,Term2}, {Res1,Bytes6}. 'dec_TargeteNB-ToSourceeNB-TransparentContainer_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components259(V1@Add4, V1@Buf1, []). 'dec_TargeteNB-ToSourceeNB-TransparentContainer_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension260(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_Target-ToSource-TransparentContainer'(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. 'dec_Target-ToSource-TransparentContainer'(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. 'enc_TargetRNC-ToSourceRNC-TransparentContainer'(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. 'dec_TargetRNC-ToSourceRNC-TransparentContainer'(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. 'enc_TargetBSS-ToSourceBSS-TransparentContainer'(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. 'dec_TargetBSS-ToSourceBSS-TransparentContainer'(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. 'enc_TargetNgRanNode-ToSourceNgRanNode-TransparentContainer'(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. 'dec_TargetNgRanNode-ToSourceNgRanNode-TransparentContainer'(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. enc_M1ThresholdEventA2(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute measurementThreshold(1) with type MeasurementThresholdA2 Enc3@element = element(2, Val), enc_MeasurementThresholdA2(Enc3@element) end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc4@element = element(3, Val), if Enc4@element =:= asn1_NOVALUE -> []; true -> 'enc_M1ThresholdEventA2_iE-Extensions'(Enc4@element) end end]. 'enc_M1ThresholdEventA2_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_M1ThresholdEventA2_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_M1ThresholdEventA2_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_M1ThresholdEventA2(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute measurementThreshold(1) with type MeasurementThresholdA2 {Term1,Bytes3} = dec_MeasurementThresholdA2(Bytes2), %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_M1ThresholdEventA2_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V3@V0,V3@Buf1} = case Bytes4 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'M1ThresholdEventA2',Term1,Term2}, {Res1,Bytes6}. 'dec_M1ThresholdEventA2_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components261(V1@Add4, V1@Buf1, []). 'dec_M1ThresholdEventA2_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_Threshold-RSRP'(Val) -> if 0 =< Val, Val < 98 -> <>; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. 'dec_Threshold-RSRP'(Bytes) -> begin <> = Bytes, {V1@V0,V1@Buf1} end. 'enc_Threshold-RSRQ'(Val) -> if 0 =< Val, Val < 35 -> <>; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. 'dec_Threshold-RSRQ'(Bytes) -> begin <> = Bytes, {V1@V0,V1@Buf1} end. enc_TimeToTrigger(Val) -> if Val =:= ms0 -> <<0:4>>; Val =:= ms40 -> <<1:4>>; Val =:= ms64 -> <<2:4>>; Val =:= ms80 -> <<3:4>>; Val =:= ms100 -> <<4:4>>; Val =:= ms128 -> <<5:4>>; Val =:= ms160 -> <<6:4>>; Val =:= ms256 -> <<7:4>>; Val =:= ms320 -> <<8:4>>; Val =:= ms480 -> <<9:4>>; Val =:= ms512 -> <<10:4>>; Val =:= ms640 -> <<11:4>>; Val =:= ms1024 -> <<12:4>>; Val =:= ms1280 -> <<13:4>>; Val =:= ms2560 -> <<14:4>>; Val =:= ms5120 -> <<15:4>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_TimeToTrigger(Bytes) -> begin <> = Bytes, V1@Int2 = case V1@V0 of 0 -> ms0; 1 -> ms40; 2 -> ms64; 3 -> ms80; 4 -> ms100; 5 -> ms128; 6 -> ms160; 7 -> ms256; 8 -> ms320; 9 -> ms480; 10 -> ms512; 11 -> ms640; 12 -> ms1024; 13 -> ms1280; 14 -> ms2560; 15 -> ms5120 end, {V1@Int2,V1@Buf1} end. enc_TimeToWait(Val) -> if Val =:= v1s -> <<0:1,0:3>>; Val =:= v2s -> <<0:1,1:3>>; Val =:= v5s -> <<0:1,2:3>>; Val =:= v10s -> <<0:1,3:3>>; Val =:= v20s -> <<0:1,4:3>>; Val =:= v60s -> <<0:1,5:3>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_TimeToWait(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:3/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> v1s; 1 -> v2s; 2 -> v5s; 3 -> v10s; 4 -> v20s; 5 -> v60s; _ -> exit({error,{asn1,{decode_enumerated,V1@V3}}}) end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. 'enc_Time-UE-StayedInCell'(Val) -> if Val bsr 12 =:= 0 -> [align|<>]; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. 'dec_Time-UE-StayedInCell'(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end. 'enc_Time-UE-StayedInCell-EnhancedGranularity'(Val) -> if 0 =< Val, Val < 40951 -> [align|<>]; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. 'dec_Time-UE-StayedInCell-EnhancedGranularity'(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end. enc_TimeSinceSecondaryNodeRelease(Val) -> Enc1@len = byte_size(Val), if Enc1@len =:= 4 -> [align|Val] end. dec_TimeSinceSecondaryNodeRelease(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:4/binary-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Conv4 = binary:copy(V1@V0), {V1@Conv4,V1@Buf1} end. enc_TransportInformation(Val) -> [begin %% attribute transportLayerAddress(1) with type BIT STRING Enc2@element = element(2, Val), Enc3@bits = bit_size(Enc2@element), Enc3@bits@sub = Enc3@bits - 1, if 0 =< Enc3@bits@sub, Enc3@bits@sub < 160 -> [<<0:1,0:1,Enc3@bits@sub:8>>, align|Enc2@element]; Enc3@bits < 16384 -> [<<0:1,1:1>>, align, <<2:2,Enc3@bits:14>>|Enc2@element]; true -> [<<0:1,1:1>>, align|encode_fragmented(Enc2@element, 1)] end end, align|begin %% attribute uL-GTP-TEID(2) with type OCTET STRING Enc4@element = element(3, Val), Enc5@len = byte_size(Enc4@element), if Enc5@len =:= 4 -> Enc4@element end end]. dec_TransportInformation(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, %% attribute transportLayerAddress(1) with type BIT STRING {Term1,Bytes2} = begin {V2@V0,V2@Buf1} = case Bytes1 of <<0:1,V2@V3:8/unsigned-unit:1,V2@Buf4/bitstring>> -> V2@Add5 = V2@V3 + 1, V2@Pad8 = bit_size(V2@Buf4) band 7, <<_:V2@Pad8,V2@V6:V2@Add5/binary-unit:1,V2@Buf7/bitstring>> = V2@Buf4, {V2@V6,V2@Buf7}; <<1:1,V2@Buf2/bitstring>> -> V2@Pad6 = bit_size(V2@Buf2) band 7, {V2@V3,V2@Buf4} = case V2@Buf2 of <<_:V2@Pad6,0:1,V2@V8:7,V2@V10:V2@V8/binary-unit:1,V2@Buf11/bitstring>> -> {V2@V10,V2@Buf11}; <<_:V2@Pad6,1:1,0:1,V2@V9:14,V2@V11:V2@V9/binary-unit:1,V2@Buf12/bitstring>> -> {V2@V11,V2@Buf12}; <<_:V2@Pad6,1:1,1:1,V2@V9:6,V2@Buf10/bitstring>> -> {V2@V11,V2@Buf12} = decode_fragmented(V2@V9, V2@Buf10, 1), {V2@V11,V2@Buf12} end, {V2@V3,V2@Buf4} end, {V2@V13,V2@Buf14} = {list_to_bitstring([V2@V0]),V2@Buf1}, {V2@V13,V2@Buf14} end, %% attribute uL-GTP-TEID(2) with type OCTET STRING {Term2,Bytes3} = begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:4/binary-unit:8,V3@Buf1/bitstring>> = Bytes2, V3@Conv4 = binary:copy(V3@V0), {V3@Conv4,V3@Buf1} end, %% Extensions {Extensions,Bytes4} = case Ext of 0 -> {<<>>,Bytes3}; 1 -> {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:7,0:1,V4@V7:7,V4@Buf8/bitstring>> when V4@V7 =/= 0 -> {V4@V7,V4@Buf8}; <<_:7,1:1,0:1,V4@V8:14,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:7,1:1,1:1,V4@V8:6,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> V4@Mul10 = V4@V8 * 16384, {V4@Mul10,V4@Buf9} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V11,V4@Buf12} end, Bytes5= skipextensions(Bytes4, 1, Extensions), Res1 = {'TransportInformation',Term1,Term2}, {Res1,Bytes5}. enc_TransportLayerAddress(Val) -> Enc1@bits = bit_size(Val), Enc1@bits@sub = Enc1@bits - 1, if 0 =< Enc1@bits@sub, Enc1@bits@sub < 160 -> [<<0:1,Enc1@bits@sub:8>>, align|Val]; Enc1@bits < 16384 -> [<<1:1>>, align, <<2:2,Enc1@bits:14>>|Val]; true -> [<<1:1>>, align|encode_fragmented(Val, 1)] end. dec_TransportLayerAddress(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:8/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Add5 = V1@V3 + 1, V1@Pad8 = bit_size(V1@Buf4) band 7, <<_:V1@Pad8,V1@V6:V1@Add5/binary-unit:1,V1@Buf7/bitstring>> = V1@Buf4, {V1@V6,V1@Buf7}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@V10:V1@V8/binary-unit:1,V1@Buf11/bitstring>> -> {V1@V10,V1@Buf11}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@V11:V1@V9/binary-unit:1,V1@Buf12/bitstring>> -> {V1@V11,V1@Buf12}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> -> {V1@V11,V1@Buf12} = decode_fragmented(V1@V9, V1@Buf10, 1), {V1@V11,V1@Buf12} end, {V1@V3,V1@Buf4} end, {V1@V13,V1@Buf14} = {list_to_bitstring([V1@V0]),V1@Buf1}, {V1@V13,V1@Buf14} end. enc_TraceActivation(Val) -> [begin Enc1@element = element(6, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, align, begin %% attribute e-UTRAN-Trace-ID(1) with type OCTET STRING Enc3@element = element(2, Val), Enc4@len = byte_size(Enc3@element), if Enc4@len =:= 8 -> Enc3@element end end, begin %% attribute interfacesToTrace(2) with type BIT STRING Enc5@element = element(3, Val), Enc6@bits = bit_size(Enc5@element), if Enc6@bits =:= 8 -> Enc5@element end end, begin %% attribute traceDepth(3) with type ENUMERATED Enc7@element = element(4, Val), if Enc7@element =:= minimum -> <<0:1,0:3>>; Enc7@element =:= medium -> <<0:1,1:3>>; Enc7@element =:= maximum -> <<0:1,2:3>>; Enc7@element =:= minimumWithoutVendorSpecificExtension -> <<0:1,3:3>>; Enc7@element =:= mediumWithoutVendorSpecificExtension -> <<0:1,4:3>>; Enc7@element =:= maximumWithoutVendorSpecificExtension -> <<0:1,5:3>>; true -> exit({error,{asn1,{illegal_enumerated,Enc7@element}}}) end end, begin %% attribute traceCollectionEntityIPAddress(4) with type BIT STRING Enc9@element = element(5, Val), Enc10@bits = bit_size(Enc9@element), Enc10@bits@sub = Enc10@bits - 1, if 0 =< Enc10@bits@sub, Enc10@bits@sub < 160 -> [<<0:1,Enc10@bits@sub:8,0:3>>|Enc9@element]; Enc10@bits < 16384 -> [<<1:1,2:5,Enc10@bits:14>>|Enc9@element]; true -> [<<1:1,0:3>>|encode_fragmented(Enc9@element, 1)] end end|begin %% attribute iE-Extensions(5) with type SEQUENCE OF Enc11@element = element(6, Val), if Enc11@element =:= asn1_NOVALUE -> []; true -> 'enc_TraceActivation_iE-Extensions'(Enc11@element) end end]. 'enc_TraceActivation_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_TraceActivation_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_TraceActivation_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension262(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_TraceActivation(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute e-UTRAN-Trace-ID(1) with type OCTET STRING {Term1,Bytes3} = begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:8/binary-unit:8,V3@Buf1/bitstring>> = Bytes2, V3@Conv4 = binary:copy(V3@V0), {V3@Conv4,V3@Buf1} end, %% attribute interfacesToTrace(2) with type BIT STRING {Term2,Bytes4} = begin <> = Bytes3, {V4@V2,V4@Buf3} = {list_to_bitstring([V4@V0]),V4@Buf1}, {V4@V2,V4@Buf3} end, %% attribute traceDepth(3) with type ENUMERATED {Term3,Bytes5} = begin {V5@V0,V5@Buf1} = case Bytes4 of <<0:1,V5@V3:3/unsigned-unit:1,V5@Buf4/bitstring>> -> V5@Int5 = case V5@V3 of 0 -> minimum; 1 -> medium; 2 -> maximum; 3 -> minimumWithoutVendorSpecificExtension; 4 -> mediumWithoutVendorSpecificExtension; 5 -> maximumWithoutVendorSpecificExtension; _ -> exit({error,{asn1,{decode_enumerated,V5@V3}}}) end, {V5@Int5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> {V5@V3,V5@Buf4} = case V5@Buf2 of <<0:1,V5@V6:6,V5@Buf7/bitstring>> -> {V5@V6,V5@Buf7}; <<1:1,V5@Buf5/bitstring>> -> {V5@V6,V5@Buf7} = case V5@Buf5 of <<_:6,0:1,V5@V10:7,V5@Buf11/bitstring>> when V5@V10 =/= 0 -> {V5@V10,V5@Buf11}; <<_:6,1:1,0:1,V5@V11:14,V5@Buf12/bitstring>> when V5@V11 =/= 0 -> {V5@V11,V5@Buf12}; <<_:6,1:1,1:1,V5@V11:6,V5@Buf12/bitstring>> when V5@V11 =/= 0 -> V5@Mul13 = V5@V11 * 16384, {V5@Mul13,V5@Buf12} end, <> = V5@Buf7, {V5@V14,V5@Buf15} end, V5@Int16 = case V5@V3 of _ -> {asn1_enum,V5@V3} end, {V5@Int16,V5@Buf4} end, {V5@V0,V5@Buf1} end, %% attribute traceCollectionEntityIPAddress(4) with type BIT STRING {Term4,Bytes6} = begin {V6@V0,V6@Buf1} = case Bytes5 of <<0:1,V6@V3:8/unsigned-unit:1,V6@Buf4/bitstring>> -> V6@Add5 = V6@V3 + 1, V6@Pad8 = bit_size(V6@Buf4) band 7, <<_:V6@Pad8,V6@V6:V6@Add5/binary-unit:1,V6@Buf7/bitstring>> = V6@Buf4, {V6@V6,V6@Buf7}; <<1:1,V6@Buf2/bitstring>> -> V6@Pad6 = bit_size(V6@Buf2) band 7, {V6@V3,V6@Buf4} = case V6@Buf2 of <<_:V6@Pad6,0:1,V6@V8:7,V6@V10:V6@V8/binary-unit:1,V6@Buf11/bitstring>> -> {V6@V10,V6@Buf11}; <<_:V6@Pad6,1:1,0:1,V6@V9:14,V6@V11:V6@V9/binary-unit:1,V6@Buf12/bitstring>> -> {V6@V11,V6@Buf12}; <<_:V6@Pad6,1:1,1:1,V6@V9:6,V6@Buf10/bitstring>> -> {V6@V11,V6@Buf12} = decode_fragmented(V6@V9, V6@Buf10, 1), {V6@V11,V6@Buf12} end, {V6@V3,V6@Buf4} end, {V6@V13,V6@Buf14} = {list_to_bitstring([V6@V0]),V6@Buf1}, {V6@V13,V6@Buf14} end, %% attribute iE-Extensions(5) with type SEQUENCE OF {Term5,Bytes7} = case Opt band 1 of 1 -> 'dec_TraceActivation_iE-Extensions'(Bytes6); 0 -> {asn1_NOVALUE,Bytes6} end, %% Extensions {Extensions,Bytes8} = case Ext of 0 -> {<<>>,Bytes7}; 1 -> {V7@V0,V7@Buf1} = case Bytes7 of <<0:1,V7@V3:6,V7@Buf4/bitstring>> -> V7@Add5 = V7@V3 + 1, {V7@Add5,V7@Buf4}; <<1:1,V7@Buf2/bitstring>> -> V7@Pad6 = bit_size(V7@Buf2) band 7, {V7@V3,V7@Buf4} = case V7@Buf2 of <<_:V7@Pad6,0:1,V7@V8:7,V7@Buf9/bitstring>> when V7@V8 =/= 0 -> {V7@V8,V7@Buf9}; <<_:V7@Pad6,1:1,0:1,V7@V9:14,V7@Buf10/bitstring>> when V7@V9 =/= 0 -> {V7@V9,V7@Buf10}; <<_:V7@Pad6,1:1,1:1,V7@V9:6,V7@Buf10/bitstring>> when V7@V9 =/= 0 -> V7@Mul11 = V7@V9 * 16384, {V7@Mul11,V7@Buf10} end, {V7@V3,V7@Buf4} end, <> = V7@Buf1, {V7@V12,V7@Buf13} end, Bytes9= skipextensions(Bytes8, 1, Extensions), Res1 = {'TraceActivation',Term1,Term2,Term3,Term4,Term5}, {Res1,Bytes9}. 'dec_TraceActivation_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components263(V1@Add4, V1@Buf1, []). 'dec_TraceActivation_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension264(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_TraceDepth(Val) -> if Val =:= minimum -> <<0:1,0:3>>; Val =:= medium -> <<0:1,1:3>>; Val =:= maximum -> <<0:1,2:3>>; Val =:= minimumWithoutVendorSpecificExtension -> <<0:1,3:3>>; Val =:= mediumWithoutVendorSpecificExtension -> <<0:1,4:3>>; Val =:= maximumWithoutVendorSpecificExtension -> <<0:1,5:3>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_TraceDepth(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:3/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> minimum; 1 -> medium; 2 -> maximum; 3 -> minimumWithoutVendorSpecificExtension; 4 -> mediumWithoutVendorSpecificExtension; 5 -> maximumWithoutVendorSpecificExtension; _ -> exit({error,{asn1,{decode_enumerated,V1@V3}}}) end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. 'enc_E-UTRAN-Trace-ID'(Val) -> Enc1@len = byte_size(Val), if Enc1@len =:= 8 -> [align|Val] end. 'dec_E-UTRAN-Trace-ID'(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:8/binary-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Conv4 = binary:copy(V1@V0), {V1@Conv4,V1@Buf1} end. enc_TrafficLoadReductionIndication(Val) -> Val@sub = Val - 1, if 0 =< Val@sub, Val@sub < 99 -> <>; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. dec_TrafficLoadReductionIndication(Bytes) -> begin <> = Bytes, V1@Add2 = V1@V0 + 1, {V1@Add2,V1@Buf1} end. enc_TunnelInformation(Val) -> [begin Enc1@element = element(3, Val), Enc2@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin %% attribute transportLayerAddress(1) with type BIT STRING Enc4@element = element(2, Val), Enc5@bits = bit_size(Enc4@element), Enc5@bits@sub = Enc5@bits - 1, if 0 =< Enc5@bits@sub, Enc5@bits@sub < 160 -> [<<0:1,Enc5@bits@sub:8>>, align|Enc4@element]; Enc5@bits < 16384 -> [<<1:1>>, align, <<2:2,Enc5@bits:14>>|Enc4@element]; true -> [<<1:1>>, align|encode_fragmented(Enc4@element, 1)] end end, begin %% attribute uDP-Port-Number(2) with type OCTET STRING Enc6@element = element(3, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> begin Enc7@len = byte_size(Enc6@element), if Enc7@len =:= 2 -> Enc6@element end end end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc9@element = element(4, Val), if Enc9@element =:= asn1_NOVALUE -> []; true -> 'enc_TunnelInformation_iE-Extensions'(Enc9@element) end end]. 'enc_TunnelInformation_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_TunnelInformation_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_TunnelInformation_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_TunnelInformation(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute transportLayerAddress(1) with type BIT STRING {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:8/unsigned-unit:1,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, V3@Pad8 = bit_size(V3@Buf4) band 7, <<_:V3@Pad8,V3@V6:V3@Add5/binary-unit:1,V3@Buf7/bitstring>> = V3@Buf4, {V3@V6,V3@Buf7}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@V10:V3@V8/binary-unit:1,V3@Buf11/bitstring>> -> {V3@V10,V3@Buf11}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@V11:V3@V9/binary-unit:1,V3@Buf12/bitstring>> -> {V3@V11,V3@Buf12}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> -> {V3@V11,V3@Buf12} = decode_fragmented(V3@V9, V3@Buf10, 1), {V3@V11,V3@Buf12} end, {V3@V3,V3@Buf4} end, {V3@V13,V3@Buf14} = {list_to_bitstring([V3@V0]),V3@Buf1}, {V3@V13,V3@Buf14} end, %% attribute uDP-Port-Number(2) with type OCTET STRING {Term2,Bytes4} = case (Opt bsr 1) band 1 of 1 -> begin <> = Bytes3, V4@Conv2 = binary:copy(V4@V0), {V4@Conv2,V4@Buf1} end; 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_TunnelInformation_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'TunnelInformation',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_TunnelInformation_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components265(V1@Add4, V1@Buf1, []). 'dec_TunnelInformation_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_TypeOfError(Val) -> if Val =:= 'not-understood' -> <<0:1,0:1>>; Val =:= missing -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_TypeOfError(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:1/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> 'not-understood'; 1 -> missing end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_TAIListForRestart(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 11 =:= 0 -> [align, <>|[enc_TAI(Comp) || Comp <- Val]] end. dec_TAIListForRestart(Bytes) -> %% Length with constraint {1,2048} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components266(V1@Add4, V1@Buf1, []). enc_UEAggregateMaximumBitrate(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute uEaggregateMaximumBitRateDL(1) with type INTEGER Enc3@element = element(2, Val), if 0 =< Enc3@element, Enc3@element < 10000000001 -> begin Enc3@element@bin = binary:encode_unsigned(Enc3@element), Enc3@element@bin_size0 = byte_size(Enc3@element@bin), Enc3@element@bin_size = Enc3@element@bin_size0 - 1, [<>, align|Enc3@element@bin] end; true -> exit({error,{asn1,{illegal_integer,Enc3@element}}}) end end, begin %% attribute uEaggregateMaximumBitRateUL(2) with type INTEGER Enc5@element = element(3, Val), if 0 =< Enc5@element, Enc5@element < 10000000001 -> begin Enc5@element@bin = binary:encode_unsigned(Enc5@element), Enc5@element@bin_size0 = byte_size(Enc5@element@bin), Enc5@element@bin_size = Enc5@element@bin_size0 - 1, [<>|Enc5@element@bin] end; true -> exit({error,{asn1,{illegal_integer,Enc5@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_UEAggregateMaximumBitrate_iE-Extensions'(Enc7@element) end end]. 'enc_UEAggregateMaximumBitrate_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_UEAggregateMaximumBitrate_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_UEAggregateMaximumBitrate_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension267(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_UEAggregateMaximumBitrate(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute uEaggregateMaximumBitRateDL(1) with type INTEGER {Term1,Bytes3} = begin <> = Bytes2, V3@Add2 = V3@V0 + 1, V3@Pad5 = bit_size(V3@Buf1) band 7, <<_:V3@Pad5,V3@V3:V3@Add2/unsigned-unit:8,V3@Buf4/bitstring>> = V3@Buf1, {V3@V3,V3@Buf4} end, %% attribute uEaggregateMaximumBitRateUL(2) with type INTEGER {Term2,Bytes4} = begin <> = Bytes3, V4@Add2 = V4@V0 + 1, <<_:5,V4@V3:V4@Add2/unsigned-unit:8,V4@Buf4/bitstring>> = V4@Buf1, {V4@V3,V4@Buf4} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_UEAggregateMaximumBitrate_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'UEAggregateMaximumBitrate',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_UEAggregateMaximumBitrate_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components268(V1@Add4, V1@Buf1, []). 'dec_UEAggregateMaximumBitrate_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension269(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_UEAppLayerMeasConfig(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, align, begin %% attribute containerForAppLayerMeasConfig(1) with type OCTET STRING Enc3@element = element(2, Val), Enc4@len = byte_size(Enc3@element), Enc4@len@sub = Enc4@len - 1, if 0 =< Enc4@len@sub, Enc4@len@sub < 1000 -> [<>|Enc3@element] end end, begin %% attribute areaScopeOfQMC(2) with type AreaScopeOfQMC Enc5@element = element(3, Val), enc_AreaScopeOfQMC(Enc5@element) end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc6@element = element(4, Val), if Enc6@element =:= asn1_NOVALUE -> []; true -> 'enc_UEAppLayerMeasConfig_iE-Extensions'(Enc6@element) end end]. 'enc_UEAppLayerMeasConfig_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_UEAppLayerMeasConfig_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_UEAppLayerMeasConfig_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension270(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_UEAppLayerMeasConfig(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute containerForAppLayerMeasConfig(1) with type OCTET STRING {Term1,Bytes3} = begin V3@Pad2 = bit_size(Bytes2) band 7, <<_:V3@Pad2,V3@V0:2/unsigned-unit:8,V3@Buf1/bitstring>> = Bytes2, V3@Add4 = V3@V0 + 1, <> = V3@Buf1, V3@Conv7 = binary:copy(V3@V5), {V3@Conv7,V3@Buf6} end, %% attribute areaScopeOfQMC(2) with type AreaScopeOfQMC {Term2,Bytes4} = dec_AreaScopeOfQMC(Bytes3), %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_UEAppLayerMeasConfig_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V4@V0,V4@Buf1} = case Bytes5 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'UEAppLayerMeasConfig',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_UEAppLayerMeasConfig_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components271(V1@Add4, V1@Buf1, []). 'dec_UEAppLayerMeasConfig_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension272(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_UECapabilityInfoRequest(Val) -> if Val =:= requested -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_UECapabilityInfoRequest(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'requested',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. 'enc_UE-RetentionInformation'(Val) -> if Val =:= 'ues-retained' -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. 'dec_UE-RetentionInformation'(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'ues-retained',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. 'enc_UE-S1AP-IDs'(Val) -> {ChoiceTag,ChoiceVal} = Val, if ChoiceTag =:= 'uE-S1AP-ID-pair' -> [<<0:1,0:1>>|'enc_UE-S1AP-ID-pair'(ChoiceVal)]; ChoiceTag =:= 'mME-UE-S1AP-ID' -> if ChoiceVal bsr 32 =:= 0 -> [<<0:1,1:1>>|begin ChoiceVal@bin = binary:encode_unsigned(ChoiceVal), ChoiceVal@bin_size0 = byte_size(ChoiceVal@bin), ChoiceVal@bin_size = ChoiceVal@bin_size0 - 1, [<>, align|ChoiceVal@bin] end]; true -> exit({error,{asn1,{illegal_integer,ChoiceVal}}}) end end. 'dec_UE-S1AP-IDs'(Bytes) -> case Bytes of <<0:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin <> = Bytes1, {V1@V0,V1@Buf1} end, case Choice of 0 -> {Val,NewBytes} = begin 'dec_UE-S1AP-ID-pair'(Bytes2) end, {{'uE-S1AP-ID-pair',Val},NewBytes}; 1 -> {Val,NewBytes} = begin begin <> = Bytes2, V2@Add2 = V2@V0 + 1, V2@Pad5 = bit_size(V2@Buf1) band 7, <<_:V2@Pad5,V2@V3:V2@Add2/unsigned-unit:8,V2@Buf4/bitstring>> = V2@Buf1, {V2@V3,V2@Buf4} end end, {{'mME-UE-S1AP-ID',Val},NewBytes} end; <<1:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin {V1@V0,V1@Buf1} = case Bytes1 of <<0:1,V1@V3:6,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end, begin V2@Pad3 = bit_size(Bytes2) band 7, {V2@V0,V2@Buf1} = case Bytes2 of <<_:V2@Pad3,0:1,V2@V5:7,V2@V7:V2@V5/binary-unit:8,V2@Buf8/bitstring>> -> {V2@V7,V2@Buf8}; <<_:V2@Pad3,1:1,0:1,V2@V6:14,V2@V8:V2@V6/binary-unit:8,V2@Buf9/bitstring>> -> {V2@V8,V2@Buf9}; <<_:V2@Pad3,1:1,1:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V8,V2@Buf9} = decode_fragmented(V2@V6, V2@Buf7, 8), {V2@V8,V2@Buf9} end end, case Choice of _ -> {{asn1_ExtAlt,V2@V0},V2@Buf1} end end. 'enc_UE-S1AP-ID-pair'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute mME-UE-S1AP-ID(1) with type INTEGER Enc3@element = element(2, Val), if Enc3@element bsr 32 =:= 0 -> begin Enc3@element@bin = binary:encode_unsigned(Enc3@element), Enc3@element@bin_size0 = byte_size(Enc3@element@bin), Enc3@element@bin_size = Enc3@element@bin_size0 - 1, [<>, align|Enc3@element@bin] end; true -> exit({error,{asn1,{illegal_integer,Enc3@element}}}) end end, begin %% attribute eNB-UE-S1AP-ID(2) with type INTEGER Enc5@element = element(3, Val), if Enc5@element bsr 24 =:= 0 -> begin Enc5@element@bin = binary:encode_unsigned(Enc5@element), Enc5@element@bin_size0 = byte_size(Enc5@element@bin), Enc5@element@bin_size = Enc5@element@bin_size0 - 1, [<>|Enc5@element@bin] end; true -> exit({error,{asn1,{illegal_integer,Enc5@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_UE-S1AP-ID-pair_iE-Extensions'(Enc7@element) end end]. 'enc_UE-S1AP-ID-pair_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_UE-S1AP-ID-pair_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_UE-S1AP-ID-pair_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_UE-S1AP-ID-pair'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute mME-UE-S1AP-ID(1) with type INTEGER {Term1,Bytes3} = begin <> = Bytes2, V3@Add2 = V3@V0 + 1, V3@Pad5 = bit_size(V3@Buf1) band 7, <<_:V3@Pad5,V3@V3:V3@Add2/unsigned-unit:8,V3@Buf4/bitstring>> = V3@Buf1, {V3@V3,V3@Buf4} end, %% attribute eNB-UE-S1AP-ID(2) with type INTEGER {Term2,Bytes4} = begin <> = Bytes3, V4@Add2 = V4@V0 + 1, <<_:6,V4@V3:V4@Add2/unsigned-unit:8,V4@Buf4/bitstring>> = V4@Buf1, {V4@V3,V4@Buf4} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_UE-S1AP-ID-pair_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'UE-S1AP-ID-pair',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_UE-S1AP-ID-pair_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components273(V1@Add4, V1@Buf1, []). 'dec_UE-S1AP-ID-pair_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_UE-associatedLogicalS1-ConnectionItem'(Val) -> [begin Enc1@element = element(2, Val), Enc2@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin Enc3@element = element(4, Val), if Enc3@element =:= asn1_NOVALUE -> <<0:1>>; true -> <<1:1>> end end, begin %% attribute mME-UE-S1AP-ID(1) with type INTEGER Enc5@element = element(2, Val), if Enc5@element =:= asn1_NOVALUE -> []; Enc5@element bsr 32 =:= 0 -> begin Enc5@element@bin = binary:encode_unsigned(Enc5@element), Enc5@element@bin_size0 = byte_size(Enc5@element@bin), Enc5@element@bin_size = Enc5@element@bin_size0 - 1, [<>, align|Enc5@element@bin] end; true -> exit({error,{asn1,{illegal_integer,Enc5@element}}}) end end, begin %% attribute eNB-UE-S1AP-ID(2) with type INTEGER Enc8@element = element(3, Val), if Enc8@element =:= asn1_NOVALUE -> []; Enc8@element bsr 24 =:= 0 -> begin Enc8@element@bin = binary:encode_unsigned(Enc8@element), Enc8@element@bin_size0 = byte_size(Enc8@element@bin), Enc8@element@bin_size = Enc8@element@bin_size0 - 1, [<>, align|Enc8@element@bin] end; true -> exit({error,{asn1,{illegal_integer,Enc8@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc11@element = element(4, Val), if Enc11@element =:= asn1_NOVALUE -> []; true -> 'enc_UE-associatedLogicalS1-ConnectionItem_iE-Extensions'(Enc11@element) end end]. 'enc_UE-associatedLogicalS1-ConnectionItem_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_UE-associatedLogicalS1-ConnectionItem_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_UE-associatedLogicalS1-ConnectionItem_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_UE-associatedLogicalS1-ConnectionItem'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute mME-UE-S1AP-ID(1) with type INTEGER {Term1,Bytes3} = case (Opt bsr 2) band 1 of 1 -> begin <> = Bytes2, V3@Add2 = V3@V0 + 1, V3@Pad5 = bit_size(V3@Buf1) band 7, <<_:V3@Pad5,V3@V3:V3@Add2/unsigned-unit:8,V3@Buf4/bitstring>> = V3@Buf1, {V3@V3,V3@Buf4} end; 0 -> {asn1_NOVALUE,Bytes2} end, %% attribute eNB-UE-S1AP-ID(2) with type INTEGER {Term2,Bytes4} = case (Opt bsr 1) band 1 of 1 -> begin <> = Bytes3, V4@Add2 = V4@V0 + 1, V4@Pad5 = bit_size(V4@Buf1) band 7, <<_:V4@Pad5,V4@V3:V4@Add2/unsigned-unit:8,V4@Buf4/bitstring>> = V4@Buf1, {V4@V3,V4@Buf4} end; 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_UE-associatedLogicalS1-ConnectionItem_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'UE-associatedLogicalS1-ConnectionItem',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_UE-associatedLogicalS1-ConnectionItem_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components274(V1@Add4, V1@Buf1, []). 'dec_UE-associatedLogicalS1-ConnectionItem_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_UEIdentityIndexValue(Val) -> Enc1@bits = bit_size(Val), if Enc1@bits =:= 10 -> Val end. dec_UEIdentityIndexValue(Bytes) -> begin <> = Bytes, {V1@V2,V1@Buf3} = {list_to_bitstring([V1@V0]),V1@Buf1}, {V1@V2,V1@Buf3} end. 'enc_UE-HistoryInformation'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 4 =:= 0 -> [<>|['enc_LastVisitedCell-Item'(Comp) || Comp <- Val]] end. 'dec_UE-HistoryInformation'(Bytes) -> %% Length with constraint {1,16} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components275(V1@Add2, V1@Buf1, []). 'enc_UE-HistoryInformationFromTheUE'(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. 'dec_UE-HistoryInformationFromTheUE'(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. enc_UEPagingID(Val) -> {ChoiceTag,ChoiceVal} = Val, if ChoiceTag =:= 's-TMSI' -> [<<0:1,0:1>>|'enc_S-TMSI'(ChoiceVal)]; ChoiceTag =:= iMSI -> begin Enc3@len = byte_size(ChoiceVal), Enc3@len@sub = Enc3@len - 3, if 0 =< Enc3@len@sub, Enc3@len@sub < 6 -> [<<0:1,1:1,Enc3@len@sub:3>>, align|ChoiceVal] end end end. dec_UEPagingID(Bytes) -> case Bytes of <<0:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin <> = Bytes1, {V1@V0,V1@Buf1} end, case Choice of 0 -> {Val,NewBytes} = begin 'dec_S-TMSI'(Bytes2) end, {{'s-TMSI',Val},NewBytes}; 1 -> {Val,NewBytes} = begin begin <> = Bytes2, V2@Add2 = V2@V0 + 3, V2@Pad5 = bit_size(V2@Buf1) band 7, <<_:V2@Pad5,V2@V3:V2@Add2/binary-unit:8,V2@Buf4/bitstring>> = V2@Buf1, V2@Conv7 = binary:copy(V2@V3), {V2@Conv7,V2@Buf4} end end, {{iMSI,Val},NewBytes} end; <<1:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin {V1@V0,V1@Buf1} = case Bytes1 of <<0:1,V1@V3:6,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end, begin V2@Pad3 = bit_size(Bytes2) band 7, {V2@V0,V2@Buf1} = case Bytes2 of <<_:V2@Pad3,0:1,V2@V5:7,V2@V7:V2@V5/binary-unit:8,V2@Buf8/bitstring>> -> {V2@V7,V2@Buf8}; <<_:V2@Pad3,1:1,0:1,V2@V6:14,V2@V8:V2@V6/binary-unit:8,V2@Buf9/bitstring>> -> {V2@V8,V2@Buf9}; <<_:V2@Pad3,1:1,1:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V8,V2@Buf9} = decode_fragmented(V2@V6, V2@Buf7, 8), {V2@V8,V2@Buf9} end end, case Choice of _ -> {{asn1_ExtAlt,V2@V0},V2@Buf1} end end. enc_UERadioCapability(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. dec_UERadioCapability(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. enc_UERadioCapabilityForPaging(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. dec_UERadioCapabilityForPaging(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. enc_UERadioCapabilityID(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. dec_UERadioCapabilityID(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. 'enc_UE-RLF-Report-Container'(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. 'dec_UE-RLF-Report-Container'(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. 'enc_UE-RLF-Report-Container-for-extended-bands'(Val) -> Enc1@len = byte_size(Val), if Enc1@len < 128 -> [align, Enc1@len|Val]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Val]; true -> [align|encode_fragmented(Val, 8)] end. 'dec_UE-RLF-Report-Container-for-extended-bands'(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary:copy(V1@V0), {V1@Conv10,V1@Buf1} end. enc_UESecurityCapabilities(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute encryptionAlgorithms(1) with type BIT STRING Enc3@element = element(2, Val), Enc4@bits = bit_size(Enc3@element), if Enc4@bits =:= 16 -> [<<0:1>>|Enc3@element]; Enc4@bits < 128 -> [<<1:1>>, align, Enc4@bits|Enc3@element]; Enc4@bits < 16384 -> [<<1:1>>, align, <<2:2,Enc4@bits:14>>|Enc3@element]; true -> [<<1:1>>, align|encode_fragmented(Enc3@element, 1)] end end, begin %% attribute integrityProtectionAlgorithms(2) with type BIT STRING Enc5@element = element(3, Val), Enc6@bits = bit_size(Enc5@element), if Enc6@bits =:= 16 -> [<<0:1>>|Enc5@element]; Enc6@bits < 128 -> [<<1:1>>, align, Enc6@bits|Enc5@element]; Enc6@bits < 16384 -> [<<1:1>>, align, <<2:2,Enc6@bits:14>>|Enc5@element]; true -> [<<1:1>>, align|encode_fragmented(Enc5@element, 1)] end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_UESecurityCapabilities_iE-Extensions'(Enc7@element) end end]. 'enc_UESecurityCapabilities_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_UESecurityCapabilities_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_UESecurityCapabilities_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_UESecurityCapabilities(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute encryptionAlgorithms(1) with type BIT STRING {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:16/binary-unit:1,V3@Buf4/bitstring>> -> {V3@V3,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@V10:V3@V8/binary-unit:1,V3@Buf11/bitstring>> -> {V3@V10,V3@Buf11}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@V11:V3@V9/binary-unit:1,V3@Buf12/bitstring>> -> {V3@V11,V3@Buf12}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> -> {V3@V11,V3@Buf12} = decode_fragmented(V3@V9, V3@Buf10, 1), {V3@V11,V3@Buf12} end, {V3@V3,V3@Buf4} end, {V3@V13,V3@Buf14} = {list_to_bitstring([V3@V0]),V3@Buf1}, {V3@V13,V3@Buf14} end, %% attribute integrityProtectionAlgorithms(2) with type BIT STRING {Term2,Bytes4} = begin {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@V3:16/binary-unit:1,V4@Buf4/bitstring>> -> {V4@V3,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@V10:V4@V8/binary-unit:1,V4@Buf11/bitstring>> -> {V4@V10,V4@Buf11}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@V11:V4@V9/binary-unit:1,V4@Buf12/bitstring>> -> {V4@V11,V4@Buf12}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> -> {V4@V11,V4@Buf12} = decode_fragmented(V4@V9, V4@Buf10, 1), {V4@V11,V4@Buf12} end, {V4@V3,V4@Buf4} end, {V4@V13,V4@Buf14} = {list_to_bitstring([V4@V0]),V4@Buf1}, {V4@V13,V4@Buf14} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_UESecurityCapabilities_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'UESecurityCapabilities',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_UESecurityCapabilities_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components276(V1@Add4, V1@Buf1, []). 'dec_UESecurityCapabilities_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_UESidelinkAggregateMaximumBitrate(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute uESidelinkAggregateMaximumBitRate(1) with type INTEGER Enc3@element = element(2, Val), if 0 =< Enc3@element, Enc3@element < 10000000001 -> begin Enc3@element@bin = binary:encode_unsigned(Enc3@element), Enc3@element@bin_size0 = byte_size(Enc3@element@bin), Enc3@element@bin_size = Enc3@element@bin_size0 - 1, [<>, align|Enc3@element@bin] end; true -> exit({error,{asn1,{illegal_integer,Enc3@element}}}) end end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc5@element = element(3, Val), if Enc5@element =:= asn1_NOVALUE -> []; true -> 'enc_UESidelinkAggregateMaximumBitrate_iE-Extensions'(Enc5@element) end end]. 'enc_UESidelinkAggregateMaximumBitrate_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_UESidelinkAggregateMaximumBitrate_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_UESidelinkAggregateMaximumBitrate_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_UESidelinkAggregateMaximumBitrate(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute uESidelinkAggregateMaximumBitRate(1) with type INTEGER {Term1,Bytes3} = begin <> = Bytes2, V3@Add2 = V3@V0 + 1, V3@Pad5 = bit_size(V3@Buf1) band 7, <<_:V3@Pad5,V3@V3:V3@Add2/unsigned-unit:8,V3@Buf4/bitstring>> = V3@Buf1, {V3@V3,V3@Buf4} end, %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_UESidelinkAggregateMaximumBitrate_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V4@V0,V4@Buf1} = case Bytes4 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'UESidelinkAggregateMaximumBitrate',Term1,Term2}, {Res1,Bytes6}. 'dec_UESidelinkAggregateMaximumBitrate_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components277(V1@Add4, V1@Buf1, []). 'dec_UESidelinkAggregateMaximumBitrate_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_UE-Usage-Type'(Val) -> if Val bsr 8 =:= 0 -> [align, Val]; true -> exit({error,{asn1,{illegal_integer,Val}}}) end. 'dec_UE-Usage-Type'(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:1/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end. 'enc_UL-CP-SecurityInformation'(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute ul-NAS-MAC(1) with type BIT STRING Enc3@element = element(2, Val), Enc4@bits = bit_size(Enc3@element), if Enc4@bits =:= 16 -> Enc3@element end end, begin %% attribute ul-NAS-Count(2) with type BIT STRING Enc5@element = element(3, Val), Enc6@bits = bit_size(Enc5@element), if Enc6@bits =:= 5 -> Enc5@element end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc7@element = element(4, Val), if Enc7@element =:= asn1_NOVALUE -> []; true -> 'enc_UL-CP-SecurityInformation_iE-Extensions'(Enc7@element) end end]. 'enc_UL-CP-SecurityInformation_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_UL-CP-SecurityInformation_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_UL-CP-SecurityInformation_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_UL-CP-SecurityInformation'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute ul-NAS-MAC(1) with type BIT STRING {Term1,Bytes3} = begin <> = Bytes2, {V3@V2,V3@Buf3} = {list_to_bitstring([V3@V0]),V3@Buf1}, {V3@V2,V3@Buf3} end, %% attribute ul-NAS-Count(2) with type BIT STRING {Term2,Bytes4} = begin <> = Bytes3, {V4@V2,V4@Buf3} = {list_to_bitstring([V4@V0]),V4@Buf1}, {V4@V2,V4@Buf3} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_UL-CP-SecurityInformation_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'UL-CP-SecurityInformation',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_UL-CP-SecurityInformation_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components278(V1@Add4, V1@Buf1, []). 'dec_UL-CP-SecurityInformation_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. 'enc_UL-NAS-MAC'(Val) -> Enc1@bits = bit_size(Val), if Enc1@bits =:= 16 -> Val end. 'dec_UL-NAS-MAC'(Bytes) -> begin <> = Bytes, {V1@V2,V1@Buf3} = {list_to_bitstring([V1@V0]),V1@Buf1}, {V1@V2,V1@Buf3} end. 'enc_UL-NAS-Count'(Val) -> Enc1@bits = bit_size(Val), if Enc1@bits =:= 5 -> Val end. 'dec_UL-NAS-Count'(Bytes) -> begin <> = Bytes, {V1@V2,V1@Buf3} = {list_to_bitstring([V1@V0]),V1@Buf1}, {V1@V2,V1@Buf3} end. enc_UnlicensedSpectrumRestriction(Val) -> if Val =:= 'unlicensed-restricted' -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_UnlicensedSpectrumRestriction(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'unlicensed-restricted',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. 'enc_URI-Address'(Val) -> Enc1@bin = list_to_binary(Val), Enc1@len = byte_size(Enc1@bin), if Enc1@len < 128 -> [align, Enc1@len|Enc1@bin]; Enc1@len < 16384 -> [align, <<2:2,Enc1@len:14>>|Enc1@bin]; true -> [align|encode_fragmented(Enc1@bin, 8)] end. 'dec_URI-Address'(Bytes) -> begin V1@Pad3 = bit_size(Bytes) band 7, {V1@V0,V1@Buf1} = case Bytes of <<_:V1@Pad3,0:1,V1@V5:7,V1@V7:V1@V5/binary-unit:8,V1@Buf8/bitstring>> -> {V1@V7,V1@Buf8}; <<_:V1@Pad3,1:1,0:1,V1@V6:14,V1@V8:V1@V6/binary-unit:8,V1@Buf9/bitstring>> -> {V1@V8,V1@Buf9}; <<_:V1@Pad3,1:1,1:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V8,V1@Buf9} = decode_fragmented(V1@V6, V1@Buf7, 8), {V1@V8,V1@Buf9} end, V1@Conv10 = binary_to_list(V1@V0), {V1@Conv10,V1@Buf1} end. enc_UserLocationInformation(Val) -> [begin Enc1@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute eutran-cgi(1) with type EUTRAN-CGI Enc3@element = element(2, Val), 'enc_EUTRAN-CGI'(Enc3@element) end, begin %% attribute tai(2) with type TAI Enc4@element = element(3, Val), enc_TAI(Enc4@element) end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc5@element = element(4, Val), if Enc5@element =:= asn1_NOVALUE -> []; true -> 'enc_UserLocationInformation_iE-Extensions'(Enc5@element) end end]. 'enc_UserLocationInformation_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_UserLocationInformation_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_UserLocationInformation_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension279(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_UserLocationInformation(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute eutran-cgi(1) with type EUTRAN-CGI {Term1,Bytes3} = 'dec_EUTRAN-CGI'(Bytes2), %% attribute tai(2) with type TAI {Term2,Bytes4} = dec_TAI(Bytes3), %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_UserLocationInformation_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V3@V0,V3@Buf1} = case Bytes5 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'UserLocationInformation',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_UserLocationInformation_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components280(V1@Add4, V1@Buf1, []). 'dec_UserLocationInformation_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension281(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_UEUserPlaneCIoTSupportIndicator(Val) -> if Val =:= supported -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_UEUserPlaneCIoTSupportIndicator(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'supported',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. 'enc_UE-Application-Layer-Measurement-Capability'(Val) -> Enc1@bits = bit_size(Val), if Enc1@bits =:= 8 -> Val end. 'dec_UE-Application-Layer-Measurement-Capability'(Bytes) -> begin <> = Bytes, {V1@V2,V1@Buf3} = {list_to_bitstring([V1@V0]),V1@Buf1}, {V1@V2,V1@Buf3} end. enc_VoiceSupportMatchIndicator(Val) -> if Val =:= supported -> <<0:1,0:1>>; Val =:= 'not-supported' -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_VoiceSupportMatchIndicator(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:1/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> supported; 1 -> 'not-supported' end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_V2XServicesAuthorized(Val) -> [begin Enc1@element = element(2, Val), Enc2@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin Enc3@element = element(4, Val), %% attribute vehicleUE(1) with type ENUMERATED Enc5@element = element(2, Val), if Enc3@element =:= asn1_NOVALUE -> if Enc5@element =:= asn1_NOVALUE -> <<0:1>>; Enc5@element =:= authorized -> <<0:1,0:1,0:1>>; Enc5@element =:= 'not-authorized' -> <<0:1,0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc5@element}}}) end; true -> if Enc5@element =:= asn1_NOVALUE -> <<1:1>>; Enc5@element =:= authorized -> <<1:1,0:1,0:1>>; Enc5@element =:= 'not-authorized' -> <<1:1,0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc5@element}}}) end end end, begin %% attribute pedestrianUE(2) with type ENUMERATED Enc8@element = element(3, Val), if Enc8@element =:= asn1_NOVALUE -> []; Enc8@element =:= authorized -> <<0:1,0:1>>; Enc8@element =:= 'not-authorized' -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc8@element}}}) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc11@element = element(4, Val), if Enc11@element =:= asn1_NOVALUE -> []; true -> 'enc_V2XServicesAuthorized_iE-Extensions'(Enc11@element) end end]. 'enc_V2XServicesAuthorized_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_V2XServicesAuthorized_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_V2XServicesAuthorized_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_V2XServicesAuthorized(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute vehicleUE(1) with type ENUMERATED {Term1,Bytes3} = case (Opt bsr 2) band 1 of 1 -> begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:1/unsigned-unit:1,V3@Buf4/bitstring>> -> V3@Int5 = case V3@V3 of 0 -> authorized; 1 -> 'not-authorized' end, {V3@Int5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> {V3@V3,V3@Buf4} = case V3@Buf2 of <<0:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V6,V3@Buf7}; <<1:1,V3@Buf5/bitstring>> -> V3@Pad9 = bit_size(V3@Buf5) band 7, {V3@V6,V3@Buf7} = case V3@Buf5 of <<_:V3@Pad9,0:1,V3@V11:7,V3@Buf12/bitstring>> when V3@V11 =/= 0 -> {V3@V11,V3@Buf12}; <<_:V3@Pad9,1:1,0:1,V3@V12:14,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> {V3@V12,V3@Buf13}; <<_:V3@Pad9,1:1,1:1,V3@V12:6,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> V3@Mul14 = V3@V12 * 16384, {V3@Mul14,V3@Buf13} end, <> = V3@Buf7, {V3@V15,V3@Buf16} end, V3@Int17 = case V3@V3 of _ -> {asn1_enum,V3@V3} end, {V3@Int17,V3@Buf4} end, {V3@V0,V3@Buf1} end; 0 -> {asn1_NOVALUE,Bytes2} end, %% attribute pedestrianUE(2) with type ENUMERATED {Term2,Bytes4} = case (Opt bsr 1) band 1 of 1 -> begin {V4@V0,V4@Buf1} = case Bytes3 of <<0:1,V4@V3:1/unsigned-unit:1,V4@Buf4/bitstring>> -> V4@Int5 = case V4@V3 of 0 -> authorized; 1 -> 'not-authorized' end, {V4@Int5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> {V4@V3,V4@Buf4} = case V4@Buf2 of <<0:1,V4@V6:6,V4@Buf7/bitstring>> -> {V4@V6,V4@Buf7}; <<1:1,V4@Buf5/bitstring>> -> V4@Pad9 = bit_size(V4@Buf5) band 7, {V4@V6,V4@Buf7} = case V4@Buf5 of <<_:V4@Pad9,0:1,V4@V11:7,V4@Buf12/bitstring>> when V4@V11 =/= 0 -> {V4@V11,V4@Buf12}; <<_:V4@Pad9,1:1,0:1,V4@V12:14,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> {V4@V12,V4@Buf13}; <<_:V4@Pad9,1:1,1:1,V4@V12:6,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> V4@Mul14 = V4@V12 * 16384, {V4@Mul14,V4@Buf13} end, <> = V4@Buf7, {V4@V15,V4@Buf16} end, V4@Int17 = case V4@V3 of _ -> {asn1_enum,V4@V3} end, {V4@Int17,V4@Buf4} end, {V4@V0,V4@Buf1} end; 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_V2XServicesAuthorized_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@V3:6,V5@Buf4/bitstring>> -> V5@Add5 = V5@V3 + 1, {V5@Add5,V5@Buf4}; <<1:1,V5@Buf2/bitstring>> -> V5@Pad6 = bit_size(V5@Buf2) band 7, {V5@V3,V5@Buf4} = case V5@Buf2 of <<_:V5@Pad6,0:1,V5@V8:7,V5@Buf9/bitstring>> when V5@V8 =/= 0 -> {V5@V8,V5@Buf9}; <<_:V5@Pad6,1:1,0:1,V5@V9:14,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> {V5@V9,V5@Buf10}; <<_:V5@Pad6,1:1,1:1,V5@V9:6,V5@Buf10/bitstring>> when V5@V9 =/= 0 -> V5@Mul11 = V5@V9 * 16384, {V5@Mul11,V5@Buf10} end, {V5@V3,V5@Buf4} end, <> = V5@Buf1, {V5@V12,V5@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'V2XServicesAuthorized',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_V2XServicesAuthorized_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components282(V1@Add4, V1@Buf1, []). 'dec_V2XServicesAuthorized_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_VehicleUE(Val) -> if Val =:= authorized -> <<0:1,0:1>>; Val =:= 'not-authorized' -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_VehicleUE(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:1/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> authorized; 1 -> 'not-authorized' end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_PedestrianUE(Val) -> if Val =:= authorized -> <<0:1,0:1>>; Val =:= 'not-authorized' -> <<0:1,1:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_PedestrianUE(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@V3:1/unsigned-unit:1,V1@Buf4/bitstring>> -> V1@Int5 = case V1@V3 of 0 -> authorized; 1 -> 'not-authorized' end, {V1@Int5,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_WarningAreaCoordinates(Val) -> Enc1@len = byte_size(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 10 =:= 0 -> [align, <>|Val] end. dec_WarningAreaCoordinates(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, <> = V1@Buf1, V1@Conv7 = binary:copy(V1@V5), {V1@Conv7,V1@Buf6} end. enc_WarningAreaList(Val) -> {ChoiceTag,ChoiceVal} = Val, if ChoiceTag =:= cellIDList -> [<<0:1,0:2>>|enc_ECGIList(ChoiceVal)]; ChoiceTag =:= trackingAreaListforWarning -> [<<0:1,1:2>>|enc_TAIListforWarning(ChoiceVal)]; ChoiceTag =:= emergencyAreaIDList -> [<<0:1,2:2>>|enc_EmergencyAreaIDList(ChoiceVal)] end. dec_WarningAreaList(Bytes) -> case Bytes of <<0:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin <> = Bytes1, {V1@V0,V1@Buf1} end, case Choice of 0 -> {Val,NewBytes} = begin dec_ECGIList(Bytes2) end, {{cellIDList,Val},NewBytes}; 1 -> {Val,NewBytes} = begin dec_TAIListforWarning(Bytes2) end, {{trackingAreaListforWarning,Val},NewBytes}; 2 -> {Val,NewBytes} = begin dec_EmergencyAreaIDList(Bytes2) end, {{emergencyAreaIDList,Val},NewBytes} end; <<1:1,Bytes1/bitstring>> -> {Choice,Bytes2} = begin {V1@V0,V1@Buf1} = case Bytes1 of <<0:1,V1@V3:6,V1@Buf4/bitstring>> -> {V1@V3,V1@Buf4}; <<1:1,V1@Buf2/bitstring>> -> V1@Pad6 = bit_size(V1@Buf2) band 7, {V1@V3,V1@Buf4} = case V1@Buf2 of <<_:V1@Pad6,0:1,V1@V8:7,V1@Buf9/bitstring>> when V1@V8 =/= 0 -> {V1@V8,V1@Buf9}; <<_:V1@Pad6,1:1,0:1,V1@V9:14,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> {V1@V9,V1@Buf10}; <<_:V1@Pad6,1:1,1:1,V1@V9:6,V1@Buf10/bitstring>> when V1@V9 =/= 0 -> V1@Mul11 = V1@V9 * 16384, {V1@Mul11,V1@Buf10} end, <> = V1@Buf4, {V1@V12,V1@Buf13} end, {V1@V0,V1@Buf1} end, begin V2@Pad3 = bit_size(Bytes2) band 7, {V2@V0,V2@Buf1} = case Bytes2 of <<_:V2@Pad3,0:1,V2@V5:7,V2@V7:V2@V5/binary-unit:8,V2@Buf8/bitstring>> -> {V2@V7,V2@Buf8}; <<_:V2@Pad3,1:1,0:1,V2@V6:14,V2@V8:V2@V6/binary-unit:8,V2@Buf9/bitstring>> -> {V2@V8,V2@Buf9}; <<_:V2@Pad3,1:1,1:1,V2@V6:6,V2@Buf7/bitstring>> -> {V2@V8,V2@Buf9} = decode_fragmented(V2@V6, V2@Buf7, 8), {V2@V8,V2@Buf9} end end, case Choice of _ -> {{asn1_ExtAlt,V2@V0},V2@Buf1} end end. enc_WarningType(Val) -> Enc1@len = byte_size(Val), if Enc1@len =:= 2 -> Val end. dec_WarningType(Bytes) -> begin <> = Bytes, V1@Conv2 = binary:copy(V1@V0), {V1@Conv2,V1@Buf1} end. enc_WarningSecurityInfo(Val) -> Enc1@len = byte_size(Val), if Enc1@len =:= 50 -> [align|Val] end. dec_WarningSecurityInfo(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:50/binary-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Conv4 = binary:copy(V1@V0), {V1@Conv4,V1@Buf1} end. enc_WarningMessageContents(Val) -> Enc1@len = byte_size(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 9600 -> [align, <>|Val] end. dec_WarningMessageContents(Bytes) -> begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, <> = V1@Buf1, V1@Conv7 = binary:copy(V1@V5), {V1@Conv7,V1@Buf6} end. enc_WLANMeasurementConfiguration(Val) -> [begin Enc1@element = element(3, Val), Enc2@element = element(4, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin Enc3@element = element(5, Val), Enc4@element = element(6, Val), %% attribute wlanMeasConfig(1) with type ENUMERATED Enc6@element = element(2, Val), if Enc3@element =:= asn1_NOVALUE -> if Enc4@element =:= asn1_NOVALUE -> if Enc6@element =:= setup -> <<0:1,0:1,0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc6@element}}}) end; true -> if Enc6@element =:= setup -> <<0:1,1:1,0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc6@element}}}) end end; true -> if Enc4@element =:= asn1_NOVALUE -> if Enc6@element =:= setup -> <<1:1,0:1,0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc6@element}}}) end; true -> if Enc6@element =:= setup -> <<1:1,1:1,0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc6@element}}}) end end end end, begin %% attribute wlanMeasConfigNameList(2) with type WLANMeasConfigNameList Enc8@element = element(3, Val), if Enc8@element =:= asn1_NOVALUE -> []; true -> enc_WLANMeasConfigNameList(Enc8@element) end end, begin %% attribute wlan-rssi(3) with type ENUMERATED Enc10@element = element(4, Val), if Enc10@element =:= asn1_NOVALUE -> []; Enc10@element =:= true -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc10@element}}}) end end, begin %% attribute wlan-rtt(4) with type ENUMERATED Enc13@element = element(5, Val), if Enc13@element =:= asn1_NOVALUE -> []; Enc13@element =:= true -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Enc13@element}}}) end end|begin %% attribute iE-Extensions(5) with type SEQUENCE OF Enc16@element = element(6, Val), if Enc16@element =:= asn1_NOVALUE -> []; true -> 'enc_WLANMeasurementConfiguration_iE-Extensions'(Enc16@element) end end]. 'enc_WLANMeasurementConfiguration_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_WLANMeasurementConfiguration_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_WLANMeasurementConfiguration_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_WLANMeasurementConfiguration(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute wlanMeasConfig(1) with type ENUMERATED {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@Buf2/bitstring>> -> {'setup',V3@Buf2}; <<1:1,V3@Buf2/bitstring>> -> {V3@V3,V3@Buf4} = case V3@Buf2 of <<0:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V6,V3@Buf7}; <<1:1,V3@Buf5/bitstring>> -> V3@Pad9 = bit_size(V3@Buf5) band 7, {V3@V6,V3@Buf7} = case V3@Buf5 of <<_:V3@Pad9,0:1,V3@V11:7,V3@Buf12/bitstring>> when V3@V11 =/= 0 -> {V3@V11,V3@Buf12}; <<_:V3@Pad9,1:1,0:1,V3@V12:14,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> {V3@V12,V3@Buf13}; <<_:V3@Pad9,1:1,1:1,V3@V12:6,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> V3@Mul14 = V3@V12 * 16384, {V3@Mul14,V3@Buf13} end, <> = V3@Buf7, {V3@V15,V3@Buf16} end, V3@Int17 = case V3@V3 of _ -> {asn1_enum,V3@V3} end, {V3@Int17,V3@Buf4} end, {V3@V0,V3@Buf1} end, %% attribute wlanMeasConfigNameList(2) with type WLANMeasConfigNameList {Term2,Bytes4} = case (Opt bsr 3) band 1 of 1 -> dec_WLANMeasConfigNameList(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute wlan-rssi(3) with type ENUMERATED {Term3,Bytes5} = case (Opt bsr 2) band 1 of 1 -> begin {V4@V0,V4@Buf1} = case Bytes4 of <<0:1,V4@Buf2/bitstring>> -> {'true',V4@Buf2}; <<1:1,V4@Buf2/bitstring>> -> {V4@V3,V4@Buf4} = case V4@Buf2 of <<0:1,V4@V6:6,V4@Buf7/bitstring>> -> {V4@V6,V4@Buf7}; <<1:1,V4@Buf5/bitstring>> -> V4@Pad9 = bit_size(V4@Buf5) band 7, {V4@V6,V4@Buf7} = case V4@Buf5 of <<_:V4@Pad9,0:1,V4@V11:7,V4@Buf12/bitstring>> when V4@V11 =/= 0 -> {V4@V11,V4@Buf12}; <<_:V4@Pad9,1:1,0:1,V4@V12:14,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> {V4@V12,V4@Buf13}; <<_:V4@Pad9,1:1,1:1,V4@V12:6,V4@Buf13/bitstring>> when V4@V12 =/= 0 -> V4@Mul14 = V4@V12 * 16384, {V4@Mul14,V4@Buf13} end, <> = V4@Buf7, {V4@V15,V4@Buf16} end, V4@Int17 = case V4@V3 of _ -> {asn1_enum,V4@V3} end, {V4@Int17,V4@Buf4} end, {V4@V0,V4@Buf1} end; 0 -> {asn1_NOVALUE,Bytes4} end, %% attribute wlan-rtt(4) with type ENUMERATED {Term4,Bytes6} = case (Opt bsr 1) band 1 of 1 -> begin {V5@V0,V5@Buf1} = case Bytes5 of <<0:1,V5@Buf2/bitstring>> -> {'true',V5@Buf2}; <<1:1,V5@Buf2/bitstring>> -> {V5@V3,V5@Buf4} = case V5@Buf2 of <<0:1,V5@V6:6,V5@Buf7/bitstring>> -> {V5@V6,V5@Buf7}; <<1:1,V5@Buf5/bitstring>> -> V5@Pad9 = bit_size(V5@Buf5) band 7, {V5@V6,V5@Buf7} = case V5@Buf5 of <<_:V5@Pad9,0:1,V5@V11:7,V5@Buf12/bitstring>> when V5@V11 =/= 0 -> {V5@V11,V5@Buf12}; <<_:V5@Pad9,1:1,0:1,V5@V12:14,V5@Buf13/bitstring>> when V5@V12 =/= 0 -> {V5@V12,V5@Buf13}; <<_:V5@Pad9,1:1,1:1,V5@V12:6,V5@Buf13/bitstring>> when V5@V12 =/= 0 -> V5@Mul14 = V5@V12 * 16384, {V5@Mul14,V5@Buf13} end, <> = V5@Buf7, {V5@V15,V5@Buf16} end, V5@Int17 = case V5@V3 of _ -> {asn1_enum,V5@V3} end, {V5@Int17,V5@Buf4} end, {V5@V0,V5@Buf1} end; 0 -> {asn1_NOVALUE,Bytes5} end, %% attribute iE-Extensions(5) with type SEQUENCE OF {Term5,Bytes7} = case Opt band 1 of 1 -> 'dec_WLANMeasurementConfiguration_iE-Extensions'(Bytes6); 0 -> {asn1_NOVALUE,Bytes6} end, %% Extensions {Extensions,Bytes8} = case Ext of 0 -> {<<>>,Bytes7}; 1 -> {V6@V0,V6@Buf1} = case Bytes7 of <<0:1,V6@V3:6,V6@Buf4/bitstring>> -> V6@Add5 = V6@V3 + 1, {V6@Add5,V6@Buf4}; <<1:1,V6@Buf2/bitstring>> -> V6@Pad6 = bit_size(V6@Buf2) band 7, {V6@V3,V6@Buf4} = case V6@Buf2 of <<_:V6@Pad6,0:1,V6@V8:7,V6@Buf9/bitstring>> when V6@V8 =/= 0 -> {V6@V8,V6@Buf9}; <<_:V6@Pad6,1:1,0:1,V6@V9:14,V6@Buf10/bitstring>> when V6@V9 =/= 0 -> {V6@V9,V6@Buf10}; <<_:V6@Pad6,1:1,1:1,V6@V9:6,V6@Buf10/bitstring>> when V6@V9 =/= 0 -> V6@Mul11 = V6@V9 * 16384, {V6@Mul11,V6@Buf10} end, {V6@V3,V6@Buf4} end, <> = V6@Buf1, {V6@V12,V6@Buf13} end, Bytes9= skipextensions(Bytes8, 1, Extensions), Res1 = {'WLANMeasurementConfiguration',Term1,Term2,Term3,Term4,Term5}, {Res1,Bytes9}. 'dec_WLANMeasurementConfiguration_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components283(V1@Add4, V1@Buf1, []). 'dec_WLANMeasurementConfiguration_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_WLANMeasConfigNameList(Val) -> Enc2@len = length(Val), Enc2@len@sub = Enc2@len - 1, if Enc2@len@sub bsr 2 =:= 0 -> [<>|[begin Enc1@len = byte_size(Comp), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 5 =:= 0 -> [<>, align|Comp] end end || Comp <- Val]] end. dec_WLANMeasConfigNameList(Bytes) -> %% Length with constraint {1,4} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components284(V1@Add2, V1@Buf1, []). enc_WLANMeasConfig(Val) -> if Val =:= setup -> <<0:1>>; true -> exit({error,{asn1,{illegal_enumerated,Val}}}) end. dec_WLANMeasConfig(Bytes) -> begin {V1@V0,V1@Buf1} = case Bytes of <<0:1,V1@Buf2/bitstring>> -> {'setup',V1@Buf2}; <<1:1,V1@Buf2/bitstring>> -> {V1@V3,V1@Buf4} = case V1@Buf2 of <<0:1,V1@V6:6,V1@Buf7/bitstring>> -> {V1@V6,V1@Buf7}; <<1:1,V1@Buf5/bitstring>> -> V1@Pad9 = bit_size(V1@Buf5) band 7, {V1@V6,V1@Buf7} = case V1@Buf5 of <<_:V1@Pad9,0:1,V1@V11:7,V1@Buf12/bitstring>> when V1@V11 =/= 0 -> {V1@V11,V1@Buf12}; <<_:V1@Pad9,1:1,0:1,V1@V12:14,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> {V1@V12,V1@Buf13}; <<_:V1@Pad9,1:1,1:1,V1@V12:6,V1@Buf13/bitstring>> when V1@V12 =/= 0 -> V1@Mul14 = V1@V12 * 16384, {V1@Mul14,V1@Buf13} end, <> = V1@Buf7, {V1@V15,V1@Buf16} end, V1@Int17 = case V1@V3 of _ -> {asn1_enum,V1@V3} end, {V1@Int17,V1@Buf4} end, {V1@V0,V1@Buf1} end. enc_WLANName(Val) -> Enc1@len = byte_size(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 5 =:= 0 -> [<>, align|Val] end. dec_WLANName(Bytes) -> begin <> = Bytes, V1@Add2 = V1@V0 + 1, V1@Pad5 = bit_size(V1@Buf1) band 7, <<_:V1@Pad5,V1@V3:V1@Add2/binary-unit:8,V1@Buf4/bitstring>> = V1@Buf1, V1@Conv7 = binary:copy(V1@V3), {V1@Conv7,V1@Buf4} end. 'enc_WUS-Assistance-Information'(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute pagingProbabilityInformation(1) with type ENUMERATED Enc3@element = element(2, Val), if Enc3@element =:= p00 -> <<0:1,0:5>>; Enc3@element =:= p05 -> <<0:1,1:5>>; Enc3@element =:= p10 -> <<0:1,2:5>>; Enc3@element =:= p15 -> <<0:1,3:5>>; Enc3@element =:= p20 -> <<0:1,4:5>>; Enc3@element =:= p25 -> <<0:1,5:5>>; Enc3@element =:= p30 -> <<0:1,6:5>>; Enc3@element =:= p35 -> <<0:1,7:5>>; Enc3@element =:= p40 -> <<0:1,8:5>>; Enc3@element =:= p45 -> <<0:1,9:5>>; Enc3@element =:= p50 -> <<0:1,10:5>>; Enc3@element =:= p55 -> <<0:1,11:5>>; Enc3@element =:= p60 -> <<0:1,12:5>>; Enc3@element =:= p65 -> <<0:1,13:5>>; Enc3@element =:= p70 -> <<0:1,14:5>>; Enc3@element =:= p75 -> <<0:1,15:5>>; Enc3@element =:= p80 -> <<0:1,16:5>>; Enc3@element =:= p85 -> <<0:1,17:5>>; Enc3@element =:= p90 -> <<0:1,18:5>>; Enc3@element =:= p95 -> <<0:1,19:5>>; Enc3@element =:= p100 -> <<0:1,20:5>>; true -> exit({error,{asn1,{illegal_enumerated,Enc3@element}}}) end end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc5@element = element(3, Val), if Enc5@element =:= asn1_NOVALUE -> []; true -> 'enc_WUS-Assistance-Information_iE-Extensions'(Enc5@element) end end]. 'enc_WUS-Assistance-Information_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_WUS-Assistance-Information_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_WUS-Assistance-Information_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. 'dec_WUS-Assistance-Information'(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute pagingProbabilityInformation(1) with type ENUMERATED {Term1,Bytes3} = begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:5/unsigned-unit:1,V3@Buf4/bitstring>> -> V3@Int5 = case V3@V3 of 0 -> p00; 1 -> p05; 2 -> p10; 3 -> p15; 4 -> p20; 5 -> p25; 6 -> p30; 7 -> p35; 8 -> p40; 9 -> p45; 10 -> p50; 11 -> p55; 12 -> p60; 13 -> p65; 14 -> p70; 15 -> p75; 16 -> p80; 17 -> p85; 18 -> p90; 19 -> p95; 20 -> p100; _ -> exit({error,{asn1,{decode_enumerated,V3@V3}}}) end, {V3@Int5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> {V3@V3,V3@Buf4} = case V3@Buf2 of <<0:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V6,V3@Buf7}; <<1:1,V3@Buf5/bitstring>> -> V3@Pad9 = bit_size(V3@Buf5) band 7, {V3@V6,V3@Buf7} = case V3@Buf5 of <<_:V3@Pad9,0:1,V3@V11:7,V3@Buf12/bitstring>> when V3@V11 =/= 0 -> {V3@V11,V3@Buf12}; <<_:V3@Pad9,1:1,0:1,V3@V12:14,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> {V3@V12,V3@Buf13}; <<_:V3@Pad9,1:1,1:1,V3@V12:6,V3@Buf13/bitstring>> when V3@V12 =/= 0 -> V3@Mul14 = V3@V12 * 16384, {V3@Mul14,V3@Buf13} end, <> = V3@Buf7, {V3@V15,V3@Buf16} end, V3@Int17 = case V3@V3 of _ -> {asn1_enum,V3@V3} end, {V3@Int17,V3@Buf4} end, {V3@V0,V3@Buf1} end, %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_WUS-Assistance-Information_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V4@V0,V4@Buf1} = case Bytes4 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'WUS-Assistance-Information',Term1,Term2}, {Res1,Bytes6}. 'dec_WUS-Assistance-Information_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components285(V1@Add4, V1@Buf1, []). 'dec_WUS-Assistance-Information_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_X2TNLConfigurationInfo(Val) -> [begin Enc1@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> <<0:1,0:1>>; true -> <<0:1,1:1>> end end, begin %% attribute eNBX2TransportLayerAddresses(1) with type ENBX2TLAs Enc3@element = element(2, Val), enc_ENBX2TLAs(Enc3@element) end|begin %% attribute iE-Extensions(2) with type SEQUENCE OF Enc4@element = element(3, Val), if Enc4@element =:= asn1_NOVALUE -> []; true -> 'enc_X2TNLConfigurationInfo_iE-Extensions'(Enc4@element) end end]. 'enc_X2TNLConfigurationInfo_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_X2TNLConfigurationInfo_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_X2TNLConfigurationInfo_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension286(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_X2TNLConfigurationInfo(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute eNBX2TransportLayerAddresses(1) with type ENBX2TLAs {Term1,Bytes3} = dec_ENBX2TLAs(Bytes2), %% attribute iE-Extensions(2) with type SEQUENCE OF {Term2,Bytes4} = case Opt band 1 of 1 -> 'dec_X2TNLConfigurationInfo_iE-Extensions'(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% Extensions {Extensions,Bytes5} = case Ext of 0 -> {<<>>,Bytes4}; 1 -> {V3@V0,V3@Buf1} = case Bytes4 of <<0:1,V3@V3:6,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, {V3@Add5,V3@Buf4}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@Buf9/bitstring>> when V3@V8 =/= 0 -> {V3@V8,V3@Buf9}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> {V3@V9,V3@Buf10}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> when V3@V9 =/= 0 -> V3@Mul11 = V3@V9 * 16384, {V3@Mul11,V3@Buf10} end, {V3@V3,V3@Buf4} end, <> = V3@Buf1, {V3@V12,V3@Buf13} end, Bytes6= skipextensions(Bytes5, 1, Extensions), Res1 = {'X2TNLConfigurationInfo',Term1,Term2}, {Res1,Bytes6}. 'dec_X2TNLConfigurationInfo_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components287(V1@Add4, V1@Buf1, []). 'dec_X2TNLConfigurationInfo_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension288(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_ENBX2ExtTLAs(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if Enc1@len@sub bsr 4 =:= 0 -> [<>|[enc_ENBX2ExtTLA(Comp) || Comp <- Val]] end. dec_ENBX2ExtTLAs(Bytes) -> %% Length with constraint {1,16} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components289(V1@Add2, V1@Buf1, []). enc_ENBX2ExtTLA(Val) -> [begin Enc1@element = element(2, Val), Enc2@element = element(3, Val), if Enc1@element =:= asn1_NOVALUE -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,0:1,0:1>>; true -> <<0:1,0:1,1:1>> end; true -> if Enc2@element =:= asn1_NOVALUE -> <<0:1,1:1,0:1>>; true -> <<0:1,1:1,1:1>> end end end, begin Enc3@element = element(4, Val), if Enc3@element =:= asn1_NOVALUE -> <<0:1>>; true -> <<1:1>> end end, begin %% attribute iPsecTLA(1) with type BIT STRING Enc5@element = element(2, Val), if Enc5@element =:= asn1_NOVALUE -> []; true -> begin Enc6@bits = bit_size(Enc5@element), Enc6@bits@sub = Enc6@bits - 1, if 0 =< Enc6@bits@sub, Enc6@bits@sub < 160 -> [<<0:1,Enc6@bits@sub:8>>, align|Enc5@element]; Enc6@bits < 16384 -> [<<1:1>>, align, <<2:2,Enc6@bits:14>>|Enc5@element]; true -> [<<1:1>>, align|encode_fragmented(Enc5@element, 1)] end end end end, begin %% attribute gTPTLAa(2) with type ENBX2GTPTLAs Enc8@element = element(3, Val), if Enc8@element =:= asn1_NOVALUE -> []; true -> enc_ENBX2GTPTLAs(Enc8@element) end end|begin %% attribute iE-Extensions(3) with type SEQUENCE OF Enc10@element = element(4, Val), if Enc10@element =:= asn1_NOVALUE -> []; true -> 'enc_ENBX2ExtTLA_iE-Extensions'(Enc10@element) end end]. 'enc_ENBX2ExtTLA_iE-Extensions'(Val) -> Enc1@len = length(Val), Enc1@len@sub = Enc1@len - 1, if 0 =< Enc1@len@sub, Enc1@len@sub < 65535 -> [align, <>|['enc_ENBX2ExtTLA_iE-Extensions_ProtocolExtensionField'(Comp) || Comp <- Val]] end. 'enc_ENBX2ExtTLA_iE-Extensions_ProtocolExtensionField'(Val) -> Enc1@element = element(2, Val), [align, begin %% attribute id(1) with type INTEGER Enc2@element = Enc1@element, if Enc2@element bsr 16 =:= 0 -> <>; true -> exit({error,{asn1,{illegal_integer,Enc2@element}}}) end end, begin %% attribute criticality(2) with type ENUMERATED Enc4@element = element(3, Val), if Enc4@element =:= reject -> <<0:2,0:6>>; Enc4@element =:= ignore -> <<1:2,0:6>>; Enc4@element =:= notify -> <<2:2,0:6>>; true -> exit({error,{asn1,{illegal_enumerated,Enc4@element}}}) end end|begin %% attribute extensionValue(3) with type Extension Enc6@element = element(4, Val), Enc7@output = enc_os_Extension1(Enc6@element, Enc1@element), Enc7@bin = complete(Enc7@output), Enc7@len = byte_size(Enc7@bin), if Enc7@len < 128 -> [Enc7@len|Enc7@bin]; Enc7@len < 16384 -> [<<2:2,Enc7@len:14>>|Enc7@bin]; true -> encode_fragmented(Enc7@bin, 8) end end]. dec_ENBX2ExtTLA(Bytes) -> {Ext,Bytes1} = begin <> = Bytes, {V1@V0,V1@Buf1} end, {Opt,Bytes2} = begin <> = Bytes1, {V2@V0,V2@Buf1} end, %% attribute iPsecTLA(1) with type BIT STRING {Term1,Bytes3} = case (Opt bsr 2) band 1 of 1 -> begin {V3@V0,V3@Buf1} = case Bytes2 of <<0:1,V3@V3:8/unsigned-unit:1,V3@Buf4/bitstring>> -> V3@Add5 = V3@V3 + 1, V3@Pad8 = bit_size(V3@Buf4) band 7, <<_:V3@Pad8,V3@V6:V3@Add5/binary-unit:1,V3@Buf7/bitstring>> = V3@Buf4, {V3@V6,V3@Buf7}; <<1:1,V3@Buf2/bitstring>> -> V3@Pad6 = bit_size(V3@Buf2) band 7, {V3@V3,V3@Buf4} = case V3@Buf2 of <<_:V3@Pad6,0:1,V3@V8:7,V3@V10:V3@V8/binary-unit:1,V3@Buf11/bitstring>> -> {V3@V10,V3@Buf11}; <<_:V3@Pad6,1:1,0:1,V3@V9:14,V3@V11:V3@V9/binary-unit:1,V3@Buf12/bitstring>> -> {V3@V11,V3@Buf12}; <<_:V3@Pad6,1:1,1:1,V3@V9:6,V3@Buf10/bitstring>> -> {V3@V11,V3@Buf12} = decode_fragmented(V3@V9, V3@Buf10, 1), {V3@V11,V3@Buf12} end, {V3@V3,V3@Buf4} end, {V3@V13,V3@Buf14} = {list_to_bitstring([V3@V0]),V3@Buf1}, {V3@V13,V3@Buf14} end; 0 -> {asn1_NOVALUE,Bytes2} end, %% attribute gTPTLAa(2) with type ENBX2GTPTLAs {Term2,Bytes4} = case (Opt bsr 1) band 1 of 1 -> dec_ENBX2GTPTLAs(Bytes3); 0 -> {asn1_NOVALUE,Bytes3} end, %% attribute iE-Extensions(3) with type SEQUENCE OF {Term3,Bytes5} = case Opt band 1 of 1 -> 'dec_ENBX2ExtTLA_iE-Extensions'(Bytes4); 0 -> {asn1_NOVALUE,Bytes4} end, %% Extensions {Extensions,Bytes6} = case Ext of 0 -> {<<>>,Bytes5}; 1 -> {V4@V0,V4@Buf1} = case Bytes5 of <<0:1,V4@V3:6,V4@Buf4/bitstring>> -> V4@Add5 = V4@V3 + 1, {V4@Add5,V4@Buf4}; <<1:1,V4@Buf2/bitstring>> -> V4@Pad6 = bit_size(V4@Buf2) band 7, {V4@V3,V4@Buf4} = case V4@Buf2 of <<_:V4@Pad6,0:1,V4@V8:7,V4@Buf9/bitstring>> when V4@V8 =/= 0 -> {V4@V8,V4@Buf9}; <<_:V4@Pad6,1:1,0:1,V4@V9:14,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> {V4@V9,V4@Buf10}; <<_:V4@Pad6,1:1,1:1,V4@V9:6,V4@Buf10/bitstring>> when V4@V9 =/= 0 -> V4@Mul11 = V4@V9 * 16384, {V4@Mul11,V4@Buf10} end, {V4@V3,V4@Buf4} end, <> = V4@Buf1, {V4@V12,V4@Buf13} end, Bytes7= skipextensions(Bytes6, 1, Extensions), Res1 = {'ENBX2ExtTLA',Term1,Term2,Term3}, {Res1,Bytes7}. 'dec_ENBX2ExtTLA_iE-Extensions'(Bytes) -> %% Length with constraint {1,65535} V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, V1@Add4 = V1@V0 + 1, dec_components290(V1@Add4, V1@Buf1, []). 'dec_ENBX2ExtTLA_iE-Extensions_ProtocolExtensionField'(Bytes) -> %% attribute id(1) with type INTEGER {Term1,Bytes1} = begin V1@Pad2 = bit_size(Bytes) band 7, <<_:V1@Pad2,V1@V0:2/unsigned-unit:8,V1@Buf1/bitstring>> = Bytes, {V1@V0,V1@Buf1} end, %% attribute criticality(2) with type ENUMERATED {Term2,Bytes2} = begin <> = Bytes1, V2@Int2 = case V2@V0 of 0 -> reject; 1 -> ignore; 2 -> notify; _ -> exit({error,{asn1,{decode_enumerated,V2@V0}}}) end, {V2@Int2,V2@Buf1} end, %% attribute extensionValue(3) with type Extension {Tmpterm1, Bytes3} = begin V3@Pad3 = bit_size(Bytes2) band 7, {V3@V0,V3@Buf1} = case Bytes2 of <<_:V3@Pad3,0:1,V3@V5:7,V3@V7:V3@V5/binary-unit:8,V3@Buf8/bitstring>> -> {V3@V7,V3@Buf8}; <<_:V3@Pad3,1:1,0:1,V3@V6:14,V3@V8:V3@V6/binary-unit:8,V3@Buf9/bitstring>> -> {V3@V8,V3@Buf9}; <<_:V3@Pad3,1:1,1:1,V3@V6:6,V3@Buf7/bitstring>> -> {V3@V8,V3@Buf9} = decode_fragmented(V3@V6, V3@Buf7, 8), {V3@V8,V3@Buf9} end, {V3@V0,V3@Buf1} end, Term3 = dec_os_Extension3(Tmpterm1, Term1), Res1 = {'ProtocolExtensionField',Term1,Term2,Term3}, {Res1,Bytes3}. enc_ENBX2GTPTLAs(Val) -> Enc2@len = length(Val), Enc2@len@sub = Enc2@len - 1, if Enc2@len@sub bsr 4 =:= 0 -> [<>|[begin Enc1@bits = bit_size(Comp), Enc1@bits@sub = Enc1@bits - 1, if 0 =< Enc1@bits@sub, Enc1@bits@sub < 160 -> [<<0:1,Enc1@bits@sub:8>>, align|Comp]; Enc1@bits < 16384 -> [<<1:1>>, align, <<2:2,Enc1@bits:14>>, align|Comp]; true -> [<<1:1>>, align|encode_fragmented(Comp, 1)] end end || Comp <- Val]] end. dec_ENBX2GTPTLAs(Bytes) -> %% Length with constraint {1,16} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components291(V1@Add2, V1@Buf1, []). enc_ENBIndirectX2TransportLayerAddresses(Val) -> Enc2@len = length(Val), Enc2@len@sub = Enc2@len - 1, if Enc2@len@sub bsr 1 =:= 0 -> [<>|[begin Enc1@bits = bit_size(Comp), Enc1@bits@sub = Enc1@bits - 1, if 0 =< Enc1@bits@sub, Enc1@bits@sub < 160 -> [<<0:1,Enc1@bits@sub:8>>, align|Comp]; Enc1@bits < 16384 -> [<<1:1>>, align, <<2:2,Enc1@bits:14>>, align|Comp]; true -> [<<1:1>>, align|encode_fragmented(Comp, 1)] end end || Comp <- Val]] end. dec_ENBIndirectX2TransportLayerAddresses(Bytes) -> %% Length with constraint {1,2} <> = Bytes, V1@Add2 = V1@V0 + 1, dec_components292(V1@Add2, V1@Buf1, []). %%% %%% Run-time functions. %%% 'dialyzer-suppressions'(Arg) -> complete(element(1, Arg)), ok. dec_components101(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components101(Num, Bytes, Acc) -> {Term,Remain} = 'dec_E-RABUsageReportList_ProtocolIE-Field'(Bytes), dec_components101(Num-1, Remain, [Term|Acc]). dec_components103(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components103(Num, Bytes, Acc) -> {Term,Remain} = 'dec_E-RABUsageReportItem_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components103(Num-1, Remain, [Term|Acc]). dec_components104(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components104(Num, Bytes, Acc) -> {Term,Remain} = 'dec_EUTRAN-CGI_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components104(Num-1, Remain, [Term|Acc]). dec_components105(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components105(Num, Bytes, Acc) -> {Term,Remain} = 'dec_EventL1LoggedMDTConfig_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components105(Num-1, Remain, [Term|Acc]). dec_components106(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components106(Num, Bytes, Acc) -> {Term,Remain} = 'dec_ExpectedUEBehaviour_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components106(Num-1, Remain, [Term|Acc]). dec_components107(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components107(Num, Bytes, Acc) -> {Term,Remain} = 'dec_ExpectedUEActivityBehaviour_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components107(Num-1, Remain, [Term|Acc]). dec_components108(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components108(Num, Bytes, Acc) -> {Term,Remain} = 'dec_FiveGSTAI_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components108(Num-1, Remain, [Term|Acc]). dec_components109(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components109(Num, Bytes, Acc) -> {Term,Remain} = 'dec_ForbiddenTAs-Item'(Bytes), dec_components109(Num-1, Remain, [Term|Acc]). dec_components110(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components110(Num, Bytes, Acc) -> {Term,Remain} = 'dec_ForbiddenTAs-Item_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components110(Num-1, Remain, [Term|Acc]). dec_components111(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components111(Num, Bytes, Acc) -> {Term,Remain} = begin <> = Bytes, V1@Conv2 = binary:copy(V1@V0), {V1@Conv2,V1@Buf1} end, dec_components111(Num-1, Remain, [Term|Acc]). dec_components112(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components112(Num, Bytes, Acc) -> {Term,Remain} = 'dec_ForbiddenLAs-Item'(Bytes), dec_components112(Num-1, Remain, [Term|Acc]). dec_components113(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components113(Num, Bytes, Acc) -> {Term,Remain} = 'dec_ForbiddenLAs-Item_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components113(Num-1, Remain, [Term|Acc]). dec_components114(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components114(Num, Bytes, Acc) -> {Term,Remain} = begin <> = Bytes, V2@Conv2 = binary:copy(V2@V0), {V2@Conv2,V2@Buf1} end, dec_components114(Num-1, Remain, [Term|Acc]). dec_components116(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components116(Num, Bytes, Acc) -> {Term,Remain} = 'dec_GBR-QosInformation_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components116(Num-1, Remain, [Term|Acc]). dec_components118(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components118(Num, Bytes, Acc) -> {Term,Remain} = 'dec_GUMMEI_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components118(Num-1, Remain, [Term|Acc]). dec_components12(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components12(Num, Bytes, Acc) -> {Term,Remain} = 'dec_Bearers-SubjectToStatusTransfer-Item_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components12(Num-1, Remain, [Term|Acc]). dec_components120(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components120(Num, Bytes, Acc) -> {Term,Remain} = 'dec_HandoverRestrictionList_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components120(Num-1, Remain, [Term|Acc]). dec_components123(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components123(Num, Bytes, Acc) -> {Term,Remain} = 'dec_ImmediateMDT_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components123(Num-1, Remain, [Term|Acc]). dec_components125(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components125(Num, Bytes, Acc) -> {Term,Remain} = 'dec_InformationOnRecommendedCellsAndENBsForPaging_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components125(Num-1, Remain, [Term|Acc]). dec_components126(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components126(Num, Bytes, Acc) -> {Term,Remain} = 'dec_IntersystemMeasurementConfiguration_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components126(Num-1, Remain, [Term|Acc]). dec_components127(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components127(Num, Bytes, Acc) -> {Term,Remain} = 'dec_InterSystemMeasurementParameters_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components127(Num-1, Remain, [Term|Acc]). dec_components128(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components128(Num, Bytes, Acc) -> {Term,Remain} = dec_InterSystemMeasurementItem(Bytes), dec_components128(Num-1, Remain, [Term|Acc]). dec_components129(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components129(Num, Bytes, Acc) -> {Term,Remain} = 'dec_InterSystemMeasurementItem_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components129(Num-1, Remain, [Term|Acc]). dec_components130(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components130(Num, Bytes, Acc) -> {Term,Remain} = 'dec_LAI_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components130(Num-1, Remain, [Term|Acc]). dec_components132(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components132(Num, Bytes, Acc) -> {Term,Remain} = 'dec_LastVisitedEUTRANCellInformation_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components132(Num-1, Remain, [Term|Acc]). dec_components134(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components134(Num, Bytes, Acc) -> {Term,Remain} = dec_LastVisitedPSCellInformation(Bytes), dec_components134(Num-1, Remain, [Term|Acc]). dec_components135(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components135(Num, Bytes, Acc) -> {Term,Remain} = 'dec_LastVisitedPSCellInformation_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components135(Num-1, Remain, [Term|Acc]). dec_components136(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components136(Num, Bytes, Acc) -> {Term,Remain} = 'dec_ListeningSubframePattern_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components136(Num-1, Remain, [Term|Acc]). dec_components138(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components138(Num, Bytes, Acc) -> {Term,Remain} = 'dec_LoggedMDT_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components138(Num-1, Remain, [Term|Acc]). dec_components140(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components140(Num, Bytes, Acc) -> {Term,Remain} = 'dec_LoggedMBSFNMDT_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components140(Num-1, Remain, [Term|Acc]). dec_components141(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components141(Num, Bytes, Acc) -> {Term,Remain} = 'dec_LTE-NTN-TAI-Information_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components141(Num-1, Remain, [Term|Acc]). dec_components142(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components142(Num, Bytes, Acc) -> {Term,Remain} = 'dec_M3Configuration_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components142(Num-1, Remain, [Term|Acc]). dec_components143(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components143(Num, Bytes, Acc) -> {Term,Remain} = 'dec_M4Configuration_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components143(Num-1, Remain, [Term|Acc]). dec_components144(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components144(Num, Bytes, Acc) -> {Term,Remain} = 'dec_M5Configuration_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components144(Num-1, Remain, [Term|Acc]). dec_components145(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components145(Num, Bytes, Acc) -> {Term,Remain} = 'dec_M6Configuration_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components145(Num-1, Remain, [Term|Acc]). dec_components146(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components146(Num, Bytes, Acc) -> {Term,Remain} = 'dec_M7Configuration_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components146(Num-1, Remain, [Term|Acc]). dec_components148(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components148(Num, Bytes, Acc) -> {Term,Remain} = 'dec_MDT-Configuration_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components148(Num-1, Remain, [Term|Acc]). dec_components15(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components15(Num, Bytes, Acc) -> {Term,Remain} = 'dec_Bearers-SubjectToEarlyStatusTransferList_ProtocolIE-Field'(Bytes), dec_components15(Num-1, Remain, [Term|Acc]). dec_components150(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components150(Num, Bytes, Acc) -> {Term,Remain} = 'dec_MBSFN-ResultToLogInfo'(Bytes), dec_components150(Num-1, Remain, [Term|Acc]). dec_components151(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components151(Num, Bytes, Acc) -> {Term,Remain} = 'dec_MBSFN-ResultToLogInfo_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components151(Num-1, Remain, [Term|Acc]). dec_components152(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components152(Num, Bytes, Acc) -> {Term,Remain} = begin V3@Pad2 = bit_size(Bytes) band 7, <<_:V3@Pad2,V3@V0:3/binary-unit:8,V3@Buf1/bitstring>> = Bytes, V3@Conv4 = binary:copy(V3@V0), {V3@Conv4,V3@Buf1} end, dec_components152(Num-1, Remain, [Term|Acc]). dec_components155(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components155(Num, Bytes, Acc) -> {Term,Remain} = 'dec_MutingPatternInformation_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components155(Num-1, Remain, [Term|Acc]). dec_components156(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components156(Num, Bytes, Acc) -> {Term,Remain} = 'dec_NB-IoT-Paging-eDRXInformation_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components156(Num-1, Remain, [Term|Acc]). dec_components157(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components157(Num, Bytes, Acc) -> {Term,Remain} = 'dec_NR-CGI_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components157(Num-1, Remain, [Term|Acc]). dec_components158(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components158(Num, Bytes, Acc) -> {Term,Remain} = 'dec_NRUESecurityCapabilities_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components158(Num-1, Remain, [Term|Acc]). dec_components159(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components159(Num, Bytes, Acc) -> {Term,Remain} = 'dec_NRV2XServicesAuthorized_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components159(Num-1, Remain, [Term|Acc]). dec_components160(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components160(Num, Bytes, Acc) -> {Term,Remain} = 'dec_NRUESidelinkAggregateMaximumBitrate_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components160(Num-1, Remain, [Term|Acc]). dec_components161(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components161(Num, Bytes, Acc) -> {Term,Remain} = 'dec_PagingAttemptInformation_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components161(Num-1, Remain, [Term|Acc]). dec_components162(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components162(Num, Bytes, Acc) -> {Term,Remain} = 'dec_Paging-eDRXInformation_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components162(Num-1, Remain, [Term|Acc]). dec_components163(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components163(Num, Bytes, Acc) -> {Term,Remain} = 'dec_PC5QoSParameters_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components163(Num-1, Remain, [Term|Acc]). dec_components164(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components164(Num, Bytes, Acc) -> {Term,Remain} = dec_PC5QoSFlowItem(Bytes), dec_components164(Num-1, Remain, [Term|Acc]). dec_components165(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components165(Num, Bytes, Acc) -> {Term,Remain} = 'dec_PC5QoSFlowItem_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components165(Num-1, Remain, [Term|Acc]). dec_components166(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components166(Num, Bytes, Acc) -> {Term,Remain} = 'dec_PC5FlowBitRates_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components166(Num-1, Remain, [Term|Acc]). dec_components167(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components167(Num, Bytes, Acc) -> {Term,Remain} = 'dec_M1PeriodicReporting_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components167(Num-1, Remain, [Term|Acc]). dec_components168(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components168(Num, Bytes, Acc) -> {Term,Remain} = 'dec_PLMNAreaBasedQMC_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components168(Num-1, Remain, [Term|Acc]). dec_components169(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components169(Num, Bytes, Acc) -> {Term,Remain} = begin V4@Pad2 = bit_size(Bytes) band 7, <<_:V4@Pad2,V4@V0:3/binary-unit:8,V4@Buf1/bitstring>> = Bytes, V4@Conv4 = binary:copy(V4@V0), {V4@Conv4,V4@Buf1} end, dec_components169(Num-1, Remain, [Term|Acc]). dec_components17(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components17(Num, Bytes, Acc) -> {Term,Remain} = 'dec_Bearers-SubjectToEarlyStatusTransfer-Item_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components17(Num-1, Remain, [Term|Acc]). dec_components171(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components171(Num, Bytes, Acc) -> {Term,Remain} = 'dec_ProSeAuthorized_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components171(Num-1, Remain, [Term|Acc]). dec_components173(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components173(Num, Bytes, Acc) -> {Term,Remain} = 'dec_PSCellInformation_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components173(Num-1, Remain, [Term|Acc]). dec_components174(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components174(Num, Bytes, Acc) -> {Term,Remain} = 'dec_RecommendedCellsForPaging_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components174(Num-1, Remain, [Term|Acc]). dec_components176(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components176(Num, Bytes, Acc) -> {Term,Remain} = 'dec_RecommendedCellList_ProtocolIE-Field'(Bytes), dec_components176(Num-1, Remain, [Term|Acc]). dec_components178(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components178(Num, Bytes, Acc) -> {Term,Remain} = 'dec_RecommendedCellItem_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components178(Num-1, Remain, [Term|Acc]). dec_components179(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components179(Num, Bytes, Acc) -> {Term,Remain} = 'dec_RecommendedENBsForPaging_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components179(Num-1, Remain, [Term|Acc]). dec_components18(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components18(Num, Bytes, Acc) -> {Term,Remain} = 'dec_BluetoothMeasurementConfiguration_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components18(Num-1, Remain, [Term|Acc]). dec_components181(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components181(Num, Bytes, Acc) -> {Term,Remain} = 'dec_RecommendedENBList_ProtocolIE-Field'(Bytes), dec_components181(Num-1, Remain, [Term|Acc]). dec_components183(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components183(Num, Bytes, Acc) -> {Term,Remain} = 'dec_RecommendedENBItem_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components183(Num-1, Remain, [Term|Acc]). dec_components184(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components184(Num, Bytes, Acc) -> {Term,Remain} = 'dec_RAT-RestrictionsItem'(Bytes), dec_components184(Num-1, Remain, [Term|Acc]). dec_components185(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components185(Num, Bytes, Acc) -> {Term,Remain} = 'dec_RAT-RestrictionsItem_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components185(Num-1, Remain, [Term|Acc]). dec_components187(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components187(Num, Bytes, Acc) -> {Term,Remain} = 'dec_RequestType_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components187(Num-1, Remain, [Term|Acc]). dec_components189(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components189(Num, Bytes, Acc) -> {Term,Remain} = 'dec_RIMTransfer_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components189(Num-1, Remain, [Term|Acc]). dec_components19(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components19(Num, Bytes, Acc) -> {Term,Remain} = begin <> = Bytes, V5@Add2 = V5@V0 + 1, V5@Pad5 = bit_size(V5@Buf1) band 7, <<_:V5@Pad5,V5@V3:V5@Add2/binary-unit:8,V5@Buf4/bitstring>> = V5@Buf1, V5@Conv7 = binary:copy(V5@V3), {V5@Conv7,V5@Buf4} end, dec_components19(Num-1, Remain, [Term|Acc]). dec_components191(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components191(Num, Bytes, Acc) -> {Term,Remain} = 'dec_RLFReportInformation_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components191(Num-1, Remain, [Term|Acc]). dec_components193(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components193(Num, Bytes, Acc) -> {Term,Remain} = 'dec_EUTRAN-CGI'(Bytes), dec_components193(Num-1, Remain, [Term|Acc]). dec_components194(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components194(Num, Bytes, Acc) -> {Term,Remain} = 'dec_SecurityContext_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components194(Num-1, Remain, [Term|Acc]). dec_components196(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components196(Num, Bytes, Acc) -> {Term,Remain} = 'dec_SecondaryRATDataUsageReportList_ProtocolIE-Field'(Bytes), dec_components196(Num-1, Remain, [Term|Acc]). dec_components198(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components198(Num, Bytes, Acc) -> {Term,Remain} = 'dec_SecondaryRATDataUsageReportItem_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components198(Num-1, Remain, [Term|Acc]). dec_components199(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components199(Num, Bytes, Acc) -> {Term,Remain} = 'dec_SecurityIndication_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components199(Num-1, Remain, [Term|Acc]). dec_components2(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components2(Num, Bytes, Acc) -> {Term,Remain} = 'dec_Additional-GUTI_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components2(Num-1, Remain, [Term|Acc]). dec_components20(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components20(Num, Bytes, Acc) -> {Term,Remain} = begin V6@Pad2 = bit_size(Bytes) band 7, <<_:V6@Pad2,V6@V0:3/binary-unit:8,V6@Buf1/bitstring>> = Bytes, V6@Conv4 = binary:copy(V6@V0), {V6@Conv4,V6@Buf1} end, dec_components20(Num-1, Remain, [Term|Acc]). dec_components200(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components200(Num, Bytes, Acc) -> {Term,Remain} = 'dec_SecurityResult_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components200(Num-1, Remain, [Term|Acc]). dec_components201(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components201(Num, Bytes, Acc) -> {Term,Remain} = 'dec_SensorMeasConfigNameItem_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components201(Num-1, Remain, [Term|Acc]). dec_components202(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components202(Num, Bytes, Acc) -> {Term,Remain} = dec_SensorMeasConfigNameItem(Bytes), dec_components202(Num-1, Remain, [Term|Acc]). dec_components203(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components203(Num, Bytes, Acc) -> {Term,Remain} = 'dec_SensorMeasurementConfiguration_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components203(Num-1, Remain, [Term|Acc]). dec_components207(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components207(Num, Bytes, Acc) -> {Term,Remain} = 'dec_SONInformationReply_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components207(Num-1, Remain, [Term|Acc]). dec_components21(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components21(Num, Bytes, Acc) -> {Term,Remain} = 'dec_CancelledCellinEAI-Item'(Bytes), dec_components21(Num-1, Remain, [Term|Acc]). dec_components210(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components210(Num, Bytes, Acc) -> {Term,Remain} = 'dec_SONConfigurationTransfer_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components210(Num-1, Remain, [Term|Acc]). dec_components212(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components212(Num, Bytes, Acc) -> {Term,Remain} = 'dec_SynchronisationInformation_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components212(Num-1, Remain, [Term|Acc]). dec_components213(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components213(Num, Bytes, Acc) -> {Term,Remain} = 'dec_SourceeNB-ID_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components213(Num-1, Remain, [Term|Acc]). dec_components215(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components215(Num, Bytes, Acc) -> {Term,Remain} = 'dec_SourceeNB-ToTargeteNB-TransparentContainer_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components215(Num-1, Remain, [Term|Acc]). dec_components217(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components217(Num, Bytes, Acc) -> {Term,Remain} = 'dec_SourceNgRanNode-ID_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components217(Num-1, Remain, [Term|Acc]). dec_components218(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components218(Num, Bytes, Acc) -> {Term,Remain} = dec_ServedGUMMEIsItem(Bytes), dec_components218(Num-1, Remain, [Term|Acc]). dec_components22(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components22(Num, Bytes, Acc) -> {Term,Remain} = 'dec_CancelledCellinEAI-Item_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components22(Num-1, Remain, [Term|Acc]). dec_components220(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components220(Num, Bytes, Acc) -> {Term,Remain} = 'dec_ServedGUMMEIsItem_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components220(Num-1, Remain, [Term|Acc]). dec_components222(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components222(Num, Bytes, Acc) -> {Term,Remain} = begin <> = Bytes, V7@Conv2 = binary:copy(V7@V0), {V7@Conv2,V7@Buf1} end, dec_components222(Num-1, Remain, [Term|Acc]). dec_components223(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components223(Num, Bytes, Acc) -> {Term,Remain} = begin <> = Bytes, V8@Conv2 = binary:copy(V8@V0), {V8@Conv2,V8@Buf1} end, dec_components223(Num-1, Remain, [Term|Acc]). dec_components224(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components224(Num, Bytes, Acc) -> {Term,Remain} = begin V9@Pad2 = bit_size(Bytes) band 7, <<_:V9@Pad2,V9@V0:3/binary-unit:8,V9@Buf1/bitstring>> = Bytes, V9@Conv4 = binary:copy(V9@V0), {V9@Conv4,V9@Buf1} end, dec_components224(Num-1, Remain, [Term|Acc]). dec_components225(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components225(Num, Bytes, Acc) -> {Term,Remain} = 'dec_Subscription-Based-UE-DifferentiationInfo_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components225(Num-1, Remain, [Term|Acc]). dec_components226(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components226(Num, Bytes, Acc) -> {Term,Remain} = 'dec_ScheduledCommunicationTime_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components226(Num-1, Remain, [Term|Acc]). dec_components227(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components227(Num, Bytes, Acc) -> {Term,Remain} = 'dec_SupportedTAs-Item'(Bytes), dec_components227(Num-1, Remain, [Term|Acc]). dec_components229(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components229(Num, Bytes, Acc) -> {Term,Remain} = 'dec_SupportedTAs-Item_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components229(Num-1, Remain, [Term|Acc]). dec_components23(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components23(Num, Bytes, Acc) -> {Term,Remain} = 'dec_CancelledCellinTAI-Item'(Bytes), dec_components23(Num-1, Remain, [Term|Acc]). dec_components232(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components232(Num, Bytes, Acc) -> {Term,Remain} = 'dec_TimeSynchronisationInfo_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components232(Num-1, Remain, [Term|Acc]). dec_components234(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components234(Num, Bytes, Acc) -> {Term,Remain} = 'dec_S-TMSI_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components234(Num-1, Remain, [Term|Acc]). dec_components235(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components235(Num, Bytes, Acc) -> {Term,Remain} = begin <> = Bytes, V10@Conv2 = binary:copy(V10@V0), {V10@Conv2,V10@Buf1} end, dec_components235(Num-1, Remain, [Term|Acc]). dec_components236(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components236(Num, Bytes, Acc) -> {Term,Remain} = 'dec_TAIBasedMDT_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components236(Num-1, Remain, [Term|Acc]). dec_components237(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components237(Num, Bytes, Acc) -> {Term,Remain} = dec_TAI(Bytes), dec_components237(Num-1, Remain, [Term|Acc]). dec_components238(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components238(Num, Bytes, Acc) -> {Term,Remain} = dec_TAI(Bytes), dec_components238(Num-1, Remain, [Term|Acc]). dec_components239(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components239(Num, Bytes, Acc) -> {Term,Remain} = 'dec_TAI_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components239(Num-1, Remain, [Term|Acc]). dec_components24(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components24(Num, Bytes, Acc) -> {Term,Remain} = 'dec_CancelledCellinTAI-Item_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components24(Num-1, Remain, [Term|Acc]). dec_components240(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components240(Num, Bytes, Acc) -> {Term,Remain} = 'dec_TAI-Broadcast-Item'(Bytes), dec_components240(Num-1, Remain, [Term|Acc]). dec_components241(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components241(Num, Bytes, Acc) -> {Term,Remain} = 'dec_TAI-Broadcast-Item_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components241(Num-1, Remain, [Term|Acc]). dec_components242(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components242(Num, Bytes, Acc) -> {Term,Remain} = 'dec_TAI-Cancelled-Item'(Bytes), dec_components242(Num-1, Remain, [Term|Acc]). dec_components243(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components243(Num, Bytes, Acc) -> {Term,Remain} = 'dec_TAI-Cancelled-Item_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components243(Num-1, Remain, [Term|Acc]). dec_components244(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components244(Num, Bytes, Acc) -> {Term,Remain} = 'dec_TABasedMDT_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components244(Num-1, Remain, [Term|Acc]). dec_components245(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components245(Num, Bytes, Acc) -> {Term,Remain} = begin <> = Bytes, V11@Conv2 = binary:copy(V11@V0), {V11@Conv2,V11@Buf1} end, dec_components245(Num-1, Remain, [Term|Acc]). dec_components246(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components246(Num, Bytes, Acc) -> {Term,Remain} = 'dec_TABasedQMC_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components246(Num-1, Remain, [Term|Acc]). dec_components247(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components247(Num, Bytes, Acc) -> {Term,Remain} = begin <> = Bytes, V12@Conv2 = binary:copy(V12@V0), {V12@Conv2,V12@Buf1} end, dec_components247(Num-1, Remain, [Term|Acc]). dec_components248(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components248(Num, Bytes, Acc) -> {Term,Remain} = 'dec_TAIBasedQMC_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components248(Num-1, Remain, [Term|Acc]). dec_components249(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components249(Num, Bytes, Acc) -> {Term,Remain} = dec_TAI(Bytes), dec_components249(Num-1, Remain, [Term|Acc]). dec_components25(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components25(Num, Bytes, Acc) -> {Term,Remain} = 'dec_CellIdentifierAndCELevelForCECapableUEs_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components25(Num-1, Remain, [Term|Acc]). dec_components250(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components250(Num, Bytes, Acc) -> {Term,Remain} = 'dec_CompletedCellinTAI-Item'(Bytes), dec_components250(Num-1, Remain, [Term|Acc]). dec_components251(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components251(Num, Bytes, Acc) -> {Term,Remain} = 'dec_CompletedCellinTAI-Item_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components251(Num-1, Remain, [Term|Acc]). dec_components252(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components252(Num, Bytes, Acc) -> {Term,Remain} = 'dec_TargeteNB-ID_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components252(Num-1, Remain, [Term|Acc]). dec_components253(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components253(Num, Bytes, Acc) -> {Term,Remain} = 'dec_TargetRNC-ID_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components253(Num-1, Remain, [Term|Acc]). dec_components254(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components254(Num, Bytes, Acc) -> {Term,Remain} = 'dec_TargetNgRanNode-ID_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components254(Num-1, Remain, [Term|Acc]). dec_components255(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components255(Num, Bytes, Acc) -> {Term,Remain} = 'dec_GNB_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components255(Num-1, Remain, [Term|Acc]). dec_components256(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components256(Num, Bytes, Acc) -> {Term,Remain} = 'dec_Global-GNB-ID_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components256(Num-1, Remain, [Term|Acc]). dec_components257(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components257(Num, Bytes, Acc) -> {Term,Remain} = 'dec_NG-eNB_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components257(Num-1, Remain, [Term|Acc]). dec_components259(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components259(Num, Bytes, Acc) -> {Term,Remain} = 'dec_TargeteNB-ToSourceeNB-TransparentContainer_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components259(Num-1, Remain, [Term|Acc]). dec_components26(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components26(Num, Bytes, Acc) -> {Term,Remain} = 'dec_CellID-Broadcast-Item'(Bytes), dec_components26(Num-1, Remain, [Term|Acc]). dec_components261(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components261(Num, Bytes, Acc) -> {Term,Remain} = 'dec_M1ThresholdEventA2_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components261(Num-1, Remain, [Term|Acc]). dec_components263(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components263(Num, Bytes, Acc) -> {Term,Remain} = 'dec_TraceActivation_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components263(Num-1, Remain, [Term|Acc]). dec_components265(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components265(Num, Bytes, Acc) -> {Term,Remain} = 'dec_TunnelInformation_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components265(Num-1, Remain, [Term|Acc]). dec_components266(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components266(Num, Bytes, Acc) -> {Term,Remain} = dec_TAI(Bytes), dec_components266(Num-1, Remain, [Term|Acc]). dec_components268(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components268(Num, Bytes, Acc) -> {Term,Remain} = 'dec_UEAggregateMaximumBitrate_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components268(Num-1, Remain, [Term|Acc]). dec_components27(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components27(Num, Bytes, Acc) -> {Term,Remain} = 'dec_CellID-Broadcast-Item_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components27(Num-1, Remain, [Term|Acc]). dec_components271(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components271(Num, Bytes, Acc) -> {Term,Remain} = 'dec_UEAppLayerMeasConfig_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components271(Num-1, Remain, [Term|Acc]). dec_components273(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components273(Num, Bytes, Acc) -> {Term,Remain} = 'dec_UE-S1AP-ID-pair_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components273(Num-1, Remain, [Term|Acc]). dec_components274(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components274(Num, Bytes, Acc) -> {Term,Remain} = 'dec_UE-associatedLogicalS1-ConnectionItem_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components274(Num-1, Remain, [Term|Acc]). dec_components275(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components275(Num, Bytes, Acc) -> {Term,Remain} = 'dec_LastVisitedCell-Item'(Bytes), dec_components275(Num-1, Remain, [Term|Acc]). dec_components276(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components276(Num, Bytes, Acc) -> {Term,Remain} = 'dec_UESecurityCapabilities_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components276(Num-1, Remain, [Term|Acc]). dec_components277(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components277(Num, Bytes, Acc) -> {Term,Remain} = 'dec_UESidelinkAggregateMaximumBitrate_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components277(Num-1, Remain, [Term|Acc]). dec_components278(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components278(Num, Bytes, Acc) -> {Term,Remain} = 'dec_UL-CP-SecurityInformation_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components278(Num-1, Remain, [Term|Acc]). dec_components28(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components28(Num, Bytes, Acc) -> {Term,Remain} = 'dec_CellID-Cancelled-Item'(Bytes), dec_components28(Num-1, Remain, [Term|Acc]). dec_components280(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components280(Num, Bytes, Acc) -> {Term,Remain} = 'dec_UserLocationInformation_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components280(Num-1, Remain, [Term|Acc]). dec_components282(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components282(Num, Bytes, Acc) -> {Term,Remain} = 'dec_V2XServicesAuthorized_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components282(Num-1, Remain, [Term|Acc]). dec_components283(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components283(Num, Bytes, Acc) -> {Term,Remain} = 'dec_WLANMeasurementConfiguration_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components283(Num-1, Remain, [Term|Acc]). dec_components284(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components284(Num, Bytes, Acc) -> {Term,Remain} = begin <> = Bytes, V13@Add2 = V13@V0 + 1, V13@Pad5 = bit_size(V13@Buf1) band 7, <<_:V13@Pad5,V13@V3:V13@Add2/binary-unit:8,V13@Buf4/bitstring>> = V13@Buf1, V13@Conv7 = binary:copy(V13@V3), {V13@Conv7,V13@Buf4} end, dec_components284(Num-1, Remain, [Term|Acc]). dec_components285(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components285(Num, Bytes, Acc) -> {Term,Remain} = 'dec_WUS-Assistance-Information_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components285(Num-1, Remain, [Term|Acc]). dec_components287(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components287(Num, Bytes, Acc) -> {Term,Remain} = 'dec_X2TNLConfigurationInfo_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components287(Num-1, Remain, [Term|Acc]). dec_components289(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components289(Num, Bytes, Acc) -> {Term,Remain} = dec_ENBX2ExtTLA(Bytes), dec_components289(Num-1, Remain, [Term|Acc]). dec_components29(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components29(Num, Bytes, Acc) -> {Term,Remain} = 'dec_CellID-Cancelled-Item_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components29(Num-1, Remain, [Term|Acc]). dec_components290(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components290(Num, Bytes, Acc) -> {Term,Remain} = 'dec_ENBX2ExtTLA_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components290(Num-1, Remain, [Term|Acc]). dec_components291(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components291(Num, Bytes, Acc) -> {Term,Remain} = begin {V14@V0,V14@Buf1} = case Bytes of <<0:1,V14@V3:8/unsigned-unit:1,V14@Buf4/bitstring>> -> V14@Add5 = V14@V3 + 1, V14@Pad8 = bit_size(V14@Buf4) band 7, <<_:V14@Pad8,V14@V6:V14@Add5/binary-unit:1,V14@Buf7/bitstring>> = V14@Buf4, {V14@V6,V14@Buf7}; <<1:1,V14@Buf2/bitstring>> -> V14@Pad6 = bit_size(V14@Buf2) band 7, {V14@V3,V14@Buf4} = case V14@Buf2 of <<_:V14@Pad6,0:1,V14@V8:7,V14@V10:V14@V8/binary-unit:1,V14@Buf11/bitstring>> -> {V14@V10,V14@Buf11}; <<_:V14@Pad6,1:1,0:1,V14@V9:14,V14@V11:V14@V9/binary-unit:1,V14@Buf12/bitstring>> -> {V14@V11,V14@Buf12}; <<_:V14@Pad6,1:1,1:1,V14@V9:6,V14@Buf10/bitstring>> -> {V14@V11,V14@Buf12} = decode_fragmented(V14@V9, V14@Buf10, 1), {V14@V11,V14@Buf12} end, {V14@V3,V14@Buf4} end, {V14@V13,V14@Buf14} = {list_to_bitstring([V14@V0]),V14@Buf1}, {V14@V13,V14@Buf14} end, dec_components291(Num-1, Remain, [Term|Acc]). dec_components292(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components292(Num, Bytes, Acc) -> {Term,Remain} = begin {V15@V0,V15@Buf1} = case Bytes of <<0:1,V15@V3:8/unsigned-unit:1,V15@Buf4/bitstring>> -> V15@Add5 = V15@V3 + 1, V15@Pad8 = bit_size(V15@Buf4) band 7, <<_:V15@Pad8,V15@V6:V15@Add5/binary-unit:1,V15@Buf7/bitstring>> = V15@Buf4, {V15@V6,V15@Buf7}; <<1:1,V15@Buf2/bitstring>> -> V15@Pad6 = bit_size(V15@Buf2) band 7, {V15@V3,V15@Buf4} = case V15@Buf2 of <<_:V15@Pad6,0:1,V15@V8:7,V15@V10:V15@V8/binary-unit:1,V15@Buf11/bitstring>> -> {V15@V10,V15@Buf11}; <<_:V15@Pad6,1:1,0:1,V15@V9:14,V15@V11:V15@V9/binary-unit:1,V15@Buf12/bitstring>> -> {V15@V11,V15@Buf12}; <<_:V15@Pad6,1:1,1:1,V15@V9:6,V15@Buf10/bitstring>> -> {V15@V11,V15@Buf12} = decode_fragmented(V15@V9, V15@Buf10, 1), {V15@V11,V15@Buf12} end, {V15@V3,V15@Buf4} end, {V15@V13,V15@Buf14} = {list_to_bitstring([V15@V0]),V15@Buf1}, {V15@V13,V15@Buf14} end, dec_components292(Num-1, Remain, [Term|Acc]). dec_components30(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components30(Num, Bytes, Acc) -> {Term,Remain} = 'dec_CellBasedMDT_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components30(Num-1, Remain, [Term|Acc]). dec_components31(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components31(Num, Bytes, Acc) -> {Term,Remain} = 'dec_EUTRAN-CGI'(Bytes), dec_components31(Num-1, Remain, [Term|Acc]). dec_components32(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components32(Num, Bytes, Acc) -> {Term,Remain} = 'dec_CellBasedQMC_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components32(Num-1, Remain, [Term|Acc]). dec_components33(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components33(Num, Bytes, Acc) -> {Term,Remain} = 'dec_EUTRAN-CGI'(Bytes), dec_components33(Num-1, Remain, [Term|Acc]). dec_components34(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components34(Num, Bytes, Acc) -> {Term,Remain} = 'dec_Cdma2000OneXSRVCCInfo_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components34(Num-1, Remain, [Term|Acc]). dec_components35(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components35(Num, Bytes, Acc) -> {Term,Remain} = 'dec_CellType_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components35(Num-1, Remain, [Term|Acc]). dec_components36(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components36(Num, Bytes, Acc) -> {Term,Remain} = 'dec_CGI_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components36(Num-1, Remain, [Term|Acc]). dec_components37(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components37(Num, Bytes, Acc) -> {Term,Remain} = 'dec_CNTypeRestrictions-Item'(Bytes), dec_components37(Num-1, Remain, [Term|Acc]). dec_components38(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components38(Num, Bytes, Acc) -> {Term,Remain} = 'dec_CNTypeRestrictions-Item_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components38(Num-1, Remain, [Term|Acc]). dec_components39(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components39(Num, Bytes, Acc) -> {Term,Remain} = dec_ConnectedengNBItem(Bytes), dec_components39(Num-1, Remain, [Term|Acc]). dec_components4(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components4(Num, Bytes, Acc) -> {Term,Remain} = 'dec_AllocationAndRetentionPriority_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components4(Num-1, Remain, [Term|Acc]). dec_components40(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components40(Num, Bytes, Acc) -> {Term,Remain} = 'dec_ConnectedengNBItem_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components40(Num-1, Remain, [Term|Acc]). dec_components41(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components41(Num, Bytes, Acc) -> {Term,Remain} = 'dec_ContextatSource_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components41(Num-1, Remain, [Term|Acc]). dec_components42(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components42(Num, Bytes, Acc) -> {Term,Remain} = 'dec_CSG-IdList-Item'(Bytes), dec_components42(Num-1, Remain, [Term|Acc]). dec_components43(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components43(Num, Bytes, Acc) -> {Term,Remain} = 'dec_CSG-IdList-Item_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components43(Num-1, Remain, [Term|Acc]). dec_components44(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components44(Num, Bytes, Acc) -> {Term,Remain} = 'dec_COUNTvalue_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components44(Num-1, Remain, [Term|Acc]). dec_components45(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components45(Num, Bytes, Acc) -> {Term,Remain} = 'dec_COUNTValueExtended_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components45(Num-1, Remain, [Term|Acc]). dec_components46(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components46(Num, Bytes, Acc) -> {Term,Remain} = 'dec_COUNTvaluePDCP-SNlength18_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components46(Num-1, Remain, [Term|Acc]). dec_components47(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components47(Num, Bytes, Acc) -> {Term,Remain} = 'dec_CriticalityDiagnostics_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components47(Num-1, Remain, [Term|Acc]). dec_components48(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components48(Num, Bytes, Acc) -> {Term,Remain} = 'dec_CriticalityDiagnostics-IE-Item'(Bytes), dec_components48(Num-1, Remain, [Term|Acc]). dec_components49(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components49(Num, Bytes, Acc) -> {Term,Remain} = 'dec_CriticalityDiagnostics-IE-Item_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components49(Num-1, Remain, [Term|Acc]). dec_components5(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components5(Num, Bytes, Acc) -> {Term,Remain} = 'dec_AssistanceDataForCECapableUEs_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components5(Num-1, Remain, [Term|Acc]). dec_components50(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components50(Num, Bytes, Acc) -> {Term,Remain} = 'dec_DAPSRequestInfo_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components50(Num-1, Remain, [Term|Acc]). dec_components52(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components52(Num, Bytes, Acc) -> {Term,Remain} = 'dec_DAPSResponseInfoList_ProtocolIE-Field'(Bytes), dec_components52(Num-1, Remain, [Term|Acc]). dec_components54(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components54(Num, Bytes, Acc) -> {Term,Remain} = 'dec_DAPSResponseInfoItem_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components54(Num-1, Remain, [Term|Acc]). dec_components55(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components55(Num, Bytes, Acc) -> {Term,Remain} = 'dec_DAPSResponseInfo_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components55(Num-1, Remain, [Term|Acc]). dec_components56(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components56(Num, Bytes, Acc) -> {Term,Remain} = dec_ServedDCNsItem(Bytes), dec_components56(Num-1, Remain, [Term|Acc]). dec_components57(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components57(Num, Bytes, Acc) -> {Term,Remain} = 'dec_ServedDCNsItem_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components57(Num-1, Remain, [Term|Acc]). dec_components58(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components58(Num, Bytes, Acc) -> {Term,Remain} = 'dec_DL-CP-SecurityInformation_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components58(Num-1, Remain, [Term|Acc]). dec_components59(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components59(Num, Bytes, Acc) -> {Term,Remain} = 'dec_EUTRAN-CGI'(Bytes), dec_components59(Num-1, Remain, [Term|Acc]). dec_components6(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components6(Num, Bytes, Acc) -> {Term,Remain} = 'dec_AssistanceDataForPaging_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components6(Num-1, Remain, [Term|Acc]). dec_components60(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components60(Num, Bytes, Acc) -> {Term,Remain} = 'dec_EUTRAN-CGI'(Bytes), dec_components60(Num-1, Remain, [Term|Acc]). dec_components61(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components61(Num, Bytes, Acc) -> {Term,Remain} = begin V16@Pad2 = bit_size(Bytes) band 7, <<_:V16@Pad2,V16@V0:3/binary-unit:8,V16@Buf1/bitstring>> = Bytes, V16@Conv4 = binary:copy(V16@V0), {V16@Conv4,V16@Buf1} end, dec_components61(Num-1, Remain, [Term|Acc]). dec_components62(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components62(Num, Bytes, Acc) -> {Term,Remain} = 'dec_EmergencyAreaID-Broadcast-Item'(Bytes), dec_components62(Num-1, Remain, [Term|Acc]). dec_components63(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components63(Num, Bytes, Acc) -> {Term,Remain} = 'dec_EmergencyAreaID-Broadcast-Item_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components63(Num-1, Remain, [Term|Acc]). dec_components64(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components64(Num, Bytes, Acc) -> {Term,Remain} = 'dec_EmergencyAreaID-Cancelled-Item'(Bytes), dec_components64(Num-1, Remain, [Term|Acc]). dec_components65(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components65(Num, Bytes, Acc) -> {Term,Remain} = 'dec_EmergencyAreaID-Cancelled-Item_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components65(Num-1, Remain, [Term|Acc]). dec_components66(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components66(Num, Bytes, Acc) -> {Term,Remain} = 'dec_CompletedCellinEAI-Item'(Bytes), dec_components66(Num-1, Remain, [Term|Acc]). dec_components67(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components67(Num, Bytes, Acc) -> {Term,Remain} = 'dec_CompletedCellinEAI-Item_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components67(Num-1, Remain, [Term|Acc]). dec_components68(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components68(Num, Bytes, Acc) -> {Term,Remain} = 'dec_EUTRAN-CGI'(Bytes), dec_components68(Num-1, Remain, [Term|Acc]). dec_components69(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components69(Num, Bytes, Acc) -> {Term,Remain} = begin V17@Pad2 = bit_size(Bytes) band 7, <<_:V17@Pad2,V17@V0:3/binary-unit:8,V17@Buf1/bitstring>> = Bytes, V17@Conv4 = binary:copy(V17@V0), {V17@Conv4,V17@Buf1} end, dec_components69(Num-1, Remain, [Term|Acc]). dec_components7(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components7(Num, Bytes, Acc) -> {Term,Remain} = 'dec_AssistanceDataForRecommendedCells_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components7(Num-1, Remain, [Term|Acc]). dec_components70(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components70(Num, Bytes, Acc) -> {Term,Remain} = 'dec_ENB-EarlyStatusTransfer-TransparentContainer_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components70(Num-1, Remain, [Term|Acc]). dec_components71(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components71(Num, Bytes, Acc) -> {Term,Remain} = 'dec_GERAN-Cell-ID_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components71(Num-1, Remain, [Term|Acc]). dec_components72(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components72(Num, Bytes, Acc) -> {Term,Remain} = 'dec_Global-ENB-ID_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components72(Num-1, Remain, [Term|Acc]). dec_components73(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components73(Num, Bytes, Acc) -> {Term,Remain} = 'dec_Global-en-gNB-ID_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components73(Num-1, Remain, [Term|Acc]). dec_components74(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components74(Num, Bytes, Acc) -> {Term,Remain} = dec_GUMMEI(Bytes), dec_components74(Num-1, Remain, [Term|Acc]). dec_components75(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components75(Num, Bytes, Acc) -> {Term,Remain} = 'dec_ENB-StatusTransfer-TransparentContainer_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components75(Num-1, Remain, [Term|Acc]). dec_components76(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components76(Num, Bytes, Acc) -> {Term,Remain} = begin {V18@V0,V18@Buf1} = case Bytes of <<0:1,V18@V3:8/unsigned-unit:1,V18@Buf4/bitstring>> -> V18@Add5 = V18@V3 + 1, V18@Pad8 = bit_size(V18@Buf4) band 7, <<_:V18@Pad8,V18@V6:V18@Add5/binary-unit:1,V18@Buf7/bitstring>> = V18@Buf4, {V18@V6,V18@Buf7}; <<1:1,V18@Buf2/bitstring>> -> V18@Pad6 = bit_size(V18@Buf2) band 7, {V18@V3,V18@Buf4} = case V18@Buf2 of <<_:V18@Pad6,0:1,V18@V8:7,V18@V10:V18@V8/binary-unit:1,V18@Buf11/bitstring>> -> {V18@V10,V18@Buf11}; <<_:V18@Pad6,1:1,0:1,V18@V9:14,V18@V11:V18@V9/binary-unit:1,V18@Buf12/bitstring>> -> {V18@V11,V18@Buf12}; <<_:V18@Pad6,1:1,1:1,V18@V9:6,V18@Buf10/bitstring>> -> {V18@V11,V18@Buf12} = decode_fragmented(V18@V9, V18@Buf10, 1), {V18@V11,V18@Buf12} end, {V18@V3,V18@Buf4} end, {V18@V13,V18@Buf14} = {list_to_bitstring([V18@V0]),V18@Buf1}, {V18@V13,V18@Buf14} end, dec_components76(Num-1, Remain, [Term|Acc]). dec_components77(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components77(Num, Bytes, Acc) -> {Term,Remain} = 'dec_EN-DCSONConfigurationTransfer_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components77(Num-1, Remain, [Term|Acc]). dec_components78(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components78(Num, Bytes, Acc) -> {Term,Remain} = 'dec_EN-DCTransferTypeRequest_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components78(Num-1, Remain, [Term|Acc]). dec_components79(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components79(Num, Bytes, Acc) -> {Term,Remain} = 'dec_EN-DCTransferTypeReply_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components79(Num-1, Remain, [Term|Acc]). dec_components80(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components80(Num, Bytes, Acc) -> {Term,Remain} = 'dec_EN-DCSONeNBIdentification_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components80(Num-1, Remain, [Term|Acc]). dec_components81(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components81(Num, Bytes, Acc) -> {Term,Remain} = 'dec_EN-DCSONengNBIdentification_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components81(Num-1, Remain, [Term|Acc]). dec_components82(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components82(Num, Bytes, Acc) -> {Term,Remain} = begin V19@Pad2 = bit_size(Bytes) band 7, <<_:V19@Pad2,V19@V0:3/binary-unit:8,V19@Buf1/bitstring>> = Bytes, V19@Conv4 = binary:copy(V19@V0), {V19@Conv4,V19@Buf1} end, dec_components82(Num-1, Remain, [Term|Acc]). dec_components84(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components84(Num, Bytes, Acc) -> {Term,Remain} = 'dec_E-RABInformationList_ProtocolIE-Field'(Bytes), dec_components84(Num-1, Remain, [Term|Acc]). dec_components87(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components87(Num, Bytes, Acc) -> {Term,Remain} = 'dec_E-RABInformationListItem_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components87(Num-1, Remain, [Term|Acc]). dec_components9(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components9(Num, Bytes, Acc) -> {Term,Remain} = 'dec_Bearers-SubjectToStatusTransferList_ProtocolIE-Field'(Bytes), dec_components9(Num-1, Remain, [Term|Acc]). dec_components90(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components90(Num, Bytes, Acc) -> {Term,Remain} = 'dec_E-RABList_ProtocolIE-Field'(Bytes), dec_components90(Num-1, Remain, [Term|Acc]). dec_components92(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components92(Num, Bytes, Acc) -> {Term,Remain} = 'dec_E-RABItem_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components92(Num-1, Remain, [Term|Acc]). dec_components94(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components94(Num, Bytes, Acc) -> {Term,Remain} = 'dec_E-RABLevelQoSParameters_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components94(Num-1, Remain, [Term|Acc]). dec_components97(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components97(Num, Bytes, Acc) -> {Term,Remain} = 'dec_E-RABSecurityResultList_ProtocolIE-Field'(Bytes), dec_components97(Num-1, Remain, [Term|Acc]). dec_components99(0, Bytes, Acc) -> {lists:reverse(Acc),Bytes}; dec_components99(Num, Bytes, Acc) -> {Term,Remain} = 'dec_E-RABSecurityResultItem_iE-Extensions_ProtocolExtensionField'(Bytes), dec_components99(Num-1, Remain, [Term|Acc]). dec_os_Extension117(Bytes, Id) when Id =:= 255 -> {Term,_} = dec_ExtendedBitRate(Bytes), Term; dec_os_Extension117(Bytes, Id) when Id =:= 256 -> {Term,_} = dec_ExtendedBitRate(Bytes), Term; dec_os_Extension117(Bytes, Id) when Id =:= 257 -> {Term,_} = dec_ExtendedBitRate(Bytes), Term; dec_os_Extension117(Bytes, Id) when Id =:= 258 -> {Term,_} = dec_ExtendedBitRate(Bytes), Term; dec_os_Extension117(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Extension121(Bytes, Id) when Id =:= 261 -> {Term,_} = dec_NRrestrictioninEPSasSecondaryRAT(Bytes), Term; dec_os_Extension121(Bytes, Id) when Id =:= 270 -> {Term,_} = dec_UnlicensedSpectrumRestriction(Bytes), Term; dec_os_Extension121(Bytes, Id) when Id =:= 282 -> {Term,_} = dec_CNTypeRestrictions(Bytes), Term; dec_os_Extension121(Bytes, Id) when Id =:= 287 -> {Term,_} = dec_NRrestrictionin5GS(Bytes), Term; dec_os_Extension121(Bytes, Id) when Id =:= 290 -> {Term,_} = dec_PLMNidentity(Bytes), Term; dec_os_Extension121(Bytes, Id) when Id =:= 336 -> {Term,_} = 'dec_RAT-Restrictions'(Bytes), Term; dec_os_Extension121(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Extension124(Bytes, Id) when Id =:= 171 -> {Term,_} = dec_M3Configuration(Bytes), Term; dec_os_Extension124(Bytes, Id) when Id =:= 172 -> {Term,_} = dec_M4Configuration(Bytes), Term; dec_os_Extension124(Bytes, Id) when Id =:= 173 -> {Term,_} = dec_M5Configuration(Bytes), Term; dec_os_Extension124(Bytes, Id) when Id =:= 174 -> {Term,_} = 'dec_MDT-Location-Info'(Bytes), Term; dec_os_Extension124(Bytes, Id) when Id =:= 220 -> {Term,_} = dec_M6Configuration(Bytes), Term; dec_os_Extension124(Bytes, Id) when Id =:= 221 -> {Term,_} = dec_M7Configuration(Bytes), Term; dec_os_Extension124(Bytes, Id) when Id =:= 284 -> {Term,_} = dec_BluetoothMeasurementConfiguration(Bytes), Term; dec_os_Extension124(Bytes, Id) when Id =:= 285 -> {Term,_} = dec_WLANMeasurementConfiguration(Bytes), Term; dec_os_Extension124(Bytes, Id) when Id =:= 345 -> {Term,_} = dec_SensorMeasurementConfiguration(Bytes), Term; dec_os_Extension124(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Extension13(Bytes, Id) when Id =:= 179 -> {Term,_} = dec_COUNTValueExtended(Bytes), Term; dec_os_Extension13(Bytes, Id) when Id =:= 180 -> {Term,_} = dec_COUNTValueExtended(Bytes), Term; dec_os_Extension13(Bytes, Id) when Id =:= 181 -> {Term,_} = dec_ReceiveStatusOfULPDCPSDUsExtended(Bytes), Term; dec_os_Extension13(Bytes, Id) when Id =:= 217 -> {Term,_} = 'dec_COUNTvaluePDCP-SNlength18'(Bytes), Term; dec_os_Extension13(Bytes, Id) when Id =:= 218 -> {Term,_} = 'dec_COUNTvaluePDCP-SNlength18'(Bytes), Term; dec_os_Extension13(Bytes, Id) when Id =:= 219 -> {Term,_} = 'dec_ReceiveStatusOfULPDCPSDUsPDCP-SNlength18'(Bytes), Term; dec_os_Extension13(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Extension133(Bytes, Id) when Id =:= 167 -> {Term,_} = 'dec_Time-UE-StayedInCell-EnhancedGranularity'(Bytes), Term; dec_os_Extension133(Bytes, Id) when Id =:= 168 -> {Term,_} = dec_Cause(Bytes), Term; dec_os_Extension133(Bytes, Id) when Id =:= 329 -> {Term,_} = dec_LastVisitedPSCellList(Bytes), Term; dec_os_Extension133(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Extension139(Bytes, Id) when Id =:= 284 -> {Term,_} = dec_BluetoothMeasurementConfiguration(Bytes), Term; dec_os_Extension139(Bytes, Id) when Id =:= 285 -> {Term,_} = dec_WLANMeasurementConfiguration(Bytes), Term; dec_os_Extension139(Bytes, Id) when Id =:= 344 -> {Term,_} = dec_LoggedMDTTrigger(Bytes), Term; dec_os_Extension139(Bytes, Id) when Id =:= 345 -> {Term,_} = dec_SensorMeasurementConfiguration(Bytes), Term; dec_os_Extension139(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Extension149(Bytes, Id) when Id =:= 178 -> {Term,_} = dec_MDTPLMNList(Bytes), Term; dec_os_Extension149(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Extension172(Bytes, Id) when Id =:= 216 -> {Term,_} = dec_ProSeUEtoNetworkRelaying(Bytes), Term; dec_os_Extension172(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Extension188(Bytes, Id) when Id =:= 298 -> {Term,_} = dec_RequestTypeAdditionalInfo(Bytes), Term; dec_os_Extension188(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Extension192(Bytes, Id) when Id =:= 313 -> {Term,_} = 'dec_NB-IoT-RLF-Report-Container'(Bytes), Term; dec_os_Extension192(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Extension208(Bytes, Id) when Id =:= 149 -> {Term,_} = dec_TimeSynchronisationInfo(Bytes), Term; dec_os_Extension208(Bytes, Id) when Id =:= 208 -> {Term,_} = dec_MutingPatternInformation(Bytes), Term; dec_os_Extension208(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Extension211(Bytes, Id) when Id =:= 152 -> {Term,_} = dec_X2TNLConfigurationInfo(Bytes), Term; dec_os_Extension211(Bytes, Id) when Id =:= 209 -> {Term,_} = dec_SynchronisationInformation(Bytes), Term; dec_os_Extension211(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Extension216(Bytes, Id) when Id =:= 79 -> {Term,_} = 'dec_Direct-Forwarding-Path-Availability'(Bytes), Term; dec_os_Extension216(Bytes, Id) when Id =:= 175 -> {Term,_} = dec_MobilityInformation(Bytes), Term; dec_os_Extension216(Bytes, Id) when Id =:= 194 -> {Term,_} = 'dec_UE-HistoryInformationFromTheUE'(Bytes), Term; dec_os_Extension216(Bytes, Id) when Id =:= 296 -> {Term,_} = dec_IMSvoiceEPSfallbackfrom5G(Bytes), Term; dec_os_Extension216(Bytes, Id) when Id =:= 299 -> {Term,_} = dec_AdditionalRRMPriorityIndex(Bytes), Term; dec_os_Extension216(Bytes, Id) when Id =:= 300 -> {Term,_} = dec_ContextatSource(Bytes), Term; dec_os_Extension216(Bytes, Id) when Id =:= 311 -> {Term,_} = dec_IntersystemMeasurementConfiguration(Bytes), Term; dec_os_Extension216(Bytes, Id) when Id =:= 312 -> {Term,_} = dec_SourceNodeID(Bytes), Term; dec_os_Extension216(Bytes, Id) when Id =:= 326 -> {Term,_} = dec_EmergencyIndicator(Bytes), Term; dec_os_Extension216(Bytes, Id) when Id =:= 337 -> {Term,_} = 'dec_ENB-UE-S1AP-ID'(Bytes), Term; dec_os_Extension216(Bytes, Id) when Id =:= 343 -> {Term,_} = 'dec_Global-RAN-NODE-ID'(Bytes), Term; dec_os_Extension216(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Extension221(Bytes, Id) when Id =:= 170 -> {Term,_} = dec_GUMMEIType(Bytes), Term; dec_os_Extension221(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Extension230(Bytes, Id) when Id =:= 232 -> {Term,_} = 'dec_RAT-Type'(Bytes), Term; dec_os_Extension230(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Extension233(Bytes, Id) when Id =:= 207 -> {Term,_} = dec_MutingAvailabilityIndication(Bytes), Term; dec_os_Extension233(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Extension260(Bytes, Id) when Id =:= 79 -> {Term,_} = 'dec_Direct-Forwarding-Path-Availability'(Bytes), Term; dec_os_Extension260(Bytes, Id) when Id =:= 318 -> {Term,_} = dec_DAPSResponseInfoList(Bytes), Term; dec_os_Extension260(Bytes, Id) when Id =:= 330 -> {Term,_} = dec_RACSIndication(Bytes), Term; dec_os_Extension260(Bytes, Id) when Id =:= 335 -> {Term,_} = 'dec_E-RABSecurityResultList'(Bytes), Term; dec_os_Extension260(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Extension264(Bytes, Id) when Id =:= 162 -> {Term,_} = 'dec_MDT-Configuration'(Bytes), Term; dec_os_Extension264(Bytes, Id) when Id =:= 262 -> {Term,_} = dec_UEAppLayerMeasConfig(Bytes), Term; dec_os_Extension264(Bytes, Id) when Id =:= 316 -> {Term,_} = 'dec_MDT-ConfigurationNR'(Bytes), Term; dec_os_Extension264(Bytes, Id) when Id =:= 325 -> {Term,_} = 'dec_URI-Address'(Bytes), Term; dec_os_Extension264(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Extension269(Bytes, Id) when Id =:= 259 -> {Term,_} = dec_ExtendedBitRate(Bytes), Term; dec_os_Extension269(Bytes, Id) when Id =:= 260 -> {Term,_} = dec_ExtendedBitRate(Bytes), Term; dec_os_Extension269(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Extension272(Bytes, Id) when Id =:= 276 -> {Term,_} = dec_ServiceType(Bytes), Term; dec_os_Extension272(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Extension281(Bytes, Id) when Id =:= 288 -> {Term,_} = dec_PSCellInformation(Bytes), Term; dec_os_Extension281(Bytes, Id) when Id =:= 339 -> {Term,_} = 'dec_LTE-NTN-TAI-Information'(Bytes), Term; dec_os_Extension281(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Extension288(Bytes, Id) when Id =:= 153 -> {Term,_} = dec_ENBX2ExtTLAs(Bytes), Term; dec_os_Extension288(Bytes, Id) when Id =:= 193 -> {Term,_} = dec_ENBIndirectX2TransportLayerAddresses(Bytes), Term; dec_os_Extension288(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Extension3(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Extension88(Bytes, Id) when Id =:= 317 -> {Term,_} = dec_DAPSRequestInfo(Bytes), Term; dec_os_Extension88(Bytes, Id) when Id =:= 328 -> {Term,_} = dec_TransportLayerAddress(Bytes), Term; dec_os_Extension88(Bytes, Id) when Id =:= 332 -> {Term,_} = dec_SecurityIndication(Bytes), Term; dec_os_Extension88(Bytes, Id) when Id =:= 340 -> {Term,_} = dec_TransportLayerAddress(Bytes), Term; dec_os_Extension88(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Extension95(Bytes, Id) when Id =:= 273 -> {Term,_} = 'dec_Packet-LossRate'(Bytes), Term; dec_os_Extension95(Bytes, Id) when Id =:= 274 -> {Term,_} = 'dec_Packet-LossRate'(Bytes), Term; dec_os_Extension95(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Value10(Bytes, Id) when Id =:= 89 -> {Term,_} = 'dec_Bearers-SubjectToStatusTransfer-Item'(Bytes), Term; dec_os_Value10(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Value102(Bytes, Id) when Id =:= 267 -> {Term,_} = 'dec_E-RABUsageReportItem'(Bytes), Term; dec_os_Value102(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Value154(Bytes, Id) when Id =:= 197 -> {Term,_} = dec_LoggedMBSFNMDT(Bytes), Term; dec_os_Value154(Bytes, Id) -> exit({'Type not compatible with table constraint',{{component,'Value'},{value,Bytes},{unique_name_and_value,id,Id}}}). dec_os_Value16(Bytes, Id) when Id =:= 322 -> {Term,_} = 'dec_Bearers-SubjectToEarlyStatusTransfer-Item'(Bytes), Term; dec_os_Value16(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Value177(Bytes, Id) when Id =:= 214 -> {Term,_} = dec_RecommendedCellItem(Bytes), Term; dec_os_Value177(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Value182(Bytes, Id) when Id =:= 215 -> {Term,_} = dec_RecommendedENBItem(Bytes), Term; dec_os_Value182(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Value197(Bytes, Id) when Id =:= 265 -> {Term,_} = dec_SecondaryRATDataUsageReportItem(Bytes), Term; dec_os_Value197(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Value205(Bytes, Id) when Id =:= 206 -> {Term,_} = dec_SONInformationReport(Bytes), Term; dec_os_Value205(Bytes, Id) -> exit({'Type not compatible with table constraint',{{component,'Value'},{value,Bytes},{unique_name_and_value,id,Id}}}). dec_os_Value53(Bytes, Id) when Id =:= 319 -> {Term,_} = dec_DAPSResponseInfoItem(Bytes), Term; dec_os_Value53(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Value85(Bytes, Id) when Id =:= 78 -> {Term,_} = 'dec_E-RABInformationListItem'(Bytes), Term; dec_os_Value85(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Value91(Bytes, Id) when Id =:= 35 -> {Term,_} = 'dec_E-RABItem'(Bytes), Term; dec_os_Value91(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. dec_os_Value98(Bytes, Id) when Id =:= 334 -> {Term,_} = 'dec_E-RABSecurityResultItem'(Bytes), Term; dec_os_Value98(Bytes, Id) -> {asn1_OPENTYPE,Bytes}. enc_os_Extension1(Val, Id) -> open_type_to_binary(Val). enc_os_Extension11(Val, Id) -> if Id =:= 179 -> enc_COUNTValueExtended(Val); Id =:= 180 -> enc_COUNTValueExtended(Val); Id =:= 181 -> enc_ReceiveStatusOfULPDCPSDUsExtended(Val); Id =:= 217 -> 'enc_COUNTvaluePDCP-SNlength18'(Val); Id =:= 218 -> 'enc_COUNTvaluePDCP-SNlength18'(Val); Id =:= 219 -> 'enc_ReceiveStatusOfULPDCPSDUsPDCP-SNlength18'(Val); true -> open_type_to_binary(Val) end. enc_os_Extension115(Val, Id) -> if Id =:= 255 -> enc_ExtendedBitRate(Val); Id =:= 256 -> enc_ExtendedBitRate(Val); Id =:= 257 -> enc_ExtendedBitRate(Val); Id =:= 258 -> enc_ExtendedBitRate(Val); true -> open_type_to_binary(Val) end. enc_os_Extension119(Val, Id) -> if Id =:= 261 -> enc_NRrestrictioninEPSasSecondaryRAT(Val); Id =:= 270 -> enc_UnlicensedSpectrumRestriction(Val); Id =:= 282 -> enc_CNTypeRestrictions(Val); Id =:= 287 -> enc_NRrestrictionin5GS(Val); Id =:= 290 -> enc_PLMNidentity(Val); Id =:= 336 -> 'enc_RAT-Restrictions'(Val); true -> open_type_to_binary(Val) end. enc_os_Extension122(Val, Id) -> if Id =:= 171 -> enc_M3Configuration(Val); Id =:= 172 -> enc_M4Configuration(Val); Id =:= 173 -> enc_M5Configuration(Val); Id =:= 174 -> 'enc_MDT-Location-Info'(Val); Id =:= 220 -> enc_M6Configuration(Val); Id =:= 221 -> enc_M7Configuration(Val); Id =:= 284 -> enc_BluetoothMeasurementConfiguration(Val); Id =:= 285 -> enc_WLANMeasurementConfiguration(Val); Id =:= 345 -> enc_SensorMeasurementConfiguration(Val); true -> open_type_to_binary(Val) end. enc_os_Extension131(Val, Id) -> if Id =:= 167 -> 'enc_Time-UE-StayedInCell-EnhancedGranularity'(Val); Id =:= 168 -> enc_Cause(Val); Id =:= 329 -> enc_LastVisitedPSCellList(Val); true -> open_type_to_binary(Val) end. enc_os_Extension137(Val, Id) -> if Id =:= 284 -> enc_BluetoothMeasurementConfiguration(Val); Id =:= 285 -> enc_WLANMeasurementConfiguration(Val); Id =:= 344 -> enc_LoggedMDTTrigger(Val); Id =:= 345 -> enc_SensorMeasurementConfiguration(Val); true -> open_type_to_binary(Val) end. enc_os_Extension147(Val, Id) -> if Id =:= 178 -> enc_MDTPLMNList(Val); true -> open_type_to_binary(Val) end. enc_os_Extension170(Val, Id) -> if Id =:= 216 -> enc_ProSeUEtoNetworkRelaying(Val); true -> open_type_to_binary(Val) end. enc_os_Extension186(Val, Id) -> if Id =:= 298 -> enc_RequestTypeAdditionalInfo(Val); true -> open_type_to_binary(Val) end. enc_os_Extension190(Val, Id) -> if Id =:= 313 -> 'enc_NB-IoT-RLF-Report-Container'(Val); true -> open_type_to_binary(Val) end. enc_os_Extension206(Val, Id) -> if Id =:= 149 -> enc_TimeSynchronisationInfo(Val); Id =:= 208 -> enc_MutingPatternInformation(Val); true -> open_type_to_binary(Val) end. enc_os_Extension209(Val, Id) -> if Id =:= 152 -> enc_X2TNLConfigurationInfo(Val); Id =:= 209 -> enc_SynchronisationInformation(Val); true -> open_type_to_binary(Val) end. enc_os_Extension214(Val, Id) -> if Id =:= 79 -> 'enc_Direct-Forwarding-Path-Availability'(Val); Id =:= 175 -> enc_MobilityInformation(Val); Id =:= 194 -> 'enc_UE-HistoryInformationFromTheUE'(Val); Id =:= 296 -> enc_IMSvoiceEPSfallbackfrom5G(Val); Id =:= 299 -> enc_AdditionalRRMPriorityIndex(Val); Id =:= 300 -> enc_ContextatSource(Val); Id =:= 311 -> enc_IntersystemMeasurementConfiguration(Val); Id =:= 312 -> enc_SourceNodeID(Val); Id =:= 326 -> enc_EmergencyIndicator(Val); Id =:= 337 -> 'enc_ENB-UE-S1AP-ID'(Val); Id =:= 343 -> 'enc_Global-RAN-NODE-ID'(Val); true -> open_type_to_binary(Val) end. enc_os_Extension219(Val, Id) -> if Id =:= 170 -> enc_GUMMEIType(Val); true -> open_type_to_binary(Val) end. enc_os_Extension228(Val, Id) -> if Id =:= 232 -> 'enc_RAT-Type'(Val); true -> open_type_to_binary(Val) end. enc_os_Extension231(Val, Id) -> if Id =:= 207 -> enc_MutingAvailabilityIndication(Val); true -> open_type_to_binary(Val) end. enc_os_Extension258(Val, Id) -> if Id =:= 79 -> 'enc_Direct-Forwarding-Path-Availability'(Val); Id =:= 318 -> enc_DAPSResponseInfoList(Val); Id =:= 330 -> enc_RACSIndication(Val); Id =:= 335 -> 'enc_E-RABSecurityResultList'(Val); true -> open_type_to_binary(Val) end. enc_os_Extension262(Val, Id) -> if Id =:= 162 -> 'enc_MDT-Configuration'(Val); Id =:= 262 -> enc_UEAppLayerMeasConfig(Val); Id =:= 316 -> 'enc_MDT-ConfigurationNR'(Val); Id =:= 325 -> 'enc_URI-Address'(Val); true -> open_type_to_binary(Val) end. enc_os_Extension267(Val, Id) -> if Id =:= 259 -> enc_ExtendedBitRate(Val); Id =:= 260 -> enc_ExtendedBitRate(Val); true -> open_type_to_binary(Val) end. enc_os_Extension270(Val, Id) -> if Id =:= 276 -> enc_ServiceType(Val); true -> open_type_to_binary(Val) end. enc_os_Extension279(Val, Id) -> if Id =:= 288 -> enc_PSCellInformation(Val); Id =:= 339 -> 'enc_LTE-NTN-TAI-Information'(Val); true -> open_type_to_binary(Val) end. enc_os_Extension286(Val, Id) -> if Id =:= 153 -> enc_ENBX2ExtTLAs(Val); Id =:= 193 -> enc_ENBIndirectX2TransportLayerAddresses(Val); true -> open_type_to_binary(Val) end. enc_os_Extension86(Val, Id) -> if Id =:= 317 -> enc_DAPSRequestInfo(Val); Id =:= 328 -> enc_TransportLayerAddress(Val); Id =:= 332 -> enc_SecurityIndication(Val); Id =:= 340 -> enc_TransportLayerAddress(Val); true -> open_type_to_binary(Val) end. enc_os_Extension93(Val, Id) -> if Id =:= 273 -> 'enc_Packet-LossRate'(Val); Id =:= 274 -> 'enc_Packet-LossRate'(Val); true -> open_type_to_binary(Val) end. enc_os_Value100(Val, Id) -> if Id =:= 267 -> 'enc_E-RABUsageReportItem'(Val); true -> open_type_to_binary(Val) end. enc_os_Value14(Val, Id) -> if Id =:= 322 -> 'enc_Bearers-SubjectToEarlyStatusTransfer-Item'(Val); true -> open_type_to_binary(Val) end. enc_os_Value153(Val, Id) -> if Id =:= 197 -> enc_LoggedMBSFNMDT(Val); true -> exit({'Type not compatible with table constraint',{component,'Value'},{value,Val},{unique_name_and_value,'_'}}) end. enc_os_Value175(Val, Id) -> if Id =:= 214 -> enc_RecommendedCellItem(Val); true -> open_type_to_binary(Val) end. enc_os_Value180(Val, Id) -> if Id =:= 215 -> enc_RecommendedENBItem(Val); true -> open_type_to_binary(Val) end. enc_os_Value195(Val, Id) -> if Id =:= 265 -> enc_SecondaryRATDataUsageReportItem(Val); true -> open_type_to_binary(Val) end. enc_os_Value204(Val, Id) -> if Id =:= 206 -> enc_SONInformationReport(Val); true -> exit({'Type not compatible with table constraint',{component,'Value'},{value,Val},{unique_name_and_value,'_'}}) end. enc_os_Value51(Val, Id) -> if Id =:= 319 -> enc_DAPSResponseInfoItem(Val); true -> open_type_to_binary(Val) end. enc_os_Value8(Val, Id) -> if Id =:= 89 -> 'enc_Bearers-SubjectToStatusTransfer-Item'(Val); true -> open_type_to_binary(Val) end. enc_os_Value83(Val, Id) -> if Id =:= 78 -> 'enc_E-RABInformationListItem'(Val); true -> open_type_to_binary(Val) end. enc_os_Value89(Val, Id) -> if Id =:= 35 -> 'enc_E-RABItem'(Val); true -> open_type_to_binary(Val) end. enc_os_Value96(Val, Id) -> if Id =:= 334 -> 'enc_E-RABSecurityResultItem'(Val); true -> open_type_to_binary(Val) end. align(Bin) when is_binary(Bin) -> Bin; align(BitStr) when is_bitstring(BitStr) -> AlignBits = bit_size(BitStr) rem 8, <<_:AlignBits,Rest/binary>> = BitStr, Rest. complete(L0) -> L = complete(L0, []), case list_to_bitstring(L) of <<>> -> <<0>>; Bin -> Bin end. complete([], Bits, []) -> case Bits band 7 of 0 -> []; N -> [<<0:(8 - N)>>] end; complete([], Bits, [H | More]) -> complete(H, Bits, More); complete([align | T], Bits, More) -> case Bits band 7 of 0 -> complete(T, More); 1 -> [<<0:7>> | complete(T, More)]; 2 -> [<<0:6>> | complete(T, More)]; 3 -> [<<0:5>> | complete(T, More)]; 4 -> [<<0:4>> | complete(T, More)]; 5 -> [<<0:3>> | complete(T, More)]; 6 -> [<<0:2>> | complete(T, More)]; 7 -> [<<0:1>> | complete(T, More)] end; complete([[] | T], Bits, More) -> complete(T, Bits, More); complete([[_ | _] = H], Bits, More) -> complete(H, Bits, More); complete([[_ | _] = H | T], Bits, More) -> complete(H, Bits, [T | More]); complete([H | T], Bits, More) when is_integer(H); is_binary(H) -> [H | complete(T, Bits, More)]; complete([H | T], Bits, More) -> [H | complete(T, Bits + bit_size(H), More)]; complete(Bin, Bits, More) when is_binary(Bin) -> [Bin | complete([], Bits, More)]; complete(Bin, Bits, More) -> [Bin | complete([], Bits + bit_size(Bin), More)]. complete([], []) -> []; complete([], [H | More]) -> complete(H, More); complete([align | T], More) -> complete(T, More); complete([[] | T], More) -> complete(T, More); complete([[_ | _] = H], More) -> complete(H, More); complete([[_ | _] = H | T], More) -> complete(H, [T | More]); complete([H | T], More) when is_integer(H); is_binary(H) -> [H | complete(T, More)]; complete([H | T], More) -> [H | complete(T, bit_size(H), More)]; complete(Bin, More) when is_binary(Bin) -> [Bin | complete([], More)]; complete(Bin, More) -> [Bin | complete([], bit_size(Bin), More)]. decode_fragmented(SegSz0, Buf0, Unit) -> SegSz = SegSz0 * Unit * 16384, <> = Buf0, decode_fragmented_1(Buf, Unit, Res). decode_fragmented_1(<<0:1,N:7,Buf0/bitstring>>, Unit, Res) -> Sz = N * Unit, <> = Buf0, {<>, Buf}; decode_fragmented_1(<<1:1,0:1,N:14,Buf0/bitstring>>, Unit, Res) -> Sz = N * Unit, <> = Buf0, {<>, Buf}; decode_fragmented_1(<<1:1,1:1,SegSz0:6,Buf0/bitstring>>, Unit, Res0) -> SegSz = SegSz0 * Unit * 16384, <> = Buf0, Res = <>, decode_fragmented_1(Buf, Unit, Res). decode_length(Buffer) -> case align(Buffer) of <<0:1,Oct:7,Rest/binary>> -> {Oct, Rest}; <<2:2,Val:14,Rest/binary>> -> {Val, Rest}; <<3:2,_Val:14,_Rest/binary>> -> exit({error, {asn1, {decode_length, {nyi, above_16k}}}}) end. encode_fragmented(Bin, Unit) -> encode_fragmented_1(Bin, Unit, 4). encode_fragmented_1(Bin, Unit, N) -> SegSz = Unit * N * 16384, case Bin of <> -> [<<3:2,N:6>>, B | encode_fragmented_1(T, Unit, N)]; _ when N > 1 -> encode_fragmented_1(Bin, Unit, N - 1); _ -> case bit_size(Bin) div Unit of Len when Len < 128 -> [Len, Bin]; Len when Len < 16384 -> [<<2:2,Len:14>>, Bin] end end. encode_unconstrained_number(Val) when not is_integer(Val) -> exit({error, {asn1, {illegal_integer, Val}}}); encode_unconstrained_number(Val) when Val >= 0 -> if Val < 128 -> [1, Val]; Val < 256 -> [<<2,0>>, Val]; true -> case binary:encode_unsigned(Val) of <<0:1,_/bitstring>> = Bin -> case byte_size(Bin) of Sz when Sz < 128 -> [Sz, Bin]; Sz when Sz < 16384 -> [<<2:2,Sz:14>>, Bin] end; <<1:1,_/bitstring>> = Bin -> case byte_size(Bin) + 1 of Sz when Sz < 128 -> [Sz, 0, Bin]; Sz when Sz < 16384 -> [<<2:2,Sz:14,0:8>>, Bin] end end end; encode_unconstrained_number(Val) -> Oct = enint(Val, []), Len = length(Oct), if Len < 128 -> [Len | Oct]; Len < 16384 -> [<<2:2,Len:14>> | Oct] end. enint(-1, [B1 | T]) when B1 > 127 -> [B1 | T]; enint(N, Acc) -> enint(N bsr 8, [N band 255 | Acc]). open_type_to_binary({asn1_OPENTYPE, Bin}) when is_binary(Bin) -> Bin. skipextensions(Bytes0, Nr, ExtensionBitstr) when is_bitstring(ExtensionBitstr) -> Prev = Nr - 1, case ExtensionBitstr of <<_:Prev,1:1,_/bitstring>> -> {Len, Bytes1} = decode_length(Bytes0), <<_:Len/binary,Bytes2/bitstring>> = Bytes1, skipextensions(Bytes2, Nr + 1, ExtensionBitstr); <<_:Prev,0:1,_/bitstring>> -> skipextensions(Bytes0, Nr + 1, ExtensionBitstr); _ -> Bytes0 end.