X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?p=sim%2Fe2-interface.git;a=blobdiff_plain;f=e2sim%2Fprevious%2Fsrc%2FASN1%2Fgenerated%2FX2AP-PDU-Descriptions.hpp;fp=e2sim%2Fprevious%2Fsrc%2FASN1%2Fgenerated%2FX2AP-PDU-Descriptions.hpp;h=0000000000000000000000000000000000000000;hp=5fbef0465f227b1339b8c3e76c7123ec0ceb4859;hb=f86662b5b6481f27e18313a36355871f3a947193;hpb=a9f02a2b5886990fd81e64f7c218c5d4844f18a3 diff --git a/e2sim/previous/src/ASN1/generated/X2AP-PDU-Descriptions.hpp b/e2sim/previous/src/ASN1/generated/X2AP-PDU-Descriptions.hpp deleted file mode 100644 index 5fbef04..0000000 --- a/e2sim/previous/src/ASN1/generated/X2AP-PDU-Descriptions.hpp +++ /dev/null @@ -1,1537 +0,0 @@ -/***************************************************************************** -# Copyright 2019 AT&T Intellectual Property * -# * -# Licensed under the Apache License, Version 2.0 (the "License"); * -# you may not use this file except in compliance with the License. * -# You may obtain a copy of the License at * -# * -# http://www.apache.org/licenses/LICENSE-2.0 * -# * -# Unless required by applicable law or agreed to in writing, software * -# distributed under the License is distributed on an "AS IS" BASIS, * -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * -# See the License for the specific language governing permissions and * -# limitations under the License. * -# * -******************************************************************************/ - -#pragma once - -#include "asn/asn.hpp" -static_assert(ASN_API_VERSION_MAJOR == 5, "re-generate the ASN parser's code using 'make regen-asn' (do not use -j option)"); - -#include "X2AP-CommonDataTypes.hpp" -#include "X2AP-PDU-Contents.hpp" -#include "X2AP-Constants.hpp" - -/* -X2AP-ELEMENTARY-PROCEDURE ::= CLASS { - &InitiatingMessage , - &SuccessfulOutcome OPTIONAL, - &UnsuccessfulOutcome OPTIONAL, - &procedureCode ProcedureCode UNIQUE, - &criticality Criticality DEFAULT ignore -} -WITH SYNTAX { - INITIATING MESSAGE &InitiatingMessage - [SUCCESSFUL OUTCOME &SuccessfulOutcome] - [UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome] - PROCEDURE CODE &procedureCode - [CRITICALITY &criticality] -} -*/ - -struct X2AP_ELEMENTARY_PROCEDURE -{ - struct procedureCode_t : ProcedureCode - { - static constexpr const char* name() {return "procedureCode_t";} - using parent_t = ProcedureCode; - - }; - struct criticality_t : Criticality - { - static constexpr const char* name() {return "criticality_t";} - using parent_t = Criticality; - - }; - -}; -/* -X2AP-ELEMENTARY-PROCEDURES X2AP-ELEMENTARY-PROCEDURE ::= { - X2AP-ELEMENTARY-PROCEDURES-CLASS-1 | - X2AP-ELEMENTARY-PROCEDURES-CLASS-2 , - ... -} -*/ - -struct X2AP_ELEMENTARY_PROCEDURES -{ - struct InitiatingMessage_t : asn::typefield - { - ~InitiatingMessage_t() {clear();} - size_t get_index() const {return type;} - HandoverRequest& select_id_handoverPreparation() { return set(1); } - HandoverRequest const* get_id_handoverPreparation() const { return get(1); } - ResetRequest& select_id_reset() { return set(2); } - ResetRequest const* get_id_reset() const { return get(2); } - X2SetupRequest& select_id_x2Setup() { return set(3); } - X2SetupRequest const* get_id_x2Setup() const { return get(3); } - ResourceStatusRequest& select_id_resourceStatusReportingInitiation() { return set(4); } - ResourceStatusRequest const* get_id_resourceStatusReportingInitiation() const { return get(4); } - ENBConfigurationUpdate& select_id_eNBConfigurationUpdate() { return set(5); } - ENBConfigurationUpdate const* get_id_eNBConfigurationUpdate() const { return get(5); } - MobilityChangeRequest& select_id_mobilitySettingsChange() { return set(6); } - MobilityChangeRequest const* get_id_mobilitySettingsChange() const { return get(6); } - CellActivationRequest& select_id_cellActivation() { return set(7); } - CellActivationRequest const* get_id_cellActivation() const { return get(7); } - SeNBAdditionRequest& select_id_seNBAdditionPreparation() { return set(8); } - SeNBAdditionRequest const* get_id_seNBAdditionPreparation() const { return get(8); } - SeNBModificationRequest& select_id_meNBinitiatedSeNBModificationPreparation() { return set(9); } - SeNBModificationRequest const* get_id_meNBinitiatedSeNBModificationPreparation() const { return get(9); } - SeNBModificationRequired& select_id_seNBinitiatedSeNBModification() { return set(10); } - SeNBModificationRequired const* get_id_seNBinitiatedSeNBModification() const { return get(10); } - SeNBReleaseRequired& select_id_seNBinitiatedSeNBRelease() { return set(11); } - SeNBReleaseRequired const* get_id_seNBinitiatedSeNBRelease() const { return get(11); } - X2RemovalRequest& select_id_x2Removal() { return set(12); } - X2RemovalRequest const* get_id_x2Removal() const { return get(12); } - RetrieveUEContextRequest& select_id_retrieveUEContext() { return set(13); } - RetrieveUEContextRequest const* get_id_retrieveUEContext() const { return get(13); } - SgNBAdditionRequest& select_id_sgNBAdditionPreparation() { return set(14); } - SgNBAdditionRequest const* get_id_sgNBAdditionPreparation() const { return get(14); } - SgNBModificationRequest& select_id_meNBinitiatedSgNBModificationPreparation() { return set(15); } - SgNBModificationRequest const* get_id_meNBinitiatedSgNBModificationPreparation() const { return get(15); } - SgNBModificationRequired& select_id_sgNBinitiatedSgNBModification() { return set(16); } - SgNBModificationRequired const* get_id_sgNBinitiatedSgNBModification() const { return get(16); } - SgNBReleaseRequest& select_id_meNBinitiatedSgNBRelease() { return set(17); } - SgNBReleaseRequest const* get_id_meNBinitiatedSgNBRelease() const { return get(17); } - SgNBReleaseRequired& select_id_sgNBinitiatedSgNBRelease() { return set(18); } - SgNBReleaseRequired const* get_id_sgNBinitiatedSgNBRelease() const { return get(18); } - SgNBChangeRequired& select_id_sgNBChange() { return set(19); } - SgNBChangeRequired const* get_id_sgNBChange() const { return get(19); } - ENDCX2SetupRequest& select_id_endcX2Setup() { return set(20); } - ENDCX2SetupRequest const* get_id_endcX2Setup() const { return get(20); } - ENDCConfigurationUpdate& select_id_endcConfigurationUpdate() { return set(21); } - ENDCConfigurationUpdate const* get_id_endcConfigurationUpdate() const { return get(21); } - ENDCCellActivationRequest& select_id_endcCellActivation() { return set(22); } - ENDCCellActivationRequest const* get_id_endcCellActivation() const { return get(22); } - ENDCPartialResetRequired& select_id_endcPartialReset() { return set(23); } - ENDCPartialResetRequired const* get_id_endcPartialReset() const { return get(23); } - EUTRANRCellResourceCoordinationRequest& select_id_eUTRANRCellResourceCoordination() { return set(24); } - EUTRANRCellResourceCoordinationRequest const* get_id_eUTRANRCellResourceCoordination() const { return get(24); } - ENDCX2RemovalRequest& select_id_endcX2Removal() { return set(25); } - ENDCX2RemovalRequest const* get_id_endcX2Removal() const { return get(25); } - SNStatusTransfer& select_id_snStatusTransfer() { return set(26); } - SNStatusTransfer const* get_id_snStatusTransfer() const { return get(26); } - UEContextRelease& select_id_uEContextRelease() { return set(27); } - UEContextRelease const* get_id_uEContextRelease() const { return get(27); } - HandoverCancel& select_id_handoverCancel() { return set(28); } - HandoverCancel const* get_id_handoverCancel() const { return get(28); } - ErrorIndication& select_id_errorIndication() { return set(29); } - ErrorIndication const* get_id_errorIndication() const { return get(29); } - ResourceStatusUpdate& select_id_resourceStatusReporting() { return set(30); } - ResourceStatusUpdate const* get_id_resourceStatusReporting() const { return get(30); } - LoadInformation& select_id_loadIndication() { return set(31); } - LoadInformation const* get_id_loadIndication() const { return get(31); } - PrivateMessage& select_id_privateMessage() { return set(32); } - PrivateMessage const* get_id_privateMessage() const { return get(32); } - RLFIndication& select_id_rLFIndication() { return set(33); } - RLFIndication const* get_id_rLFIndication() const { return get(33); } - HandoverReport& select_id_handoverReport() { return set(34); } - HandoverReport const* get_id_handoverReport() const { return get(34); } - X2Release& select_id_x2Release() { return set(35); } - X2Release const* get_id_x2Release() const { return get(35); } - X2APMessageTransfer& select_id_x2APMessageTransfer() { return set(36); } - X2APMessageTransfer const* get_id_x2APMessageTransfer() const { return get(36); } - SeNBReconfigurationComplete& select_id_seNBReconfigurationCompletion() { return set(37); } - SeNBReconfigurationComplete const* get_id_seNBReconfigurationCompletion() const { return get(37); } - SeNBReleaseRequest& select_id_meNBinitiatedSeNBRelease() { return set(38); } - SeNBReleaseRequest const* get_id_meNBinitiatedSeNBRelease() const { return get(38); } - SeNBCounterCheckRequest& select_id_seNBCounterCheck() { return set(39); } - SeNBCounterCheckRequest const* get_id_seNBCounterCheck() const { return get(39); } - SgNBReconfigurationComplete& select_id_sgNBReconfigurationCompletion() { return set(40); } - SgNBReconfigurationComplete const* get_id_sgNBReconfigurationCompletion() const { return get(40); } - SgNBCounterCheckRequest& select_id_sgNBCounterCheck() { return set(41); } - SgNBCounterCheckRequest const* get_id_sgNBCounterCheck() const { return get(41); } - RRCTransfer& select_id_rRCTransfer() { return set(42); } - RRCTransfer const* get_id_rRCTransfer() const { return get(42); } - SecondaryRATDataUsageReport& select_id_secondaryRATDataUsageReport() { return set(43); } - SecondaryRATDataUsageReport const* get_id_secondaryRATDataUsageReport() const { return get(43); } - SgNBActivityNotification& select_id_SgNBActivityNotification() { return set(44); } - SgNBActivityNotification const* get_id_SgNBActivityNotification() const { return get(44); } - DataForwardingAddressIndication& select_id_dataForwardingAddressIndication() { return set(45); } - DataForwardingAddressIndication const* get_id_dataForwardingAddressIndication() const { return get(45); } - bool is_unknown() const { return type == 46; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: var.destroy(); break; - case 4: var.destroy(); break; - case 5: var.destroy(); break; - case 6: var.destroy(); break; - case 7: var.destroy(); break; - case 8: var.destroy(); break; - case 9: var.destroy(); break; - case 10: var.destroy(); break; - case 11: var.destroy(); break; - case 12: var.destroy(); break; - case 13: var.destroy(); break; - case 14: var.destroy(); break; - case 15: var.destroy(); break; - case 16: var.destroy(); break; - case 17: var.destroy(); break; - case 18: var.destroy(); break; - case 19: var.destroy(); break; - case 20: var.destroy(); break; - case 21: var.destroy(); break; - case 22: var.destroy(); break; - case 23: var.destroy(); break; - case 24: var.destroy(); break; - case 25: var.destroy(); break; - case 26: var.destroy(); break; - case 27: var.destroy(); break; - case 28: var.destroy(); break; - case 29: var.destroy(); break; - case 30: var.destroy(); break; - case 31: var.destroy(); break; - case 32: var.destroy(); break; - case 33: var.destroy(); break; - case 34: var.destroy(); break; - case 35: var.destroy(); break; - case 36: var.destroy(); break; - case 37: var.destroy(); break; - case 38: var.destroy(); break; - case 39: var.destroy(); break; - case 40: var.destroy(); break; - case 41: var.destroy(); break; - case 42: var.destroy(); break; - case 43: var.destroy(); break; - case 44: var.destroy(); break; - case 45: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - v.template operator()(3); - v.template operator()(4); - v.template operator()(5); - v.template operator()(6); - v.template operator()(7); - v.template operator()(8); - v.template operator()(9); - v.template operator()(10); - v.template operator()(11); - v.template operator()(12); - v.template operator()(13); - v.template operator()(14); - v.template operator()(15); - v.template operator()(16); - v.template operator()(17); - v.template operator()(18); - v.template operator()(19); - v.template operator()(20); - v.template operator()(21); - v.template operator()(22); - v.template operator()(23); - v.template operator()(24); - v.template operator()(25); - v.template operator()(26); - v.template operator()(27); - v.template operator()(28); - v.template operator()(29); - v.template operator()(30); - v.template operator()(31); - v.template operator()(32); - v.template operator()(33); - v.template operator()(34); - v.template operator()(35); - v.template operator()(36); - v.template operator()(37); - v.template operator()(38); - v.template operator()(39); - v.template operator()(40); - v.template operator()(41); - v.template operator()(42); - v.template operator()(43); - v.template operator()(44); - v.template operator()(45); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_handoverPreparation()); return true; - case 2: v(select_id_reset()); return true; - case 3: v(select_id_x2Setup()); return true; - case 4: v(select_id_resourceStatusReportingInitiation()); return true; - case 5: v(select_id_eNBConfigurationUpdate()); return true; - case 6: v(select_id_mobilitySettingsChange()); return true; - case 7: v(select_id_cellActivation()); return true; - case 8: v(select_id_seNBAdditionPreparation()); return true; - case 9: v(select_id_meNBinitiatedSeNBModificationPreparation()); return true; - case 10: v(select_id_seNBinitiatedSeNBModification()); return true; - case 11: v(select_id_seNBinitiatedSeNBRelease()); return true; - case 12: v(select_id_x2Removal()); return true; - case 13: v(select_id_retrieveUEContext()); return true; - case 14: v(select_id_sgNBAdditionPreparation()); return true; - case 15: v(select_id_meNBinitiatedSgNBModificationPreparation()); return true; - case 16: v(select_id_sgNBinitiatedSgNBModification()); return true; - case 17: v(select_id_meNBinitiatedSgNBRelease()); return true; - case 18: v(select_id_sgNBinitiatedSgNBRelease()); return true; - case 19: v(select_id_sgNBChange()); return true; - case 20: v(select_id_endcX2Setup()); return true; - case 21: v(select_id_endcConfigurationUpdate()); return true; - case 22: v(select_id_endcCellActivation()); return true; - case 23: v(select_id_endcPartialReset()); return true; - case 24: v(select_id_eUTRANRCellResourceCoordination()); return true; - case 25: v(select_id_endcX2Removal()); return true; - case 26: v(select_id_snStatusTransfer()); return true; - case 27: v(select_id_uEContextRelease()); return true; - case 28: v(select_id_handoverCancel()); return true; - case 29: v(select_id_errorIndication()); return true; - case 30: v(select_id_resourceStatusReporting()); return true; - case 31: v(select_id_loadIndication()); return true; - case 32: v(select_id_privateMessage()); return true; - case 33: v(select_id_rLFIndication()); return true; - case 34: v(select_id_handoverReport()); return true; - case 35: v(select_id_x2Release()); return true; - case 36: v(select_id_x2APMessageTransfer()); return true; - case 37: v(select_id_seNBReconfigurationCompletion()); return true; - case 38: v(select_id_meNBinitiatedSeNBRelease()); return true; - case 39: v(select_id_seNBCounterCheck()); return true; - case 40: v(select_id_sgNBReconfigurationCompletion()); return true; - case 41: v(select_id_sgNBCounterCheck()); return true; - case 42: v(select_id_rRCTransfer()); return true; - case 43: v(select_id_secondaryRATDataUsageReport()); return true; - case 44: v(select_id_SgNBActivityNotification()); return true; - case 45: v(select_id_dataForwardingAddressIndication()); return true; - case 46: if(type != 46) {clear(); asn::base::set();} type = 46; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - switch(type) - { - case 1: v(var.as()); return true; - case 2: v(var.as()); return true; - case 3: v(var.as()); return true; - case 4: v(var.as()); return true; - case 5: v(var.as()); return true; - case 6: v(var.as()); return true; - case 7: v(var.as()); return true; - case 8: v(var.as()); return true; - case 9: v(var.as()); return true; - case 10: v(var.as()); return true; - case 11: v(var.as()); return true; - case 12: v(var.as()); return true; - case 13: v(var.as()); return true; - case 14: v(var.as()); return true; - case 15: v(var.as()); return true; - case 16: v(var.as()); return true; - case 17: v(var.as()); return true; - case 18: v(var.as()); return true; - case 19: v(var.as()); return true; - case 20: v(var.as()); return true; - case 21: v(var.as()); return true; - case 22: v(var.as()); return true; - case 23: v(var.as()); return true; - case 24: v(var.as()); return true; - case 25: v(var.as()); return true; - case 26: v(var.as()); return true; - case 27: v(var.as()); return true; - case 28: v(var.as()); return true; - case 29: v(var.as()); return true; - case 30: v(var.as()); return true; - case 31: v(var.as()); return true; - case 32: v(var.as()); return true; - case 33: v(var.as()); return true; - case 34: v(var.as()); return true; - case 35: v(var.as()); return true; - case 36: v(var.as()); return true; - case 37: v(var.as()); return true; - case 38: v(var.as()); return true; - case 39: v(var.as()); return true; - case 40: v(var.as()); return true; - case 41: v(var.as()); return true; - case 42: v(var.as()); return true; - case 43: v(var.as()); return true; - case 44: v(var.as()); return true; - case 45: v(var.as()); return true; - } - return false; - - } - private: - template T& set(size_t index) {if(type != index) {clear(); type = index; return var.build();} return var.as();} - template T const* get(size_t index) const {if(type == index) {return &var.as();} return nullptr;} - union union_type - { - char dummy1[sizeof(CellActivationRequest)]; - char dummy2[sizeof(DataForwardingAddressIndication)]; - char dummy3[sizeof(ENBConfigurationUpdate)]; - char dummy4[sizeof(ENDCCellActivationRequest)]; - char dummy5[sizeof(ENDCConfigurationUpdate)]; - char dummy6[sizeof(ENDCPartialResetRequired)]; - char dummy7[sizeof(ENDCX2RemovalRequest)]; - char dummy8[sizeof(ENDCX2SetupRequest)]; - char dummy9[sizeof(EUTRANRCellResourceCoordinationRequest)]; - char dummy10[sizeof(ErrorIndication)]; - char dummy11[sizeof(HandoverCancel)]; - char dummy12[sizeof(HandoverReport)]; - char dummy13[sizeof(HandoverRequest)]; - char dummy14[sizeof(LoadInformation)]; - char dummy15[sizeof(MobilityChangeRequest)]; - char dummy16[sizeof(PrivateMessage)]; - char dummy17[sizeof(RLFIndication)]; - char dummy18[sizeof(RRCTransfer)]; - char dummy19[sizeof(ResetRequest)]; - char dummy20[sizeof(ResourceStatusRequest)]; - char dummy21[sizeof(ResourceStatusUpdate)]; - char dummy22[sizeof(RetrieveUEContextRequest)]; - char dummy23[sizeof(SNStatusTransfer)]; - char dummy24[sizeof(SeNBAdditionRequest)]; - char dummy25[sizeof(SeNBCounterCheckRequest)]; - char dummy26[sizeof(SeNBModificationRequest)]; - char dummy27[sizeof(SeNBModificationRequired)]; - char dummy28[sizeof(SeNBReconfigurationComplete)]; - char dummy29[sizeof(SeNBReleaseRequest)]; - char dummy30[sizeof(SeNBReleaseRequired)]; - char dummy31[sizeof(SecondaryRATDataUsageReport)]; - char dummy32[sizeof(SgNBActivityNotification)]; - char dummy33[sizeof(SgNBAdditionRequest)]; - char dummy34[sizeof(SgNBChangeRequired)]; - char dummy35[sizeof(SgNBCounterCheckRequest)]; - char dummy36[sizeof(SgNBModificationRequest)]; - char dummy37[sizeof(SgNBModificationRequired)]; - char dummy38[sizeof(SgNBReconfigurationComplete)]; - char dummy39[sizeof(SgNBReleaseRequest)]; - char dummy40[sizeof(SgNBReleaseRequired)]; - char dummy41[sizeof(UEContextRelease)]; - char dummy42[sizeof(X2APMessageTransfer)]; - char dummy43[sizeof(X2Release)]; - char dummy44[sizeof(X2RemovalRequest)]; - char dummy45[sizeof(X2SetupRequest)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct SuccessfulOutcome_t : asn::typefield - { - ~SuccessfulOutcome_t() {clear();} - size_t get_index() const {return type;} - HandoverRequestAcknowledge& select_id_handoverPreparation() { return set(1); } - HandoverRequestAcknowledge const* get_id_handoverPreparation() const { return get(1); } - ResetResponse& select_id_reset() { return set(2); } - ResetResponse const* get_id_reset() const { return get(2); } - X2SetupResponse& select_id_x2Setup() { return set(3); } - X2SetupResponse const* get_id_x2Setup() const { return get(3); } - ResourceStatusResponse& select_id_resourceStatusReportingInitiation() { return set(4); } - ResourceStatusResponse const* get_id_resourceStatusReportingInitiation() const { return get(4); } - ENBConfigurationUpdateAcknowledge& select_id_eNBConfigurationUpdate() { return set(5); } - ENBConfigurationUpdateAcknowledge const* get_id_eNBConfigurationUpdate() const { return get(5); } - MobilityChangeAcknowledge& select_id_mobilitySettingsChange() { return set(6); } - MobilityChangeAcknowledge const* get_id_mobilitySettingsChange() const { return get(6); } - CellActivationResponse& select_id_cellActivation() { return set(7); } - CellActivationResponse const* get_id_cellActivation() const { return get(7); } - SeNBAdditionRequestAcknowledge& select_id_seNBAdditionPreparation() { return set(8); } - SeNBAdditionRequestAcknowledge const* get_id_seNBAdditionPreparation() const { return get(8); } - SeNBModificationRequestAcknowledge& select_id_meNBinitiatedSeNBModificationPreparation() { return set(9); } - SeNBModificationRequestAcknowledge const* get_id_meNBinitiatedSeNBModificationPreparation() const { return get(9); } - SeNBModificationConfirm& select_id_seNBinitiatedSeNBModification() { return set(10); } - SeNBModificationConfirm const* get_id_seNBinitiatedSeNBModification() const { return get(10); } - SeNBReleaseConfirm& select_id_seNBinitiatedSeNBRelease() { return set(11); } - SeNBReleaseConfirm const* get_id_seNBinitiatedSeNBRelease() const { return get(11); } - X2RemovalResponse& select_id_x2Removal() { return set(12); } - X2RemovalResponse const* get_id_x2Removal() const { return get(12); } - RetrieveUEContextResponse& select_id_retrieveUEContext() { return set(13); } - RetrieveUEContextResponse const* get_id_retrieveUEContext() const { return get(13); } - SgNBAdditionRequestAcknowledge& select_id_sgNBAdditionPreparation() { return set(14); } - SgNBAdditionRequestAcknowledge const* get_id_sgNBAdditionPreparation() const { return get(14); } - SgNBModificationRequestAcknowledge& select_id_meNBinitiatedSgNBModificationPreparation() { return set(15); } - SgNBModificationRequestAcknowledge const* get_id_meNBinitiatedSgNBModificationPreparation() const { return get(15); } - SgNBModificationConfirm& select_id_sgNBinitiatedSgNBModification() { return set(16); } - SgNBModificationConfirm const* get_id_sgNBinitiatedSgNBModification() const { return get(16); } - SgNBReleaseRequestAcknowledge& select_id_meNBinitiatedSgNBRelease() { return set(17); } - SgNBReleaseRequestAcknowledge const* get_id_meNBinitiatedSgNBRelease() const { return get(17); } - SgNBReleaseConfirm& select_id_sgNBinitiatedSgNBRelease() { return set(18); } - SgNBReleaseConfirm const* get_id_sgNBinitiatedSgNBRelease() const { return get(18); } - SgNBChangeConfirm& select_id_sgNBChange() { return set(19); } - SgNBChangeConfirm const* get_id_sgNBChange() const { return get(19); } - ENDCX2SetupResponse& select_id_endcX2Setup() { return set(20); } - ENDCX2SetupResponse const* get_id_endcX2Setup() const { return get(20); } - ENDCConfigurationUpdateAcknowledge& select_id_endcConfigurationUpdate() { return set(21); } - ENDCConfigurationUpdateAcknowledge const* get_id_endcConfigurationUpdate() const { return get(21); } - ENDCCellActivationResponse& select_id_endcCellActivation() { return set(22); } - ENDCCellActivationResponse const* get_id_endcCellActivation() const { return get(22); } - ENDCPartialResetConfirm& select_id_endcPartialReset() { return set(23); } - ENDCPartialResetConfirm const* get_id_endcPartialReset() const { return get(23); } - EUTRANRCellResourceCoordinationResponse& select_id_eUTRANRCellResourceCoordination() { return set(24); } - EUTRANRCellResourceCoordinationResponse const* get_id_eUTRANRCellResourceCoordination() const { return get(24); } - ENDCX2RemovalResponse& select_id_endcX2Removal() { return set(25); } - ENDCX2RemovalResponse const* get_id_endcX2Removal() const { return get(25); } - bool is_unknown() const { return type == 46; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: var.destroy(); break; - case 4: var.destroy(); break; - case 5: var.destroy(); break; - case 6: var.destroy(); break; - case 7: var.destroy(); break; - case 8: var.destroy(); break; - case 9: var.destroy(); break; - case 10: var.destroy(); break; - case 11: var.destroy(); break; - case 12: var.destroy(); break; - case 13: var.destroy(); break; - case 14: var.destroy(); break; - case 15: var.destroy(); break; - case 16: var.destroy(); break; - case 17: var.destroy(); break; - case 18: var.destroy(); break; - case 19: var.destroy(); break; - case 20: var.destroy(); break; - case 21: var.destroy(); break; - case 22: var.destroy(); break; - case 23: var.destroy(); break; - case 24: var.destroy(); break; - case 25: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - v.template operator()(3); - v.template operator()(4); - v.template operator()(5); - v.template operator()(6); - v.template operator()(7); - v.template operator()(8); - v.template operator()(9); - v.template operator()(10); - v.template operator()(11); - v.template operator()(12); - v.template operator()(13); - v.template operator()(14); - v.template operator()(15); - v.template operator()(16); - v.template operator()(17); - v.template operator()(18); - v.template operator()(19); - v.template operator()(20); - v.template operator()(21); - v.template operator()(22); - v.template operator()(23); - v.template operator()(24); - v.template operator()(25); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_handoverPreparation()); return true; - case 2: v(select_id_reset()); return true; - case 3: v(select_id_x2Setup()); return true; - case 4: v(select_id_resourceStatusReportingInitiation()); return true; - case 5: v(select_id_eNBConfigurationUpdate()); return true; - case 6: v(select_id_mobilitySettingsChange()); return true; - case 7: v(select_id_cellActivation()); return true; - case 8: v(select_id_seNBAdditionPreparation()); return true; - case 9: v(select_id_meNBinitiatedSeNBModificationPreparation()); return true; - case 10: v(select_id_seNBinitiatedSeNBModification()); return true; - case 11: v(select_id_seNBinitiatedSeNBRelease()); return true; - case 12: v(select_id_x2Removal()); return true; - case 13: v(select_id_retrieveUEContext()); return true; - case 14: v(select_id_sgNBAdditionPreparation()); return true; - case 15: v(select_id_meNBinitiatedSgNBModificationPreparation()); return true; - case 16: v(select_id_sgNBinitiatedSgNBModification()); return true; - case 17: v(select_id_meNBinitiatedSgNBRelease()); return true; - case 18: v(select_id_sgNBinitiatedSgNBRelease()); return true; - case 19: v(select_id_sgNBChange()); return true; - case 20: v(select_id_endcX2Setup()); return true; - case 21: v(select_id_endcConfigurationUpdate()); return true; - case 22: v(select_id_endcCellActivation()); return true; - case 23: v(select_id_endcPartialReset()); return true; - case 24: v(select_id_eUTRANRCellResourceCoordination()); return true; - case 25: v(select_id_endcX2Removal()); return true; - case 46: if(type != 46) {clear(); asn::base::set();} type = 46; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - switch(type) - { - case 1: v(var.as()); return true; - case 2: v(var.as()); return true; - case 3: v(var.as()); return true; - case 4: v(var.as()); return true; - case 5: v(var.as()); return true; - case 6: v(var.as()); return true; - case 7: v(var.as()); return true; - case 8: v(var.as()); return true; - case 9: v(var.as()); return true; - case 10: v(var.as()); return true; - case 11: v(var.as()); return true; - case 12: v(var.as()); return true; - case 13: v(var.as()); return true; - case 14: v(var.as()); return true; - case 15: v(var.as()); return true; - case 16: v(var.as()); return true; - case 17: v(var.as()); return true; - case 18: v(var.as()); return true; - case 19: v(var.as()); return true; - case 20: v(var.as()); return true; - case 21: v(var.as()); return true; - case 22: v(var.as()); return true; - case 23: v(var.as()); return true; - case 24: v(var.as()); return true; - case 25: v(var.as()); return true; - } - return false; - - } - private: - template T& set(size_t index) {if(type != index) {clear(); type = index; return var.build();} return var.as();} - template T const* get(size_t index) const {if(type == index) {return &var.as();} return nullptr;} - union union_type - { - char dummy1[sizeof(CellActivationResponse)]; - char dummy2[sizeof(ENBConfigurationUpdateAcknowledge)]; - char dummy3[sizeof(ENDCCellActivationResponse)]; - char dummy4[sizeof(ENDCConfigurationUpdateAcknowledge)]; - char dummy5[sizeof(ENDCPartialResetConfirm)]; - char dummy6[sizeof(ENDCX2RemovalResponse)]; - char dummy7[sizeof(ENDCX2SetupResponse)]; - char dummy8[sizeof(EUTRANRCellResourceCoordinationResponse)]; - char dummy9[sizeof(HandoverRequestAcknowledge)]; - char dummy10[sizeof(MobilityChangeAcknowledge)]; - char dummy11[sizeof(ResetResponse)]; - char dummy12[sizeof(ResourceStatusResponse)]; - char dummy13[sizeof(RetrieveUEContextResponse)]; - char dummy14[sizeof(SeNBAdditionRequestAcknowledge)]; - char dummy15[sizeof(SeNBModificationConfirm)]; - char dummy16[sizeof(SeNBModificationRequestAcknowledge)]; - char dummy17[sizeof(SeNBReleaseConfirm)]; - char dummy18[sizeof(SgNBAdditionRequestAcknowledge)]; - char dummy19[sizeof(SgNBChangeConfirm)]; - char dummy20[sizeof(SgNBModificationConfirm)]; - char dummy21[sizeof(SgNBModificationRequestAcknowledge)]; - char dummy22[sizeof(SgNBReleaseConfirm)]; - char dummy23[sizeof(SgNBReleaseRequestAcknowledge)]; - char dummy24[sizeof(X2RemovalResponse)]; - char dummy25[sizeof(X2SetupResponse)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct UnsuccessfulOutcome_t : asn::typefield - { - ~UnsuccessfulOutcome_t() {clear();} - size_t get_index() const {return type;} - HandoverPreparationFailure& select_id_handoverPreparation() { return set(1); } - HandoverPreparationFailure const* get_id_handoverPreparation() const { return get(1); } - X2SetupFailure& select_id_x2Setup() { return set(3); } - X2SetupFailure const* get_id_x2Setup() const { return get(3); } - ResourceStatusFailure& select_id_resourceStatusReportingInitiation() { return set(4); } - ResourceStatusFailure const* get_id_resourceStatusReportingInitiation() const { return get(4); } - ENBConfigurationUpdateFailure& select_id_eNBConfigurationUpdate() { return set(5); } - ENBConfigurationUpdateFailure const* get_id_eNBConfigurationUpdate() const { return get(5); } - MobilityChangeFailure& select_id_mobilitySettingsChange() { return set(6); } - MobilityChangeFailure const* get_id_mobilitySettingsChange() const { return get(6); } - CellActivationFailure& select_id_cellActivation() { return set(7); } - CellActivationFailure const* get_id_cellActivation() const { return get(7); } - SeNBAdditionRequestReject& select_id_seNBAdditionPreparation() { return set(8); } - SeNBAdditionRequestReject const* get_id_seNBAdditionPreparation() const { return get(8); } - SeNBModificationRequestReject& select_id_meNBinitiatedSeNBModificationPreparation() { return set(9); } - SeNBModificationRequestReject const* get_id_meNBinitiatedSeNBModificationPreparation() const { return get(9); } - SeNBModificationRefuse& select_id_seNBinitiatedSeNBModification() { return set(10); } - SeNBModificationRefuse const* get_id_seNBinitiatedSeNBModification() const { return get(10); } - X2RemovalFailure& select_id_x2Removal() { return set(12); } - X2RemovalFailure const* get_id_x2Removal() const { return get(12); } - RetrieveUEContextFailure& select_id_retrieveUEContext() { return set(13); } - RetrieveUEContextFailure const* get_id_retrieveUEContext() const { return get(13); } - SgNBAdditionRequestReject& select_id_sgNBAdditionPreparation() { return set(14); } - SgNBAdditionRequestReject const* get_id_sgNBAdditionPreparation() const { return get(14); } - SgNBModificationRequestReject& select_id_meNBinitiatedSgNBModificationPreparation() { return set(15); } - SgNBModificationRequestReject const* get_id_meNBinitiatedSgNBModificationPreparation() const { return get(15); } - SgNBModificationRefuse& select_id_sgNBinitiatedSgNBModification() { return set(16); } - SgNBModificationRefuse const* get_id_sgNBinitiatedSgNBModification() const { return get(16); } - SgNBReleaseRequestReject& select_id_meNBinitiatedSgNBRelease() { return set(17); } - SgNBReleaseRequestReject const* get_id_meNBinitiatedSgNBRelease() const { return get(17); } - SgNBChangeRefuse& select_id_sgNBChange() { return set(19); } - SgNBChangeRefuse const* get_id_sgNBChange() const { return get(19); } - ENDCX2SetupFailure& select_id_endcX2Setup() { return set(20); } - ENDCX2SetupFailure const* get_id_endcX2Setup() const { return get(20); } - ENDCConfigurationUpdateFailure& select_id_endcConfigurationUpdate() { return set(21); } - ENDCConfigurationUpdateFailure const* get_id_endcConfigurationUpdate() const { return get(21); } - ENDCCellActivationFailure& select_id_endcCellActivation() { return set(22); } - ENDCCellActivationFailure const* get_id_endcCellActivation() const { return get(22); } - ENDCX2RemovalFailure& select_id_endcX2Removal() { return set(25); } - ENDCX2RemovalFailure const* get_id_endcX2Removal() const { return get(25); } - bool is_unknown() const { return type == 46; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 3: var.destroy(); break; - case 4: var.destroy(); break; - case 5: var.destroy(); break; - case 6: var.destroy(); break; - case 7: var.destroy(); break; - case 8: var.destroy(); break; - case 9: var.destroy(); break; - case 10: var.destroy(); break; - case 12: var.destroy(); break; - case 13: var.destroy(); break; - case 14: var.destroy(); break; - case 15: var.destroy(); break; - case 16: var.destroy(); break; - case 17: var.destroy(); break; - case 19: var.destroy(); break; - case 20: var.destroy(); break; - case 21: var.destroy(); break; - case 22: var.destroy(); break; - case 25: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(3); - v.template operator()(4); - v.template operator()(5); - v.template operator()(6); - v.template operator()(7); - v.template operator()(8); - v.template operator()(9); - v.template operator()(10); - v.template operator()(12); - v.template operator()(13); - v.template operator()(14); - v.template operator()(15); - v.template operator()(16); - v.template operator()(17); - v.template operator()(19); - v.template operator()(20); - v.template operator()(21); - v.template operator()(22); - v.template operator()(25); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_handoverPreparation()); return true; - case 3: v(select_id_x2Setup()); return true; - case 4: v(select_id_resourceStatusReportingInitiation()); return true; - case 5: v(select_id_eNBConfigurationUpdate()); return true; - case 6: v(select_id_mobilitySettingsChange()); return true; - case 7: v(select_id_cellActivation()); return true; - case 8: v(select_id_seNBAdditionPreparation()); return true; - case 9: v(select_id_meNBinitiatedSeNBModificationPreparation()); return true; - case 10: v(select_id_seNBinitiatedSeNBModification()); return true; - case 12: v(select_id_x2Removal()); return true; - case 13: v(select_id_retrieveUEContext()); return true; - case 14: v(select_id_sgNBAdditionPreparation()); return true; - case 15: v(select_id_meNBinitiatedSgNBModificationPreparation()); return true; - case 16: v(select_id_sgNBinitiatedSgNBModification()); return true; - case 17: v(select_id_meNBinitiatedSgNBRelease()); return true; - case 19: v(select_id_sgNBChange()); return true; - case 20: v(select_id_endcX2Setup()); return true; - case 21: v(select_id_endcConfigurationUpdate()); return true; - case 22: v(select_id_endcCellActivation()); return true; - case 25: v(select_id_endcX2Removal()); return true; - case 46: if(type != 46) {clear(); asn::base::set();} type = 46; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - switch(type) - { - case 1: v(var.as()); return true; - case 3: v(var.as()); return true; - case 4: v(var.as()); return true; - case 5: v(var.as()); return true; - case 6: v(var.as()); return true; - case 7: v(var.as()); return true; - case 8: v(var.as()); return true; - case 9: v(var.as()); return true; - case 10: v(var.as()); return true; - case 12: v(var.as()); return true; - case 13: v(var.as()); return true; - case 14: v(var.as()); return true; - case 15: v(var.as()); return true; - case 16: v(var.as()); return true; - case 17: v(var.as()); return true; - case 19: v(var.as()); return true; - case 20: v(var.as()); return true; - case 21: v(var.as()); return true; - case 22: v(var.as()); return true; - case 25: v(var.as()); return true; - } - return false; - - } - private: - template T& set(size_t index) {if(type != index) {clear(); type = index; return var.build();} return var.as();} - template T const* get(size_t index) const {if(type == index) {return &var.as();} return nullptr;} - union union_type - { - char dummy1[sizeof(CellActivationFailure)]; - char dummy2[sizeof(ENBConfigurationUpdateFailure)]; - char dummy3[sizeof(ENDCCellActivationFailure)]; - char dummy4[sizeof(ENDCConfigurationUpdateFailure)]; - char dummy5[sizeof(ENDCX2RemovalFailure)]; - char dummy6[sizeof(ENDCX2SetupFailure)]; - char dummy7[sizeof(HandoverPreparationFailure)]; - char dummy8[sizeof(MobilityChangeFailure)]; - char dummy9[sizeof(ResourceStatusFailure)]; - char dummy10[sizeof(RetrieveUEContextFailure)]; - char dummy11[sizeof(SeNBAdditionRequestReject)]; - char dummy12[sizeof(SeNBModificationRefuse)]; - char dummy13[sizeof(SeNBModificationRequestReject)]; - char dummy14[sizeof(SgNBAdditionRequestReject)]; - char dummy15[sizeof(SgNBChangeRefuse)]; - char dummy16[sizeof(SgNBModificationRefuse)]; - char dummy17[sizeof(SgNBModificationRequestReject)]; - char dummy18[sizeof(SgNBReleaseRequestReject)]; - char dummy19[sizeof(X2RemovalFailure)]; - char dummy20[sizeof(X2SetupFailure)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct procedureCode_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 46; } - void clear() {type = 0;} - void select_id_handoverPreparation() { set(id_handoverPreparation); type=1;} - void select_id_reset() { set(id_reset); type=2;} - void select_id_x2Setup() { set(id_x2Setup); type=3;} - void select_id_resourceStatusReportingInitiation() { set(id_resourceStatusReportingInitiation); type=4;} - void select_id_eNBConfigurationUpdate() { set(id_eNBConfigurationUpdate); type=5;} - void select_id_mobilitySettingsChange() { set(id_mobilitySettingsChange); type=6;} - void select_id_cellActivation() { set(id_cellActivation); type=7;} - void select_id_seNBAdditionPreparation() { set(id_seNBAdditionPreparation); type=8;} - void select_id_meNBinitiatedSeNBModificationPreparation() { set(id_meNBinitiatedSeNBModificationPreparation); type=9;} - void select_id_seNBinitiatedSeNBModification() { set(id_seNBinitiatedSeNBModification); type=10;} - void select_id_seNBinitiatedSeNBRelease() { set(id_seNBinitiatedSeNBRelease); type=11;} - void select_id_x2Removal() { set(id_x2Removal); type=12;} - void select_id_retrieveUEContext() { set(id_retrieveUEContext); type=13;} - void select_id_sgNBAdditionPreparation() { set(id_sgNBAdditionPreparation); type=14;} - void select_id_meNBinitiatedSgNBModificationPreparation() { set(id_meNBinitiatedSgNBModificationPreparation); type=15;} - void select_id_sgNBinitiatedSgNBModification() { set(id_sgNBinitiatedSgNBModification); type=16;} - void select_id_meNBinitiatedSgNBRelease() { set(id_meNBinitiatedSgNBRelease); type=17;} - void select_id_sgNBinitiatedSgNBRelease() { set(id_sgNBinitiatedSgNBRelease); type=18;} - void select_id_sgNBChange() { set(id_sgNBChange); type=19;} - void select_id_endcX2Setup() { set(id_endcX2Setup); type=20;} - void select_id_endcConfigurationUpdate() { set(id_endcConfigurationUpdate); type=21;} - void select_id_endcCellActivation() { set(id_endcCellActivation); type=22;} - void select_id_endcPartialReset() { set(id_endcPartialReset); type=23;} - void select_id_eUTRANRCellResourceCoordination() { set(id_eUTRANRCellResourceCoordination); type=24;} - void select_id_endcX2Removal() { set(id_endcX2Removal); type=25;} - void select_id_snStatusTransfer() { set(id_snStatusTransfer); type=26;} - void select_id_uEContextRelease() { set(id_uEContextRelease); type=27;} - void select_id_handoverCancel() { set(id_handoverCancel); type=28;} - void select_id_errorIndication() { set(id_errorIndication); type=29;} - void select_id_resourceStatusReporting() { set(id_resourceStatusReporting); type=30;} - void select_id_loadIndication() { set(id_loadIndication); type=31;} - void select_id_privateMessage() { set(id_privateMessage); type=32;} - void select_id_rLFIndication() { set(id_rLFIndication); type=33;} - void select_id_handoverReport() { set(id_handoverReport); type=34;} - void select_id_x2Release() { set(id_x2Release); type=35;} - void select_id_x2APMessageTransfer() { set(id_x2APMessageTransfer); type=36;} - void select_id_seNBReconfigurationCompletion() { set(id_seNBReconfigurationCompletion); type=37;} - void select_id_meNBinitiatedSeNBRelease() { set(id_meNBinitiatedSeNBRelease); type=38;} - void select_id_seNBCounterCheck() { set(id_seNBCounterCheck); type=39;} - void select_id_sgNBReconfigurationCompletion() { set(id_sgNBReconfigurationCompletion); type=40;} - void select_id_sgNBCounterCheck() { set(id_sgNBCounterCheck); type=41;} - void select_id_rRCTransfer() { set(id_rRCTransfer); type=42;} - void select_id_secondaryRATDataUsageReport() { set(id_secondaryRATDataUsageReport); type=43;} - void select_id_SgNBActivityNotification() { set(id_SgNBActivityNotification); type=44;} - void select_id_dataForwardingAddressIndication() { set(id_dataForwardingAddressIndication); type=45;} - X2AP_ELEMENTARY_PROCEDURE::procedureCode_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_handoverPreparation)) { type = 1; return true; } - else if(equal(id_reset)) { type = 2; return true; } - else if(equal(id_x2Setup)) { type = 3; return true; } - else if(equal(id_resourceStatusReportingInitiation)) { type = 4; return true; } - else if(equal(id_eNBConfigurationUpdate)) { type = 5; return true; } - else if(equal(id_mobilitySettingsChange)) { type = 6; return true; } - else if(equal(id_cellActivation)) { type = 7; return true; } - else if(equal(id_seNBAdditionPreparation)) { type = 8; return true; } - else if(equal(id_meNBinitiatedSeNBModificationPreparation)) { type = 9; return true; } - else if(equal(id_seNBinitiatedSeNBModification)) { type = 10; return true; } - else if(equal(id_seNBinitiatedSeNBRelease)) { type = 11; return true; } - else if(equal(id_x2Removal)) { type = 12; return true; } - else if(equal(id_retrieveUEContext)) { type = 13; return true; } - else if(equal(id_sgNBAdditionPreparation)) { type = 14; return true; } - else if(equal(id_meNBinitiatedSgNBModificationPreparation)) { type = 15; return true; } - else if(equal(id_sgNBinitiatedSgNBModification)) { type = 16; return true; } - else if(equal(id_meNBinitiatedSgNBRelease)) { type = 17; return true; } - else if(equal(id_sgNBinitiatedSgNBRelease)) { type = 18; return true; } - else if(equal(id_sgNBChange)) { type = 19; return true; } - else if(equal(id_endcX2Setup)) { type = 20; return true; } - else if(equal(id_endcConfigurationUpdate)) { type = 21; return true; } - else if(equal(id_endcCellActivation)) { type = 22; return true; } - else if(equal(id_endcPartialReset)) { type = 23; return true; } - else if(equal(id_eUTRANRCellResourceCoordination)) { type = 24; return true; } - else if(equal(id_endcX2Removal)) { type = 25; return true; } - else if(equal(id_snStatusTransfer)) { type = 26; return true; } - else if(equal(id_uEContextRelease)) { type = 27; return true; } - else if(equal(id_handoverCancel)) { type = 28; return true; } - else if(equal(id_errorIndication)) { type = 29; return true; } - else if(equal(id_resourceStatusReporting)) { type = 30; return true; } - else if(equal(id_loadIndication)) { type = 31; return true; } - else if(equal(id_privateMessage)) { type = 32; return true; } - else if(equal(id_rLFIndication)) { type = 33; return true; } - else if(equal(id_handoverReport)) { type = 34; return true; } - else if(equal(id_x2Release)) { type = 35; return true; } - else if(equal(id_x2APMessageTransfer)) { type = 36; return true; } - else if(equal(id_seNBReconfigurationCompletion)) { type = 37; return true; } - else if(equal(id_meNBinitiatedSeNBRelease)) { type = 38; return true; } - else if(equal(id_seNBCounterCheck)) { type = 39; return true; } - else if(equal(id_sgNBReconfigurationCompletion)) { type = 40; return true; } - else if(equal(id_sgNBCounterCheck)) { type = 41; return true; } - else if(equal(id_rRCTransfer)) { type = 42; return true; } - else if(equal(id_secondaryRATDataUsageReport)) { type = 43; return true; } - else if(equal(id_SgNBActivityNotification)) { type = 44; return true; } - else if(equal(id_dataForwardingAddressIndication)) { type = 45; return true; } - else { type = 46; return true;} - return false; - - } - template bool encode(V& v) const - { - return v(ref_nested()); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: type = 1; if(v(ref_nested())) { return equal(id_handoverPreparation);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_reset);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_x2Setup);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_resourceStatusReportingInitiation);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_eNBConfigurationUpdate);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_mobilitySettingsChange);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(id_cellActivation);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(id_seNBAdditionPreparation);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(id_meNBinitiatedSeNBModificationPreparation);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(id_seNBinitiatedSeNBModification);} return false; - case 11: type = 11; if(v(ref_nested())) { return equal(id_seNBinitiatedSeNBRelease);} return false; - case 12: type = 12; if(v(ref_nested())) { return equal(id_x2Removal);} return false; - case 13: type = 13; if(v(ref_nested())) { return equal(id_retrieveUEContext);} return false; - case 14: type = 14; if(v(ref_nested())) { return equal(id_sgNBAdditionPreparation);} return false; - case 15: type = 15; if(v(ref_nested())) { return equal(id_meNBinitiatedSgNBModificationPreparation);} return false; - case 16: type = 16; if(v(ref_nested())) { return equal(id_sgNBinitiatedSgNBModification);} return false; - case 17: type = 17; if(v(ref_nested())) { return equal(id_meNBinitiatedSgNBRelease);} return false; - case 18: type = 18; if(v(ref_nested())) { return equal(id_sgNBinitiatedSgNBRelease);} return false; - case 19: type = 19; if(v(ref_nested())) { return equal(id_sgNBChange);} return false; - case 20: type = 20; if(v(ref_nested())) { return equal(id_endcX2Setup);} return false; - case 21: type = 21; if(v(ref_nested())) { return equal(id_endcConfigurationUpdate);} return false; - case 22: type = 22; if(v(ref_nested())) { return equal(id_endcCellActivation);} return false; - case 23: type = 23; if(v(ref_nested())) { return equal(id_endcPartialReset);} return false; - case 24: type = 24; if(v(ref_nested())) { return equal(id_eUTRANRCellResourceCoordination);} return false; - case 25: type = 25; if(v(ref_nested())) { return equal(id_endcX2Removal);} return false; - case 26: type = 26; if(v(ref_nested())) { return equal(id_snStatusTransfer);} return false; - case 27: type = 27; if(v(ref_nested())) { return equal(id_uEContextRelease);} return false; - case 28: type = 28; if(v(ref_nested())) { return equal(id_handoverCancel);} return false; - case 29: type = 29; if(v(ref_nested())) { return equal(id_errorIndication);} return false; - case 30: type = 30; if(v(ref_nested())) { return equal(id_resourceStatusReporting);} return false; - case 31: type = 31; if(v(ref_nested())) { return equal(id_loadIndication);} return false; - case 32: type = 32; if(v(ref_nested())) { return equal(id_privateMessage);} return false; - case 33: type = 33; if(v(ref_nested())) { return equal(id_rLFIndication);} return false; - case 34: type = 34; if(v(ref_nested())) { return equal(id_handoverReport);} return false; - case 35: type = 35; if(v(ref_nested())) { return equal(id_x2Release);} return false; - case 36: type = 36; if(v(ref_nested())) { return equal(id_x2APMessageTransfer);} return false; - case 37: type = 37; if(v(ref_nested())) { return equal(id_seNBReconfigurationCompletion);} return false; - case 38: type = 38; if(v(ref_nested())) { return equal(id_meNBinitiatedSeNBRelease);} return false; - case 39: type = 39; if(v(ref_nested())) { return equal(id_seNBCounterCheck);} return false; - case 40: type = 40; if(v(ref_nested())) { return equal(id_sgNBReconfigurationCompletion);} return false; - case 41: type = 41; if(v(ref_nested())) { return equal(id_sgNBCounterCheck);} return false; - case 42: type = 42; if(v(ref_nested())) { return equal(id_rRCTransfer);} return false; - case 43: type = 43; if(v(ref_nested())) { return equal(id_secondaryRATDataUsageReport);} return false; - case 44: type = 44; if(v(ref_nested())) { return equal(id_SgNBActivityNotification);} return false; - case 45: type = 45; if(v(ref_nested())) { return equal(id_dataForwardingAddressIndication);} return false; - case 46: type = 46; return v(ref_nested()); - ref_nested().clear(); - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) {return false;} return v(ref_nested()); - - } - private: - size_t type {0}; - - }; - struct criticality_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 46; } - void clear() {type = 0;} - void select_id_handoverPreparation() { set(reject); type=1;} - void select_id_reset() { set(reject); type=2;} - void select_id_x2Setup() { set(reject); type=3;} - void select_id_resourceStatusReportingInitiation() { set(reject); type=4;} - void select_id_eNBConfigurationUpdate() { set(reject); type=5;} - void select_id_mobilitySettingsChange() { set(reject); type=6;} - void select_id_cellActivation() { set(reject); type=7;} - void select_id_seNBAdditionPreparation() { set(reject); type=8;} - void select_id_meNBinitiatedSeNBModificationPreparation() { set(reject); type=9;} - void select_id_seNBinitiatedSeNBModification() { set(reject); type=10;} - void select_id_seNBinitiatedSeNBRelease() { set(reject); type=11;} - void select_id_x2Removal() { set(reject); type=12;} - void select_id_retrieveUEContext() { set(reject); type=13;} - void select_id_sgNBAdditionPreparation() { set(reject); type=14;} - void select_id_meNBinitiatedSgNBModificationPreparation() { set(reject); type=15;} - void select_id_sgNBinitiatedSgNBModification() { set(reject); type=16;} - void select_id_meNBinitiatedSgNBRelease() { set(ignore); type=17;} - void select_id_sgNBinitiatedSgNBRelease() { set(reject); type=18;} - void select_id_sgNBChange() { set(reject); type=19;} - void select_id_endcX2Setup() { set(reject); type=20;} - void select_id_endcConfigurationUpdate() { set(reject); type=21;} - void select_id_endcCellActivation() { set(reject); type=22;} - void select_id_endcPartialReset() { set(reject); type=23;} - void select_id_eUTRANRCellResourceCoordination() { set(reject); type=24;} - void select_id_endcX2Removal() { set(reject); type=25;} - void select_id_snStatusTransfer() { set(ignore); type=26;} - void select_id_uEContextRelease() { set(ignore); type=27;} - void select_id_handoverCancel() { set(ignore); type=28;} - void select_id_errorIndication() { set(ignore); type=29;} - void select_id_resourceStatusReporting() { set(ignore); type=30;} - void select_id_loadIndication() { set(ignore); type=31;} - void select_id_privateMessage() { set(ignore); type=32;} - void select_id_rLFIndication() { set(ignore); type=33;} - void select_id_handoverReport() { set(ignore); type=34;} - void select_id_x2Release() { set(reject); type=35;} - void select_id_x2APMessageTransfer() { set(reject); type=36;} - void select_id_seNBReconfigurationCompletion() { set(ignore); type=37;} - void select_id_meNBinitiatedSeNBRelease() { set(ignore); type=38;} - void select_id_seNBCounterCheck() { set(reject); type=39;} - void select_id_sgNBReconfigurationCompletion() { set(ignore); type=40;} - void select_id_sgNBCounterCheck() { set(reject); type=41;} - void select_id_rRCTransfer() { set(reject); type=42;} - void select_id_secondaryRATDataUsageReport() { set(reject); type=43;} - void select_id_SgNBActivityNotification() { set(reject); type=44;} - void select_id_dataForwardingAddressIndication() { set(ignore); type=45;} - X2AP_ELEMENTARY_PROCEDURE::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(reject)) { type = 1; return true; } - else if(equal(reject)) { type = 2; return true; } - else if(equal(reject)) { type = 3; return true; } - else if(equal(reject)) { type = 4; return true; } - else if(equal(reject)) { type = 5; return true; } - else if(equal(reject)) { type = 6; return true; } - else if(equal(reject)) { type = 7; return true; } - else if(equal(reject)) { type = 8; return true; } - else if(equal(reject)) { type = 9; return true; } - else if(equal(reject)) { type = 10; return true; } - else if(equal(reject)) { type = 11; return true; } - else if(equal(reject)) { type = 12; return true; } - else if(equal(reject)) { type = 13; return true; } - else if(equal(reject)) { type = 14; return true; } - else if(equal(reject)) { type = 15; return true; } - else if(equal(reject)) { type = 16; return true; } - else if(equal(ignore)) { type = 17; return true; } - else if(equal(reject)) { type = 18; return true; } - else if(equal(reject)) { type = 19; return true; } - else if(equal(reject)) { type = 20; return true; } - else if(equal(reject)) { type = 21; return true; } - else if(equal(reject)) { type = 22; return true; } - else if(equal(reject)) { type = 23; return true; } - else if(equal(reject)) { type = 24; return true; } - else if(equal(reject)) { type = 25; return true; } - else if(equal(ignore)) { type = 26; return true; } - else if(equal(ignore)) { type = 27; return true; } - else if(equal(ignore)) { type = 28; return true; } - else if(equal(ignore)) { type = 29; return true; } - else if(equal(ignore)) { type = 30; return true; } - else if(equal(ignore)) { type = 31; return true; } - else if(equal(ignore)) { type = 32; return true; } - else if(equal(ignore)) { type = 33; return true; } - else if(equal(ignore)) { type = 34; return true; } - else if(equal(reject)) { type = 35; return true; } - else if(equal(reject)) { type = 36; return true; } - else if(equal(ignore)) { type = 37; return true; } - else if(equal(ignore)) { type = 38; return true; } - else if(equal(reject)) { type = 39; return true; } - else if(equal(ignore)) { type = 40; return true; } - else if(equal(reject)) { type = 41; return true; } - else if(equal(reject)) { type = 42; return true; } - else if(equal(reject)) { type = 43; return true; } - else if(equal(reject)) { type = 44; return true; } - else if(equal(ignore)) { type = 45; return true; } - else { type = 46; return true;} - return false; - - } - template bool encode(V& v) const - { - return v(ref_nested()); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(reject);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(reject);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(reject);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(reject);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(reject);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(reject);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(reject);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(reject);} return false; - case 11: type = 11; if(v(ref_nested())) { return equal(reject);} return false; - case 12: type = 12; if(v(ref_nested())) { return equal(reject);} return false; - case 13: type = 13; if(v(ref_nested())) { return equal(reject);} return false; - case 14: type = 14; if(v(ref_nested())) { return equal(reject);} return false; - case 15: type = 15; if(v(ref_nested())) { return equal(reject);} return false; - case 16: type = 16; if(v(ref_nested())) { return equal(reject);} return false; - case 17: type = 17; if(v(ref_nested())) { return equal(ignore);} return false; - case 18: type = 18; if(v(ref_nested())) { return equal(reject);} return false; - case 19: type = 19; if(v(ref_nested())) { return equal(reject);} return false; - case 20: type = 20; if(v(ref_nested())) { return equal(reject);} return false; - case 21: type = 21; if(v(ref_nested())) { return equal(reject);} return false; - case 22: type = 22; if(v(ref_nested())) { return equal(reject);} return false; - case 23: type = 23; if(v(ref_nested())) { return equal(reject);} return false; - case 24: type = 24; if(v(ref_nested())) { return equal(reject);} return false; - case 25: type = 25; if(v(ref_nested())) { return equal(reject);} return false; - case 26: type = 26; if(v(ref_nested())) { return equal(ignore);} return false; - case 27: type = 27; if(v(ref_nested())) { return equal(ignore);} return false; - case 28: type = 28; if(v(ref_nested())) { return equal(ignore);} return false; - case 29: type = 29; if(v(ref_nested())) { return equal(ignore);} return false; - case 30: type = 30; if(v(ref_nested())) { return equal(ignore);} return false; - case 31: type = 31; if(v(ref_nested())) { return equal(ignore);} return false; - case 32: type = 32; if(v(ref_nested())) { return equal(ignore);} return false; - case 33: type = 33; if(v(ref_nested())) { return equal(ignore);} return false; - case 34: type = 34; if(v(ref_nested())) { return equal(ignore);} return false; - case 35: type = 35; if(v(ref_nested())) { return equal(reject);} return false; - case 36: type = 36; if(v(ref_nested())) { return equal(reject);} return false; - case 37: type = 37; if(v(ref_nested())) { return equal(ignore);} return false; - case 38: type = 38; if(v(ref_nested())) { return equal(ignore);} return false; - case 39: type = 39; if(v(ref_nested())) { return equal(reject);} return false; - case 40: type = 40; if(v(ref_nested())) { return equal(ignore);} return false; - case 41: type = 41; if(v(ref_nested())) { return equal(reject);} return false; - case 42: type = 42; if(v(ref_nested())) { return equal(reject);} return false; - case 43: type = 43; if(v(ref_nested())) { return equal(reject);} return false; - case 44: type = 44; if(v(ref_nested())) { return equal(reject);} return false; - case 45: type = 45; if(v(ref_nested())) { return equal(ignore);} return false; - case 46: type = 46; return v(ref_nested()); - ref_nested().clear(); - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) {return false;} return v(ref_nested()); - - } - private: - size_t type {0}; - - }; - -}; -/* -InitiatingMessage ::= SEQUENCE { - procedureCode X2AP-ELEMENTARY-PROCEDURE.&procedureCode ({X2AP-ELEMENTARY-PROCEDURES}), - criticality X2AP-ELEMENTARY-PROCEDURE.&criticality ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode}), - value X2AP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode}) -} -*/ - -struct InitiatingMessage : asn::sequence<3, 0, false, 0> -{ - static constexpr const char* name() {return "InitiatingMessage";} - using parent_t = asn::sequence<3, 0, false, 0>; - struct procedureCode_t : X2AP_ELEMENTARY_PROCEDURES::procedureCode_t - { - static constexpr const char* name() {return "procedureCode_t";} - using parent_t = typename X2AP_ELEMENTARY_PROCEDURES::procedureCode_t; - template bool decode(V& v, InitiatingMessage const& c) - { - return X2AP_ELEMENTARY_PROCEDURES::procedureCode_t::decode(v); - }; - template bool encode(V& v, InitiatingMessage const& c) const - { - return X2AP_ELEMENTARY_PROCEDURES::procedureCode_t::encode(v); - }; - }; - procedureCode_t& ref_procedureCode() {return procedureCode;} - procedureCode_t const& ref_procedureCode() const {return procedureCode;} - struct criticality_t : X2AP_ELEMENTARY_PROCEDURES::criticality_t - { - static constexpr const char* name() {return "criticality_t";} - using parent_t = typename X2AP_ELEMENTARY_PROCEDURES::criticality_t; - template bool decode(V& v, InitiatingMessage const& c) - { - return X2AP_ELEMENTARY_PROCEDURES::criticality_t::decode(c.procedureCode.get_index(), v); - }; - template bool encode(V& v, InitiatingMessage const& c) const - { - return X2AP_ELEMENTARY_PROCEDURES::criticality_t::encode(c.procedureCode.get_index(), v); - }; - }; - criticality_t& ref_criticality() {return criticality;} - criticality_t const& ref_criticality() const {return criticality;} - struct value_t : X2AP_ELEMENTARY_PROCEDURES::InitiatingMessage_t - { - static constexpr const char* name() {return "value_t";} - using parent_t = typename X2AP_ELEMENTARY_PROCEDURES::InitiatingMessage_t; - template bool decode(V& v, InitiatingMessage const& c) - { - return X2AP_ELEMENTARY_PROCEDURES::InitiatingMessage_t::decode(c.procedureCode.get_index(), v); - }; - template bool encode(V& v, InitiatingMessage const& c) const - { - return X2AP_ELEMENTARY_PROCEDURES::InitiatingMessage_t::encode(c.procedureCode.get_index(), v); - }; - }; - value_t& ref_value() {return value;} - value_t const& ref_value() const {return value;} - template void decode(V& v) - { - v(procedureCode); - v(criticality); - v(value); - - }; - template void encode(V& v) const - { - v(procedureCode); - v(criticality); - v(value); - - }; - void clear() - { - procedureCode.clear(); - criticality.clear(); - value.clear(); - - }; - private: - procedureCode_t procedureCode; - criticality_t criticality; - value_t value; - -}; -/* -SuccessfulOutcome ::= SEQUENCE { - procedureCode X2AP-ELEMENTARY-PROCEDURE.&procedureCode ({X2AP-ELEMENTARY-PROCEDURES}), - criticality X2AP-ELEMENTARY-PROCEDURE.&criticality ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode}), - value X2AP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode}) -} -*/ - -struct SuccessfulOutcome : asn::sequence<3, 0, false, 0> -{ - static constexpr const char* name() {return "SuccessfulOutcome";} - using parent_t = asn::sequence<3, 0, false, 0>; - struct procedureCode_t : X2AP_ELEMENTARY_PROCEDURES::procedureCode_t - { - static constexpr const char* name() {return "procedureCode_t";} - using parent_t = typename X2AP_ELEMENTARY_PROCEDURES::procedureCode_t; - template bool decode(V& v, SuccessfulOutcome const& c) - { - return X2AP_ELEMENTARY_PROCEDURES::procedureCode_t::decode(v); - }; - template bool encode(V& v, SuccessfulOutcome const& c) const - { - return X2AP_ELEMENTARY_PROCEDURES::procedureCode_t::encode(v); - }; - }; - procedureCode_t& ref_procedureCode() {return procedureCode;} - procedureCode_t const& ref_procedureCode() const {return procedureCode;} - struct criticality_t : X2AP_ELEMENTARY_PROCEDURES::criticality_t - { - static constexpr const char* name() {return "criticality_t";} - using parent_t = typename X2AP_ELEMENTARY_PROCEDURES::criticality_t; - template bool decode(V& v, SuccessfulOutcome const& c) - { - return X2AP_ELEMENTARY_PROCEDURES::criticality_t::decode(c.procedureCode.get_index(), v); - }; - template bool encode(V& v, SuccessfulOutcome const& c) const - { - return X2AP_ELEMENTARY_PROCEDURES::criticality_t::encode(c.procedureCode.get_index(), v); - }; - }; - criticality_t& ref_criticality() {return criticality;} - criticality_t const& ref_criticality() const {return criticality;} - struct value_t : X2AP_ELEMENTARY_PROCEDURES::SuccessfulOutcome_t - { - static constexpr const char* name() {return "value_t";} - using parent_t = typename X2AP_ELEMENTARY_PROCEDURES::SuccessfulOutcome_t; - template bool decode(V& v, SuccessfulOutcome const& c) - { - return X2AP_ELEMENTARY_PROCEDURES::SuccessfulOutcome_t::decode(c.procedureCode.get_index(), v); - }; - template bool encode(V& v, SuccessfulOutcome const& c) const - { - return X2AP_ELEMENTARY_PROCEDURES::SuccessfulOutcome_t::encode(c.procedureCode.get_index(), v); - }; - }; - value_t& ref_value() {return value;} - value_t const& ref_value() const {return value;} - template void decode(V& v) - { - v(procedureCode); - v(criticality); - v(value); - - }; - template void encode(V& v) const - { - v(procedureCode); - v(criticality); - v(value); - - }; - void clear() - { - procedureCode.clear(); - criticality.clear(); - value.clear(); - - }; - private: - procedureCode_t procedureCode; - criticality_t criticality; - value_t value; - -}; -/* -UnsuccessfulOutcome ::= SEQUENCE { - procedureCode X2AP-ELEMENTARY-PROCEDURE.&procedureCode ({X2AP-ELEMENTARY-PROCEDURES}), - criticality X2AP-ELEMENTARY-PROCEDURE.&criticality ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode}), - value X2AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode}) -} -*/ - -struct UnsuccessfulOutcome : asn::sequence<3, 0, false, 0> -{ - static constexpr const char* name() {return "UnsuccessfulOutcome";} - using parent_t = asn::sequence<3, 0, false, 0>; - struct procedureCode_t : X2AP_ELEMENTARY_PROCEDURES::procedureCode_t - { - static constexpr const char* name() {return "procedureCode_t";} - using parent_t = typename X2AP_ELEMENTARY_PROCEDURES::procedureCode_t; - template bool decode(V& v, UnsuccessfulOutcome const& c) - { - return X2AP_ELEMENTARY_PROCEDURES::procedureCode_t::decode(v); - }; - template bool encode(V& v, UnsuccessfulOutcome const& c) const - { - return X2AP_ELEMENTARY_PROCEDURES::procedureCode_t::encode(v); - }; - }; - procedureCode_t& ref_procedureCode() {return procedureCode;} - procedureCode_t const& ref_procedureCode() const {return procedureCode;} - struct criticality_t : X2AP_ELEMENTARY_PROCEDURES::criticality_t - { - static constexpr const char* name() {return "criticality_t";} - using parent_t = typename X2AP_ELEMENTARY_PROCEDURES::criticality_t; - template bool decode(V& v, UnsuccessfulOutcome const& c) - { - return X2AP_ELEMENTARY_PROCEDURES::criticality_t::decode(c.procedureCode.get_index(), v); - }; - template bool encode(V& v, UnsuccessfulOutcome const& c) const - { - return X2AP_ELEMENTARY_PROCEDURES::criticality_t::encode(c.procedureCode.get_index(), v); - }; - }; - criticality_t& ref_criticality() {return criticality;} - criticality_t const& ref_criticality() const {return criticality;} - struct value_t : X2AP_ELEMENTARY_PROCEDURES::UnsuccessfulOutcome_t - { - static constexpr const char* name() {return "value_t";} - using parent_t = typename X2AP_ELEMENTARY_PROCEDURES::UnsuccessfulOutcome_t; - template bool decode(V& v, UnsuccessfulOutcome const& c) - { - return X2AP_ELEMENTARY_PROCEDURES::UnsuccessfulOutcome_t::decode(c.procedureCode.get_index(), v); - }; - template bool encode(V& v, UnsuccessfulOutcome const& c) const - { - return X2AP_ELEMENTARY_PROCEDURES::UnsuccessfulOutcome_t::encode(c.procedureCode.get_index(), v); - }; - }; - value_t& ref_value() {return value;} - value_t const& ref_value() const {return value;} - template void decode(V& v) - { - v(procedureCode); - v(criticality); - v(value); - - }; - template void encode(V& v) const - { - v(procedureCode); - v(criticality); - v(value); - - }; - void clear() - { - procedureCode.clear(); - criticality.clear(); - value.clear(); - - }; - private: - procedureCode_t procedureCode; - criticality_t criticality; - value_t value; - -}; -/* -X2AP-PDU ::= CHOICE { - initiatingMessage InitiatingMessage, - successfulOutcome SuccessfulOutcome, - unsuccessfulOutcome UnsuccessfulOutcome, - ... -} -*/ - -struct X2AP_PDU : asn::choice<3, 0, true> -{ - static constexpr const char* name() {return "X2AP-PDU";} - using parent_t = asn::choice<3, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 4;} - void set_unknown() { set_index(4); } - ~X2AP_PDU() {clear();} - struct initiatingMessage_t : InitiatingMessage - { - static constexpr const char* name() {return "initiatingMessage_t";} - using parent_t = InitiatingMessage; - - }; - struct successfulOutcome_t : SuccessfulOutcome - { - static constexpr const char* name() {return "successfulOutcome_t";} - using parent_t = SuccessfulOutcome; - - }; - struct unsuccessfulOutcome_t : UnsuccessfulOutcome - { - static constexpr const char* name() {return "unsuccessfulOutcome_t";} - using parent_t = UnsuccessfulOutcome; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: var.destroy(); break; - } - index = 0; - base::clear(); - } - template bool decode(size_t idx, V& v) - { - clear(); - switch(idx) - { - case 1: set_index(1); return v(var.build()); - case 2: set_index(2); return v(var.build()); - case 3: set_index(3); return v(var.build()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - case 3: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - v.template operator()(3); - - } - initiatingMessage_t& select_initiatingMessage() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - initiatingMessage_t const* get_initiatingMessage() const { if(get_index() == 1) { return &var.as();} return nullptr; } - successfulOutcome_t& select_successfulOutcome() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - successfulOutcome_t const* get_successfulOutcome() const { if(get_index() == 2) { return &var.as();} return nullptr; } - unsuccessfulOutcome_t& select_unsuccessfulOutcome() { if(get_index() != 3) { clear(); set_index(3); return var.build();} return var.as();} - unsuccessfulOutcome_t const* get_unsuccessfulOutcome() const { if(get_index() == 3) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(initiatingMessage_t)]; - char dummy2[sizeof(successfulOutcome_t)]; - char dummy3[sizeof(unsuccessfulOutcome_t)]; - - }; - asn::variant var; - index_type index {0}; -};