X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?p=sim%2Fe2-interface.git;a=blobdiff_plain;f=e2sim%2Fe2apv1sim%2Fsrc%2FASN1%2Fgenerated%2FE2AP-PDU-Descriptions.hpp;fp=e2sim%2Fe2apv1sim%2Fsrc%2FASN1%2Fgenerated%2FE2AP-PDU-Descriptions.hpp;h=f426b9715165db06225ce8d22d43ebf1e203de7e;hp=0000000000000000000000000000000000000000;hb=0eba05c4ff0c99974d3f3a63b65cbe2adb209e51;hpb=c380e183231711cf9f8bc72d0eb52e532dd07085 diff --git a/e2sim/e2apv1sim/src/ASN1/generated/E2AP-PDU-Descriptions.hpp b/e2sim/e2apv1sim/src/ASN1/generated/E2AP-PDU-Descriptions.hpp new file mode 100644 index 0000000..f426b97 --- /dev/null +++ b/e2sim/e2apv1sim/src/ASN1/generated/E2AP-PDU-Descriptions.hpp @@ -0,0 +1,980 @@ +/***************************************************************************** +# 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" +#include "E2AP-PDU-Contents.hpp" +#include "E2AP-Constants.hpp" + +/* +E2AP-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 E2AP_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; + + }; + +}; +/* +E2AP-ELEMENTARY-PROCEDURES E2AP-ELEMENTARY-PROCEDURE ::= { + E2AP-ELEMENTARY-PROCEDURES-CLASS-1 | + E2AP-ELEMENTARY-PROCEDURES-CLASS-2, + ... +} +*/ + +struct E2AP_ELEMENTARY_PROCEDURES +{ + struct InitiatingMessage_t : asn::typefield + { + ~InitiatingMessage_t() {clear();} + size_t get_index() const {return type;} + RICsubscriptionRequest& select_id_ricSubscription() { return set(1); } + RICsubscriptionRequest const* get_id_ricSubscription() const { return get(1); } + RICsubscriptionDeleteRequest& select_id_ricSubscriptionDelete() { return set(2); } + RICsubscriptionDeleteRequest const* get_id_ricSubscriptionDelete() const { return get(2); } + RICserviceUpdate& select_id_ricServiceUpdate() { return set(3); } + RICserviceUpdate const* get_id_ricServiceUpdate() const { return get(3); } + RICcontrolRequest& select_id_ricControl() { return set(4); } + RICcontrolRequest const* get_id_ricControl() const { return get(4); } + X2SetupRequest& select_id_x2Setup() { return set(5); } + X2SetupRequest const* get_id_x2Setup() const { return get(5); } + ENDCX2SetupRequest& select_id_endcX2Setup() { return set(6); } + ENDCX2SetupRequest const* get_id_endcX2Setup() const { return get(6); } + ResourceStatusRequest& select_id_resourceStatusReportingInitiation() { return set(7); } + ResourceStatusRequest const* get_id_resourceStatusReportingInitiation() const { return get(7); } + ENBConfigurationUpdate& select_id_eNBConfigurationUpdate() { return set(8); } + ENBConfigurationUpdate const* get_id_eNBConfigurationUpdate() const { return get(8); } + ENDCConfigurationUpdate& select_id_endcConfigurationUpdate() { return set(9); } + ENDCConfigurationUpdate const* get_id_endcConfigurationUpdate() const { return get(9); } + ResetRequest& select_id_reset() { return set(10); } + ResetRequest const* get_id_reset() const { return get(10); } + RICindication& select_id_ricIndication() { return set(11); } + RICindication const* get_id_ricIndication() const { return get(11); } + RICserviceQuery& select_id_ricServiceQuery() { return set(12); } + RICserviceQuery const* get_id_ricServiceQuery() const { return get(12); } + LoadInformation& select_id_loadIndication() { return set(13); } + LoadInformation const* get_id_loadIndication() const { return get(13); } + GNBStatusIndication& select_id_gNBStatusIndication() { return set(14); } + GNBStatusIndication const* get_id_gNBStatusIndication() const { return get(14); } + ResourceStatusUpdate& select_id_resourceStatusReporting() { return set(15); } + ResourceStatusUpdate const* get_id_resourceStatusReporting() const { return get(15); } + ErrorIndication& select_id_errorIndication() { return set(16); } + ErrorIndication const* get_id_errorIndication() const { return get(16); } + bool is_unknown() const { return type == 17; } + 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; + } + 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); + + } + protected: + template bool decode(size_t index, V& v) + { + clear(); + switch(index) + { + case 1: v(select_id_ricSubscription()); return true; + case 2: v(select_id_ricSubscriptionDelete()); return true; + case 3: v(select_id_ricServiceUpdate()); return true; + case 4: v(select_id_ricControl()); return true; + case 5: v(select_id_x2Setup()); return true; + case 6: v(select_id_endcX2Setup()); return true; + case 7: v(select_id_resourceStatusReportingInitiation()); return true; + case 8: v(select_id_eNBConfigurationUpdate()); return true; + case 9: v(select_id_endcConfigurationUpdate()); return true; + case 10: v(select_id_reset()); return true; + case 11: v(select_id_ricIndication()); return true; + case 12: v(select_id_ricServiceQuery()); return true; + case 13: v(select_id_loadIndication()); return true; + case 14: v(select_id_gNBStatusIndication()); return true; + case 15: v(select_id_resourceStatusReporting()); return true; + case 16: v(select_id_errorIndication()); return true; + case 17: if(type != 17) {clear(); asn::base::set();} type = 17; 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; + } + 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(ENBConfigurationUpdate)]; + char dummy2[sizeof(ENDCConfigurationUpdate)]; + char dummy3[sizeof(ENDCX2SetupRequest)]; + char dummy4[sizeof(ErrorIndication)]; + char dummy5[sizeof(GNBStatusIndication)]; + char dummy6[sizeof(LoadInformation)]; + char dummy7[sizeof(RICcontrolRequest)]; + char dummy8[sizeof(RICindication)]; + char dummy9[sizeof(RICserviceQuery)]; + char dummy10[sizeof(RICserviceUpdate)]; + char dummy11[sizeof(RICsubscriptionDeleteRequest)]; + char dummy12[sizeof(RICsubscriptionRequest)]; + char dummy13[sizeof(ResetRequest)]; + char dummy14[sizeof(ResourceStatusRequest)]; + char dummy15[sizeof(ResourceStatusUpdate)]; + char dummy16[sizeof(X2SetupRequest)]; + + }; + asn::variant var; + size_t type {0}; + + }; + struct SuccessfulOutcome_t : asn::typefield + { + ~SuccessfulOutcome_t() {clear();} + size_t get_index() const {return type;} + RICsubscriptionResponse& select_id_ricSubscription() { return set(1); } + RICsubscriptionResponse const* get_id_ricSubscription() const { return get(1); } + RICsubscriptionDeleteResponse& select_id_ricSubscriptionDelete() { return set(2); } + RICsubscriptionDeleteResponse const* get_id_ricSubscriptionDelete() const { return get(2); } + RICserviceUpdateAcknowledge& select_id_ricServiceUpdate() { return set(3); } + RICserviceUpdateAcknowledge const* get_id_ricServiceUpdate() const { return get(3); } + RICcontrolAcknowledge& select_id_ricControl() { return set(4); } + RICcontrolAcknowledge const* get_id_ricControl() const { return get(4); } + X2SetupResponse& select_id_x2Setup() { return set(5); } + X2SetupResponse const* get_id_x2Setup() const { return get(5); } + ENDCX2SetupResponse& select_id_endcX2Setup() { return set(6); } + ENDCX2SetupResponse const* get_id_endcX2Setup() const { return get(6); } + ResourceStatusResponse& select_id_resourceStatusReportingInitiation() { return set(7); } + ResourceStatusResponse const* get_id_resourceStatusReportingInitiation() const { return get(7); } + ENBConfigurationUpdateAcknowledge& select_id_eNBConfigurationUpdate() { return set(8); } + ENBConfigurationUpdateAcknowledge const* get_id_eNBConfigurationUpdate() const { return get(8); } + ENDCConfigurationUpdateAcknowledge& select_id_endcConfigurationUpdate() { return set(9); } + ENDCConfigurationUpdateAcknowledge const* get_id_endcConfigurationUpdate() const { return get(9); } + ResetResponse& select_id_reset() { return set(10); } + ResetResponse const* get_id_reset() const { return get(10); } + bool is_unknown() const { return type == 17; } + 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; + } + 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); + + } + protected: + template bool decode(size_t index, V& v) + { + clear(); + switch(index) + { + case 1: v(select_id_ricSubscription()); return true; + case 2: v(select_id_ricSubscriptionDelete()); return true; + case 3: v(select_id_ricServiceUpdate()); return true; + case 4: v(select_id_ricControl()); return true; + case 5: v(select_id_x2Setup()); return true; + case 6: v(select_id_endcX2Setup()); return true; + case 7: v(select_id_resourceStatusReportingInitiation()); return true; + case 8: v(select_id_eNBConfigurationUpdate()); return true; + case 9: v(select_id_endcConfigurationUpdate()); return true; + case 10: v(select_id_reset()); return true; + case 17: if(type != 17) {clear(); asn::base::set();} type = 17; 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; + } + 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(ENBConfigurationUpdateAcknowledge)]; + char dummy2[sizeof(ENDCConfigurationUpdateAcknowledge)]; + char dummy3[sizeof(ENDCX2SetupResponse)]; + char dummy4[sizeof(RICcontrolAcknowledge)]; + char dummy5[sizeof(RICserviceUpdateAcknowledge)]; + char dummy6[sizeof(RICsubscriptionDeleteResponse)]; + char dummy7[sizeof(RICsubscriptionResponse)]; + char dummy8[sizeof(ResetResponse)]; + char dummy9[sizeof(ResourceStatusResponse)]; + char dummy10[sizeof(X2SetupResponse)]; + + }; + asn::variant var; + size_t type {0}; + + }; + struct UnsuccessfulOutcome_t : asn::typefield + { + ~UnsuccessfulOutcome_t() {clear();} + size_t get_index() const {return type;} + RICsubscriptionFailure& select_id_ricSubscription() { return set(1); } + RICsubscriptionFailure const* get_id_ricSubscription() const { return get(1); } + RICsubscriptionDeleteFailure& select_id_ricSubscriptionDelete() { return set(2); } + RICsubscriptionDeleteFailure const* get_id_ricSubscriptionDelete() const { return get(2); } + RICserviceUpdateFailure& select_id_ricServiceUpdate() { return set(3); } + RICserviceUpdateFailure const* get_id_ricServiceUpdate() const { return get(3); } + RICcontrolFailure& select_id_ricControl() { return set(4); } + RICcontrolFailure const* get_id_ricControl() const { return get(4); } + X2SetupFailure& select_id_x2Setup() { return set(5); } + X2SetupFailure const* get_id_x2Setup() const { return get(5); } + ENDCX2SetupFailure& select_id_endcX2Setup() { return set(6); } + ENDCX2SetupFailure const* get_id_endcX2Setup() const { return get(6); } + ResourceStatusFailure& select_id_resourceStatusReportingInitiation() { return set(7); } + ResourceStatusFailure const* get_id_resourceStatusReportingInitiation() const { return get(7); } + ENBConfigurationUpdateFailure& select_id_eNBConfigurationUpdate() { return set(8); } + ENBConfigurationUpdateFailure const* get_id_eNBConfigurationUpdate() const { return get(8); } + ENDCConfigurationUpdateFailure& select_id_endcConfigurationUpdate() { return set(9); } + ENDCConfigurationUpdateFailure const* get_id_endcConfigurationUpdate() const { return get(9); } + bool is_unknown() const { return type == 17; } + 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; + } + 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); + + } + protected: + template bool decode(size_t index, V& v) + { + clear(); + switch(index) + { + case 1: v(select_id_ricSubscription()); return true; + case 2: v(select_id_ricSubscriptionDelete()); return true; + case 3: v(select_id_ricServiceUpdate()); return true; + case 4: v(select_id_ricControl()); return true; + case 5: v(select_id_x2Setup()); return true; + case 6: v(select_id_endcX2Setup()); return true; + case 7: v(select_id_resourceStatusReportingInitiation()); return true; + case 8: v(select_id_eNBConfigurationUpdate()); return true; + case 9: v(select_id_endcConfigurationUpdate()); return true; + case 17: if(type != 17) {clear(); asn::base::set();} type = 17; 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; + } + 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(ENBConfigurationUpdateFailure)]; + char dummy2[sizeof(ENDCConfigurationUpdateFailure)]; + char dummy3[sizeof(ENDCX2SetupFailure)]; + char dummy4[sizeof(RICcontrolFailure)]; + char dummy5[sizeof(RICserviceUpdateFailure)]; + char dummy6[sizeof(RICsubscriptionDeleteFailure)]; + char dummy7[sizeof(RICsubscriptionFailure)]; + char dummy8[sizeof(ResourceStatusFailure)]; + char dummy9[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 == 17; } + void clear() {type = 0;} + void select_id_ricSubscription() { set(id_ricSubscription); type=1;} + void select_id_ricSubscriptionDelete() { set(id_ricSubscriptionDelete); type=2;} + void select_id_ricServiceUpdate() { set(id_ricServiceUpdate); type=3;} + void select_id_ricControl() { set(id_ricControl); type=4;} + void select_id_x2Setup() { set(id_x2Setup); type=5;} + void select_id_endcX2Setup() { set(id_endcX2Setup); type=6;} + void select_id_resourceStatusReportingInitiation() { set(id_resourceStatusReportingInitiation); type=7;} + void select_id_eNBConfigurationUpdate() { set(id_eNBConfigurationUpdate); type=8;} + void select_id_endcConfigurationUpdate() { set(id_endcConfigurationUpdate); type=9;} + void select_id_reset() { set(id_reset); type=10;} + void select_id_ricIndication() { set(id_ricIndication); type=11;} + void select_id_ricServiceQuery() { set(id_ricServiceQuery); type=12;} + void select_id_loadIndication() { set(id_loadIndication); type=13;} + void select_id_gNBStatusIndication() { set(id_gNBStatusIndication); type=14;} + void select_id_resourceStatusReporting() { set(id_resourceStatusReporting); type=15;} + void select_id_errorIndication() { set(id_errorIndication); type=16;} + E2AP_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_ricSubscription)) { type = 1; return true; } + else if(equal(id_ricSubscriptionDelete)) { type = 2; return true; } + else if(equal(id_ricServiceUpdate)) { type = 3; return true; } + else if(equal(id_ricControl)) { type = 4; return true; } + else if(equal(id_x2Setup)) { type = 5; return true; } + else if(equal(id_endcX2Setup)) { type = 6; return true; } + else if(equal(id_resourceStatusReportingInitiation)) { type = 7; return true; } + else if(equal(id_eNBConfigurationUpdate)) { type = 8; return true; } + else if(equal(id_endcConfigurationUpdate)) { type = 9; return true; } + else if(equal(id_reset)) { type = 10; return true; } + else if(equal(id_ricIndication)) { type = 11; return true; } + else if(equal(id_ricServiceQuery)) { type = 12; return true; } + else if(equal(id_loadIndication)) { type = 13; return true; } + else if(equal(id_gNBStatusIndication)) { type = 14; return true; } + else if(equal(id_resourceStatusReporting)) { type = 15; return true; } + else if(equal(id_errorIndication)) { type = 16; return true; } + else { type = 17; 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_ricSubscription);} return false; + case 2: type = 2; if(v(ref_nested())) { return equal(id_ricSubscriptionDelete);} return false; + case 3: type = 3; if(v(ref_nested())) { return equal(id_ricServiceUpdate);} return false; + case 4: type = 4; if(v(ref_nested())) { return equal(id_ricControl);} return false; + case 5: type = 5; if(v(ref_nested())) { return equal(id_x2Setup);} return false; + case 6: type = 6; if(v(ref_nested())) { return equal(id_endcX2Setup);} return false; + case 7: type = 7; if(v(ref_nested())) { return equal(id_resourceStatusReportingInitiation);} return false; + case 8: type = 8; if(v(ref_nested())) { return equal(id_eNBConfigurationUpdate);} return false; + case 9: type = 9; if(v(ref_nested())) { return equal(id_endcConfigurationUpdate);} return false; + case 10: type = 10; if(v(ref_nested())) { return equal(id_reset);} return false; + case 11: type = 11; if(v(ref_nested())) { return equal(id_ricIndication);} return false; + case 12: type = 12; if(v(ref_nested())) { return equal(id_ricServiceQuery);} return false; + case 13: type = 13; if(v(ref_nested())) { return equal(id_loadIndication);} return false; + case 14: type = 14; if(v(ref_nested())) { return equal(id_gNBStatusIndication);} return false; + case 15: type = 15; if(v(ref_nested())) { return equal(id_resourceStatusReporting);} return false; + case 16: type = 16; if(v(ref_nested())) { return equal(id_errorIndication);} return false; + case 17: type = 17; 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 == 17; } + void clear() {type = 0;} + void select_id_ricSubscription() { set(reject); type=1;} + void select_id_ricSubscriptionDelete() { set(reject); type=2;} + void select_id_ricServiceUpdate() { set(reject); type=3;} + void select_id_ricControl() { set(reject); type=4;} + void select_id_x2Setup() { set(reject); type=5;} + void select_id_endcX2Setup() { set(reject); type=6;} + void select_id_resourceStatusReportingInitiation() { set(reject); type=7;} + void select_id_eNBConfigurationUpdate() { set(reject); type=8;} + void select_id_endcConfigurationUpdate() { set(reject); type=9;} + void select_id_reset() { set(reject); type=10;} + void select_id_ricIndication() { set(ignore); type=11;} + void select_id_ricServiceQuery() { set(ignore); type=12;} + void select_id_loadIndication() { set(ignore); type=13;} + void select_id_gNBStatusIndication() { set(ignore); type=14;} + void select_id_resourceStatusReporting() { set(ignore); type=15;} + void select_id_errorIndication() { set(ignore); type=16;} + E2AP_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(ignore)) { type = 11; return true; } + else if(equal(ignore)) { type = 12; return true; } + else if(equal(ignore)) { type = 13; return true; } + else if(equal(ignore)) { type = 14; return true; } + else if(equal(ignore)) { type = 15; return true; } + else if(equal(ignore)) { type = 16; return true; } + else { type = 17; 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(ignore);} return false; + case 12: type = 12; if(v(ref_nested())) { return equal(ignore);} return false; + case 13: type = 13; if(v(ref_nested())) { return equal(ignore);} return false; + case 14: type = 14; if(v(ref_nested())) { return equal(ignore);} return false; + case 15: type = 15; if(v(ref_nested())) { return equal(ignore);} return false; + case 16: type = 16; if(v(ref_nested())) { return equal(ignore);} return false; + case 17: type = 17; 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 E2AP-ELEMENTARY-PROCEDURE.&procedureCode({E2AP-ELEMENTARY-PROCEDURES}), + criticality E2AP-ELEMENTARY-PROCEDURE.&criticality({E2AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value E2AP-ELEMENTARY-PROCEDURE.&InitiatingMessage({E2AP-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 : E2AP_ELEMENTARY_PROCEDURES::procedureCode_t + { + static constexpr const char* name() {return "procedureCode_t";} + using parent_t = typename E2AP_ELEMENTARY_PROCEDURES::procedureCode_t; + template bool decode(V& v, InitiatingMessage const& c) + { + return E2AP_ELEMENTARY_PROCEDURES::procedureCode_t::decode(v); + }; + template bool encode(V& v, InitiatingMessage const& c) const + { + return E2AP_ELEMENTARY_PROCEDURES::procedureCode_t::encode(v); + }; + }; + procedureCode_t& ref_procedureCode() {return procedureCode;} + procedureCode_t const& ref_procedureCode() const {return procedureCode;} + struct criticality_t : E2AP_ELEMENTARY_PROCEDURES::criticality_t + { + static constexpr const char* name() {return "criticality_t";} + using parent_t = typename E2AP_ELEMENTARY_PROCEDURES::criticality_t; + template bool decode(V& v, InitiatingMessage const& c) + { + return E2AP_ELEMENTARY_PROCEDURES::criticality_t::decode(c.procedureCode.get_index(), v); + }; + template bool encode(V& v, InitiatingMessage const& c) const + { + return E2AP_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 : E2AP_ELEMENTARY_PROCEDURES::InitiatingMessage_t + { + static constexpr const char* name() {return "value_t";} + using parent_t = typename E2AP_ELEMENTARY_PROCEDURES::InitiatingMessage_t; + template bool decode(V& v, InitiatingMessage const& c) + { + return E2AP_ELEMENTARY_PROCEDURES::InitiatingMessage_t::decode(c.procedureCode.get_index(), v); + }; + template bool encode(V& v, InitiatingMessage const& c) const + { + return E2AP_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 E2AP-ELEMENTARY-PROCEDURE.&procedureCode({E2AP-ELEMENTARY-PROCEDURES}), + criticality E2AP-ELEMENTARY-PROCEDURE.&criticality({E2AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value E2AP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome({E2AP-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 : E2AP_ELEMENTARY_PROCEDURES::procedureCode_t + { + static constexpr const char* name() {return "procedureCode_t";} + using parent_t = typename E2AP_ELEMENTARY_PROCEDURES::procedureCode_t; + template bool decode(V& v, SuccessfulOutcome const& c) + { + return E2AP_ELEMENTARY_PROCEDURES::procedureCode_t::decode(v); + }; + template bool encode(V& v, SuccessfulOutcome const& c) const + { + return E2AP_ELEMENTARY_PROCEDURES::procedureCode_t::encode(v); + }; + }; + procedureCode_t& ref_procedureCode() {return procedureCode;} + procedureCode_t const& ref_procedureCode() const {return procedureCode;} + struct criticality_t : E2AP_ELEMENTARY_PROCEDURES::criticality_t + { + static constexpr const char* name() {return "criticality_t";} + using parent_t = typename E2AP_ELEMENTARY_PROCEDURES::criticality_t; + template bool decode(V& v, SuccessfulOutcome const& c) + { + return E2AP_ELEMENTARY_PROCEDURES::criticality_t::decode(c.procedureCode.get_index(), v); + }; + template bool encode(V& v, SuccessfulOutcome const& c) const + { + return E2AP_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 : E2AP_ELEMENTARY_PROCEDURES::SuccessfulOutcome_t + { + static constexpr const char* name() {return "value_t";} + using parent_t = typename E2AP_ELEMENTARY_PROCEDURES::SuccessfulOutcome_t; + template bool decode(V& v, SuccessfulOutcome const& c) + { + return E2AP_ELEMENTARY_PROCEDURES::SuccessfulOutcome_t::decode(c.procedureCode.get_index(), v); + }; + template bool encode(V& v, SuccessfulOutcome const& c) const + { + return E2AP_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 E2AP-ELEMENTARY-PROCEDURE.&procedureCode({E2AP-ELEMENTARY-PROCEDURES}), + criticality E2AP-ELEMENTARY-PROCEDURE.&criticality({E2AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value E2AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome({E2AP-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 : E2AP_ELEMENTARY_PROCEDURES::procedureCode_t + { + static constexpr const char* name() {return "procedureCode_t";} + using parent_t = typename E2AP_ELEMENTARY_PROCEDURES::procedureCode_t; + template bool decode(V& v, UnsuccessfulOutcome const& c) + { + return E2AP_ELEMENTARY_PROCEDURES::procedureCode_t::decode(v); + }; + template bool encode(V& v, UnsuccessfulOutcome const& c) const + { + return E2AP_ELEMENTARY_PROCEDURES::procedureCode_t::encode(v); + }; + }; + procedureCode_t& ref_procedureCode() {return procedureCode;} + procedureCode_t const& ref_procedureCode() const {return procedureCode;} + struct criticality_t : E2AP_ELEMENTARY_PROCEDURES::criticality_t + { + static constexpr const char* name() {return "criticality_t";} + using parent_t = typename E2AP_ELEMENTARY_PROCEDURES::criticality_t; + template bool decode(V& v, UnsuccessfulOutcome const& c) + { + return E2AP_ELEMENTARY_PROCEDURES::criticality_t::decode(c.procedureCode.get_index(), v); + }; + template bool encode(V& v, UnsuccessfulOutcome const& c) const + { + return E2AP_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 : E2AP_ELEMENTARY_PROCEDURES::UnsuccessfulOutcome_t + { + static constexpr const char* name() {return "value_t";} + using parent_t = typename E2AP_ELEMENTARY_PROCEDURES::UnsuccessfulOutcome_t; + template bool decode(V& v, UnsuccessfulOutcome const& c) + { + return E2AP_ELEMENTARY_PROCEDURES::UnsuccessfulOutcome_t::decode(c.procedureCode.get_index(), v); + }; + template bool encode(V& v, UnsuccessfulOutcome const& c) const + { + return E2AP_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; + +}; +/* +E2AP-PDU ::= CHOICE { + initiatingMessage InitiatingMessage, + successfulOutcome SuccessfulOutcome, + unsuccessfulOutcome UnsuccessfulOutcome, + ... +} +*/ + +struct E2AP_PDU : asn::choice<3, 0, true> +{ + static constexpr const char* name() {return "E2AP-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); } + ~E2AP_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}; +};