X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?p=sim%2Fe2-interface.git;a=blobdiff_plain;f=e2sim%2Fprevious%2Fe2apv1sim%2Fe2sim%2Fsrc%2FASN1%2Fgenerated%2FX2AP-PDU-Contents.hpp;fp=e2sim%2Fprevious%2Fe2apv1sim%2Fe2sim%2Fsrc%2FASN1%2Fgenerated%2FX2AP-PDU-Contents.hpp;h=0000000000000000000000000000000000000000;hp=dd85f97af8c181c047b824b86a68552cb9686315;hb=f86662b5b6481f27e18313a36355871f3a947193;hpb=a9f02a2b5886990fd81e64f7c218c5d4844f18a3 diff --git a/e2sim/previous/e2apv1sim/e2sim/src/ASN1/generated/X2AP-PDU-Contents.hpp b/e2sim/previous/e2apv1sim/e2sim/src/ASN1/generated/X2AP-PDU-Contents.hpp deleted file mode 100644 index dd85f97..0000000 --- a/e2sim/previous/e2apv1sim/e2sim/src/ASN1/generated/X2AP-PDU-Contents.hpp +++ /dev/null @@ -1,68476 +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-IEs.hpp" -#include "X2AP-Containers.hpp" -#include "X2AP-Constants.hpp" - -/* -ActivatedCellList-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct ActivatedCellList_Item_ExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -ActivatedCellList-Item::= SEQUENCE { - ecgi ECGI, - iE-Extensions ProtocolExtensionContainer { {ActivatedCellList-Item-ExtIEs} } OPTIONAL, - ... -} -*/ - -struct ActivatedCellList_Item : asn::sequence<2, 0, true, 1> -{ - static constexpr const char* name() {return "ActivatedCellList-Item";} - using parent_t = asn::sequence<2, 0, true, 1>; - struct ecgi_t : ECGI - { - static constexpr const char* name() {return "ecgi_t";} - using parent_t = ECGI; - - }; - ecgi_t& ref_ecgi() {return ecgi;} - ecgi_t const& ref_ecgi() const {return ecgi;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(ecgi); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(ecgi); - v(iE_Extensions); - - }; - void clear() - { - ecgi.clear(); - iE_Extensions.clear(); - - }; - private: - ecgi_t ecgi; - iE_Extensions_t iE_Extensions; - -}; -/* -ActivatedCellList ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ActivatedCellList-Item -*/ - -struct ActivatedCellList_elm : ActivatedCellList_Item -{ - static constexpr const char* name() {return "ActivatedCellList_elm";} - using parent_t = ActivatedCellList_Item; - -}; -struct ActivatedCellList : asn::sequenceof -{ - static constexpr const char* name() {return "ActivatedCellList";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -ActivatedNRCellList-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct ActivatedNRCellList_Item_ExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -ActivatedNRCellList-Item::= SEQUENCE { - nrCellID NRCGI, - iE-Extensions ProtocolExtensionContainer { {ActivatedNRCellList-Item-ExtIEs} } OPTIONAL, - ... -} -*/ - -struct ActivatedNRCellList_Item : asn::sequence<2, 0, true, 1> -{ - static constexpr const char* name() {return "ActivatedNRCellList-Item";} - using parent_t = asn::sequence<2, 0, true, 1>; - struct nrCellID_t : NRCGI - { - static constexpr const char* name() {return "nrCellID_t";} - using parent_t = NRCGI; - - }; - nrCellID_t& ref_nrCellID() {return nrCellID;} - nrCellID_t const& ref_nrCellID() const {return nrCellID;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(nrCellID); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(nrCellID); - v(iE_Extensions); - - }; - void clear() - { - nrCellID.clear(); - iE_Extensions.clear(); - - }; - private: - nrCellID_t nrCellID; - iE_Extensions_t iE_Extensions; - -}; -/* -ActivatedNRCellList ::= SEQUENCE (SIZE (1.. maxCellinengNB)) OF ActivatedNRCellList-Item -*/ - -struct ActivatedNRCellList_elm : ActivatedNRCellList_Item -{ - static constexpr const char* name() {return "ActivatedNRCellList_elm";} - using parent_t = ActivatedNRCellList_Item; - -}; -struct ActivatedNRCellList : asn::sequenceof -{ - static constexpr const char* name() {return "ActivatedNRCellList";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -CellActivationFailure-IEs X2AP-PROTOCOL-IES ::= { - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, - ... -} -*/ - -struct CellActivationFailure_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_Cause() { set(id_Cause); type=1;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=2;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_Cause)) { type = 1; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 2; return true; } - else { type = 3; 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_Cause);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 3: type = 3; 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 == 3; } - void clear() {type = 0;} - void select_id_Cause() { set(ignore); type=1;} - void select_id_CriticalityDiagnostics() { set(ignore); type=2;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else { type = 3; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - Cause& select_id_Cause() { return set(1); } - Cause const* get_id_Cause() const { return get(1); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(2); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(2); } - bool is_unknown() const { return type == 3; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_Cause()); return true; - case 2: v(select_id_CriticalityDiagnostics()); return true; - case 3: if(type != 3) {clear(); asn::base::set();} type = 3; 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; - } - 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(Cause)]; - char dummy2[sizeof(CriticalityDiagnostics)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_Cause() { set(mandatory); type=1;} - void select_id_CriticalityDiagnostics() { set(optional); type=2;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else { type = 3; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; 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}; - - }; - -}; -/* -CellActivationFailure ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{CellActivationFailure-IEs}}, - ... -} -*/ - -struct CellActivationFailure : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "CellActivationFailure";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -ServedCellsToActivate-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct ServedCellsToActivate_Item_ExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -ServedCellsToActivate-Item::= SEQUENCE { - ecgi ECGI, - iE-Extensions ProtocolExtensionContainer { {ServedCellsToActivate-Item-ExtIEs} } OPTIONAL, - ... -} -*/ - -struct ServedCellsToActivate_Item : asn::sequence<2, 0, true, 1> -{ - static constexpr const char* name() {return "ServedCellsToActivate-Item";} - using parent_t = asn::sequence<2, 0, true, 1>; - struct ecgi_t : ECGI - { - static constexpr const char* name() {return "ecgi_t";} - using parent_t = ECGI; - - }; - ecgi_t& ref_ecgi() {return ecgi;} - ecgi_t const& ref_ecgi() const {return ecgi;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(ecgi); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(ecgi); - v(iE_Extensions); - - }; - void clear() - { - ecgi.clear(); - iE_Extensions.clear(); - - }; - private: - ecgi_t ecgi; - iE_Extensions_t iE_Extensions; - -}; -/* -ServedCellsToActivate::= SEQUENCE (SIZE (1..maxCellineNB)) OF ServedCellsToActivate-Item -*/ - -struct ServedCellsToActivate_elm : ServedCellsToActivate_Item -{ - static constexpr const char* name() {return "ServedCellsToActivate_elm";} - using parent_t = ServedCellsToActivate_Item; - -}; -struct ServedCellsToActivate : asn::sequenceof -{ - static constexpr const char* name() {return "ServedCellsToActivate";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -CellActivationRequest-IEs X2AP-PROTOCOL-IES ::= { - { ID id-ServedCellsToActivate CRITICALITY reject TYPE ServedCellsToActivate PRESENCE mandatory}, - ... -} -*/ - -struct CellActivationRequest_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_ServedCellsToActivate() { set(id_ServedCellsToActivate); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_ServedCellsToActivate)) { type = 1; return true; } - else { type = 2; 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_ServedCellsToActivate);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_ServedCellsToActivate() { set(reject); type=1;} - X2AP_PROTOCOL_IES::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 { type = 2; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - ServedCellsToActivate& select_id_ServedCellsToActivate() { return set(1); } - ServedCellsToActivate const* get_id_ServedCellsToActivate() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_ServedCellsToActivate()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(ServedCellsToActivate)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_ServedCellsToActivate() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -CellActivationRequest ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{CellActivationRequest-IEs}}, - ... -} -*/ - -struct CellActivationRequest : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "CellActivationRequest";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -CellActivationResponse-IEs X2AP-PROTOCOL-IES ::= { - { ID id-ActivatedCellList CRITICALITY ignore TYPE ActivatedCellList PRESENCE mandatory}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}, - ... -} -*/ - -struct CellActivationResponse_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_ActivatedCellList() { set(id_ActivatedCellList); type=1;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=2;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_ActivatedCellList)) { type = 1; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 2; return true; } - else { type = 3; 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_ActivatedCellList);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 3: type = 3; 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 == 3; } - void clear() {type = 0;} - void select_id_ActivatedCellList() { set(ignore); type=1;} - void select_id_CriticalityDiagnostics() { set(ignore); type=2;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else { type = 3; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - ActivatedCellList& select_id_ActivatedCellList() { return set(1); } - ActivatedCellList const* get_id_ActivatedCellList() const { return get(1); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(2); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(2); } - bool is_unknown() const { return type == 3; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_ActivatedCellList()); return true; - case 2: v(select_id_CriticalityDiagnostics()); return true; - case 3: if(type != 3) {clear(); asn::base::set();} type = 3; 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; - } - 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(ActivatedCellList)]; - char dummy2[sizeof(CriticalityDiagnostics)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_ActivatedCellList() { set(mandatory); type=1;} - void select_id_CriticalityDiagnostics() { set(optional); type=2;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else { type = 3; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; 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}; - - }; - -}; -/* -CellActivationResponse ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{CellActivationResponse-IEs}}, - ... -} -*/ - -struct CellActivationResponse : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "CellActivationResponse";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -Limited-list-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct Limited_list_ExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -Limited-list ::= SEQUENCE (SIZE (1..maxCellinengNB)) OF SEQUENCE { - nrCellID NRCGI, - iE-Extensions ProtocolExtensionContainer { {Limited-list-ExtIEs} } OPTIONAL, - ... -} -*/ - -struct Limited_list_elm : asn::sequence<2, 0, true, 1> -{ - static constexpr const char* name() {return "Limited_list_elm";} - using parent_t = asn::sequence<2, 0, true, 1>; - struct nrCellID_t : NRCGI - { - static constexpr const char* name() {return "nrCellID_t";} - using parent_t = NRCGI; - - }; - nrCellID_t& ref_nrCellID() {return nrCellID;} - nrCellID_t const& ref_nrCellID() const {return nrCellID;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(nrCellID); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(nrCellID); - v(iE_Extensions); - - }; - void clear() - { - nrCellID.clear(); - iE_Extensions.clear(); - - }; - private: - nrCellID_t nrCellID; - iE_Extensions_t iE_Extensions; - -}; -struct Limited_list : asn::sequenceof -{ - static constexpr const char* name() {return "Limited-list";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -CellAssistanceInformation ::= CHOICE { - limited-list Limited-list, - full-list ENUMERATED {allServedNRcells, ...}, - ... -} -*/ - -struct CellAssistanceInformation : asn::choice<2, 0, true> -{ - static constexpr const char* name() {return "CellAssistanceInformation";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~CellAssistanceInformation() {clear();} - struct limited_list_t : Limited_list - { - static constexpr const char* name() {return "limited_list_t";} - using parent_t = Limited_list; - - }; - struct full_list_t : asn::enumerated<1, 0, true> - { - static constexpr const char* name() {return "full_list_t";} - using parent_t = asn::enumerated<1, 0, true>; - typedef enum { - allServedNRcells - } index_t; - - }; - - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - limited_list_t& select_limited_list() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - limited_list_t const* get_limited_list() const { if(get_index() == 1) { return &var.as();} return nullptr; } - full_list_t& select_full_list() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - full_list_t const* get_full_list() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(limited_list_t)]; - char dummy2[sizeof(full_list_t)]; - - }; - asn::variant var; - index_type index {0}; -}; -/* -CellInformation-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { -{ ID id-ABSInformation CRITICALITY ignore EXTENSION ABSInformation PRESENCE optional }| -{ ID id-InvokeIndication CRITICALITY ignore EXTENSION InvokeIndication PRESENCE optional }| -{ ID id-IntendedULDLConfiguration CRITICALITY ignore EXTENSION SubframeAssignment PRESENCE optional }| -{ ID id-ExtendedULInterferenceOverloadInfo CRITICALITY ignore EXTENSION ExtendedULInterferenceOverloadInfo PRESENCE optional }| -{ ID id-CoMPInformation CRITICALITY ignore EXTENSION CoMPInformation PRESENCE optional }| -{ ID id-DynamicDLTransmissionInformation CRITICALITY ignore EXTENSION DynamicDLTransmissionInformation PRESENCE optional }, - ... -} -*/ - -struct CellInformation_Item_ExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 7; } - void clear() {type = 0;} - void select_id_ABSInformation() { set(id_ABSInformation); type=1;} - void select_id_InvokeIndication() { set(id_InvokeIndication); type=2;} - void select_id_IntendedULDLConfiguration() { set(id_IntendedULDLConfiguration); type=3;} - void select_id_ExtendedULInterferenceOverloadInfo() { set(id_ExtendedULInterferenceOverloadInfo); type=4;} - void select_id_CoMPInformation() { set(id_CoMPInformation); type=5;} - void select_id_DynamicDLTransmissionInformation() { set(id_DynamicDLTransmissionInformation); type=6;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_ABSInformation)) { type = 1; return true; } - else if(equal(id_InvokeIndication)) { type = 2; return true; } - else if(equal(id_IntendedULDLConfiguration)) { type = 3; return true; } - else if(equal(id_ExtendedULInterferenceOverloadInfo)) { type = 4; return true; } - else if(equal(id_CoMPInformation)) { type = 5; return true; } - else if(equal(id_DynamicDLTransmissionInformation)) { type = 6; return true; } - else { type = 7; 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_ABSInformation);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_InvokeIndication);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_IntendedULDLConfiguration);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_ExtendedULInterferenceOverloadInfo);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_CoMPInformation);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_DynamicDLTransmissionInformation);} return false; - case 7: type = 7; 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 == 7; } - void clear() {type = 0;} - void select_id_ABSInformation() { set(ignore); type=1;} - void select_id_InvokeIndication() { set(ignore); type=2;} - void select_id_IntendedULDLConfiguration() { set(ignore); type=3;} - void select_id_ExtendedULInterferenceOverloadInfo() { set(ignore); type=4;} - void select_id_CoMPInformation() { set(ignore); type=5;} - void select_id_DynamicDLTransmissionInformation() { set(ignore); type=6;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else if(equal(ignore)) { type = 6; return true; } - else { type = 7; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false; - case 7: type = 7; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - ABSInformation& select_id_ABSInformation() { return set(1); } - ABSInformation const* get_id_ABSInformation() const { return get(1); } - InvokeIndication& select_id_InvokeIndication() { return set(2); } - InvokeIndication const* get_id_InvokeIndication() const { return get(2); } - SubframeAssignment& select_id_IntendedULDLConfiguration() { return set(3); } - SubframeAssignment const* get_id_IntendedULDLConfiguration() const { return get(3); } - ExtendedULInterferenceOverloadInfo& select_id_ExtendedULInterferenceOverloadInfo() { return set(4); } - ExtendedULInterferenceOverloadInfo const* get_id_ExtendedULInterferenceOverloadInfo() const { return get(4); } - CoMPInformation& select_id_CoMPInformation() { return set(5); } - CoMPInformation const* get_id_CoMPInformation() const { return get(5); } - DynamicDLTransmissionInformation& select_id_DynamicDLTransmissionInformation() { return set(6); } - DynamicDLTransmissionInformation const* get_id_DynamicDLTransmissionInformation() const { return get(6); } - bool is_unknown() const { return type == 7; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_ABSInformation()); return true; - case 2: v(select_id_InvokeIndication()); return true; - case 3: v(select_id_IntendedULDLConfiguration()); return true; - case 4: v(select_id_ExtendedULInterferenceOverloadInfo()); return true; - case 5: v(select_id_CoMPInformation()); return true; - case 6: v(select_id_DynamicDLTransmissionInformation()); return true; - case 7: if(type != 7) {clear(); asn::base::set();} type = 7; 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; - } - 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(ABSInformation)]; - char dummy2[sizeof(CoMPInformation)]; - char dummy3[sizeof(DynamicDLTransmissionInformation)]; - char dummy4[sizeof(ExtendedULInterferenceOverloadInfo)]; - char dummy5[sizeof(InvokeIndication)]; - char dummy6[sizeof(SubframeAssignment)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 7; } - void clear() {type = 0;} - void select_id_ABSInformation() { set(optional); type=1;} - void select_id_InvokeIndication() { set(optional); type=2;} - void select_id_IntendedULDLConfiguration() { set(optional); type=3;} - void select_id_ExtendedULInterferenceOverloadInfo() { set(optional); type=4;} - void select_id_CoMPInformation() { set(optional); type=5;} - void select_id_DynamicDLTransmissionInformation() { set(optional); type=6;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else { type = 7; 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(optional);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; 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}; - - }; - -}; -/* -CellInformation-Item ::= SEQUENCE { - cell-ID ECGI, - ul-InterferenceOverloadIndication UL-InterferenceOverloadIndication OPTIONAL, - ul-HighInterferenceIndicationInfo UL-HighInterferenceIndicationInfo OPTIONAL, - relativeNarrowbandTxPower RelativeNarrowbandTxPower OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {CellInformation-Item-ExtIEs} } OPTIONAL, - ... -} -*/ - -struct CellInformation_Item : asn::sequence<5, 0, true, 4> -{ - static constexpr const char* name() {return "CellInformation-Item";} - using parent_t = asn::sequence<5, 0, true, 4>; - struct cell_ID_t : ECGI - { - static constexpr const char* name() {return "cell_ID_t";} - using parent_t = ECGI; - - }; - cell_ID_t& ref_cell_ID() {return cell_ID;} - cell_ID_t const& ref_cell_ID() const {return cell_ID;} - struct ul_InterferenceOverloadIndication_t : UL_InterferenceOverloadIndication - { - static constexpr const char* name() {return "ul_InterferenceOverloadIndication_t";} - using parent_t = UL_InterferenceOverloadIndication; - static constexpr bool optional = true; - - }; - ul_InterferenceOverloadIndication_t& set_ul_InterferenceOverloadIndication() { ul_InterferenceOverloadIndication.setpresent(true); return ul_InterferenceOverloadIndication;} - ul_InterferenceOverloadIndication_t const* get_ul_InterferenceOverloadIndication() const {return ul_InterferenceOverloadIndication.is_valid() ? &ul_InterferenceOverloadIndication : nullptr;} - struct ul_HighInterferenceIndicationInfo_t : UL_HighInterferenceIndicationInfo - { - static constexpr const char* name() {return "ul_HighInterferenceIndicationInfo_t";} - using parent_t = UL_HighInterferenceIndicationInfo; - static constexpr bool optional = true; - - }; - ul_HighInterferenceIndicationInfo_t& set_ul_HighInterferenceIndicationInfo() { ul_HighInterferenceIndicationInfo.setpresent(true); return ul_HighInterferenceIndicationInfo;} - ul_HighInterferenceIndicationInfo_t const* get_ul_HighInterferenceIndicationInfo() const {return ul_HighInterferenceIndicationInfo.is_valid() ? &ul_HighInterferenceIndicationInfo : nullptr;} - struct relativeNarrowbandTxPower_t : RelativeNarrowbandTxPower - { - static constexpr const char* name() {return "relativeNarrowbandTxPower_t";} - using parent_t = RelativeNarrowbandTxPower; - static constexpr bool optional = true; - - }; - relativeNarrowbandTxPower_t& set_relativeNarrowbandTxPower() { relativeNarrowbandTxPower.setpresent(true); return relativeNarrowbandTxPower;} - relativeNarrowbandTxPower_t const* get_relativeNarrowbandTxPower() const {return relativeNarrowbandTxPower.is_valid() ? &relativeNarrowbandTxPower : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(cell_ID); - v(ul_InterferenceOverloadIndication); - v(ul_HighInterferenceIndicationInfo); - v(relativeNarrowbandTxPower); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(cell_ID); - v(ul_InterferenceOverloadIndication); - v(ul_HighInterferenceIndicationInfo); - v(relativeNarrowbandTxPower); - v(iE_Extensions); - - }; - void clear() - { - cell_ID.clear(); - ul_InterferenceOverloadIndication.clear(); - ul_HighInterferenceIndicationInfo.clear(); - relativeNarrowbandTxPower.clear(); - iE_Extensions.clear(); - - }; - private: - cell_ID_t cell_ID; - ul_InterferenceOverloadIndication_t ul_InterferenceOverloadIndication; - ul_HighInterferenceIndicationInfo_t ul_HighInterferenceIndicationInfo; - relativeNarrowbandTxPower_t relativeNarrowbandTxPower; - iE_Extensions_t iE_Extensions; - -}; -/* -CellInformation-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-CellInformation-Item CRITICALITY ignore TYPE CellInformation-Item PRESENCE mandatory } -} -*/ - -struct CellInformation_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_CellInformation_Item() { set(id_CellInformation_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_CellInformation_Item)) { type = 1; 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_CellInformation_Item);} return false; - 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;} - void clear() {type = 0;} - void select_id_CellInformation_Item() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; 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(ignore);} return false; - 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - CellInformation_Item& select_id_CellInformation_Item() { return set(1); } - CellInformation_Item const* get_id_CellInformation_Item() const { return get(1); } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_CellInformation_Item()); 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; - } - 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(CellInformation_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_CellInformation_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; 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(mandatory);} return false; - 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}; - - }; - -}; -/* -CellInformation-List ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ProtocolIE-Single-Container { {CellInformation-ItemIEs} } -*/ - -struct CellInformation_List_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "CellInformation_List_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct CellInformation_List : asn::sequenceof -{ - static constexpr const char* name() {return "CellInformation-List";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -CellMeasurementResult-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { - { ID id-CompositeAvailableCapacityGroup CRITICALITY ignore EXTENSION CompositeAvailableCapacityGroup PRESENCE optional}| - { ID id-ABS-Status CRITICALITY ignore EXTENSION ABS-Status PRESENCE optional}| - { ID id-RSRPMRList CRITICALITY ignore EXTENSION RSRPMRList PRESENCE optional}| - { ID id-CSIReportList CRITICALITY ignore EXTENSION CSIReportList PRESENCE optional}| - { ID id-CellReportingIndicator CRITICALITY ignore EXTENSION CellReportingIndicator PRESENCE optional}, - ... -} -*/ - -struct CellMeasurementResult_Item_ExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_CompositeAvailableCapacityGroup() { set(id_CompositeAvailableCapacityGroup); type=1;} - void select_id_ABS_Status() { set(id_ABS_Status); type=2;} - void select_id_RSRPMRList() { set(id_RSRPMRList); type=3;} - void select_id_CSIReportList() { set(id_CSIReportList); type=4;} - void select_id_CellReportingIndicator() { set(id_CellReportingIndicator); type=5;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_CompositeAvailableCapacityGroup)) { type = 1; return true; } - else if(equal(id_ABS_Status)) { type = 2; return true; } - else if(equal(id_RSRPMRList)) { type = 3; return true; } - else if(equal(id_CSIReportList)) { type = 4; return true; } - else if(equal(id_CellReportingIndicator)) { type = 5; return true; } - else { type = 6; 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_CompositeAvailableCapacityGroup);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_ABS_Status);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_RSRPMRList);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_CSIReportList);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_CellReportingIndicator);} return false; - case 6: type = 6; 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 == 6; } - void clear() {type = 0;} - void select_id_CompositeAvailableCapacityGroup() { set(ignore); type=1;} - void select_id_ABS_Status() { set(ignore); type=2;} - void select_id_RSRPMRList() { set(ignore); type=3;} - void select_id_CSIReportList() { set(ignore); type=4;} - void select_id_CellReportingIndicator() { set(ignore); type=5;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else { type = 6; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false; - case 6: type = 6; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - CompositeAvailableCapacityGroup& select_id_CompositeAvailableCapacityGroup() { return set(1); } - CompositeAvailableCapacityGroup const* get_id_CompositeAvailableCapacityGroup() const { return get(1); } - ABS_Status& select_id_ABS_Status() { return set(2); } - ABS_Status const* get_id_ABS_Status() const { return get(2); } - RSRPMRList& select_id_RSRPMRList() { return set(3); } - RSRPMRList const* get_id_RSRPMRList() const { return get(3); } - CSIReportList& select_id_CSIReportList() { return set(4); } - CSIReportList const* get_id_CSIReportList() const { return get(4); } - CellReportingIndicator& select_id_CellReportingIndicator() { return set(5); } - CellReportingIndicator const* get_id_CellReportingIndicator() const { return get(5); } - bool is_unknown() const { return type == 6; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_CompositeAvailableCapacityGroup()); return true; - case 2: v(select_id_ABS_Status()); return true; - case 3: v(select_id_RSRPMRList()); return true; - case 4: v(select_id_CSIReportList()); return true; - case 5: v(select_id_CellReportingIndicator()); return true; - case 6: if(type != 6) {clear(); asn::base::set();} type = 6; 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; - } - 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(ABS_Status)]; - char dummy2[sizeof(CSIReportList)]; - char dummy3[sizeof(CellReportingIndicator)]; - char dummy4[sizeof(CompositeAvailableCapacityGroup)]; - char dummy5[sizeof(RSRPMRList)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_CompositeAvailableCapacityGroup() { set(optional); type=1;} - void select_id_ABS_Status() { set(optional); type=2;} - void select_id_RSRPMRList() { set(optional); type=3;} - void select_id_CSIReportList() { set(optional); type=4;} - void select_id_CellReportingIndicator() { set(optional); type=5;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else { type = 6; 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(optional);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; 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}; - - }; - -}; -/* -CellMeasurementResult-Item ::= SEQUENCE { - cell-ID ECGI, - hWLoadIndicator HWLoadIndicator OPTIONAL, - s1TNLLoadIndicator S1TNLLoadIndicator OPTIONAL, - radioResourceStatus RadioResourceStatus OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {CellMeasurementResult-Item-ExtIEs} } OPTIONAL, - ... -} -*/ - -struct CellMeasurementResult_Item : asn::sequence<5, 0, true, 4> -{ - static constexpr const char* name() {return "CellMeasurementResult-Item";} - using parent_t = asn::sequence<5, 0, true, 4>; - struct cell_ID_t : ECGI - { - static constexpr const char* name() {return "cell_ID_t";} - using parent_t = ECGI; - - }; - cell_ID_t& ref_cell_ID() {return cell_ID;} - cell_ID_t const& ref_cell_ID() const {return cell_ID;} - struct hWLoadIndicator_t : HWLoadIndicator - { - static constexpr const char* name() {return "hWLoadIndicator_t";} - using parent_t = HWLoadIndicator; - static constexpr bool optional = true; - - }; - hWLoadIndicator_t& set_hWLoadIndicator() { hWLoadIndicator.setpresent(true); return hWLoadIndicator;} - hWLoadIndicator_t const* get_hWLoadIndicator() const {return hWLoadIndicator.is_valid() ? &hWLoadIndicator : nullptr;} - struct s1TNLLoadIndicator_t : S1TNLLoadIndicator - { - static constexpr const char* name() {return "s1TNLLoadIndicator_t";} - using parent_t = S1TNLLoadIndicator; - static constexpr bool optional = true; - - }; - s1TNLLoadIndicator_t& set_s1TNLLoadIndicator() { s1TNLLoadIndicator.setpresent(true); return s1TNLLoadIndicator;} - s1TNLLoadIndicator_t const* get_s1TNLLoadIndicator() const {return s1TNLLoadIndicator.is_valid() ? &s1TNLLoadIndicator : nullptr;} - struct radioResourceStatus_t : RadioResourceStatus - { - static constexpr const char* name() {return "radioResourceStatus_t";} - using parent_t = RadioResourceStatus; - static constexpr bool optional = true; - - }; - radioResourceStatus_t& set_radioResourceStatus() { radioResourceStatus.setpresent(true); return radioResourceStatus;} - radioResourceStatus_t const* get_radioResourceStatus() const {return radioResourceStatus.is_valid() ? &radioResourceStatus : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(cell_ID); - v(hWLoadIndicator); - v(s1TNLLoadIndicator); - v(radioResourceStatus); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(cell_ID); - v(hWLoadIndicator); - v(s1TNLLoadIndicator); - v(radioResourceStatus); - v(iE_Extensions); - - }; - void clear() - { - cell_ID.clear(); - hWLoadIndicator.clear(); - s1TNLLoadIndicator.clear(); - radioResourceStatus.clear(); - iE_Extensions.clear(); - - }; - private: - cell_ID_t cell_ID; - hWLoadIndicator_t hWLoadIndicator; - s1TNLLoadIndicator_t s1TNLLoadIndicator; - radioResourceStatus_t radioResourceStatus; - iE_Extensions_t iE_Extensions; - -}; -/* -CellMeasurementResult-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-CellMeasurementResult-Item CRITICALITY ignore TYPE CellMeasurementResult-Item PRESENCE mandatory} -} -*/ - -struct CellMeasurementResult_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_CellMeasurementResult_Item() { set(id_CellMeasurementResult_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_CellMeasurementResult_Item)) { type = 1; 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_CellMeasurementResult_Item);} return false; - 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;} - void clear() {type = 0;} - void select_id_CellMeasurementResult_Item() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; 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(ignore);} return false; - 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - CellMeasurementResult_Item& select_id_CellMeasurementResult_Item() { return set(1); } - CellMeasurementResult_Item const* get_id_CellMeasurementResult_Item() const { return get(1); } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_CellMeasurementResult_Item()); 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; - } - 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(CellMeasurementResult_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_CellMeasurementResult_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; 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(mandatory);} return false; - 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}; - - }; - -}; -/* -CellMeasurementResult-List ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ProtocolIE-Single-Container { {CellMeasurementResult-ItemIEs} } -*/ - -struct CellMeasurementResult_List_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "CellMeasurementResult_List_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct CellMeasurementResult_List : asn::sequenceof -{ - static constexpr const char* name() {return "CellMeasurementResult-List";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -CellToReport-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct CellToReport_Item_ExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -CellToReport-Item ::= SEQUENCE { - cell-ID ECGI, - iE-Extensions ProtocolExtensionContainer { {CellToReport-Item-ExtIEs} } OPTIONAL, - ... -} -*/ - -struct CellToReport_Item : asn::sequence<2, 0, true, 1> -{ - static constexpr const char* name() {return "CellToReport-Item";} - using parent_t = asn::sequence<2, 0, true, 1>; - struct cell_ID_t : ECGI - { - static constexpr const char* name() {return "cell_ID_t";} - using parent_t = ECGI; - - }; - cell_ID_t& ref_cell_ID() {return cell_ID;} - cell_ID_t const& ref_cell_ID() const {return cell_ID;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(cell_ID); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(cell_ID); - v(iE_Extensions); - - }; - void clear() - { - cell_ID.clear(); - iE_Extensions.clear(); - - }; - private: - cell_ID_t cell_ID; - iE_Extensions_t iE_Extensions; - -}; -/* -CellToReport-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-CellToReport-Item CRITICALITY ignore TYPE CellToReport-Item PRESENCE mandatory} -} -*/ - -struct CellToReport_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_CellToReport_Item() { set(id_CellToReport_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_CellToReport_Item)) { type = 1; 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_CellToReport_Item);} return false; - 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;} - void clear() {type = 0;} - void select_id_CellToReport_Item() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; 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(ignore);} return false; - 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - CellToReport_Item& select_id_CellToReport_Item() { return set(1); } - CellToReport_Item const* get_id_CellToReport_Item() const { return get(1); } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_CellToReport_Item()); 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; - } - 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(CellToReport_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_CellToReport_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; 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(mandatory);} return false; - 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}; - - }; - -}; -/* -CellToReport-List ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ProtocolIE-Single-Container { {CellToReport-ItemIEs} } -*/ - -struct CellToReport_List_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "CellToReport_List_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct CellToReport_List : asn::sequenceof -{ - static constexpr const char* name() {return "CellToReport-List";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -MeasurementFailureCause-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct MeasurementFailureCause_Item_ExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -MeasurementFailureCause-Item ::= SEQUENCE { - measurementFailedReportCharacteristics ReportCharacteristics, - cause Cause, - iE-Extensions ProtocolExtensionContainer { {MeasurementFailureCause-Item-ExtIEs} } OPTIONAL, - ... -} -*/ - -struct MeasurementFailureCause_Item : asn::sequence<3, 0, true, 1> -{ - static constexpr const char* name() {return "MeasurementFailureCause-Item";} - using parent_t = asn::sequence<3, 0, true, 1>; - struct measurementFailedReportCharacteristics_t : ReportCharacteristics - { - static constexpr const char* name() {return "measurementFailedReportCharacteristics_t";} - using parent_t = ReportCharacteristics; - - }; - measurementFailedReportCharacteristics_t& ref_measurementFailedReportCharacteristics() {return measurementFailedReportCharacteristics;} - measurementFailedReportCharacteristics_t const& ref_measurementFailedReportCharacteristics() const {return measurementFailedReportCharacteristics;} - struct cause_t : Cause - { - static constexpr const char* name() {return "cause_t";} - using parent_t = Cause; - - }; - cause_t& ref_cause() {return cause;} - cause_t const& ref_cause() const {return cause;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(measurementFailedReportCharacteristics); - v(cause); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(measurementFailedReportCharacteristics); - v(cause); - v(iE_Extensions); - - }; - void clear() - { - measurementFailedReportCharacteristics.clear(); - cause.clear(); - iE_Extensions.clear(); - - }; - private: - measurementFailedReportCharacteristics_t measurementFailedReportCharacteristics; - cause_t cause; - iE_Extensions_t iE_Extensions; - -}; -/* -MeasurementFailureCause-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-MeasurementFailureCause-Item CRITICALITY ignore TYPE MeasurementFailureCause-Item PRESENCE mandatory} -} -*/ - -struct MeasurementFailureCause_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_MeasurementFailureCause_Item() { set(id_MeasurementFailureCause_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeasurementFailureCause_Item)) { type = 1; 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_MeasurementFailureCause_Item);} return false; - 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;} - void clear() {type = 0;} - void select_id_MeasurementFailureCause_Item() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; 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(ignore);} return false; - 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - MeasurementFailureCause_Item& select_id_MeasurementFailureCause_Item() { return set(1); } - MeasurementFailureCause_Item const* get_id_MeasurementFailureCause_Item() const { return get(1); } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeasurementFailureCause_Item()); 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; - } - 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(MeasurementFailureCause_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_MeasurementFailureCause_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; 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(mandatory);} return false; - 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}; - - }; - -}; -/* -MeasurementFailureCause-List ::= SEQUENCE (SIZE (1..maxFailedMeasObjects)) OF ProtocolIE-Single-Container { {MeasurementFailureCause-ItemIEs} } -*/ - -struct MeasurementFailureCause_List_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "MeasurementFailureCause_List_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct MeasurementFailureCause_List : asn::sequenceof -{ - static constexpr const char* name() {return "MeasurementFailureCause-List";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -CompleteFailureCauseInformation-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct CompleteFailureCauseInformation_Item_ExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -CompleteFailureCauseInformation-Item ::= SEQUENCE { - cell-ID ECGI, - measurementFailureCause-List MeasurementFailureCause-List, - iE-Extensions ProtocolExtensionContainer { {CompleteFailureCauseInformation-Item-ExtIEs} } OPTIONAL, - ... -} -*/ - -struct CompleteFailureCauseInformation_Item : asn::sequence<3, 0, true, 1> -{ - static constexpr const char* name() {return "CompleteFailureCauseInformation-Item";} - using parent_t = asn::sequence<3, 0, true, 1>; - struct cell_ID_t : ECGI - { - static constexpr const char* name() {return "cell_ID_t";} - using parent_t = ECGI; - - }; - cell_ID_t& ref_cell_ID() {return cell_ID;} - cell_ID_t const& ref_cell_ID() const {return cell_ID;} - struct measurementFailureCause_List_t : MeasurementFailureCause_List - { - static constexpr const char* name() {return "measurementFailureCause_List_t";} - using parent_t = MeasurementFailureCause_List; - - }; - measurementFailureCause_List_t& ref_measurementFailureCause_List() {return measurementFailureCause_List;} - measurementFailureCause_List_t const& ref_measurementFailureCause_List() const {return measurementFailureCause_List;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(cell_ID); - v(measurementFailureCause_List); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(cell_ID); - v(measurementFailureCause_List); - v(iE_Extensions); - - }; - void clear() - { - cell_ID.clear(); - measurementFailureCause_List.clear(); - iE_Extensions.clear(); - - }; - private: - cell_ID_t cell_ID; - measurementFailureCause_List_t measurementFailureCause_List; - iE_Extensions_t iE_Extensions; - -}; -/* -CompleteFailureCauseInformation-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-CompleteFailureCauseInformation-Item CRITICALITY ignore TYPE CompleteFailureCauseInformation-Item PRESENCE mandatory} -} -*/ - -struct CompleteFailureCauseInformation_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_CompleteFailureCauseInformation_Item() { set(id_CompleteFailureCauseInformation_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_CompleteFailureCauseInformation_Item)) { type = 1; 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_CompleteFailureCauseInformation_Item);} return false; - 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;} - void clear() {type = 0;} - void select_id_CompleteFailureCauseInformation_Item() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; 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(ignore);} return false; - 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - CompleteFailureCauseInformation_Item& select_id_CompleteFailureCauseInformation_Item() { return set(1); } - CompleteFailureCauseInformation_Item const* get_id_CompleteFailureCauseInformation_Item() const { return get(1); } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_CompleteFailureCauseInformation_Item()); 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; - } - 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(CompleteFailureCauseInformation_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_CompleteFailureCauseInformation_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; 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(mandatory);} return false; - 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}; - - }; - -}; -/* -CompleteFailureCauseInformation-List ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ProtocolIE-Single-Container { {CompleteFailureCauseInformation-ItemIEs} } -*/ - -struct CompleteFailureCauseInformation_List_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "CompleteFailureCauseInformation_List_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct CompleteFailureCauseInformation_List : asn::sequenceof -{ - static constexpr const char* name() {return "CompleteFailureCauseInformation-List";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-DataForwardingAddress-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_DataForwardingAddress_ItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-DataForwardingAddress-Item ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - dl-GTPtunnelEndpoint GTPtunnelEndpoint, - iE-Extensions ProtocolExtensionContainer { {E-RABs-DataForwardingAddress-ItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_DataForwardingAddress_Item : asn::sequence<3, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-DataForwardingAddress-Item";} - using parent_t = asn::sequence<3, 0, true, 1>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct dl_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "dl_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - - }; - dl_GTPtunnelEndpoint_t& ref_dl_GTPtunnelEndpoint() {return dl_GTPtunnelEndpoint;} - dl_GTPtunnelEndpoint_t const& ref_dl_GTPtunnelEndpoint() const {return dl_GTPtunnelEndpoint;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(dl_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(dl_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - dl_GTPtunnelEndpoint.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - dl_GTPtunnelEndpoint_t dl_GTPtunnelEndpoint; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-DataForwardingAddress-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-DataForwardingAddress-Item CRITICALITY ignore TYPE E-RABs-DataForwardingAddress-Item PRESENCE mandatory}, - ... -} -*/ - -struct E_RABs_DataForwardingAddress_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_DataForwardingAddress_Item() { set(id_E_RABs_DataForwardingAddress_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_DataForwardingAddress_Item)) { type = 1; return true; } - else { type = 2; 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_E_RABs_DataForwardingAddress_Item);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_E_RABs_DataForwardingAddress_Item() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_DataForwardingAddress_Item& select_id_E_RABs_DataForwardingAddress_Item() { return set(1); } - E_RABs_DataForwardingAddress_Item const* get_id_E_RABs_DataForwardingAddress_Item() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_DataForwardingAddress_Item()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(E_RABs_DataForwardingAddress_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_DataForwardingAddress_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-DataForwardingAddress-List ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-DataForwardingAddress-ItemIEs} } -*/ - -struct E_RABs_DataForwardingAddress_List_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_DataForwardingAddress_List_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_DataForwardingAddress_List : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-DataForwardingAddress-List";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -DataForwardingAddressIndication-IEs X2AP-PROTOCOL-IES ::= { - { ID id-New-eNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional }| - { ID id-Old-eNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-Old-eNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional }| - { ID id-E-RABs-DataForwardingAddress-List CRITICALITY ignore TYPE E-RABs-DataForwardingAddress-List PRESENCE mandatory}, - ... -} -*/ - -struct DataForwardingAddressIndication_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 5; } - void clear() {type = 0;} - void select_id_New_eNB_UE_X2AP_ID_Extension() { set(id_New_eNB_UE_X2AP_ID_Extension); type=1;} - void select_id_Old_eNB_UE_X2AP_ID() { set(id_Old_eNB_UE_X2AP_ID); type=2;} - void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(id_Old_eNB_UE_X2AP_ID_Extension); type=3;} - void select_id_E_RABs_DataForwardingAddress_List() { set(id_E_RABs_DataForwardingAddress_List); type=4;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_New_eNB_UE_X2AP_ID_Extension)) { type = 1; return true; } - else if(equal(id_Old_eNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_Old_eNB_UE_X2AP_ID_Extension)) { type = 3; return true; } - else if(equal(id_E_RABs_DataForwardingAddress_List)) { type = 4; return true; } - else { type = 5; 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_New_eNB_UE_X2AP_ID_Extension);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID_Extension);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_E_RABs_DataForwardingAddress_List);} return false; - case 5: type = 5; 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 == 5; } - void clear() {type = 0;} - void select_id_New_eNB_UE_X2AP_ID_Extension() { set(ignore); type=1;} - void select_id_Old_eNB_UE_X2AP_ID() { set(ignore); type=2;} - void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(ignore); type=3;} - void select_id_E_RABs_DataForwardingAddress_List() { set(ignore); type=4;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else { type = 5; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID_Extension& select_id_New_eNB_UE_X2AP_ID_Extension() { return set(1); } - UE_X2AP_ID_Extension const* get_id_New_eNB_UE_X2AP_ID_Extension() const { return get(1); } - UE_X2AP_ID& select_id_Old_eNB_UE_X2AP_ID() { return set(2); } - UE_X2AP_ID const* get_id_Old_eNB_UE_X2AP_ID() const { return get(2); } - UE_X2AP_ID_Extension& select_id_Old_eNB_UE_X2AP_ID_Extension() { return set(3); } - UE_X2AP_ID_Extension const* get_id_Old_eNB_UE_X2AP_ID_Extension() const { return get(3); } - E_RABs_DataForwardingAddress_List& select_id_E_RABs_DataForwardingAddress_List() { return set(4); } - E_RABs_DataForwardingAddress_List const* get_id_E_RABs_DataForwardingAddress_List() const { return get(4); } - bool is_unknown() const { return type == 5; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: var.destroy(); break; - case 4: 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_New_eNB_UE_X2AP_ID_Extension()); return true; - case 2: v(select_id_Old_eNB_UE_X2AP_ID()); return true; - case 3: v(select_id_Old_eNB_UE_X2AP_ID_Extension()); return true; - case 4: v(select_id_E_RABs_DataForwardingAddress_List()); return true; - case 5: if(type != 5) {clear(); asn::base::set();} type = 5; 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; - } - 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(E_RABs_DataForwardingAddress_List)]; - char dummy2[sizeof(UE_X2AP_ID)]; - char dummy3[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 5; } - void clear() {type = 0;} - void select_id_New_eNB_UE_X2AP_ID_Extension() { set(optional); type=1;} - void select_id_Old_eNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(optional); type=3;} - void select_id_E_RABs_DataForwardingAddress_List() { set(mandatory); type=4;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else if(equal(mandatory)) { type = 4; return true; } - else { type = 5; 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(optional);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(mandatory);} return false; - case 5: type = 5; 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}; - - }; - -}; -/* -DataForwardingAddressIndication ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{DataForwardingAddressIndication-IEs}}, - ... -} -*/ - -struct DataForwardingAddressIndication : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "DataForwardingAddressIndication";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -E-RABs-Admitted-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_Admitted_Item_ExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-Admitted-Item ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - uL-GTP-TunnelEndpoint GTPtunnelEndpoint OPTIONAL, - dL-GTP-TunnelEndpoint GTPtunnelEndpoint OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABs-Admitted-Item-ExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_Admitted_Item : asn::sequence<4, 0, true, 3> -{ - static constexpr const char* name() {return "E-RABs-Admitted-Item";} - using parent_t = asn::sequence<4, 0, true, 3>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct uL_GTP_TunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "uL_GTP_TunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - uL_GTP_TunnelEndpoint_t& set_uL_GTP_TunnelEndpoint() { uL_GTP_TunnelEndpoint.setpresent(true); return uL_GTP_TunnelEndpoint;} - uL_GTP_TunnelEndpoint_t const* get_uL_GTP_TunnelEndpoint() const {return uL_GTP_TunnelEndpoint.is_valid() ? &uL_GTP_TunnelEndpoint : nullptr;} - struct dL_GTP_TunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "dL_GTP_TunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - dL_GTP_TunnelEndpoint_t& set_dL_GTP_TunnelEndpoint() { dL_GTP_TunnelEndpoint.setpresent(true); return dL_GTP_TunnelEndpoint;} - dL_GTP_TunnelEndpoint_t const* get_dL_GTP_TunnelEndpoint() const {return dL_GTP_TunnelEndpoint.is_valid() ? &dL_GTP_TunnelEndpoint : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(uL_GTP_TunnelEndpoint); - v(dL_GTP_TunnelEndpoint); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(uL_GTP_TunnelEndpoint); - v(dL_GTP_TunnelEndpoint); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - uL_GTP_TunnelEndpoint.clear(); - dL_GTP_TunnelEndpoint.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - uL_GTP_TunnelEndpoint_t uL_GTP_TunnelEndpoint; - dL_GTP_TunnelEndpoint_t dL_GTP_TunnelEndpoint; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-Admitted-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-Admitted-Item CRITICALITY ignore TYPE E-RABs-Admitted-Item PRESENCE mandatory } -} -*/ - -struct E_RABs_Admitted_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_E_RABs_Admitted_Item() { set(id_E_RABs_Admitted_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_Admitted_Item)) { type = 1; 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_E_RABs_Admitted_Item);} return false; - 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;} - void clear() {type = 0;} - void select_id_E_RABs_Admitted_Item() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; 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(ignore);} return false; - 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_Admitted_Item& select_id_E_RABs_Admitted_Item() { return set(1); } - E_RABs_Admitted_Item const* get_id_E_RABs_Admitted_Item() const { return get(1); } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_Admitted_Item()); 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; - } - 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(E_RABs_Admitted_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_E_RABs_Admitted_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; 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(mandatory);} return false; - 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}; - - }; - -}; -/* -E-RABs-Admitted-List ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-Admitted-ItemIEs} } -*/ - -struct E_RABs_Admitted_List_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_Admitted_List_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_Admitted_List : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-Admitted-List";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-Admitted-ToBeAdded-Item-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - s1-DL-GTPtunnelEndpoint GTPtunnelEndpoint, - dL-Forwarding-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - uL-Forwarding-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABs-Admitted-ToBeAdded-Item-SCG-BearerExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer : asn::sequence<5, 0, true, 3> -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer";} - using parent_t = asn::sequence<5, 0, true, 3>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct s1_DL_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "s1_DL_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - - }; - s1_DL_GTPtunnelEndpoint_t& ref_s1_DL_GTPtunnelEndpoint() {return s1_DL_GTPtunnelEndpoint;} - s1_DL_GTPtunnelEndpoint_t const& ref_s1_DL_GTPtunnelEndpoint() const {return s1_DL_GTPtunnelEndpoint;} - struct dL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "dL_Forwarding_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - dL_Forwarding_GTPtunnelEndpoint_t& set_dL_Forwarding_GTPtunnelEndpoint() { dL_Forwarding_GTPtunnelEndpoint.setpresent(true); return dL_Forwarding_GTPtunnelEndpoint;} - dL_Forwarding_GTPtunnelEndpoint_t const* get_dL_Forwarding_GTPtunnelEndpoint() const {return dL_Forwarding_GTPtunnelEndpoint.is_valid() ? &dL_Forwarding_GTPtunnelEndpoint : nullptr;} - struct uL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "uL_Forwarding_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - uL_Forwarding_GTPtunnelEndpoint_t& set_uL_Forwarding_GTPtunnelEndpoint() { uL_Forwarding_GTPtunnelEndpoint.setpresent(true); return uL_Forwarding_GTPtunnelEndpoint;} - uL_Forwarding_GTPtunnelEndpoint_t const* get_uL_Forwarding_GTPtunnelEndpoint() const {return uL_Forwarding_GTPtunnelEndpoint.is_valid() ? &uL_Forwarding_GTPtunnelEndpoint : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(s1_DL_GTPtunnelEndpoint); - v(dL_Forwarding_GTPtunnelEndpoint); - v(uL_Forwarding_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(s1_DL_GTPtunnelEndpoint); - v(dL_Forwarding_GTPtunnelEndpoint); - v(uL_Forwarding_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - s1_DL_GTPtunnelEndpoint.clear(); - dL_Forwarding_GTPtunnelEndpoint.clear(); - uL_Forwarding_GTPtunnelEndpoint.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - s1_DL_GTPtunnelEndpoint_t s1_DL_GTPtunnelEndpoint; - dL_Forwarding_GTPtunnelEndpoint_t dL_Forwarding_GTPtunnelEndpoint; - uL_Forwarding_GTPtunnelEndpoint_t uL_Forwarding_GTPtunnelEndpoint; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-Admitted-ToBeAdded-Item-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeAdded-Item-Split-Bearer ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - seNB-GTPtunnelEndpoint GTPtunnelEndpoint, - iE-Extensions ProtocolExtensionContainer { {E-RABs-Admitted-ToBeAdded-Item-Split-BearerExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_Admitted_ToBeAdded_Item_Split_Bearer : asn::sequence<3, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-Item-Split-Bearer";} - using parent_t = asn::sequence<3, 0, true, 1>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct seNB_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "seNB_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - - }; - seNB_GTPtunnelEndpoint_t& ref_seNB_GTPtunnelEndpoint() {return seNB_GTPtunnelEndpoint;} - seNB_GTPtunnelEndpoint_t const& ref_seNB_GTPtunnelEndpoint() const {return seNB_GTPtunnelEndpoint;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(seNB_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(seNB_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - seNB_GTPtunnelEndpoint.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - seNB_GTPtunnelEndpoint_t seNB_GTPtunnelEndpoint; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-Admitted-ToBeAdded-Item ::= CHOICE { - sCG-Bearer E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer, - split-Bearer E-RABs-Admitted-ToBeAdded-Item-Split-Bearer, - ... -} -*/ - -struct E_RABs_Admitted_ToBeAdded_Item : asn::choice<2, 0, true> -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-Item";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~E_RABs_Admitted_ToBeAdded_Item() {clear();} - struct sCG_Bearer_t : E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer - { - static constexpr const char* name() {return "sCG_Bearer_t";} - using parent_t = E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer; - - }; - struct split_Bearer_t : E_RABs_Admitted_ToBeAdded_Item_Split_Bearer - { - static constexpr const char* name() {return "split_Bearer_t";} - using parent_t = E_RABs_Admitted_ToBeAdded_Item_Split_Bearer; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - sCG_Bearer_t& select_sCG_Bearer() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - sCG_Bearer_t const* get_sCG_Bearer() const { if(get_index() == 1) { return &var.as();} return nullptr; } - split_Bearer_t& select_split_Bearer() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - split_Bearer_t const* get_split_Bearer() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(sCG_Bearer_t)]; - char dummy2[sizeof(split_Bearer_t)]; - - }; - asn::variant var; - index_type index {0}; -}; -/* -E-RABs-Admitted-ToBeAdded-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-Admitted-ToBeAdded-Item CRITICALITY ignore TYPE E-RABs-Admitted-ToBeAdded-Item PRESENCE mandatory} -} -*/ - -struct E_RABs_Admitted_ToBeAdded_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_E_RABs_Admitted_ToBeAdded_Item() { set(id_E_RABs_Admitted_ToBeAdded_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_Admitted_ToBeAdded_Item)) { type = 1; 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_E_RABs_Admitted_ToBeAdded_Item);} return false; - 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;} - void clear() {type = 0;} - void select_id_E_RABs_Admitted_ToBeAdded_Item() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; 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(ignore);} return false; - 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_Admitted_ToBeAdded_Item& select_id_E_RABs_Admitted_ToBeAdded_Item() { return set(1); } - E_RABs_Admitted_ToBeAdded_Item const* get_id_E_RABs_Admitted_ToBeAdded_Item() const { return get(1); } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_Admitted_ToBeAdded_Item()); 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; - } - 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(E_RABs_Admitted_ToBeAdded_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_E_RABs_Admitted_ToBeAdded_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; 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(mandatory);} return false; - 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeAdded-List ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-Admitted-ToBeAdded-ItemIEs} } -*/ - -struct E_RABs_Admitted_ToBeAdded_List_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_Admitted_ToBeAdded_List_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_Admitted_ToBeAdded_List : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-List";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - s1-DL-GTPtunnelEndpoint GTPtunnelEndpoint, - dL-Forwarding-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - uL-Forwarding-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-BearerExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer : asn::sequence<5, 0, true, 3> -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer";} - using parent_t = asn::sequence<5, 0, true, 3>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct s1_DL_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "s1_DL_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - - }; - s1_DL_GTPtunnelEndpoint_t& ref_s1_DL_GTPtunnelEndpoint() {return s1_DL_GTPtunnelEndpoint;} - s1_DL_GTPtunnelEndpoint_t const& ref_s1_DL_GTPtunnelEndpoint() const {return s1_DL_GTPtunnelEndpoint;} - struct dL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "dL_Forwarding_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - dL_Forwarding_GTPtunnelEndpoint_t& set_dL_Forwarding_GTPtunnelEndpoint() { dL_Forwarding_GTPtunnelEndpoint.setpresent(true); return dL_Forwarding_GTPtunnelEndpoint;} - dL_Forwarding_GTPtunnelEndpoint_t const* get_dL_Forwarding_GTPtunnelEndpoint() const {return dL_Forwarding_GTPtunnelEndpoint.is_valid() ? &dL_Forwarding_GTPtunnelEndpoint : nullptr;} - struct uL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "uL_Forwarding_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - uL_Forwarding_GTPtunnelEndpoint_t& set_uL_Forwarding_GTPtunnelEndpoint() { uL_Forwarding_GTPtunnelEndpoint.setpresent(true); return uL_Forwarding_GTPtunnelEndpoint;} - uL_Forwarding_GTPtunnelEndpoint_t const* get_uL_Forwarding_GTPtunnelEndpoint() const {return uL_Forwarding_GTPtunnelEndpoint.is_valid() ? &uL_Forwarding_GTPtunnelEndpoint : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(s1_DL_GTPtunnelEndpoint); - v(dL_Forwarding_GTPtunnelEndpoint); - v(uL_Forwarding_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(s1_DL_GTPtunnelEndpoint); - v(dL_Forwarding_GTPtunnelEndpoint); - v(uL_Forwarding_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - s1_DL_GTPtunnelEndpoint.clear(); - dL_Forwarding_GTPtunnelEndpoint.clear(); - uL_Forwarding_GTPtunnelEndpoint.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - s1_DL_GTPtunnelEndpoint_t s1_DL_GTPtunnelEndpoint; - dL_Forwarding_GTPtunnelEndpoint_t dL_Forwarding_GTPtunnelEndpoint; - uL_Forwarding_GTPtunnelEndpoint_t uL_Forwarding_GTPtunnelEndpoint; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-Admitted-ToBeAdded-ModAckItem-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - seNB-GTPtunnelEndpoint GTPtunnelEndpoint, - iE-Extensions ProtocolExtensionContainer { {E-RABs-Admitted-ToBeAdded-ModAckItem-Split-BearerExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer : asn::sequence<3, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer";} - using parent_t = asn::sequence<3, 0, true, 1>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct seNB_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "seNB_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - - }; - seNB_GTPtunnelEndpoint_t& ref_seNB_GTPtunnelEndpoint() {return seNB_GTPtunnelEndpoint;} - seNB_GTPtunnelEndpoint_t const& ref_seNB_GTPtunnelEndpoint() const {return seNB_GTPtunnelEndpoint;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(seNB_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(seNB_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - seNB_GTPtunnelEndpoint.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - seNB_GTPtunnelEndpoint_t seNB_GTPtunnelEndpoint; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-Admitted-ToBeAdded-ModAckItem ::= CHOICE { - sCG-Bearer E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer, - split-Bearer E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer, - ... -} -*/ - -struct E_RABs_Admitted_ToBeAdded_ModAckItem : asn::choice<2, 0, true> -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-ModAckItem";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~E_RABs_Admitted_ToBeAdded_ModAckItem() {clear();} - struct sCG_Bearer_t : E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer - { - static constexpr const char* name() {return "sCG_Bearer_t";} - using parent_t = E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer; - - }; - struct split_Bearer_t : E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer - { - static constexpr const char* name() {return "split_Bearer_t";} - using parent_t = E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - sCG_Bearer_t& select_sCG_Bearer() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - sCG_Bearer_t const* get_sCG_Bearer() const { if(get_index() == 1) { return &var.as();} return nullptr; } - split_Bearer_t& select_split_Bearer() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - split_Bearer_t const* get_split_Bearer() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(sCG_Bearer_t)]; - char dummy2[sizeof(split_Bearer_t)]; - - }; - asn::variant var; - index_type index {0}; -}; -/* -E-RABs-Admitted-ToBeAdded-ModAckItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-Admitted-ToBeAdded-ModAckItem CRITICALITY ignore TYPE E-RABs-Admitted-ToBeAdded-ModAckItem PRESENCE mandatory} -} -*/ - -struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_E_RABs_Admitted_ToBeAdded_ModAckItem() { set(id_E_RABs_Admitted_ToBeAdded_ModAckItem); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_Admitted_ToBeAdded_ModAckItem)) { type = 1; 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_E_RABs_Admitted_ToBeAdded_ModAckItem);} return false; - 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;} - void clear() {type = 0;} - void select_id_E_RABs_Admitted_ToBeAdded_ModAckItem() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; 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(ignore);} return false; - 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_Admitted_ToBeAdded_ModAckItem& select_id_E_RABs_Admitted_ToBeAdded_ModAckItem() { return set(1); } - E_RABs_Admitted_ToBeAdded_ModAckItem const* get_id_E_RABs_Admitted_ToBeAdded_ModAckItem() const { return get(1); } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_Admitted_ToBeAdded_ModAckItem()); 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; - } - 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(E_RABs_Admitted_ToBeAdded_ModAckItem)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_E_RABs_Admitted_ToBeAdded_ModAckItem() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; 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(mandatory);} return false; - 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeAdded-ModAckList ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-Admitted-ToBeAdded-ModAckItemIEs} } -*/ - -struct E_RABs_Admitted_ToBeAdded_ModAckList_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_Admitted_ToBeAdded_ModAckList_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_Admitted_ToBeAdded_ModAckList : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-ModAckList";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= { - { ID id-uLpDCPSnLength CRITICALITY ignore EXTENSION PDCPSnLength PRESENCE optional}| - { ID id-dLPDCPSnLength CRITICALITY ignore EXTENSION PDCPSnLength PRESENCE optional}, - ... -} -*/ - -struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_uLpDCPSnLength() { set(id_uLpDCPSnLength); type=1;} - void select_id_dLPDCPSnLength() { set(id_dLPDCPSnLength); type=2;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_uLpDCPSnLength)) { type = 1; return true; } - else if(equal(id_dLPDCPSnLength)) { type = 2; return true; } - else { type = 3; 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_uLpDCPSnLength);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_dLPDCPSnLength);} return false; - case 3: type = 3; 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 == 3; } - void clear() {type = 0;} - void select_id_uLpDCPSnLength() { set(ignore); type=1;} - void select_id_dLPDCPSnLength() { set(ignore); type=2;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else { type = 3; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - PDCPSnLength& select_id_uLpDCPSnLength() { return set(1); } - PDCPSnLength const* get_id_uLpDCPSnLength() const { return get(1); } - PDCPSnLength& select_id_dLPDCPSnLength() { return set(2); } - PDCPSnLength const* get_id_dLPDCPSnLength() const { return get(2); } - bool is_unknown() const { return type == 3; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_uLpDCPSnLength()); return true; - case 2: v(select_id_dLPDCPSnLength()); return true; - case 3: if(type != 3) {clear(); asn::base::set();} type = 3; 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; - } - 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(PDCPSnLength)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_uLpDCPSnLength() { set(optional); type=1;} - void select_id_dLPDCPSnLength() { set(optional); type=2;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else { type = 3; 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(optional);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent ::= SEQUENCE { - s1-DL-GTPtunnelEndpoint GTPtunnelEndpoint, - sgNB-UL-GTP-TEIDatPDCP GTPtunnelEndpoint OPTIONAL, --- This IE shall be present if MCG resource IE in the the EN-DC Resource Configuration IE is set to “present” -- - rlc-Mode RLCMode OPTIONAL, --- This IE shall be present if MCG resource IE in the the EN-DC Resource Configuration IE is set to “present” -- - dL-Forwarding-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - uL-Forwarding-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - mCG-E-RAB-Level-QoS-Parameters E-RAB-Level-QoS-Parameters OPTIONAL, --- This IE shall be present if MCG resource and SCG resource IEs in the the EN-DC Resource Configuration IE are set to “present” and the GBR QoS Information IE is present in the Requested MCG E-RAB Level QoS Parameters IE -- - uL-Configuration ULConfiguration OPTIONAL, --- This IE shall be present if MCG resource and SCG resources IEs in the the EN-DC Resource Configuration IE are set to “present” -- - iE-Extensions ProtocolExtensionContainer { {E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresentExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent : asn::sequence<8, 0, true, 7> -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent";} - using parent_t = asn::sequence<8, 0, true, 7>; - struct s1_DL_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "s1_DL_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - - }; - s1_DL_GTPtunnelEndpoint_t& ref_s1_DL_GTPtunnelEndpoint() {return s1_DL_GTPtunnelEndpoint;} - s1_DL_GTPtunnelEndpoint_t const& ref_s1_DL_GTPtunnelEndpoint() const {return s1_DL_GTPtunnelEndpoint;} - struct sgNB_UL_GTP_TEIDatPDCP_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "sgNB_UL_GTP_TEIDatPDCP_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - sgNB_UL_GTP_TEIDatPDCP_t& set_sgNB_UL_GTP_TEIDatPDCP() { sgNB_UL_GTP_TEIDatPDCP.setpresent(true); return sgNB_UL_GTP_TEIDatPDCP;} - sgNB_UL_GTP_TEIDatPDCP_t const* get_sgNB_UL_GTP_TEIDatPDCP() const {return sgNB_UL_GTP_TEIDatPDCP.is_valid() ? &sgNB_UL_GTP_TEIDatPDCP : nullptr;} - struct rlc_Mode_t : RLCMode - { - static constexpr const char* name() {return "rlc_Mode_t";} - using parent_t = RLCMode; - static constexpr bool optional = true; - - }; - rlc_Mode_t& set_rlc_Mode() { rlc_Mode.setpresent(true); return rlc_Mode;} - rlc_Mode_t const* get_rlc_Mode() const {return rlc_Mode.is_valid() ? &rlc_Mode : nullptr;} - struct dL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "dL_Forwarding_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - dL_Forwarding_GTPtunnelEndpoint_t& set_dL_Forwarding_GTPtunnelEndpoint() { dL_Forwarding_GTPtunnelEndpoint.setpresent(true); return dL_Forwarding_GTPtunnelEndpoint;} - dL_Forwarding_GTPtunnelEndpoint_t const* get_dL_Forwarding_GTPtunnelEndpoint() const {return dL_Forwarding_GTPtunnelEndpoint.is_valid() ? &dL_Forwarding_GTPtunnelEndpoint : nullptr;} - struct uL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "uL_Forwarding_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - uL_Forwarding_GTPtunnelEndpoint_t& set_uL_Forwarding_GTPtunnelEndpoint() { uL_Forwarding_GTPtunnelEndpoint.setpresent(true); return uL_Forwarding_GTPtunnelEndpoint;} - uL_Forwarding_GTPtunnelEndpoint_t const* get_uL_Forwarding_GTPtunnelEndpoint() const {return uL_Forwarding_GTPtunnelEndpoint.is_valid() ? &uL_Forwarding_GTPtunnelEndpoint : nullptr;} - struct mCG_E_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters - { - static constexpr const char* name() {return "mCG_E_RAB_Level_QoS_Parameters_t";} - using parent_t = E_RAB_Level_QoS_Parameters; - static constexpr bool optional = true; - - }; - mCG_E_RAB_Level_QoS_Parameters_t& set_mCG_E_RAB_Level_QoS_Parameters() { mCG_E_RAB_Level_QoS_Parameters.setpresent(true); return mCG_E_RAB_Level_QoS_Parameters;} - mCG_E_RAB_Level_QoS_Parameters_t const* get_mCG_E_RAB_Level_QoS_Parameters() const {return mCG_E_RAB_Level_QoS_Parameters.is_valid() ? &mCG_E_RAB_Level_QoS_Parameters : nullptr;} - struct uL_Configuration_t : ULConfiguration - { - static constexpr const char* name() {return "uL_Configuration_t";} - using parent_t = ULConfiguration; - static constexpr bool optional = true; - - }; - uL_Configuration_t& set_uL_Configuration() { uL_Configuration.setpresent(true); return uL_Configuration;} - uL_Configuration_t const* get_uL_Configuration() const {return uL_Configuration.is_valid() ? &uL_Configuration : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(s1_DL_GTPtunnelEndpoint); - v(sgNB_UL_GTP_TEIDatPDCP); - v(rlc_Mode); - v(dL_Forwarding_GTPtunnelEndpoint); - v(uL_Forwarding_GTPtunnelEndpoint); - v(mCG_E_RAB_Level_QoS_Parameters); - v(uL_Configuration); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(s1_DL_GTPtunnelEndpoint); - v(sgNB_UL_GTP_TEIDatPDCP); - v(rlc_Mode); - v(dL_Forwarding_GTPtunnelEndpoint); - v(uL_Forwarding_GTPtunnelEndpoint); - v(mCG_E_RAB_Level_QoS_Parameters); - v(uL_Configuration); - v(iE_Extensions); - - }; - void clear() - { - s1_DL_GTPtunnelEndpoint.clear(); - sgNB_UL_GTP_TEIDatPDCP.clear(); - rlc_Mode.clear(); - dL_Forwarding_GTPtunnelEndpoint.clear(); - uL_Forwarding_GTPtunnelEndpoint.clear(); - mCG_E_RAB_Level_QoS_Parameters.clear(); - uL_Configuration.clear(); - iE_Extensions.clear(); - - }; - private: - s1_DL_GTPtunnelEndpoint_t s1_DL_GTPtunnelEndpoint; - sgNB_UL_GTP_TEIDatPDCP_t sgNB_UL_GTP_TEIDatPDCP; - rlc_Mode_t rlc_Mode; - dL_Forwarding_GTPtunnelEndpoint_t dL_Forwarding_GTPtunnelEndpoint; - uL_Forwarding_GTPtunnelEndpoint_t uL_Forwarding_GTPtunnelEndpoint; - mCG_E_RAB_Level_QoS_Parameters_t mCG_E_RAB_Level_QoS_Parameters; - uL_Configuration_t uL_Configuration; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= { - { ID id-lCID CRITICALITY ignore EXTENSION LCID PRESENCE optional}, - ... -} -*/ - -struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_lCID() { set(id_lCID); type=1;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_lCID)) { type = 1; return true; } - else { type = 2; 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_lCID);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_lCID() { set(ignore); type=1;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - LCID& select_id_lCID() { return set(1); } - LCID const* get_id_lCID() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_lCID()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(LCID)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_lCID() { set(optional); type=1;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else { type = 2; 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(optional);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent ::= SEQUENCE { - sgNB-DL-GTP-TEIDatSCG GTPtunnelEndpoint, - secondary-sgNB-DL-GTP-TEIDatSCG GTPtunnelEndpoint OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresentExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent : asn::sequence<3, 0, true, 2> -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent";} - using parent_t = asn::sequence<3, 0, true, 2>; - struct sgNB_DL_GTP_TEIDatSCG_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "sgNB_DL_GTP_TEIDatSCG_t";} - using parent_t = GTPtunnelEndpoint; - - }; - sgNB_DL_GTP_TEIDatSCG_t& ref_sgNB_DL_GTP_TEIDatSCG() {return sgNB_DL_GTP_TEIDatSCG;} - sgNB_DL_GTP_TEIDatSCG_t const& ref_sgNB_DL_GTP_TEIDatSCG() const {return sgNB_DL_GTP_TEIDatSCG;} - struct secondary_sgNB_DL_GTP_TEIDatSCG_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "secondary_sgNB_DL_GTP_TEIDatSCG_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - secondary_sgNB_DL_GTP_TEIDatSCG_t& set_secondary_sgNB_DL_GTP_TEIDatSCG() { secondary_sgNB_DL_GTP_TEIDatSCG.setpresent(true); return secondary_sgNB_DL_GTP_TEIDatSCG;} - secondary_sgNB_DL_GTP_TEIDatSCG_t const* get_secondary_sgNB_DL_GTP_TEIDatSCG() const {return secondary_sgNB_DL_GTP_TEIDatSCG.is_valid() ? &secondary_sgNB_DL_GTP_TEIDatSCG : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(sgNB_DL_GTP_TEIDatSCG); - v(secondary_sgNB_DL_GTP_TEIDatSCG); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(sgNB_DL_GTP_TEIDatSCG); - v(secondary_sgNB_DL_GTP_TEIDatSCG); - v(iE_Extensions); - - }; - void clear() - { - sgNB_DL_GTP_TEIDatSCG.clear(); - secondary_sgNB_DL_GTP_TEIDatSCG.clear(); - iE_Extensions.clear(); - - }; - private: - sgNB_DL_GTP_TEIDatSCG_t sgNB_DL_GTP_TEIDatSCG; - secondary_sgNB_DL_GTP_TEIDatSCG_t secondary_sgNB_DL_GTP_TEIDatSCG; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeAdded-SgNBAddReqAck-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - en-DC-ResourceConfiguration EN-DC-ResourceConfiguration, - resource-configuration CHOICE { - sgNBPDCPpresent E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent, - sgNBPDCPnotpresent E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent, - ... - }, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeAdded-SgNBAddReqAck-ItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item : asn::sequence<4, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item";} - using parent_t = asn::sequence<4, 0, true, 1>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct en_DC_ResourceConfiguration_t : EN_DC_ResourceConfiguration - { - static constexpr const char* name() {return "en_DC_ResourceConfiguration_t";} - using parent_t = EN_DC_ResourceConfiguration; - - }; - en_DC_ResourceConfiguration_t& ref_en_DC_ResourceConfiguration() {return en_DC_ResourceConfiguration;} - en_DC_ResourceConfiguration_t const& ref_en_DC_ResourceConfiguration() const {return en_DC_ResourceConfiguration;} - struct resource_configuration_t : asn::choice<2, 0, true> - { - static constexpr const char* name() {return "resource_configuration_t";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~resource_configuration_t() {clear();} - struct sgNBPDCPpresent_t : E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent - { - static constexpr const char* name() {return "sgNBPDCPpresent_t";} - using parent_t = E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent; - - }; - struct sgNBPDCPnotpresent_t : E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent - { - static constexpr const char* name() {return "sgNBPDCPnotpresent_t";} - using parent_t = E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - sgNBPDCPpresent_t& select_sgNBPDCPpresent() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - sgNBPDCPpresent_t const* get_sgNBPDCPpresent() const { if(get_index() == 1) { return &var.as();} return nullptr; } - sgNBPDCPnotpresent_t& select_sgNBPDCPnotpresent() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - sgNBPDCPnotpresent_t const* get_sgNBPDCPnotpresent() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(sgNBPDCPpresent_t)]; - char dummy2[sizeof(sgNBPDCPnotpresent_t)]; - - }; - asn::variant var; - index_type index {0}; - }; - resource_configuration_t& ref_resource_configuration() {return resource_configuration;} - resource_configuration_t const& ref_resource_configuration() const {return resource_configuration;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(en_DC_ResourceConfiguration); - v(resource_configuration); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(en_DC_ResourceConfiguration); - v(resource_configuration); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - en_DC_ResourceConfiguration.clear(); - resource_configuration.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - en_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; - resource_configuration_t resource_configuration; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item CRITICALITY ignore TYPE E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item PRESENCE mandatory} -} -*/ - -struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item() { set(id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item)) { type = 1; 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_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item);} return false; - 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;} - void clear() {type = 0;} - void select_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; 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(ignore);} return false; - 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item& select_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item() { return set(1); } - E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item const* get_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item() const { return get(1); } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item()); 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; - } - 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(E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; 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(mandatory);} return false; - 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-ItemIEs} } -*/ - -struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= { - { ID id-uLpDCPSnLength CRITICALITY ignore EXTENSION PDCPSnLength PRESENCE optional}| - { ID id-dLPDCPSnLength CRITICALITY ignore EXTENSION PDCPSnLength PRESENCE optional}, - ... -} -*/ - -struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_uLpDCPSnLength() { set(id_uLpDCPSnLength); type=1;} - void select_id_dLPDCPSnLength() { set(id_dLPDCPSnLength); type=2;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_uLpDCPSnLength)) { type = 1; return true; } - else if(equal(id_dLPDCPSnLength)) { type = 2; return true; } - else { type = 3; 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_uLpDCPSnLength);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_dLPDCPSnLength);} return false; - case 3: type = 3; 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 == 3; } - void clear() {type = 0;} - void select_id_uLpDCPSnLength() { set(ignore); type=1;} - void select_id_dLPDCPSnLength() { set(ignore); type=2;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else { type = 3; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - PDCPSnLength& select_id_uLpDCPSnLength() { return set(1); } - PDCPSnLength const* get_id_uLpDCPSnLength() const { return get(1); } - PDCPSnLength& select_id_dLPDCPSnLength() { return set(2); } - PDCPSnLength const* get_id_dLPDCPSnLength() const { return get(2); } - bool is_unknown() const { return type == 3; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_uLpDCPSnLength()); return true; - case 2: v(select_id_dLPDCPSnLength()); return true; - case 3: if(type != 3) {clear(); asn::base::set();} type = 3; 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; - } - 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(PDCPSnLength)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_uLpDCPSnLength() { set(optional); type=1;} - void select_id_dLPDCPSnLength() { set(optional); type=2;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else { type = 3; 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(optional);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent ::= SEQUENCE { - s1-DL-GTPtunnelEndpoint GTPtunnelEndpoint, - sgNB-UL-GTP-TEIDatPDCP GTPtunnelEndpoint OPTIONAL, --- This IE shall be present if MCG resource IE in the the EN-DC Resource Configuration IE are set to “present” -- - rlc-Mode RLCMode OPTIONAL, --- This IE shall be present if MCG resource IE in the the EN-DC Resource Configuration IE are set to “present” -- - dL-Forwarding-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - uL-Forwarding-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - mCG-E-RAB-Level-QoS-Parameters E-RAB-Level-QoS-Parameters OPTIONAL, --- This IE shall be present if MCG resource and SCG resource IEs in the the EN-DC Resource Configuration IE are set to “present” and the GBR QoS Information IE is present in the Requested MCG E-RAB Level QoS Parameters IE -- - uL-Configuration ULConfiguration OPTIONAL, --- This IE shall be present if MCG resource and SCG resources IEs in the the EN-DC Resource Configuration IE are set to “present” -- - iE-Extensions ProtocolExtensionContainer { {E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresentExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent : asn::sequence<8, 0, true, 7> -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent";} - using parent_t = asn::sequence<8, 0, true, 7>; - struct s1_DL_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "s1_DL_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - - }; - s1_DL_GTPtunnelEndpoint_t& ref_s1_DL_GTPtunnelEndpoint() {return s1_DL_GTPtunnelEndpoint;} - s1_DL_GTPtunnelEndpoint_t const& ref_s1_DL_GTPtunnelEndpoint() const {return s1_DL_GTPtunnelEndpoint;} - struct sgNB_UL_GTP_TEIDatPDCP_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "sgNB_UL_GTP_TEIDatPDCP_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - sgNB_UL_GTP_TEIDatPDCP_t& set_sgNB_UL_GTP_TEIDatPDCP() { sgNB_UL_GTP_TEIDatPDCP.setpresent(true); return sgNB_UL_GTP_TEIDatPDCP;} - sgNB_UL_GTP_TEIDatPDCP_t const* get_sgNB_UL_GTP_TEIDatPDCP() const {return sgNB_UL_GTP_TEIDatPDCP.is_valid() ? &sgNB_UL_GTP_TEIDatPDCP : nullptr;} - struct rlc_Mode_t : RLCMode - { - static constexpr const char* name() {return "rlc_Mode_t";} - using parent_t = RLCMode; - static constexpr bool optional = true; - - }; - rlc_Mode_t& set_rlc_Mode() { rlc_Mode.setpresent(true); return rlc_Mode;} - rlc_Mode_t const* get_rlc_Mode() const {return rlc_Mode.is_valid() ? &rlc_Mode : nullptr;} - struct dL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "dL_Forwarding_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - dL_Forwarding_GTPtunnelEndpoint_t& set_dL_Forwarding_GTPtunnelEndpoint() { dL_Forwarding_GTPtunnelEndpoint.setpresent(true); return dL_Forwarding_GTPtunnelEndpoint;} - dL_Forwarding_GTPtunnelEndpoint_t const* get_dL_Forwarding_GTPtunnelEndpoint() const {return dL_Forwarding_GTPtunnelEndpoint.is_valid() ? &dL_Forwarding_GTPtunnelEndpoint : nullptr;} - struct uL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "uL_Forwarding_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - uL_Forwarding_GTPtunnelEndpoint_t& set_uL_Forwarding_GTPtunnelEndpoint() { uL_Forwarding_GTPtunnelEndpoint.setpresent(true); return uL_Forwarding_GTPtunnelEndpoint;} - uL_Forwarding_GTPtunnelEndpoint_t const* get_uL_Forwarding_GTPtunnelEndpoint() const {return uL_Forwarding_GTPtunnelEndpoint.is_valid() ? &uL_Forwarding_GTPtunnelEndpoint : nullptr;} - struct mCG_E_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters - { - static constexpr const char* name() {return "mCG_E_RAB_Level_QoS_Parameters_t";} - using parent_t = E_RAB_Level_QoS_Parameters; - static constexpr bool optional = true; - - }; - mCG_E_RAB_Level_QoS_Parameters_t& set_mCG_E_RAB_Level_QoS_Parameters() { mCG_E_RAB_Level_QoS_Parameters.setpresent(true); return mCG_E_RAB_Level_QoS_Parameters;} - mCG_E_RAB_Level_QoS_Parameters_t const* get_mCG_E_RAB_Level_QoS_Parameters() const {return mCG_E_RAB_Level_QoS_Parameters.is_valid() ? &mCG_E_RAB_Level_QoS_Parameters : nullptr;} - struct uL_Configuration_t : ULConfiguration - { - static constexpr const char* name() {return "uL_Configuration_t";} - using parent_t = ULConfiguration; - static constexpr bool optional = true; - - }; - uL_Configuration_t& set_uL_Configuration() { uL_Configuration.setpresent(true); return uL_Configuration;} - uL_Configuration_t const* get_uL_Configuration() const {return uL_Configuration.is_valid() ? &uL_Configuration : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(s1_DL_GTPtunnelEndpoint); - v(sgNB_UL_GTP_TEIDatPDCP); - v(rlc_Mode); - v(dL_Forwarding_GTPtunnelEndpoint); - v(uL_Forwarding_GTPtunnelEndpoint); - v(mCG_E_RAB_Level_QoS_Parameters); - v(uL_Configuration); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(s1_DL_GTPtunnelEndpoint); - v(sgNB_UL_GTP_TEIDatPDCP); - v(rlc_Mode); - v(dL_Forwarding_GTPtunnelEndpoint); - v(uL_Forwarding_GTPtunnelEndpoint); - v(mCG_E_RAB_Level_QoS_Parameters); - v(uL_Configuration); - v(iE_Extensions); - - }; - void clear() - { - s1_DL_GTPtunnelEndpoint.clear(); - sgNB_UL_GTP_TEIDatPDCP.clear(); - rlc_Mode.clear(); - dL_Forwarding_GTPtunnelEndpoint.clear(); - uL_Forwarding_GTPtunnelEndpoint.clear(); - mCG_E_RAB_Level_QoS_Parameters.clear(); - uL_Configuration.clear(); - iE_Extensions.clear(); - - }; - private: - s1_DL_GTPtunnelEndpoint_t s1_DL_GTPtunnelEndpoint; - sgNB_UL_GTP_TEIDatPDCP_t sgNB_UL_GTP_TEIDatPDCP; - rlc_Mode_t rlc_Mode; - dL_Forwarding_GTPtunnelEndpoint_t dL_Forwarding_GTPtunnelEndpoint; - uL_Forwarding_GTPtunnelEndpoint_t uL_Forwarding_GTPtunnelEndpoint; - mCG_E_RAB_Level_QoS_Parameters_t mCG_E_RAB_Level_QoS_Parameters; - uL_Configuration_t uL_Configuration; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= { - {ID id-lCID CRITICALITY ignore EXTENSION LCID PRESENCE optional}, - ... -} -*/ - -struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_lCID() { set(id_lCID); type=1;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_lCID)) { type = 1; return true; } - else { type = 2; 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_lCID);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_lCID() { set(ignore); type=1;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - LCID& select_id_lCID() { return set(1); } - LCID const* get_id_lCID() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_lCID()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(LCID)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_lCID() { set(optional); type=1;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else { type = 2; 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(optional);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent ::= SEQUENCE { - sgNB-DL-GTP-TEIDatSCG GTPtunnelEndpoint, - secondary-sgNB-DL-GTP-TEIDatSCG GTPtunnelEndpoint OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresentExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent : asn::sequence<3, 0, true, 2> -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent";} - using parent_t = asn::sequence<3, 0, true, 2>; - struct sgNB_DL_GTP_TEIDatSCG_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "sgNB_DL_GTP_TEIDatSCG_t";} - using parent_t = GTPtunnelEndpoint; - - }; - sgNB_DL_GTP_TEIDatSCG_t& ref_sgNB_DL_GTP_TEIDatSCG() {return sgNB_DL_GTP_TEIDatSCG;} - sgNB_DL_GTP_TEIDatSCG_t const& ref_sgNB_DL_GTP_TEIDatSCG() const {return sgNB_DL_GTP_TEIDatSCG;} - struct secondary_sgNB_DL_GTP_TEIDatSCG_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "secondary_sgNB_DL_GTP_TEIDatSCG_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - secondary_sgNB_DL_GTP_TEIDatSCG_t& set_secondary_sgNB_DL_GTP_TEIDatSCG() { secondary_sgNB_DL_GTP_TEIDatSCG.setpresent(true); return secondary_sgNB_DL_GTP_TEIDatSCG;} - secondary_sgNB_DL_GTP_TEIDatSCG_t const* get_secondary_sgNB_DL_GTP_TEIDatSCG() const {return secondary_sgNB_DL_GTP_TEIDatSCG.is_valid() ? &secondary_sgNB_DL_GTP_TEIDatSCG : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(sgNB_DL_GTP_TEIDatSCG); - v(secondary_sgNB_DL_GTP_TEIDatSCG); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(sgNB_DL_GTP_TEIDatSCG); - v(secondary_sgNB_DL_GTP_TEIDatSCG); - v(iE_Extensions); - - }; - void clear() - { - sgNB_DL_GTP_TEIDatSCG.clear(); - secondary_sgNB_DL_GTP_TEIDatSCG.clear(); - iE_Extensions.clear(); - - }; - private: - sgNB_DL_GTP_TEIDatSCG_t sgNB_DL_GTP_TEIDatSCG; - secondary_sgNB_DL_GTP_TEIDatSCG_t secondary_sgNB_DL_GTP_TEIDatSCG; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-Admitted-ToBeAdded-SgNBModAck-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeAdded-SgNBModAck-Item ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - en-DC-ResourceConfiguration EN-DC-ResourceConfiguration, - resource-configuration CHOICE { - sgNBPDCPpresent E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent, - sgNBPDCPnotpresent E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent, - ... - }, - iE-Extensions ProtocolExtensionContainer { {E-RABs-Admitted-ToBeAdded-SgNBModAck-ItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item : asn::sequence<4, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item";} - using parent_t = asn::sequence<4, 0, true, 1>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct en_DC_ResourceConfiguration_t : EN_DC_ResourceConfiguration - { - static constexpr const char* name() {return "en_DC_ResourceConfiguration_t";} - using parent_t = EN_DC_ResourceConfiguration; - - }; - en_DC_ResourceConfiguration_t& ref_en_DC_ResourceConfiguration() {return en_DC_ResourceConfiguration;} - en_DC_ResourceConfiguration_t const& ref_en_DC_ResourceConfiguration() const {return en_DC_ResourceConfiguration;} - struct resource_configuration_t : asn::choice<2, 0, true> - { - static constexpr const char* name() {return "resource_configuration_t";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~resource_configuration_t() {clear();} - struct sgNBPDCPpresent_t : E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent - { - static constexpr const char* name() {return "sgNBPDCPpresent_t";} - using parent_t = E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent; - - }; - struct sgNBPDCPnotpresent_t : E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent - { - static constexpr const char* name() {return "sgNBPDCPnotpresent_t";} - using parent_t = E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - sgNBPDCPpresent_t& select_sgNBPDCPpresent() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - sgNBPDCPpresent_t const* get_sgNBPDCPpresent() const { if(get_index() == 1) { return &var.as();} return nullptr; } - sgNBPDCPnotpresent_t& select_sgNBPDCPnotpresent() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - sgNBPDCPnotpresent_t const* get_sgNBPDCPnotpresent() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(sgNBPDCPpresent_t)]; - char dummy2[sizeof(sgNBPDCPnotpresent_t)]; - - }; - asn::variant var; - index_type index {0}; - }; - resource_configuration_t& ref_resource_configuration() {return resource_configuration;} - resource_configuration_t const& ref_resource_configuration() const {return resource_configuration;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(en_DC_ResourceConfiguration); - v(resource_configuration); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(en_DC_ResourceConfiguration); - v(resource_configuration); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - en_DC_ResourceConfiguration.clear(); - resource_configuration.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - en_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; - resource_configuration_t resource_configuration; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-Admitted-ToBeAdded-SgNBModAck-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-Admitted-ToBeAdded-SgNBModAck-Item CRITICALITY ignore TYPE E-RABs-Admitted-ToBeAdded-SgNBModAck-Item PRESENCE mandatory} -} -*/ - -struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item() { set(id_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item)) { type = 1; 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_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item);} return false; - 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;} - void clear() {type = 0;} - void select_id_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; 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(ignore);} return false; - 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_Admitted_ToBeAdded_SgNBModAck_Item& select_id_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item() { return set(1); } - E_RABs_Admitted_ToBeAdded_SgNBModAck_Item const* get_id_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item() const { return get(1); } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item()); 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; - } - 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(E_RABs_Admitted_ToBeAdded_SgNBModAck_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; 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(mandatory);} return false; - 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeAdded-SgNBModAckList ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-Admitted-ToBeAdded-SgNBModAck-ItemIEs} } -*/ - -struct E_RABs_Admitted_ToBeAdded_SgNBModAckList_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_Admitted_ToBeAdded_SgNBModAckList_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_Admitted_ToBeAdded_SgNBModAckList : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-SgNBModAckList";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-Admitted-ToBeModified-ModAckItem-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - s1-DL-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABs-Admitted-ToBeModified-ModAckItem-SCG-BearerExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer : asn::sequence<3, 0, true, 2> -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer";} - using parent_t = asn::sequence<3, 0, true, 2>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct s1_DL_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "s1_DL_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - s1_DL_GTPtunnelEndpoint_t& set_s1_DL_GTPtunnelEndpoint() { s1_DL_GTPtunnelEndpoint.setpresent(true); return s1_DL_GTPtunnelEndpoint;} - s1_DL_GTPtunnelEndpoint_t const* get_s1_DL_GTPtunnelEndpoint() const {return s1_DL_GTPtunnelEndpoint.is_valid() ? &s1_DL_GTPtunnelEndpoint : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(s1_DL_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(s1_DL_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - s1_DL_GTPtunnelEndpoint.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - s1_DL_GTPtunnelEndpoint_t s1_DL_GTPtunnelEndpoint; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-Admitted-ToBeModified-ModAckItem-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - seNB-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABs-Admitted-ToBeModified-ModAckItem-Split-BearerExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer : asn::sequence<3, 0, true, 2> -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer";} - using parent_t = asn::sequence<3, 0, true, 2>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct seNB_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "seNB_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - seNB_GTPtunnelEndpoint_t& set_seNB_GTPtunnelEndpoint() { seNB_GTPtunnelEndpoint.setpresent(true); return seNB_GTPtunnelEndpoint;} - seNB_GTPtunnelEndpoint_t const* get_seNB_GTPtunnelEndpoint() const {return seNB_GTPtunnelEndpoint.is_valid() ? &seNB_GTPtunnelEndpoint : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(seNB_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(seNB_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - seNB_GTPtunnelEndpoint.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - seNB_GTPtunnelEndpoint_t seNB_GTPtunnelEndpoint; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-Admitted-ToBeModified-ModAckItem ::= CHOICE { - sCG-Bearer E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer, - split-Bearer E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer, - ... -} -*/ - -struct E_RABs_Admitted_ToBeModified_ModAckItem : asn::choice<2, 0, true> -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeModified-ModAckItem";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~E_RABs_Admitted_ToBeModified_ModAckItem() {clear();} - struct sCG_Bearer_t : E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer - { - static constexpr const char* name() {return "sCG_Bearer_t";} - using parent_t = E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer; - - }; - struct split_Bearer_t : E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer - { - static constexpr const char* name() {return "split_Bearer_t";} - using parent_t = E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - sCG_Bearer_t& select_sCG_Bearer() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - sCG_Bearer_t const* get_sCG_Bearer() const { if(get_index() == 1) { return &var.as();} return nullptr; } - split_Bearer_t& select_split_Bearer() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - split_Bearer_t const* get_split_Bearer() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(sCG_Bearer_t)]; - char dummy2[sizeof(split_Bearer_t)]; - - }; - asn::variant var; - index_type index {0}; -}; -/* -E-RABs-Admitted-ToBeModified-ModAckItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-Admitted-ToBeModified-ModAckItem CRITICALITY ignore TYPE E-RABs-Admitted-ToBeModified-ModAckItem PRESENCE mandatory} -} -*/ - -struct E_RABs_Admitted_ToBeModified_ModAckItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_E_RABs_Admitted_ToBeModified_ModAckItem() { set(id_E_RABs_Admitted_ToBeModified_ModAckItem); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_Admitted_ToBeModified_ModAckItem)) { type = 1; 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_E_RABs_Admitted_ToBeModified_ModAckItem);} return false; - 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;} - void clear() {type = 0;} - void select_id_E_RABs_Admitted_ToBeModified_ModAckItem() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; 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(ignore);} return false; - 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_Admitted_ToBeModified_ModAckItem& select_id_E_RABs_Admitted_ToBeModified_ModAckItem() { return set(1); } - E_RABs_Admitted_ToBeModified_ModAckItem const* get_id_E_RABs_Admitted_ToBeModified_ModAckItem() const { return get(1); } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_Admitted_ToBeModified_ModAckItem()); 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; - } - 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(E_RABs_Admitted_ToBeModified_ModAckItem)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_E_RABs_Admitted_ToBeModified_ModAckItem() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; 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(mandatory);} return false; - 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeModified-ModAckList ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-Admitted-ToBeModified-ModAckItemIEs} } -*/ - -struct E_RABs_Admitted_ToBeModified_ModAckList_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_Admitted_ToBeModified_ModAckList_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_Admitted_ToBeModified_ModAckList : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeModified-ModAckList";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= { - { ID id-uLpDCPSnLength CRITICALITY ignore EXTENSION PDCPSnLength PRESENCE optional}| - { ID id-dLPDCPSnLength CRITICALITY ignore EXTENSION PDCPSnLength PRESENCE optional}, - ... -} -*/ - -struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_uLpDCPSnLength() { set(id_uLpDCPSnLength); type=1;} - void select_id_dLPDCPSnLength() { set(id_dLPDCPSnLength); type=2;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_uLpDCPSnLength)) { type = 1; return true; } - else if(equal(id_dLPDCPSnLength)) { type = 2; return true; } - else { type = 3; 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_uLpDCPSnLength);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_dLPDCPSnLength);} return false; - case 3: type = 3; 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 == 3; } - void clear() {type = 0;} - void select_id_uLpDCPSnLength() { set(ignore); type=1;} - void select_id_dLPDCPSnLength() { set(ignore); type=2;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else { type = 3; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - PDCPSnLength& select_id_uLpDCPSnLength() { return set(1); } - PDCPSnLength const* get_id_uLpDCPSnLength() const { return get(1); } - PDCPSnLength& select_id_dLPDCPSnLength() { return set(2); } - PDCPSnLength const* get_id_dLPDCPSnLength() const { return get(2); } - bool is_unknown() const { return type == 3; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_uLpDCPSnLength()); return true; - case 2: v(select_id_dLPDCPSnLength()); return true; - case 3: if(type != 3) {clear(); asn::base::set();} type = 3; 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; - } - 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(PDCPSnLength)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_uLpDCPSnLength() { set(optional); type=1;} - void select_id_dLPDCPSnLength() { set(optional); type=2;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else { type = 3; 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(optional);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent ::= SEQUENCE { - s1-DL-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - sgNB-UL-GTP-TEIDatPDCP GTPtunnelEndpoint OPTIONAL, - mCG-E-RAB-Level-QoS-Parameters E-RAB-Level-QoS-Parameters OPTIONAL, - uL-Configuration ULConfiguration OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresentExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent : asn::sequence<5, 0, true, 5> -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent";} - using parent_t = asn::sequence<5, 0, true, 5>; - struct s1_DL_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "s1_DL_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - s1_DL_GTPtunnelEndpoint_t& set_s1_DL_GTPtunnelEndpoint() { s1_DL_GTPtunnelEndpoint.setpresent(true); return s1_DL_GTPtunnelEndpoint;} - s1_DL_GTPtunnelEndpoint_t const* get_s1_DL_GTPtunnelEndpoint() const {return s1_DL_GTPtunnelEndpoint.is_valid() ? &s1_DL_GTPtunnelEndpoint : nullptr;} - struct sgNB_UL_GTP_TEIDatPDCP_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "sgNB_UL_GTP_TEIDatPDCP_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - sgNB_UL_GTP_TEIDatPDCP_t& set_sgNB_UL_GTP_TEIDatPDCP() { sgNB_UL_GTP_TEIDatPDCP.setpresent(true); return sgNB_UL_GTP_TEIDatPDCP;} - sgNB_UL_GTP_TEIDatPDCP_t const* get_sgNB_UL_GTP_TEIDatPDCP() const {return sgNB_UL_GTP_TEIDatPDCP.is_valid() ? &sgNB_UL_GTP_TEIDatPDCP : nullptr;} - struct mCG_E_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters - { - static constexpr const char* name() {return "mCG_E_RAB_Level_QoS_Parameters_t";} - using parent_t = E_RAB_Level_QoS_Parameters; - static constexpr bool optional = true; - - }; - mCG_E_RAB_Level_QoS_Parameters_t& set_mCG_E_RAB_Level_QoS_Parameters() { mCG_E_RAB_Level_QoS_Parameters.setpresent(true); return mCG_E_RAB_Level_QoS_Parameters;} - mCG_E_RAB_Level_QoS_Parameters_t const* get_mCG_E_RAB_Level_QoS_Parameters() const {return mCG_E_RAB_Level_QoS_Parameters.is_valid() ? &mCG_E_RAB_Level_QoS_Parameters : nullptr;} - struct uL_Configuration_t : ULConfiguration - { - static constexpr const char* name() {return "uL_Configuration_t";} - using parent_t = ULConfiguration; - static constexpr bool optional = true; - - }; - uL_Configuration_t& set_uL_Configuration() { uL_Configuration.setpresent(true); return uL_Configuration;} - uL_Configuration_t const* get_uL_Configuration() const {return uL_Configuration.is_valid() ? &uL_Configuration : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(s1_DL_GTPtunnelEndpoint); - v(sgNB_UL_GTP_TEIDatPDCP); - v(mCG_E_RAB_Level_QoS_Parameters); - v(uL_Configuration); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(s1_DL_GTPtunnelEndpoint); - v(sgNB_UL_GTP_TEIDatPDCP); - v(mCG_E_RAB_Level_QoS_Parameters); - v(uL_Configuration); - v(iE_Extensions); - - }; - void clear() - { - s1_DL_GTPtunnelEndpoint.clear(); - sgNB_UL_GTP_TEIDatPDCP.clear(); - mCG_E_RAB_Level_QoS_Parameters.clear(); - uL_Configuration.clear(); - iE_Extensions.clear(); - - }; - private: - s1_DL_GTPtunnelEndpoint_t s1_DL_GTPtunnelEndpoint; - sgNB_UL_GTP_TEIDatPDCP_t sgNB_UL_GTP_TEIDatPDCP; - mCG_E_RAB_Level_QoS_Parameters_t mCG_E_RAB_Level_QoS_Parameters; - uL_Configuration_t uL_Configuration; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= { - { ID id-secondarysgNBDLGTPTEIDatPDCP CRITICALITY ignore EXTENSION GTPtunnelEndpoint PRESENCE optional}| - { ID id-RLC-Status CRITICALITY ignore EXTENSION RLC-Status PRESENCE optional }, - ... -} -*/ - -struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_secondarysgNBDLGTPTEIDatPDCP() { set(id_secondarysgNBDLGTPTEIDatPDCP); type=1;} - void select_id_RLC_Status() { set(id_RLC_Status); type=2;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_secondarysgNBDLGTPTEIDatPDCP)) { type = 1; return true; } - else if(equal(id_RLC_Status)) { type = 2; return true; } - else { type = 3; 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_secondarysgNBDLGTPTEIDatPDCP);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_RLC_Status);} return false; - case 3: type = 3; 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 == 3; } - void clear() {type = 0;} - void select_id_secondarysgNBDLGTPTEIDatPDCP() { set(ignore); type=1;} - void select_id_RLC_Status() { set(ignore); type=2;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else { type = 3; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - GTPtunnelEndpoint& select_id_secondarysgNBDLGTPTEIDatPDCP() { return set(1); } - GTPtunnelEndpoint const* get_id_secondarysgNBDLGTPTEIDatPDCP() const { return get(1); } - RLC_Status& select_id_RLC_Status() { return set(2); } - RLC_Status const* get_id_RLC_Status() const { return get(2); } - bool is_unknown() const { return type == 3; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_secondarysgNBDLGTPTEIDatPDCP()); return true; - case 2: v(select_id_RLC_Status()); return true; - case 3: if(type != 3) {clear(); asn::base::set();} type = 3; 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; - } - 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(GTPtunnelEndpoint)]; - char dummy2[sizeof(RLC_Status)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_secondarysgNBDLGTPTEIDatPDCP() { set(optional); type=1;} - void select_id_RLC_Status() { set(optional); type=2;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else { type = 3; 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(optional);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent ::= SEQUENCE { - sgNB-DL-GTP-TEIDatSCG GTPtunnelEndpoint OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresentExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent : asn::sequence<2, 0, true, 2> -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent";} - using parent_t = asn::sequence<2, 0, true, 2>; - struct sgNB_DL_GTP_TEIDatSCG_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "sgNB_DL_GTP_TEIDatSCG_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - sgNB_DL_GTP_TEIDatSCG_t& set_sgNB_DL_GTP_TEIDatSCG() { sgNB_DL_GTP_TEIDatSCG.setpresent(true); return sgNB_DL_GTP_TEIDatSCG;} - sgNB_DL_GTP_TEIDatSCG_t const* get_sgNB_DL_GTP_TEIDatSCG() const {return sgNB_DL_GTP_TEIDatSCG.is_valid() ? &sgNB_DL_GTP_TEIDatSCG : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(sgNB_DL_GTP_TEIDatSCG); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(sgNB_DL_GTP_TEIDatSCG); - v(iE_Extensions); - - }; - void clear() - { - sgNB_DL_GTP_TEIDatSCG.clear(); - iE_Extensions.clear(); - - }; - private: - sgNB_DL_GTP_TEIDatSCG_t sgNB_DL_GTP_TEIDatSCG; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeAdded-SgNBModAck-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeModified-SgNBModAck-Item ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - en-DC-ResourceConfiguration EN-DC-ResourceConfiguration, - resource-configuration CHOICE { - sgNBPDCPpresent E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent, - sgNBPDCPnotpresent E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent, - ... - }, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeAdded-SgNBModAck-ItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item : asn::sequence<4, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeModified-SgNBModAck-Item";} - using parent_t = asn::sequence<4, 0, true, 1>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct en_DC_ResourceConfiguration_t : EN_DC_ResourceConfiguration - { - static constexpr const char* name() {return "en_DC_ResourceConfiguration_t";} - using parent_t = EN_DC_ResourceConfiguration; - - }; - en_DC_ResourceConfiguration_t& ref_en_DC_ResourceConfiguration() {return en_DC_ResourceConfiguration;} - en_DC_ResourceConfiguration_t const& ref_en_DC_ResourceConfiguration() const {return en_DC_ResourceConfiguration;} - struct resource_configuration_t : asn::choice<2, 0, true> - { - static constexpr const char* name() {return "resource_configuration_t";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~resource_configuration_t() {clear();} - struct sgNBPDCPpresent_t : E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent - { - static constexpr const char* name() {return "sgNBPDCPpresent_t";} - using parent_t = E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent; - - }; - struct sgNBPDCPnotpresent_t : E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent - { - static constexpr const char* name() {return "sgNBPDCPnotpresent_t";} - using parent_t = E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - sgNBPDCPpresent_t& select_sgNBPDCPpresent() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - sgNBPDCPpresent_t const* get_sgNBPDCPpresent() const { if(get_index() == 1) { return &var.as();} return nullptr; } - sgNBPDCPnotpresent_t& select_sgNBPDCPnotpresent() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - sgNBPDCPnotpresent_t const* get_sgNBPDCPnotpresent() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(sgNBPDCPpresent_t)]; - char dummy2[sizeof(sgNBPDCPnotpresent_t)]; - - }; - asn::variant var; - index_type index {0}; - }; - resource_configuration_t& ref_resource_configuration() {return resource_configuration;} - resource_configuration_t const& ref_resource_configuration() const {return resource_configuration;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(en_DC_ResourceConfiguration); - v(resource_configuration); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(en_DC_ResourceConfiguration); - v(resource_configuration); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - en_DC_ResourceConfiguration.clear(); - resource_configuration.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - en_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; - resource_configuration_t resource_configuration; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-Admitted-ToBeModified-SgNBModAck-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-Admitted-ToBeModified-SgNBModAck-Item CRITICALITY ignore TYPE E-RABs-Admitted-ToBeModified-SgNBModAck-Item PRESENCE mandatory} -} -*/ - -struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_E_RABs_Admitted_ToBeModified_SgNBModAck_Item() { set(id_E_RABs_Admitted_ToBeModified_SgNBModAck_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_Admitted_ToBeModified_SgNBModAck_Item)) { type = 1; 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_E_RABs_Admitted_ToBeModified_SgNBModAck_Item);} return false; - 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;} - void clear() {type = 0;} - void select_id_E_RABs_Admitted_ToBeModified_SgNBModAck_Item() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; 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(ignore);} return false; - 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_Admitted_ToBeModified_SgNBModAck_Item& select_id_E_RABs_Admitted_ToBeModified_SgNBModAck_Item() { return set(1); } - E_RABs_Admitted_ToBeModified_SgNBModAck_Item const* get_id_E_RABs_Admitted_ToBeModified_SgNBModAck_Item() const { return get(1); } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_Admitted_ToBeModified_SgNBModAck_Item()); 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; - } - 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(E_RABs_Admitted_ToBeModified_SgNBModAck_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_E_RABs_Admitted_ToBeModified_SgNBModAck_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; 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(mandatory);} return false; - 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeModified-SgNBModAckList ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-Admitted-ToBeModified-SgNBModAck-ItemIEs} } -*/ - -struct E_RABs_Admitted_ToBeModified_SgNBModAckList_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_Admitted_ToBeModified_SgNBModAckList_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_Admitted_ToBeModified_SgNBModAckList : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeModified-SgNBModAckList";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - iE-Extensions ProtocolExtensionContainer { {E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-BearerExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer : asn::sequence<2, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer";} - using parent_t = asn::sequence<2, 0, true, 1>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-Admitted-ToBeReleased-ModAckItem-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - iE-Extensions ProtocolExtensionContainer { {E-RABs-Admitted-ToBeReleased-ModAckItem-Split-BearerExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer : asn::sequence<2, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer";} - using parent_t = asn::sequence<2, 0, true, 1>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-Admitted-ToReleased-ModAckItem ::= CHOICE { - sCG-Bearer E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer, - split-Bearer E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer, - ... -} -*/ - -struct E_RABs_Admitted_ToReleased_ModAckItem : asn::choice<2, 0, true> -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToReleased-ModAckItem";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~E_RABs_Admitted_ToReleased_ModAckItem() {clear();} - struct sCG_Bearer_t : E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer - { - static constexpr const char* name() {return "sCG_Bearer_t";} - using parent_t = E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer; - - }; - struct split_Bearer_t : E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer - { - static constexpr const char* name() {return "split_Bearer_t";} - using parent_t = E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - sCG_Bearer_t& select_sCG_Bearer() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - sCG_Bearer_t const* get_sCG_Bearer() const { if(get_index() == 1) { return &var.as();} return nullptr; } - split_Bearer_t& select_split_Bearer() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - split_Bearer_t const* get_split_Bearer() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(sCG_Bearer_t)]; - char dummy2[sizeof(split_Bearer_t)]; - - }; - asn::variant var; - index_type index {0}; -}; -/* -E-RABs-Admitted-ToBeReleased-ModAckItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-Admitted-ToBeReleased-ModAckItem CRITICALITY ignore TYPE E-RABs-Admitted-ToReleased-ModAckItem PRESENCE mandatory} -} -*/ - -struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_E_RABs_Admitted_ToBeReleased_ModAckItem() { set(id_E_RABs_Admitted_ToBeReleased_ModAckItem); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_Admitted_ToBeReleased_ModAckItem)) { type = 1; 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_E_RABs_Admitted_ToBeReleased_ModAckItem);} return false; - 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;} - void clear() {type = 0;} - void select_id_E_RABs_Admitted_ToBeReleased_ModAckItem() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; 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(ignore);} return false; - 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_Admitted_ToReleased_ModAckItem& select_id_E_RABs_Admitted_ToBeReleased_ModAckItem() { return set(1); } - E_RABs_Admitted_ToReleased_ModAckItem const* get_id_E_RABs_Admitted_ToBeReleased_ModAckItem() const { return get(1); } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_Admitted_ToBeReleased_ModAckItem()); 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; - } - 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(E_RABs_Admitted_ToReleased_ModAckItem)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_E_RABs_Admitted_ToBeReleased_ModAckItem() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; 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(mandatory);} return false; - 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeReleased-ModAckList ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-Admitted-ToBeReleased-ModAckItemIEs} } -*/ - -struct E_RABs_Admitted_ToBeReleased_ModAckList_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_Admitted_ToBeReleased_ModAckList_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_Admitted_ToBeReleased_ModAckList : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeReleased-ModAckList";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent ::= SEQUENCE { - iE-Extensions ProtocolExtensionContainer { {E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresentExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent : asn::sequence<1, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent";} - using parent_t = asn::sequence<1, 0, true, 1>; - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(iE_Extensions); - - }; - void clear() - { - iE_Extensions.clear(); - - }; - private: - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent ::= SEQUENCE { - iE-Extensions ProtocolExtensionContainer { {E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresentExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent : asn::sequence<1, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent";} - using parent_t = asn::sequence<1, 0, true, 1>; - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(iE_Extensions); - - }; - void clear() - { - iE_Extensions.clear(); - - }; - private: - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeReleased-SgNBModAck-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-Admitted-ToReleased-SgNBModAck-Item ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - en-DC-ResourceConfiguration EN-DC-ResourceConfiguration, - resource-configuration CHOICE { - sgNBPDCPpresent E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent, - sgNBPDCPnotpresent E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent, - ... - }, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBModAck-ItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_Admitted_ToReleased_SgNBModAck_Item : asn::sequence<4, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToReleased-SgNBModAck-Item";} - using parent_t = asn::sequence<4, 0, true, 1>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct en_DC_ResourceConfiguration_t : EN_DC_ResourceConfiguration - { - static constexpr const char* name() {return "en_DC_ResourceConfiguration_t";} - using parent_t = EN_DC_ResourceConfiguration; - - }; - en_DC_ResourceConfiguration_t& ref_en_DC_ResourceConfiguration() {return en_DC_ResourceConfiguration;} - en_DC_ResourceConfiguration_t const& ref_en_DC_ResourceConfiguration() const {return en_DC_ResourceConfiguration;} - struct resource_configuration_t : asn::choice<2, 0, true> - { - static constexpr const char* name() {return "resource_configuration_t";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~resource_configuration_t() {clear();} - struct sgNBPDCPpresent_t : E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent - { - static constexpr const char* name() {return "sgNBPDCPpresent_t";} - using parent_t = E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent; - - }; - struct sgNBPDCPnotpresent_t : E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent - { - static constexpr const char* name() {return "sgNBPDCPnotpresent_t";} - using parent_t = E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - sgNBPDCPpresent_t& select_sgNBPDCPpresent() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - sgNBPDCPpresent_t const* get_sgNBPDCPpresent() const { if(get_index() == 1) { return &var.as();} return nullptr; } - sgNBPDCPnotpresent_t& select_sgNBPDCPnotpresent() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - sgNBPDCPnotpresent_t const* get_sgNBPDCPnotpresent() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(sgNBPDCPpresent_t)]; - char dummy2[sizeof(sgNBPDCPnotpresent_t)]; - - }; - asn::variant var; - index_type index {0}; - }; - resource_configuration_t& ref_resource_configuration() {return resource_configuration;} - resource_configuration_t const& ref_resource_configuration() const {return resource_configuration;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(en_DC_ResourceConfiguration); - v(resource_configuration); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(en_DC_ResourceConfiguration); - v(resource_configuration); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - en_DC_ResourceConfiguration.clear(); - resource_configuration.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - en_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; - resource_configuration_t resource_configuration; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-Admitted-ToBeReleased-SgNBModAck-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-Admitted-ToBeReleased-SgNBModAck-Item CRITICALITY ignore TYPE E-RABs-Admitted-ToReleased-SgNBModAck-Item PRESENCE mandatory} -} -*/ - -struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item() { set(id_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item)) { type = 1; 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_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item);} return false; - 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;} - void clear() {type = 0;} - void select_id_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; 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(ignore);} return false; - 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_Admitted_ToReleased_SgNBModAck_Item& select_id_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item() { return set(1); } - E_RABs_Admitted_ToReleased_SgNBModAck_Item const* get_id_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item() const { return get(1); } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item()); 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; - } - 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(E_RABs_Admitted_ToReleased_SgNBModAck_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; 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(mandatory);} return false; - 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeReleased-SgNBModAckList ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-Admitted-ToBeReleased-SgNBModAck-ItemIEs} } -*/ - -struct E_RABs_Admitted_ToBeReleased_SgNBModAckList_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_Admitted_ToBeReleased_SgNBModAckList_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_Admitted_ToBeReleased_SgNBModAckList : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeReleased-SgNBModAckList";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - rlc-Mode-transferred RLCMode, - iE-Extensions ProtocolExtensionContainer { {E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-ItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item : asn::sequence<3, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item";} - using parent_t = asn::sequence<3, 0, true, 1>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct rlc_Mode_transferred_t : RLCMode - { - static constexpr const char* name() {return "rlc_Mode_transferred_t";} - using parent_t = RLCMode; - - }; - rlc_Mode_transferred_t& ref_rlc_Mode_transferred() {return rlc_Mode_transferred;} - rlc_Mode_transferred_t const& ref_rlc_Mode_transferred() const {return rlc_Mode_transferred;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(rlc_Mode_transferred); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(rlc_Mode_transferred); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - rlc_Mode_transferred.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - rlc_Mode_transferred_t rlc_Mode_transferred; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item CRITICALITY ignore TYPE E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item PRESENCE mandatory}, - ... -} -*/ - -struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item() { set(id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item)) { type = 1; return true; } - else { type = 2; 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_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item& select_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item() { return set(1); } - E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item const* get_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF - ProtocolIE-Single-Container { {E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-ItemIEs} } -*/ - -struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent ::= SEQUENCE { - iE-Extensions ProtocolExtensionContainer { {E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresentExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent : asn::sequence<1, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent";} - using parent_t = asn::sequence<1, 0, true, 1>; - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(iE_Extensions); - - }; - void clear() - { - iE_Extensions.clear(); - - }; - private: - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= { - { ID id-uLpDCPSnLength CRITICALITY ignore EXTENSION PDCPSnLength PRESENCE optional}| - { ID id-dLPDCPSnLength CRITICALITY ignore EXTENSION PDCPSnLength PRESENCE optional}, - ... -} -*/ - -struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_uLpDCPSnLength() { set(id_uLpDCPSnLength); type=1;} - void select_id_dLPDCPSnLength() { set(id_dLPDCPSnLength); type=2;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_uLpDCPSnLength)) { type = 1; return true; } - else if(equal(id_dLPDCPSnLength)) { type = 2; return true; } - else { type = 3; 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_uLpDCPSnLength);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_dLPDCPSnLength);} return false; - case 3: type = 3; 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 == 3; } - void clear() {type = 0;} - void select_id_uLpDCPSnLength() { set(ignore); type=1;} - void select_id_dLPDCPSnLength() { set(ignore); type=2;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else { type = 3; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - PDCPSnLength& select_id_uLpDCPSnLength() { return set(1); } - PDCPSnLength const* get_id_uLpDCPSnLength() const { return get(1); } - PDCPSnLength& select_id_dLPDCPSnLength() { return set(2); } - PDCPSnLength const* get_id_dLPDCPSnLength() const { return get(2); } - bool is_unknown() const { return type == 3; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_uLpDCPSnLength()); return true; - case 2: v(select_id_dLPDCPSnLength()); return true; - case 3: if(type != 3) {clear(); asn::base::set();} type = 3; 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; - } - 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(PDCPSnLength)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_uLpDCPSnLength() { set(optional); type=1;} - void select_id_dLPDCPSnLength() { set(optional); type=2;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else { type = 3; 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(optional);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; 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}; - - }; - -}; -/* -E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent ::= SEQUENCE { - secondary-meNB-UL-GTP-TEIDatPDCP GTPtunnelEndpoint OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresentExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent : asn::sequence<2, 0, true, 2> -{ - static constexpr const char* name() {return "E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent";} - using parent_t = asn::sequence<2, 0, true, 2>; - struct secondary_meNB_UL_GTP_TEIDatPDCP_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "secondary_meNB_UL_GTP_TEIDatPDCP_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - secondary_meNB_UL_GTP_TEIDatPDCP_t& set_secondary_meNB_UL_GTP_TEIDatPDCP() { secondary_meNB_UL_GTP_TEIDatPDCP.setpresent(true); return secondary_meNB_UL_GTP_TEIDatPDCP;} - secondary_meNB_UL_GTP_TEIDatPDCP_t const* get_secondary_meNB_UL_GTP_TEIDatPDCP() const {return secondary_meNB_UL_GTP_TEIDatPDCP.is_valid() ? &secondary_meNB_UL_GTP_TEIDatPDCP : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(secondary_meNB_UL_GTP_TEIDatPDCP); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(secondary_meNB_UL_GTP_TEIDatPDCP); - v(iE_Extensions); - - }; - void clear() - { - secondary_meNB_UL_GTP_TEIDatPDCP.clear(); - iE_Extensions.clear(); - - }; - private: - secondary_meNB_UL_GTP_TEIDatPDCP_t secondary_meNB_UL_GTP_TEIDatPDCP; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-AdmittedToBeModified-SgNBModConf-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-AdmittedToBeModified-SgNBModConf-Item ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - en-DC-ResourceConfiguration EN-DC-ResourceConfiguration, - resource-configuration CHOICE { - sgNBPDCPpresent E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent, - sgNBPDCPnotpresent E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent, - ... - }, - iE-Extensions ProtocolExtensionContainer { {E-RABs-AdmittedToBeModified-SgNBModConf-ItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_AdmittedToBeModified_SgNBModConf_Item : asn::sequence<4, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-AdmittedToBeModified-SgNBModConf-Item";} - using parent_t = asn::sequence<4, 0, true, 1>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct en_DC_ResourceConfiguration_t : EN_DC_ResourceConfiguration - { - static constexpr const char* name() {return "en_DC_ResourceConfiguration_t";} - using parent_t = EN_DC_ResourceConfiguration; - - }; - en_DC_ResourceConfiguration_t& ref_en_DC_ResourceConfiguration() {return en_DC_ResourceConfiguration;} - en_DC_ResourceConfiguration_t const& ref_en_DC_ResourceConfiguration() const {return en_DC_ResourceConfiguration;} - struct resource_configuration_t : asn::choice<2, 0, true> - { - static constexpr const char* name() {return "resource_configuration_t";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~resource_configuration_t() {clear();} - struct sgNBPDCPpresent_t : E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent - { - static constexpr const char* name() {return "sgNBPDCPpresent_t";} - using parent_t = E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent; - - }; - struct sgNBPDCPnotpresent_t : E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent - { - static constexpr const char* name() {return "sgNBPDCPnotpresent_t";} - using parent_t = E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - sgNBPDCPpresent_t& select_sgNBPDCPpresent() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - sgNBPDCPpresent_t const* get_sgNBPDCPpresent() const { if(get_index() == 1) { return &var.as();} return nullptr; } - sgNBPDCPnotpresent_t& select_sgNBPDCPnotpresent() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - sgNBPDCPnotpresent_t const* get_sgNBPDCPnotpresent() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(sgNBPDCPpresent_t)]; - char dummy2[sizeof(sgNBPDCPnotpresent_t)]; - - }; - asn::variant var; - index_type index {0}; - }; - resource_configuration_t& ref_resource_configuration() {return resource_configuration;} - resource_configuration_t const& ref_resource_configuration() const {return resource_configuration;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(en_DC_ResourceConfiguration); - v(resource_configuration); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(en_DC_ResourceConfiguration); - v(resource_configuration); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - en_DC_ResourceConfiguration.clear(); - resource_configuration.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - en_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; - resource_configuration_t resource_configuration; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-AdmittedToBeModified-SgNBModConf-ItemIEs X2AP-PROTOCOL-IES ::= { -{ ID id-E-RABs-AdmittedToBeModified-SgNBModConf-Item CRITICALITY ignore TYPE E-RABs-AdmittedToBeModified-SgNBModConf-Item PRESENCE mandatory }, - ... -} -*/ - -struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_AdmittedToBeModified_SgNBModConf_Item() { set(id_E_RABs_AdmittedToBeModified_SgNBModConf_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_AdmittedToBeModified_SgNBModConf_Item)) { type = 1; return true; } - else { type = 2; 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_E_RABs_AdmittedToBeModified_SgNBModConf_Item);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_E_RABs_AdmittedToBeModified_SgNBModConf_Item() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_AdmittedToBeModified_SgNBModConf_Item& select_id_E_RABs_AdmittedToBeModified_SgNBModConf_Item() { return set(1); } - E_RABs_AdmittedToBeModified_SgNBModConf_Item const* get_id_E_RABs_AdmittedToBeModified_SgNBModConf_Item() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_AdmittedToBeModified_SgNBModConf_Item()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(E_RABs_AdmittedToBeModified_SgNBModConf_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_AdmittedToBeModified_SgNBModConf_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-AdmittedToBeModified-SgNBModConfList ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container - { {E-RABs-AdmittedToBeModified-SgNBModConf-ItemIEs} } -*/ - -struct E_RABs_AdmittedToBeModified_SgNBModConfList_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_AdmittedToBeModified_SgNBModConfList_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_AdmittedToBeModified_SgNBModConfList : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-AdmittedToBeModified-SgNBModConfList";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-SubjectToCounterCheckItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_SubjectToCounterCheckItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-SubjectToCounterCheckItem ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - uL-Count INTEGER (0..4294967295), - dL-Count INTEGER (0..4294967295), - iE-Extensions ProtocolExtensionContainer { {E-RABs-SubjectToCounterCheckItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_SubjectToCounterCheckItem : asn::sequence<4, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-SubjectToCounterCheckItem";} - using parent_t = asn::sequence<4, 0, true, 1>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct uL_Count_t : asn::integer<> - { - using constraint_t = asn::constraints>; - static constexpr const char* name() {return "uL_Count_t";} - using parent_t = asn::integer<>; - - }; - - uL_Count_t& ref_uL_Count() {return uL_Count;} - uL_Count_t const& ref_uL_Count() const {return uL_Count;} - struct dL_Count_t : asn::integer<> - { - using constraint_t = asn::constraints>; - static constexpr const char* name() {return "dL_Count_t";} - using parent_t = asn::integer<>; - - }; - - dL_Count_t& ref_dL_Count() {return dL_Count;} - dL_Count_t const& ref_dL_Count() const {return dL_Count;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(uL_Count); - v(dL_Count); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(uL_Count); - v(dL_Count); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - uL_Count.clear(); - dL_Count.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - uL_Count_t uL_Count; - dL_Count_t dL_Count; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-SubjectToCounterCheckItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-SubjectToCounterCheckItem CRITICALITY ignore TYPE E-RABs-SubjectToCounterCheckItem PRESENCE mandatory}, - ... -} -*/ - -struct E_RABs_SubjectToCounterCheckItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_SubjectToCounterCheckItem() { set(id_E_RABs_SubjectToCounterCheckItem); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_SubjectToCounterCheckItem)) { type = 1; return true; } - else { type = 2; 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_E_RABs_SubjectToCounterCheckItem);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_E_RABs_SubjectToCounterCheckItem() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_SubjectToCounterCheckItem& select_id_E_RABs_SubjectToCounterCheckItem() { return set(1); } - E_RABs_SubjectToCounterCheckItem const* get_id_E_RABs_SubjectToCounterCheckItem() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_SubjectToCounterCheckItem()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(E_RABs_SubjectToCounterCheckItem)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_SubjectToCounterCheckItem() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-SubjectToCounterCheck-List ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-SubjectToCounterCheckItemIEs} } -*/ - -struct E_RABs_SubjectToCounterCheck_List_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_SubjectToCounterCheck_List_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_SubjectToCounterCheck_List : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-SubjectToCounterCheck-List";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-SubjectToSgNBCounterCheck-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-SubjectToSgNBCounterCheck-Item ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - uL-Count INTEGER (0..4294967295), - dL-Count INTEGER (0..4294967295), - iE-Extensions ProtocolExtensionContainer { {E-RABs-SubjectToSgNBCounterCheck-ItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_SubjectToSgNBCounterCheck_Item : asn::sequence<4, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-SubjectToSgNBCounterCheck-Item";} - using parent_t = asn::sequence<4, 0, true, 1>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct uL_Count_t : asn::integer<> - { - using constraint_t = asn::constraints>; - static constexpr const char* name() {return "uL_Count_t";} - using parent_t = asn::integer<>; - - }; - - uL_Count_t& ref_uL_Count() {return uL_Count;} - uL_Count_t const& ref_uL_Count() const {return uL_Count;} - struct dL_Count_t : asn::integer<> - { - using constraint_t = asn::constraints>; - static constexpr const char* name() {return "dL_Count_t";} - using parent_t = asn::integer<>; - - }; - - dL_Count_t& ref_dL_Count() {return dL_Count;} - dL_Count_t const& ref_dL_Count() const {return dL_Count;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(uL_Count); - v(dL_Count); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(uL_Count); - v(dL_Count); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - uL_Count.clear(); - dL_Count.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - uL_Count_t uL_Count; - dL_Count_t dL_Count; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-SubjectToSgNBCounterCheck-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-SubjectToSgNBCounterCheck-Item CRITICALITY ignore TYPE E-RABs-SubjectToSgNBCounterCheck-Item PRESENCE mandatory}, - ... -} -*/ - -struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_SubjectToSgNBCounterCheck_Item() { set(id_E_RABs_SubjectToSgNBCounterCheck_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_SubjectToSgNBCounterCheck_Item)) { type = 1; return true; } - else { type = 2; 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_E_RABs_SubjectToSgNBCounterCheck_Item);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_E_RABs_SubjectToSgNBCounterCheck_Item() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_SubjectToSgNBCounterCheck_Item& select_id_E_RABs_SubjectToSgNBCounterCheck_Item() { return set(1); } - E_RABs_SubjectToSgNBCounterCheck_Item const* get_id_E_RABs_SubjectToSgNBCounterCheck_Item() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_SubjectToSgNBCounterCheck_Item()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(E_RABs_SubjectToSgNBCounterCheck_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_SubjectToSgNBCounterCheck_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-SubjectToSgNBCounterCheck-List ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-SubjectToSgNBCounterCheck-ItemIEs} } -*/ - -struct E_RABs_SubjectToSgNBCounterCheck_List_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_SubjectToSgNBCounterCheck_List_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_SubjectToSgNBCounterCheck_List : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-SubjectToSgNBCounterCheck-List";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-SubjectToStatusTransfer-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - { ID id-ReceiveStatusOfULPDCPSDUsExtended CRITICALITY ignore EXTENSION ReceiveStatusOfULPDCPSDUsExtended PRESENCE optional}| - { ID id-ULCOUNTValueExtended CRITICALITY ignore EXTENSION COUNTValueExtended PRESENCE optional}| - { ID id-DLCOUNTValueExtended CRITICALITY ignore EXTENSION COUNTValueExtended PRESENCE optional}| - { ID id-ReceiveStatusOfULPDCPSDUsPDCP-SNlength18 CRITICALITY ignore EXTENSION ReceiveStatusOfULPDCPSDUsPDCP-SNlength18 PRESENCE optional}| - { ID id-ULCOUNTValuePDCP-SNlength18 CRITICALITY ignore EXTENSION COUNTvaluePDCP-SNlength18 PRESENCE optional}| - { ID id-DLCOUNTValuePDCP-SNlength18 CRITICALITY ignore EXTENSION COUNTvaluePDCP-SNlength18 PRESENCE optional}, - ... -} -*/ - -struct E_RABs_SubjectToStatusTransfer_ItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 7; } - void clear() {type = 0;} - void select_id_ReceiveStatusOfULPDCPSDUsExtended() { set(id_ReceiveStatusOfULPDCPSDUsExtended); type=1;} - void select_id_ULCOUNTValueExtended() { set(id_ULCOUNTValueExtended); type=2;} - void select_id_DLCOUNTValueExtended() { set(id_DLCOUNTValueExtended); type=3;} - void select_id_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18() { set(id_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18); type=4;} - void select_id_ULCOUNTValuePDCP_SNlength18() { set(id_ULCOUNTValuePDCP_SNlength18); type=5;} - void select_id_DLCOUNTValuePDCP_SNlength18() { set(id_DLCOUNTValuePDCP_SNlength18); type=6;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_ReceiveStatusOfULPDCPSDUsExtended)) { type = 1; return true; } - else if(equal(id_ULCOUNTValueExtended)) { type = 2; return true; } - else if(equal(id_DLCOUNTValueExtended)) { type = 3; return true; } - else if(equal(id_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18)) { type = 4; return true; } - else if(equal(id_ULCOUNTValuePDCP_SNlength18)) { type = 5; return true; } - else if(equal(id_DLCOUNTValuePDCP_SNlength18)) { type = 6; return true; } - else { type = 7; 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_ReceiveStatusOfULPDCPSDUsExtended);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_ULCOUNTValueExtended);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_DLCOUNTValueExtended);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_ULCOUNTValuePDCP_SNlength18);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_DLCOUNTValuePDCP_SNlength18);} return false; - case 7: type = 7; 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 == 7; } - void clear() {type = 0;} - void select_id_ReceiveStatusOfULPDCPSDUsExtended() { set(ignore); type=1;} - void select_id_ULCOUNTValueExtended() { set(ignore); type=2;} - void select_id_DLCOUNTValueExtended() { set(ignore); type=3;} - void select_id_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18() { set(ignore); type=4;} - void select_id_ULCOUNTValuePDCP_SNlength18() { set(ignore); type=5;} - void select_id_DLCOUNTValuePDCP_SNlength18() { set(ignore); type=6;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else if(equal(ignore)) { type = 6; return true; } - else { type = 7; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false; - case 7: type = 7; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - ReceiveStatusOfULPDCPSDUsExtended& select_id_ReceiveStatusOfULPDCPSDUsExtended() { return set(1); } - ReceiveStatusOfULPDCPSDUsExtended const* get_id_ReceiveStatusOfULPDCPSDUsExtended() const { return get(1); } - COUNTValueExtended& select_id_ULCOUNTValueExtended() { return set(2); } - COUNTValueExtended const* get_id_ULCOUNTValueExtended() const { return get(2); } - COUNTValueExtended& select_id_DLCOUNTValueExtended() { return set(3); } - COUNTValueExtended const* get_id_DLCOUNTValueExtended() const { return get(3); } - ReceiveStatusOfULPDCPSDUsPDCP_SNlength18& select_id_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18() { return set(4); } - ReceiveStatusOfULPDCPSDUsPDCP_SNlength18 const* get_id_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18() const { return get(4); } - COUNTvaluePDCP_SNlength18& select_id_ULCOUNTValuePDCP_SNlength18() { return set(5); } - COUNTvaluePDCP_SNlength18 const* get_id_ULCOUNTValuePDCP_SNlength18() const { return get(5); } - COUNTvaluePDCP_SNlength18& select_id_DLCOUNTValuePDCP_SNlength18() { return set(6); } - COUNTvaluePDCP_SNlength18 const* get_id_DLCOUNTValuePDCP_SNlength18() const { return get(6); } - bool is_unknown() const { return type == 7; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_ReceiveStatusOfULPDCPSDUsExtended()); return true; - case 2: v(select_id_ULCOUNTValueExtended()); return true; - case 3: v(select_id_DLCOUNTValueExtended()); return true; - case 4: v(select_id_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18()); return true; - case 5: v(select_id_ULCOUNTValuePDCP_SNlength18()); return true; - case 6: v(select_id_DLCOUNTValuePDCP_SNlength18()); return true; - case 7: if(type != 7) {clear(); asn::base::set();} type = 7; 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; - } - 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(COUNTValueExtended)]; - char dummy2[sizeof(COUNTvaluePDCP_SNlength18)]; - char dummy3[sizeof(ReceiveStatusOfULPDCPSDUsExtended)]; - char dummy4[sizeof(ReceiveStatusOfULPDCPSDUsPDCP_SNlength18)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 7; } - void clear() {type = 0;} - void select_id_ReceiveStatusOfULPDCPSDUsExtended() { set(optional); type=1;} - void select_id_ULCOUNTValueExtended() { set(optional); type=2;} - void select_id_DLCOUNTValueExtended() { set(optional); type=3;} - void select_id_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18() { set(optional); type=4;} - void select_id_ULCOUNTValuePDCP_SNlength18() { set(optional); type=5;} - void select_id_DLCOUNTValuePDCP_SNlength18() { set(optional); type=6;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else { type = 7; 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(optional);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; 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}; - - }; - -}; -/* -E-RABs-SubjectToStatusTransfer-Item ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - - receiveStatusofULPDCPSDUs ReceiveStatusofULPDCPSDUs OPTIONAL, - uL-COUNTvalue COUNTvalue, - dL-COUNTvalue COUNTvalue, - iE-Extensions ProtocolExtensionContainer { {E-RABs-SubjectToStatusTransfer-ItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_SubjectToStatusTransfer_Item : asn::sequence<5, 0, true, 2> -{ - static constexpr const char* name() {return "E-RABs-SubjectToStatusTransfer-Item";} - using parent_t = asn::sequence<5, 0, true, 2>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct receiveStatusofULPDCPSDUs_t : ReceiveStatusofULPDCPSDUs - { - static constexpr const char* name() {return "receiveStatusofULPDCPSDUs_t";} - using parent_t = ReceiveStatusofULPDCPSDUs; - static constexpr bool optional = true; - - }; - receiveStatusofULPDCPSDUs_t& set_receiveStatusofULPDCPSDUs() { receiveStatusofULPDCPSDUs.setpresent(true); return receiveStatusofULPDCPSDUs;} - receiveStatusofULPDCPSDUs_t const* get_receiveStatusofULPDCPSDUs() const {return receiveStatusofULPDCPSDUs.is_valid() ? &receiveStatusofULPDCPSDUs : nullptr;} - struct uL_COUNTvalue_t : COUNTvalue - { - static constexpr const char* name() {return "uL_COUNTvalue_t";} - using parent_t = COUNTvalue; - - }; - uL_COUNTvalue_t& ref_uL_COUNTvalue() {return uL_COUNTvalue;} - uL_COUNTvalue_t const& ref_uL_COUNTvalue() const {return uL_COUNTvalue;} - struct dL_COUNTvalue_t : COUNTvalue - { - static constexpr const char* name() {return "dL_COUNTvalue_t";} - using parent_t = COUNTvalue; - - }; - dL_COUNTvalue_t& ref_dL_COUNTvalue() {return dL_COUNTvalue;} - dL_COUNTvalue_t const& ref_dL_COUNTvalue() const {return dL_COUNTvalue;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(receiveStatusofULPDCPSDUs); - v(uL_COUNTvalue); - v(dL_COUNTvalue); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(receiveStatusofULPDCPSDUs); - v(uL_COUNTvalue); - v(dL_COUNTvalue); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - receiveStatusofULPDCPSDUs.clear(); - uL_COUNTvalue.clear(); - dL_COUNTvalue.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - receiveStatusofULPDCPSDUs_t receiveStatusofULPDCPSDUs; - uL_COUNTvalue_t uL_COUNTvalue; - dL_COUNTvalue_t dL_COUNTvalue; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-SubjectToStatusTransfer-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-SubjectToStatusTransfer-Item CRITICALITY ignore TYPE E-RABs-SubjectToStatusTransfer-Item PRESENCE mandatory } -} -*/ - -struct E_RABs_SubjectToStatusTransfer_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_E_RABs_SubjectToStatusTransfer_Item() { set(id_E_RABs_SubjectToStatusTransfer_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_SubjectToStatusTransfer_Item)) { type = 1; 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_E_RABs_SubjectToStatusTransfer_Item);} return false; - 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;} - void clear() {type = 0;} - void select_id_E_RABs_SubjectToStatusTransfer_Item() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; 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(ignore);} return false; - 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_SubjectToStatusTransfer_Item& select_id_E_RABs_SubjectToStatusTransfer_Item() { return set(1); } - E_RABs_SubjectToStatusTransfer_Item const* get_id_E_RABs_SubjectToStatusTransfer_Item() const { return get(1); } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_SubjectToStatusTransfer_Item()); 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; - } - 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(E_RABs_SubjectToStatusTransfer_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_E_RABs_SubjectToStatusTransfer_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; 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(mandatory);} return false; - 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}; - - }; - -}; -/* -E-RABs-SubjectToStatusTransfer-List ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-SubjectToStatusTransfer-ItemIEs} } -*/ - -struct E_RABs_SubjectToStatusTransfer_List_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_SubjectToStatusTransfer_List_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_SubjectToStatusTransfer_List : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-SubjectToStatusTransfer-List";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-ToBeAdded-Item-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= { - { ID id-Correlation-ID CRITICALITY ignore EXTENSION Correlation-ID PRESENCE optional}| - { ID id-SIPTO-Correlation-ID CRITICALITY ignore EXTENSION Correlation-ID PRESENCE optional}, - ... -} -*/ - -struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_Correlation_ID() { set(id_Correlation_ID); type=1;} - void select_id_SIPTO_Correlation_ID() { set(id_SIPTO_Correlation_ID); type=2;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_Correlation_ID)) { type = 1; return true; } - else if(equal(id_SIPTO_Correlation_ID)) { type = 2; return true; } - else { type = 3; 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_Correlation_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SIPTO_Correlation_ID);} return false; - case 3: type = 3; 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 == 3; } - void clear() {type = 0;} - void select_id_Correlation_ID() { set(ignore); type=1;} - void select_id_SIPTO_Correlation_ID() { set(ignore); type=2;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else { type = 3; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - Correlation_ID& select_id_Correlation_ID() { return set(1); } - Correlation_ID const* get_id_Correlation_ID() const { return get(1); } - Correlation_ID& select_id_SIPTO_Correlation_ID() { return set(2); } - Correlation_ID const* get_id_SIPTO_Correlation_ID() const { return get(2); } - bool is_unknown() const { return type == 3; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_Correlation_ID()); return true; - case 2: v(select_id_SIPTO_Correlation_ID()); return true; - case 3: if(type != 3) {clear(); asn::base::set();} type = 3; 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; - } - 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(Correlation_ID)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_Correlation_ID() { set(optional); type=1;} - void select_id_SIPTO_Correlation_ID() { set(optional); type=2;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else { type = 3; 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(optional);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; 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}; - - }; - -}; -/* -E-RABs-ToBeAdded-Item-SCG-Bearer ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - e-RAB-Level-QoS-Parameters E-RAB-Level-QoS-Parameters, - dL-Forwarding DL-Forwarding OPTIONAL, - s1-UL-GTPtunnelEndpoint GTPtunnelEndpoint, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeAdded-Item-SCG-BearerExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeAdded_Item_SCG_Bearer : asn::sequence<5, 0, true, 2> -{ - static constexpr const char* name() {return "E-RABs-ToBeAdded-Item-SCG-Bearer";} - using parent_t = asn::sequence<5, 0, true, 2>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct e_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters - { - static constexpr const char* name() {return "e_RAB_Level_QoS_Parameters_t";} - using parent_t = E_RAB_Level_QoS_Parameters; - - }; - e_RAB_Level_QoS_Parameters_t& ref_e_RAB_Level_QoS_Parameters() {return e_RAB_Level_QoS_Parameters;} - e_RAB_Level_QoS_Parameters_t const& ref_e_RAB_Level_QoS_Parameters() const {return e_RAB_Level_QoS_Parameters;} - struct dL_Forwarding_t : DL_Forwarding - { - static constexpr const char* name() {return "dL_Forwarding_t";} - using parent_t = DL_Forwarding; - static constexpr bool optional = true; - - }; - dL_Forwarding_t& set_dL_Forwarding() { dL_Forwarding.setpresent(true); return dL_Forwarding;} - dL_Forwarding_t const* get_dL_Forwarding() const {return dL_Forwarding.is_valid() ? &dL_Forwarding : nullptr;} - struct s1_UL_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "s1_UL_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - - }; - s1_UL_GTPtunnelEndpoint_t& ref_s1_UL_GTPtunnelEndpoint() {return s1_UL_GTPtunnelEndpoint;} - s1_UL_GTPtunnelEndpoint_t const& ref_s1_UL_GTPtunnelEndpoint() const {return s1_UL_GTPtunnelEndpoint;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(e_RAB_Level_QoS_Parameters); - v(dL_Forwarding); - v(s1_UL_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(e_RAB_Level_QoS_Parameters); - v(dL_Forwarding); - v(s1_UL_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - e_RAB_Level_QoS_Parameters.clear(); - dL_Forwarding.clear(); - s1_UL_GTPtunnelEndpoint.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - e_RAB_Level_QoS_Parameters_t e_RAB_Level_QoS_Parameters; - dL_Forwarding_t dL_Forwarding; - s1_UL_GTPtunnelEndpoint_t s1_UL_GTPtunnelEndpoint; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeAdded-Item-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeAdded_Item_Split_BearerExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-ToBeAdded-Item-Split-Bearer ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - e-RAB-Level-QoS-Parameters E-RAB-Level-QoS-Parameters, - meNB-GTPtunnelEndpoint GTPtunnelEndpoint, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeAdded-Item-Split-BearerExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeAdded_Item_Split_Bearer : asn::sequence<4, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-ToBeAdded-Item-Split-Bearer";} - using parent_t = asn::sequence<4, 0, true, 1>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct e_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters - { - static constexpr const char* name() {return "e_RAB_Level_QoS_Parameters_t";} - using parent_t = E_RAB_Level_QoS_Parameters; - - }; - e_RAB_Level_QoS_Parameters_t& ref_e_RAB_Level_QoS_Parameters() {return e_RAB_Level_QoS_Parameters;} - e_RAB_Level_QoS_Parameters_t const& ref_e_RAB_Level_QoS_Parameters() const {return e_RAB_Level_QoS_Parameters;} - struct meNB_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "meNB_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - - }; - meNB_GTPtunnelEndpoint_t& ref_meNB_GTPtunnelEndpoint() {return meNB_GTPtunnelEndpoint;} - meNB_GTPtunnelEndpoint_t const& ref_meNB_GTPtunnelEndpoint() const {return meNB_GTPtunnelEndpoint;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(e_RAB_Level_QoS_Parameters); - v(meNB_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(e_RAB_Level_QoS_Parameters); - v(meNB_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - e_RAB_Level_QoS_Parameters.clear(); - meNB_GTPtunnelEndpoint.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - e_RAB_Level_QoS_Parameters_t e_RAB_Level_QoS_Parameters; - meNB_GTPtunnelEndpoint_t meNB_GTPtunnelEndpoint; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeAdded-Item ::= CHOICE { - sCG-Bearer E-RABs-ToBeAdded-Item-SCG-Bearer, - split-Bearer E-RABs-ToBeAdded-Item-Split-Bearer, - ... -} -*/ - -struct E_RABs_ToBeAdded_Item : asn::choice<2, 0, true> -{ - static constexpr const char* name() {return "E-RABs-ToBeAdded-Item";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~E_RABs_ToBeAdded_Item() {clear();} - struct sCG_Bearer_t : E_RABs_ToBeAdded_Item_SCG_Bearer - { - static constexpr const char* name() {return "sCG_Bearer_t";} - using parent_t = E_RABs_ToBeAdded_Item_SCG_Bearer; - - }; - struct split_Bearer_t : E_RABs_ToBeAdded_Item_Split_Bearer - { - static constexpr const char* name() {return "split_Bearer_t";} - using parent_t = E_RABs_ToBeAdded_Item_Split_Bearer; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - sCG_Bearer_t& select_sCG_Bearer() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - sCG_Bearer_t const* get_sCG_Bearer() const { if(get_index() == 1) { return &var.as();} return nullptr; } - split_Bearer_t& select_split_Bearer() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - split_Bearer_t const* get_split_Bearer() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(sCG_Bearer_t)]; - char dummy2[sizeof(split_Bearer_t)]; - - }; - asn::variant var; - index_type index {0}; -}; -/* -E-RABs-ToBeAdded-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-ToBeAdded-Item CRITICALITY reject TYPE E-RABs-ToBeAdded-Item PRESENCE mandatory}, - ... -} -*/ - -struct E_RABs_ToBeAdded_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeAdded_Item() { set(id_E_RABs_ToBeAdded_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_ToBeAdded_Item)) { type = 1; return true; } - else { type = 2; 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_E_RABs_ToBeAdded_Item);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeAdded_Item() { set(reject); type=1;} - X2AP_PROTOCOL_IES::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 { type = 2; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_ToBeAdded_Item& select_id_E_RABs_ToBeAdded_Item() { return set(1); } - E_RABs_ToBeAdded_Item const* get_id_E_RABs_ToBeAdded_Item() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_ToBeAdded_Item()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(E_RABs_ToBeAdded_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeAdded_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-ToBeAdded-List ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeAdded-ItemIEs} } -*/ - -struct E_RABs_ToBeAdded_List_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_ToBeAdded_List_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_ToBeAdded_List : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-ToBeAdded-List";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-ToBeAdded-ModReqItem-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= { - { ID id-Correlation-ID CRITICALITY ignore EXTENSION Correlation-ID PRESENCE optional}| - { ID id-SIPTO-Correlation-ID CRITICALITY ignore EXTENSION Correlation-ID PRESENCE optional}, - ... -} -*/ - -struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_Correlation_ID() { set(id_Correlation_ID); type=1;} - void select_id_SIPTO_Correlation_ID() { set(id_SIPTO_Correlation_ID); type=2;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_Correlation_ID)) { type = 1; return true; } - else if(equal(id_SIPTO_Correlation_ID)) { type = 2; return true; } - else { type = 3; 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_Correlation_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SIPTO_Correlation_ID);} return false; - case 3: type = 3; 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 == 3; } - void clear() {type = 0;} - void select_id_Correlation_ID() { set(ignore); type=1;} - void select_id_SIPTO_Correlation_ID() { set(ignore); type=2;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else { type = 3; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - Correlation_ID& select_id_Correlation_ID() { return set(1); } - Correlation_ID const* get_id_Correlation_ID() const { return get(1); } - Correlation_ID& select_id_SIPTO_Correlation_ID() { return set(2); } - Correlation_ID const* get_id_SIPTO_Correlation_ID() const { return get(2); } - bool is_unknown() const { return type == 3; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_Correlation_ID()); return true; - case 2: v(select_id_SIPTO_Correlation_ID()); return true; - case 3: if(type != 3) {clear(); asn::base::set();} type = 3; 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; - } - 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(Correlation_ID)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_Correlation_ID() { set(optional); type=1;} - void select_id_SIPTO_Correlation_ID() { set(optional); type=2;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else { type = 3; 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(optional);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; 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}; - - }; - -}; -/* -E-RABs-ToBeAdded-ModReqItem-SCG-Bearer ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - e-RAB-Level-QoS-Parameters E-RAB-Level-QoS-Parameters, - dL-Forwarding DL-Forwarding OPTIONAL, - s1-UL-GTPtunnelEndpoint GTPtunnelEndpoint, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeAdded-ModReqItem-SCG-BearerExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeAdded_ModReqItem_SCG_Bearer : asn::sequence<5, 0, true, 2> -{ - static constexpr const char* name() {return "E-RABs-ToBeAdded-ModReqItem-SCG-Bearer";} - using parent_t = asn::sequence<5, 0, true, 2>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct e_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters - { - static constexpr const char* name() {return "e_RAB_Level_QoS_Parameters_t";} - using parent_t = E_RAB_Level_QoS_Parameters; - - }; - e_RAB_Level_QoS_Parameters_t& ref_e_RAB_Level_QoS_Parameters() {return e_RAB_Level_QoS_Parameters;} - e_RAB_Level_QoS_Parameters_t const& ref_e_RAB_Level_QoS_Parameters() const {return e_RAB_Level_QoS_Parameters;} - struct dL_Forwarding_t : DL_Forwarding - { - static constexpr const char* name() {return "dL_Forwarding_t";} - using parent_t = DL_Forwarding; - static constexpr bool optional = true; - - }; - dL_Forwarding_t& set_dL_Forwarding() { dL_Forwarding.setpresent(true); return dL_Forwarding;} - dL_Forwarding_t const* get_dL_Forwarding() const {return dL_Forwarding.is_valid() ? &dL_Forwarding : nullptr;} - struct s1_UL_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "s1_UL_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - - }; - s1_UL_GTPtunnelEndpoint_t& ref_s1_UL_GTPtunnelEndpoint() {return s1_UL_GTPtunnelEndpoint;} - s1_UL_GTPtunnelEndpoint_t const& ref_s1_UL_GTPtunnelEndpoint() const {return s1_UL_GTPtunnelEndpoint;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(e_RAB_Level_QoS_Parameters); - v(dL_Forwarding); - v(s1_UL_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(e_RAB_Level_QoS_Parameters); - v(dL_Forwarding); - v(s1_UL_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - e_RAB_Level_QoS_Parameters.clear(); - dL_Forwarding.clear(); - s1_UL_GTPtunnelEndpoint.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - e_RAB_Level_QoS_Parameters_t e_RAB_Level_QoS_Parameters; - dL_Forwarding_t dL_Forwarding; - s1_UL_GTPtunnelEndpoint_t s1_UL_GTPtunnelEndpoint; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeAdded-ModReqItem-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-ToBeAdded-ModReqItem-Split-Bearer ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - e-RAB-Level-QoS-Parameters E-RAB-Level-QoS-Parameters, - meNB-GTPtunnelEndpoint GTPtunnelEndpoint, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeAdded-ModReqItem-Split-BearerExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeAdded_ModReqItem_Split_Bearer : asn::sequence<4, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-ToBeAdded-ModReqItem-Split-Bearer";} - using parent_t = asn::sequence<4, 0, true, 1>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct e_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters - { - static constexpr const char* name() {return "e_RAB_Level_QoS_Parameters_t";} - using parent_t = E_RAB_Level_QoS_Parameters; - - }; - e_RAB_Level_QoS_Parameters_t& ref_e_RAB_Level_QoS_Parameters() {return e_RAB_Level_QoS_Parameters;} - e_RAB_Level_QoS_Parameters_t const& ref_e_RAB_Level_QoS_Parameters() const {return e_RAB_Level_QoS_Parameters;} - struct meNB_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "meNB_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - - }; - meNB_GTPtunnelEndpoint_t& ref_meNB_GTPtunnelEndpoint() {return meNB_GTPtunnelEndpoint;} - meNB_GTPtunnelEndpoint_t const& ref_meNB_GTPtunnelEndpoint() const {return meNB_GTPtunnelEndpoint;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(e_RAB_Level_QoS_Parameters); - v(meNB_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(e_RAB_Level_QoS_Parameters); - v(meNB_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - e_RAB_Level_QoS_Parameters.clear(); - meNB_GTPtunnelEndpoint.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - e_RAB_Level_QoS_Parameters_t e_RAB_Level_QoS_Parameters; - meNB_GTPtunnelEndpoint_t meNB_GTPtunnelEndpoint; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeAdded-ModReqItem ::= CHOICE { - sCG-Bearer E-RABs-ToBeAdded-ModReqItem-SCG-Bearer, - split-Bearer E-RABs-ToBeAdded-ModReqItem-Split-Bearer, - ... -} -*/ - -struct E_RABs_ToBeAdded_ModReqItem : asn::choice<2, 0, true> -{ - static constexpr const char* name() {return "E-RABs-ToBeAdded-ModReqItem";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~E_RABs_ToBeAdded_ModReqItem() {clear();} - struct sCG_Bearer_t : E_RABs_ToBeAdded_ModReqItem_SCG_Bearer - { - static constexpr const char* name() {return "sCG_Bearer_t";} - using parent_t = E_RABs_ToBeAdded_ModReqItem_SCG_Bearer; - - }; - struct split_Bearer_t : E_RABs_ToBeAdded_ModReqItem_Split_Bearer - { - static constexpr const char* name() {return "split_Bearer_t";} - using parent_t = E_RABs_ToBeAdded_ModReqItem_Split_Bearer; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - sCG_Bearer_t& select_sCG_Bearer() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - sCG_Bearer_t const* get_sCG_Bearer() const { if(get_index() == 1) { return &var.as();} return nullptr; } - split_Bearer_t& select_split_Bearer() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - split_Bearer_t const* get_split_Bearer() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(sCG_Bearer_t)]; - char dummy2[sizeof(split_Bearer_t)]; - - }; - asn::variant var; - index_type index {0}; -}; -/* -E-RABs-ToBeAdded-ModReqItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-ToBeAdded-ModReqItem CRITICALITY ignore TYPE E-RABs-ToBeAdded-ModReqItem PRESENCE mandatory}, - ... -} -*/ - -struct E_RABs_ToBeAdded_ModReqItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeAdded_ModReqItem() { set(id_E_RABs_ToBeAdded_ModReqItem); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_ToBeAdded_ModReqItem)) { type = 1; return true; } - else { type = 2; 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_E_RABs_ToBeAdded_ModReqItem);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeAdded_ModReqItem() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_ToBeAdded_ModReqItem& select_id_E_RABs_ToBeAdded_ModReqItem() { return set(1); } - E_RABs_ToBeAdded_ModReqItem const* get_id_E_RABs_ToBeAdded_ModReqItem() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_ToBeAdded_ModReqItem()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(E_RABs_ToBeAdded_ModReqItem)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeAdded_ModReqItem() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-ToBeAdded-List-ModReq ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeAdded-ModReqItemIEs} } -*/ - -struct E_RABs_ToBeAdded_List_ModReq_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_ToBeAdded_List_ModReq_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_ToBeAdded_List_ModReq : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-ToBeAdded-List-ModReq";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= { - { ID id-RLCMode-transferred CRITICALITY ignore EXTENSION RLCMode PRESENCE optional}, - ... -} -*/ - -struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_RLCMode_transferred() { set(id_RLCMode_transferred); type=1;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_RLCMode_transferred)) { type = 1; return true; } - else { type = 2; 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_RLCMode_transferred);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_RLCMode_transferred() { set(ignore); type=1;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - RLCMode& select_id_RLCMode_transferred() { return set(1); } - RLCMode const* get_id_RLCMode_transferred() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_RLCMode_transferred()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(RLCMode)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_RLCMode_transferred() { set(optional); type=1;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else { type = 2; 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(optional);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent ::= SEQUENCE { - full-E-RAB-Level-QoS-Parameters E-RAB-Level-QoS-Parameters, - max-MCG-admit-E-RAB-Level-QoS-Parameters GBR-QosInformation OPTIONAL, --- This IE shall be present if MCG resource and SCG resources IEs in the the EN-DC Resource Configuration IE are set to “present” and GBR QoS Information IE is present in Full E-RAB Level QoS Parameters IE -- - dL-Forwarding DL-Forwarding OPTIONAL, - meNB-DL-GTP-TEIDatMCG GTPtunnelEndpoint OPTIONAL, --- This IE shall be present if MCG resource IE in the the EN-DC Resource Configuration IE is set to “present” -- - s1-UL-GTPtunnelEndpoint GTPtunnelEndpoint, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresentExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent : asn::sequence<6, 0, true, 4> -{ - static constexpr const char* name() {return "E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent";} - using parent_t = asn::sequence<6, 0, true, 4>; - struct full_E_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters - { - static constexpr const char* name() {return "full_E_RAB_Level_QoS_Parameters_t";} - using parent_t = E_RAB_Level_QoS_Parameters; - - }; - full_E_RAB_Level_QoS_Parameters_t& ref_full_E_RAB_Level_QoS_Parameters() {return full_E_RAB_Level_QoS_Parameters;} - full_E_RAB_Level_QoS_Parameters_t const& ref_full_E_RAB_Level_QoS_Parameters() const {return full_E_RAB_Level_QoS_Parameters;} - struct max_MCG_admit_E_RAB_Level_QoS_Parameters_t : GBR_QosInformation - { - static constexpr const char* name() {return "max_MCG_admit_E_RAB_Level_QoS_Parameters_t";} - using parent_t = GBR_QosInformation; - static constexpr bool optional = true; - - }; - max_MCG_admit_E_RAB_Level_QoS_Parameters_t& set_max_MCG_admit_E_RAB_Level_QoS_Parameters() { max_MCG_admit_E_RAB_Level_QoS_Parameters.setpresent(true); return max_MCG_admit_E_RAB_Level_QoS_Parameters;} - max_MCG_admit_E_RAB_Level_QoS_Parameters_t const* get_max_MCG_admit_E_RAB_Level_QoS_Parameters() const {return max_MCG_admit_E_RAB_Level_QoS_Parameters.is_valid() ? &max_MCG_admit_E_RAB_Level_QoS_Parameters : nullptr;} - struct dL_Forwarding_t : DL_Forwarding - { - static constexpr const char* name() {return "dL_Forwarding_t";} - using parent_t = DL_Forwarding; - static constexpr bool optional = true; - - }; - dL_Forwarding_t& set_dL_Forwarding() { dL_Forwarding.setpresent(true); return dL_Forwarding;} - dL_Forwarding_t const* get_dL_Forwarding() const {return dL_Forwarding.is_valid() ? &dL_Forwarding : nullptr;} - struct meNB_DL_GTP_TEIDatMCG_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "meNB_DL_GTP_TEIDatMCG_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - meNB_DL_GTP_TEIDatMCG_t& set_meNB_DL_GTP_TEIDatMCG() { meNB_DL_GTP_TEIDatMCG.setpresent(true); return meNB_DL_GTP_TEIDatMCG;} - meNB_DL_GTP_TEIDatMCG_t const* get_meNB_DL_GTP_TEIDatMCG() const {return meNB_DL_GTP_TEIDatMCG.is_valid() ? &meNB_DL_GTP_TEIDatMCG : nullptr;} - struct s1_UL_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "s1_UL_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - - }; - s1_UL_GTPtunnelEndpoint_t& ref_s1_UL_GTPtunnelEndpoint() {return s1_UL_GTPtunnelEndpoint;} - s1_UL_GTPtunnelEndpoint_t const& ref_s1_UL_GTPtunnelEndpoint() const {return s1_UL_GTPtunnelEndpoint;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(full_E_RAB_Level_QoS_Parameters); - v(max_MCG_admit_E_RAB_Level_QoS_Parameters); - v(dL_Forwarding); - v(meNB_DL_GTP_TEIDatMCG); - v(s1_UL_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(full_E_RAB_Level_QoS_Parameters); - v(max_MCG_admit_E_RAB_Level_QoS_Parameters); - v(dL_Forwarding); - v(meNB_DL_GTP_TEIDatMCG); - v(s1_UL_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - void clear() - { - full_E_RAB_Level_QoS_Parameters.clear(); - max_MCG_admit_E_RAB_Level_QoS_Parameters.clear(); - dL_Forwarding.clear(); - meNB_DL_GTP_TEIDatMCG.clear(); - s1_UL_GTPtunnelEndpoint.clear(); - iE_Extensions.clear(); - - }; - private: - full_E_RAB_Level_QoS_Parameters_t full_E_RAB_Level_QoS_Parameters; - max_MCG_admit_E_RAB_Level_QoS_Parameters_t max_MCG_admit_E_RAB_Level_QoS_Parameters; - dL_Forwarding_t dL_Forwarding; - meNB_DL_GTP_TEIDatMCG_t meNB_DL_GTP_TEIDatMCG; - s1_UL_GTPtunnelEndpoint_t s1_UL_GTPtunnelEndpoint; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= { - { ID id-uLpDCPSnLength CRITICALITY ignore EXTENSION PDCPSnLength PRESENCE optional}| - { ID id-dLPDCPSnLength CRITICALITY ignore EXTENSION PDCPSnLength PRESENCE optional}| - { ID id-duplicationActivation CRITICALITY ignore EXTENSION DuplicationActivation PRESENCE optional}, - ... -} -*/ - -struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_uLpDCPSnLength() { set(id_uLpDCPSnLength); type=1;} - void select_id_dLPDCPSnLength() { set(id_dLPDCPSnLength); type=2;} - void select_id_duplicationActivation() { set(id_duplicationActivation); type=3;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_uLpDCPSnLength)) { type = 1; return true; } - else if(equal(id_dLPDCPSnLength)) { type = 2; return true; } - else if(equal(id_duplicationActivation)) { type = 3; return true; } - else { type = 4; 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_uLpDCPSnLength);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_dLPDCPSnLength);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_duplicationActivation);} return false; - case 4: type = 4; 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 == 4; } - void clear() {type = 0;} - void select_id_uLpDCPSnLength() { set(ignore); type=1;} - void select_id_dLPDCPSnLength() { set(ignore); type=2;} - void select_id_duplicationActivation() { set(ignore); type=3;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else { type = 4; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - PDCPSnLength& select_id_uLpDCPSnLength() { return set(1); } - PDCPSnLength const* get_id_uLpDCPSnLength() const { return get(1); } - PDCPSnLength& select_id_dLPDCPSnLength() { return set(2); } - PDCPSnLength const* get_id_dLPDCPSnLength() const { return get(2); } - DuplicationActivation& select_id_duplicationActivation() { return set(3); } - DuplicationActivation const* get_id_duplicationActivation() const { return get(3); } - bool is_unknown() const { return type == 4; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_uLpDCPSnLength()); return true; - case 2: v(select_id_dLPDCPSnLength()); return true; - case 3: v(select_id_duplicationActivation()); return true; - case 4: if(type != 4) {clear(); asn::base::set();} type = 4; 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; - } - 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(DuplicationActivation)]; - char dummy2[sizeof(PDCPSnLength)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_uLpDCPSnLength() { set(optional); type=1;} - void select_id_dLPDCPSnLength() { set(optional); type=2;} - void select_id_duplicationActivation() { set(optional); type=3;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else { type = 4; 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(optional);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; 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}; - - }; - -}; -/* -E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent ::= SEQUENCE { - requested-SCG-E-RAB-Level-QoS-Parameters E-RAB-Level-QoS-Parameters, - meNB-UL-GTP-TEIDatPDCP GTPtunnelEndpoint, - secondary-meNB-UL-GTP-TEIDatPDCP GTPtunnelEndpoint OPTIONAL, - rlc-Mode RLCMode, - uL-Configuration ULConfiguration OPTIONAL, --- This IE shall be present if MCG resource and SCG resources IEs in the the EN-DC Resource Configuration IE are set to “present” -- - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresentExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent : asn::sequence<6, 0, true, 3> -{ - static constexpr const char* name() {return "E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent";} - using parent_t = asn::sequence<6, 0, true, 3>; - struct requested_SCG_E_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters - { - static constexpr const char* name() {return "requested_SCG_E_RAB_Level_QoS_Parameters_t";} - using parent_t = E_RAB_Level_QoS_Parameters; - - }; - requested_SCG_E_RAB_Level_QoS_Parameters_t& ref_requested_SCG_E_RAB_Level_QoS_Parameters() {return requested_SCG_E_RAB_Level_QoS_Parameters;} - requested_SCG_E_RAB_Level_QoS_Parameters_t const& ref_requested_SCG_E_RAB_Level_QoS_Parameters() const {return requested_SCG_E_RAB_Level_QoS_Parameters;} - struct meNB_UL_GTP_TEIDatPDCP_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "meNB_UL_GTP_TEIDatPDCP_t";} - using parent_t = GTPtunnelEndpoint; - - }; - meNB_UL_GTP_TEIDatPDCP_t& ref_meNB_UL_GTP_TEIDatPDCP() {return meNB_UL_GTP_TEIDatPDCP;} - meNB_UL_GTP_TEIDatPDCP_t const& ref_meNB_UL_GTP_TEIDatPDCP() const {return meNB_UL_GTP_TEIDatPDCP;} - struct secondary_meNB_UL_GTP_TEIDatPDCP_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "secondary_meNB_UL_GTP_TEIDatPDCP_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - secondary_meNB_UL_GTP_TEIDatPDCP_t& set_secondary_meNB_UL_GTP_TEIDatPDCP() { secondary_meNB_UL_GTP_TEIDatPDCP.setpresent(true); return secondary_meNB_UL_GTP_TEIDatPDCP;} - secondary_meNB_UL_GTP_TEIDatPDCP_t const* get_secondary_meNB_UL_GTP_TEIDatPDCP() const {return secondary_meNB_UL_GTP_TEIDatPDCP.is_valid() ? &secondary_meNB_UL_GTP_TEIDatPDCP : nullptr;} - struct rlc_Mode_t : RLCMode - { - static constexpr const char* name() {return "rlc_Mode_t";} - using parent_t = RLCMode; - - }; - rlc_Mode_t& ref_rlc_Mode() {return rlc_Mode;} - rlc_Mode_t const& ref_rlc_Mode() const {return rlc_Mode;} - struct uL_Configuration_t : ULConfiguration - { - static constexpr const char* name() {return "uL_Configuration_t";} - using parent_t = ULConfiguration; - static constexpr bool optional = true; - - }; - uL_Configuration_t& set_uL_Configuration() { uL_Configuration.setpresent(true); return uL_Configuration;} - uL_Configuration_t const* get_uL_Configuration() const {return uL_Configuration.is_valid() ? &uL_Configuration : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(requested_SCG_E_RAB_Level_QoS_Parameters); - v(meNB_UL_GTP_TEIDatPDCP); - v(secondary_meNB_UL_GTP_TEIDatPDCP); - v(rlc_Mode); - v(uL_Configuration); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(requested_SCG_E_RAB_Level_QoS_Parameters); - v(meNB_UL_GTP_TEIDatPDCP); - v(secondary_meNB_UL_GTP_TEIDatPDCP); - v(rlc_Mode); - v(uL_Configuration); - v(iE_Extensions); - - }; - void clear() - { - requested_SCG_E_RAB_Level_QoS_Parameters.clear(); - meNB_UL_GTP_TEIDatPDCP.clear(); - secondary_meNB_UL_GTP_TEIDatPDCP.clear(); - rlc_Mode.clear(); - uL_Configuration.clear(); - iE_Extensions.clear(); - - }; - private: - requested_SCG_E_RAB_Level_QoS_Parameters_t requested_SCG_E_RAB_Level_QoS_Parameters; - meNB_UL_GTP_TEIDatPDCP_t meNB_UL_GTP_TEIDatPDCP; - secondary_meNB_UL_GTP_TEIDatPDCP_t secondary_meNB_UL_GTP_TEIDatPDCP; - rlc_Mode_t rlc_Mode; - uL_Configuration_t uL_Configuration; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeAdded-SgNBAddReq-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-ToBeAdded-SgNBAddReq-Item ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - drb-ID DRB-ID, - en-DC-ResourceConfiguration EN-DC-ResourceConfiguration, - resource-configuration CHOICE { - sgNBPDCPpresent E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent, - sgNBPDCPnotpresent E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent, - ... - }, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeAdded-SgNBAddReq-ItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeAdded_SgNBAddReq_Item : asn::sequence<5, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-ToBeAdded-SgNBAddReq-Item";} - using parent_t = asn::sequence<5, 0, true, 1>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct drb_ID_t : DRB_ID - { - static constexpr const char* name() {return "drb_ID_t";} - using parent_t = DRB_ID; - - }; - drb_ID_t& ref_drb_ID() {return drb_ID;} - drb_ID_t const& ref_drb_ID() const {return drb_ID;} - struct en_DC_ResourceConfiguration_t : EN_DC_ResourceConfiguration - { - static constexpr const char* name() {return "en_DC_ResourceConfiguration_t";} - using parent_t = EN_DC_ResourceConfiguration; - - }; - en_DC_ResourceConfiguration_t& ref_en_DC_ResourceConfiguration() {return en_DC_ResourceConfiguration;} - en_DC_ResourceConfiguration_t const& ref_en_DC_ResourceConfiguration() const {return en_DC_ResourceConfiguration;} - struct resource_configuration_t : asn::choice<2, 0, true> - { - static constexpr const char* name() {return "resource_configuration_t";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~resource_configuration_t() {clear();} - struct sgNBPDCPpresent_t : E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent - { - static constexpr const char* name() {return "sgNBPDCPpresent_t";} - using parent_t = E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent; - - }; - struct sgNBPDCPnotpresent_t : E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent - { - static constexpr const char* name() {return "sgNBPDCPnotpresent_t";} - using parent_t = E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - sgNBPDCPpresent_t& select_sgNBPDCPpresent() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - sgNBPDCPpresent_t const* get_sgNBPDCPpresent() const { if(get_index() == 1) { return &var.as();} return nullptr; } - sgNBPDCPnotpresent_t& select_sgNBPDCPnotpresent() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - sgNBPDCPnotpresent_t const* get_sgNBPDCPnotpresent() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(sgNBPDCPpresent_t)]; - char dummy2[sizeof(sgNBPDCPnotpresent_t)]; - - }; - asn::variant var; - index_type index {0}; - }; - resource_configuration_t& ref_resource_configuration() {return resource_configuration;} - resource_configuration_t const& ref_resource_configuration() const {return resource_configuration;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(drb_ID); - v(en_DC_ResourceConfiguration); - v(resource_configuration); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(drb_ID); - v(en_DC_ResourceConfiguration); - v(resource_configuration); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - drb_ID.clear(); - en_DC_ResourceConfiguration.clear(); - resource_configuration.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - drb_ID_t drb_ID; - en_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; - resource_configuration_t resource_configuration; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeAdded-SgNBAddReq-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-ToBeAdded-SgNBAddReq-Item CRITICALITY reject TYPE E-RABs-ToBeAdded-SgNBAddReq-Item PRESENCE mandatory}, - ... -} -*/ - -struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeAdded_SgNBAddReq_Item() { set(id_E_RABs_ToBeAdded_SgNBAddReq_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_ToBeAdded_SgNBAddReq_Item)) { type = 1; return true; } - else { type = 2; 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_E_RABs_ToBeAdded_SgNBAddReq_Item);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeAdded_SgNBAddReq_Item() { set(reject); type=1;} - X2AP_PROTOCOL_IES::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 { type = 2; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_ToBeAdded_SgNBAddReq_Item& select_id_E_RABs_ToBeAdded_SgNBAddReq_Item() { return set(1); } - E_RABs_ToBeAdded_SgNBAddReq_Item const* get_id_E_RABs_ToBeAdded_SgNBAddReq_Item() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_ToBeAdded_SgNBAddReq_Item()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(E_RABs_ToBeAdded_SgNBAddReq_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeAdded_SgNBAddReq_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-ToBeAdded-SgNBAddReqList ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeAdded-SgNBAddReq-ItemIEs} } -*/ - -struct E_RABs_ToBeAdded_SgNBAddReqList_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_ToBeAdded_SgNBAddReqList_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_ToBeAdded_SgNBAddReqList : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-ToBeAdded-SgNBAddReqList";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= { - { ID id-RLCMode-transferred CRITICALITY ignore EXTENSION RLCMode PRESENCE optional}, - ... -} -*/ - -struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_RLCMode_transferred() { set(id_RLCMode_transferred); type=1;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_RLCMode_transferred)) { type = 1; return true; } - else { type = 2; 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_RLCMode_transferred);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_RLCMode_transferred() { set(ignore); type=1;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - RLCMode& select_id_RLCMode_transferred() { return set(1); } - RLCMode const* get_id_RLCMode_transferred() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_RLCMode_transferred()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(RLCMode)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_RLCMode_transferred() { set(optional); type=1;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else { type = 2; 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(optional);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent ::= SEQUENCE { - full-E-RAB-Level-QoS-Parameters E-RAB-Level-QoS-Parameters, - max-MN-admit-E-RAB-Level-QoS-Parameters GBR-QosInformation OPTIONAL, --- This IE shall be present if MCG resource and SCG resources IEs in the the EN-DC Resource Configuration IE are set to “present” and GBR QoS Information IE is present in Full E-RAB Level QoS Parameters IE -- - dL-Forwarding DL-Forwarding OPTIONAL, - meNB-DL-GTP-TEIDatMCG GTPtunnelEndpoint OPTIONAL, --- This IE shall be present if MCG resource IE in the the EN-DC Resource Configuration IE is set to “present” -- - s1-UL-GTPtunnelEndpoint GTPtunnelEndpoint, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresentExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent : asn::sequence<6, 0, true, 4> -{ - static constexpr const char* name() {return "E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent";} - using parent_t = asn::sequence<6, 0, true, 4>; - struct full_E_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters - { - static constexpr const char* name() {return "full_E_RAB_Level_QoS_Parameters_t";} - using parent_t = E_RAB_Level_QoS_Parameters; - - }; - full_E_RAB_Level_QoS_Parameters_t& ref_full_E_RAB_Level_QoS_Parameters() {return full_E_RAB_Level_QoS_Parameters;} - full_E_RAB_Level_QoS_Parameters_t const& ref_full_E_RAB_Level_QoS_Parameters() const {return full_E_RAB_Level_QoS_Parameters;} - struct max_MN_admit_E_RAB_Level_QoS_Parameters_t : GBR_QosInformation - { - static constexpr const char* name() {return "max_MN_admit_E_RAB_Level_QoS_Parameters_t";} - using parent_t = GBR_QosInformation; - static constexpr bool optional = true; - - }; - max_MN_admit_E_RAB_Level_QoS_Parameters_t& set_max_MN_admit_E_RAB_Level_QoS_Parameters() { max_MN_admit_E_RAB_Level_QoS_Parameters.setpresent(true); return max_MN_admit_E_RAB_Level_QoS_Parameters;} - max_MN_admit_E_RAB_Level_QoS_Parameters_t const* get_max_MN_admit_E_RAB_Level_QoS_Parameters() const {return max_MN_admit_E_RAB_Level_QoS_Parameters.is_valid() ? &max_MN_admit_E_RAB_Level_QoS_Parameters : nullptr;} - struct dL_Forwarding_t : DL_Forwarding - { - static constexpr const char* name() {return "dL_Forwarding_t";} - using parent_t = DL_Forwarding; - static constexpr bool optional = true; - - }; - dL_Forwarding_t& set_dL_Forwarding() { dL_Forwarding.setpresent(true); return dL_Forwarding;} - dL_Forwarding_t const* get_dL_Forwarding() const {return dL_Forwarding.is_valid() ? &dL_Forwarding : nullptr;} - struct meNB_DL_GTP_TEIDatMCG_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "meNB_DL_GTP_TEIDatMCG_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - meNB_DL_GTP_TEIDatMCG_t& set_meNB_DL_GTP_TEIDatMCG() { meNB_DL_GTP_TEIDatMCG.setpresent(true); return meNB_DL_GTP_TEIDatMCG;} - meNB_DL_GTP_TEIDatMCG_t const* get_meNB_DL_GTP_TEIDatMCG() const {return meNB_DL_GTP_TEIDatMCG.is_valid() ? &meNB_DL_GTP_TEIDatMCG : nullptr;} - struct s1_UL_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "s1_UL_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - - }; - s1_UL_GTPtunnelEndpoint_t& ref_s1_UL_GTPtunnelEndpoint() {return s1_UL_GTPtunnelEndpoint;} - s1_UL_GTPtunnelEndpoint_t const& ref_s1_UL_GTPtunnelEndpoint() const {return s1_UL_GTPtunnelEndpoint;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(full_E_RAB_Level_QoS_Parameters); - v(max_MN_admit_E_RAB_Level_QoS_Parameters); - v(dL_Forwarding); - v(meNB_DL_GTP_TEIDatMCG); - v(s1_UL_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(full_E_RAB_Level_QoS_Parameters); - v(max_MN_admit_E_RAB_Level_QoS_Parameters); - v(dL_Forwarding); - v(meNB_DL_GTP_TEIDatMCG); - v(s1_UL_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - void clear() - { - full_E_RAB_Level_QoS_Parameters.clear(); - max_MN_admit_E_RAB_Level_QoS_Parameters.clear(); - dL_Forwarding.clear(); - meNB_DL_GTP_TEIDatMCG.clear(); - s1_UL_GTPtunnelEndpoint.clear(); - iE_Extensions.clear(); - - }; - private: - full_E_RAB_Level_QoS_Parameters_t full_E_RAB_Level_QoS_Parameters; - max_MN_admit_E_RAB_Level_QoS_Parameters_t max_MN_admit_E_RAB_Level_QoS_Parameters; - dL_Forwarding_t dL_Forwarding; - meNB_DL_GTP_TEIDatMCG_t meNB_DL_GTP_TEIDatMCG; - s1_UL_GTPtunnelEndpoint_t s1_UL_GTPtunnelEndpoint; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= { - { ID id-uLpDCPSnLength CRITICALITY ignore EXTENSION PDCPSnLength PRESENCE optional}| - { ID id-dLPDCPSnLength CRITICALITY ignore EXTENSION PDCPSnLength PRESENCE optional}| - { ID id-duplicationActivation CRITICALITY ignore EXTENSION DuplicationActivation PRESENCE optional}, - ... -} -*/ - -struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_uLpDCPSnLength() { set(id_uLpDCPSnLength); type=1;} - void select_id_dLPDCPSnLength() { set(id_dLPDCPSnLength); type=2;} - void select_id_duplicationActivation() { set(id_duplicationActivation); type=3;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_uLpDCPSnLength)) { type = 1; return true; } - else if(equal(id_dLPDCPSnLength)) { type = 2; return true; } - else if(equal(id_duplicationActivation)) { type = 3; return true; } - else { type = 4; 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_uLpDCPSnLength);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_dLPDCPSnLength);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_duplicationActivation);} return false; - case 4: type = 4; 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 == 4; } - void clear() {type = 0;} - void select_id_uLpDCPSnLength() { set(ignore); type=1;} - void select_id_dLPDCPSnLength() { set(ignore); type=2;} - void select_id_duplicationActivation() { set(ignore); type=3;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else { type = 4; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - PDCPSnLength& select_id_uLpDCPSnLength() { return set(1); } - PDCPSnLength const* get_id_uLpDCPSnLength() const { return get(1); } - PDCPSnLength& select_id_dLPDCPSnLength() { return set(2); } - PDCPSnLength const* get_id_dLPDCPSnLength() const { return get(2); } - DuplicationActivation& select_id_duplicationActivation() { return set(3); } - DuplicationActivation const* get_id_duplicationActivation() const { return get(3); } - bool is_unknown() const { return type == 4; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_uLpDCPSnLength()); return true; - case 2: v(select_id_dLPDCPSnLength()); return true; - case 3: v(select_id_duplicationActivation()); return true; - case 4: if(type != 4) {clear(); asn::base::set();} type = 4; 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; - } - 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(DuplicationActivation)]; - char dummy2[sizeof(PDCPSnLength)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_uLpDCPSnLength() { set(optional); type=1;} - void select_id_dLPDCPSnLength() { set(optional); type=2;} - void select_id_duplicationActivation() { set(optional); type=3;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else { type = 4; 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(optional);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; 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}; - - }; - -}; -/* -E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent ::= SEQUENCE { - requested-SCG-E-RAB-Level-QoS-Parameters E-RAB-Level-QoS-Parameters, - meNB-UL-GTP-TEIDatPDCP GTPtunnelEndpoint, - secondary-meNB-UL-GTP-TEIDatPDCP GTPtunnelEndpoint OPTIONAL, - rlc-Mode RLCMode, - uL-Configuration ULConfiguration OPTIONAL, --- This IE shall be present if MCG resource and SCG resources IEs in the the EN-DC Resource Configuration IE are set to “present” -- - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresentExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent : asn::sequence<6, 0, true, 3> -{ - static constexpr const char* name() {return "E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent";} - using parent_t = asn::sequence<6, 0, true, 3>; - struct requested_SCG_E_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters - { - static constexpr const char* name() {return "requested_SCG_E_RAB_Level_QoS_Parameters_t";} - using parent_t = E_RAB_Level_QoS_Parameters; - - }; - requested_SCG_E_RAB_Level_QoS_Parameters_t& ref_requested_SCG_E_RAB_Level_QoS_Parameters() {return requested_SCG_E_RAB_Level_QoS_Parameters;} - requested_SCG_E_RAB_Level_QoS_Parameters_t const& ref_requested_SCG_E_RAB_Level_QoS_Parameters() const {return requested_SCG_E_RAB_Level_QoS_Parameters;} - struct meNB_UL_GTP_TEIDatPDCP_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "meNB_UL_GTP_TEIDatPDCP_t";} - using parent_t = GTPtunnelEndpoint; - - }; - meNB_UL_GTP_TEIDatPDCP_t& ref_meNB_UL_GTP_TEIDatPDCP() {return meNB_UL_GTP_TEIDatPDCP;} - meNB_UL_GTP_TEIDatPDCP_t const& ref_meNB_UL_GTP_TEIDatPDCP() const {return meNB_UL_GTP_TEIDatPDCP;} - struct secondary_meNB_UL_GTP_TEIDatPDCP_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "secondary_meNB_UL_GTP_TEIDatPDCP_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - secondary_meNB_UL_GTP_TEIDatPDCP_t& set_secondary_meNB_UL_GTP_TEIDatPDCP() { secondary_meNB_UL_GTP_TEIDatPDCP.setpresent(true); return secondary_meNB_UL_GTP_TEIDatPDCP;} - secondary_meNB_UL_GTP_TEIDatPDCP_t const* get_secondary_meNB_UL_GTP_TEIDatPDCP() const {return secondary_meNB_UL_GTP_TEIDatPDCP.is_valid() ? &secondary_meNB_UL_GTP_TEIDatPDCP : nullptr;} - struct rlc_Mode_t : RLCMode - { - static constexpr const char* name() {return "rlc_Mode_t";} - using parent_t = RLCMode; - - }; - rlc_Mode_t& ref_rlc_Mode() {return rlc_Mode;} - rlc_Mode_t const& ref_rlc_Mode() const {return rlc_Mode;} - struct uL_Configuration_t : ULConfiguration - { - static constexpr const char* name() {return "uL_Configuration_t";} - using parent_t = ULConfiguration; - static constexpr bool optional = true; - - }; - uL_Configuration_t& set_uL_Configuration() { uL_Configuration.setpresent(true); return uL_Configuration;} - uL_Configuration_t const* get_uL_Configuration() const {return uL_Configuration.is_valid() ? &uL_Configuration : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(requested_SCG_E_RAB_Level_QoS_Parameters); - v(meNB_UL_GTP_TEIDatPDCP); - v(secondary_meNB_UL_GTP_TEIDatPDCP); - v(rlc_Mode); - v(uL_Configuration); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(requested_SCG_E_RAB_Level_QoS_Parameters); - v(meNB_UL_GTP_TEIDatPDCP); - v(secondary_meNB_UL_GTP_TEIDatPDCP); - v(rlc_Mode); - v(uL_Configuration); - v(iE_Extensions); - - }; - void clear() - { - requested_SCG_E_RAB_Level_QoS_Parameters.clear(); - meNB_UL_GTP_TEIDatPDCP.clear(); - secondary_meNB_UL_GTP_TEIDatPDCP.clear(); - rlc_Mode.clear(); - uL_Configuration.clear(); - iE_Extensions.clear(); - - }; - private: - requested_SCG_E_RAB_Level_QoS_Parameters_t requested_SCG_E_RAB_Level_QoS_Parameters; - meNB_UL_GTP_TEIDatPDCP_t meNB_UL_GTP_TEIDatPDCP; - secondary_meNB_UL_GTP_TEIDatPDCP_t secondary_meNB_UL_GTP_TEIDatPDCP; - rlc_Mode_t rlc_Mode; - uL_Configuration_t uL_Configuration; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeAdded-SgNBModReq-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-ToBeAdded-SgNBModReq-Item ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - drb-ID DRB-ID, - en-DC-ResourceConfiguration EN-DC-ResourceConfiguration, - resource-configuration CHOICE { - sgNBPDCPpresent E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent, - sgNBPDCPnotpresent E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent, - ... - }, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeAdded-SgNBModReq-ItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeAdded_SgNBModReq_Item : asn::sequence<5, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-ToBeAdded-SgNBModReq-Item";} - using parent_t = asn::sequence<5, 0, true, 1>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct drb_ID_t : DRB_ID - { - static constexpr const char* name() {return "drb_ID_t";} - using parent_t = DRB_ID; - - }; - drb_ID_t& ref_drb_ID() {return drb_ID;} - drb_ID_t const& ref_drb_ID() const {return drb_ID;} - struct en_DC_ResourceConfiguration_t : EN_DC_ResourceConfiguration - { - static constexpr const char* name() {return "en_DC_ResourceConfiguration_t";} - using parent_t = EN_DC_ResourceConfiguration; - - }; - en_DC_ResourceConfiguration_t& ref_en_DC_ResourceConfiguration() {return en_DC_ResourceConfiguration;} - en_DC_ResourceConfiguration_t const& ref_en_DC_ResourceConfiguration() const {return en_DC_ResourceConfiguration;} - struct resource_configuration_t : asn::choice<2, 0, true> - { - static constexpr const char* name() {return "resource_configuration_t";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~resource_configuration_t() {clear();} - struct sgNBPDCPpresent_t : E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent - { - static constexpr const char* name() {return "sgNBPDCPpresent_t";} - using parent_t = E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent; - - }; - struct sgNBPDCPnotpresent_t : E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent - { - static constexpr const char* name() {return "sgNBPDCPnotpresent_t";} - using parent_t = E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - sgNBPDCPpresent_t& select_sgNBPDCPpresent() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - sgNBPDCPpresent_t const* get_sgNBPDCPpresent() const { if(get_index() == 1) { return &var.as();} return nullptr; } - sgNBPDCPnotpresent_t& select_sgNBPDCPnotpresent() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - sgNBPDCPnotpresent_t const* get_sgNBPDCPnotpresent() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(sgNBPDCPpresent_t)]; - char dummy2[sizeof(sgNBPDCPnotpresent_t)]; - - }; - asn::variant var; - index_type index {0}; - }; - resource_configuration_t& ref_resource_configuration() {return resource_configuration;} - resource_configuration_t const& ref_resource_configuration() const {return resource_configuration;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(drb_ID); - v(en_DC_ResourceConfiguration); - v(resource_configuration); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(drb_ID); - v(en_DC_ResourceConfiguration); - v(resource_configuration); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - drb_ID.clear(); - en_DC_ResourceConfiguration.clear(); - resource_configuration.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - drb_ID_t drb_ID; - en_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; - resource_configuration_t resource_configuration; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeAdded-SgNBModReq-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-ToBeAdded-SgNBModReq-Item CRITICALITY ignore TYPE E-RABs-ToBeAdded-SgNBModReq-Item PRESENCE mandatory}, - ... -} -*/ - -struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeAdded_SgNBModReq_Item() { set(id_E_RABs_ToBeAdded_SgNBModReq_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_ToBeAdded_SgNBModReq_Item)) { type = 1; return true; } - else { type = 2; 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_E_RABs_ToBeAdded_SgNBModReq_Item);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeAdded_SgNBModReq_Item() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_ToBeAdded_SgNBModReq_Item& select_id_E_RABs_ToBeAdded_SgNBModReq_Item() { return set(1); } - E_RABs_ToBeAdded_SgNBModReq_Item const* get_id_E_RABs_ToBeAdded_SgNBModReq_Item() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_ToBeAdded_SgNBModReq_Item()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(E_RABs_ToBeAdded_SgNBModReq_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeAdded_SgNBModReq_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-ToBeAdded-SgNBModReq-List ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeAdded-SgNBModReq-ItemIEs} } -*/ - -struct E_RABs_ToBeAdded_SgNBModReq_List_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_ToBeAdded_SgNBModReq_List_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_ToBeAdded_SgNBModReq_List : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-ToBeAdded-SgNBModReq-List";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-ToBeModified-ModReqItem-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-ToBeModified-ModReqItem-SCG-Bearer ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - e-RAB-Level-QoS-Parameters E-RAB-Level-QoS-Parameters OPTIONAL, - s1-UL-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeModified-ModReqItem-SCG-BearerExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeModified_ModReqItem_SCG_Bearer : asn::sequence<4, 0, true, 3> -{ - static constexpr const char* name() {return "E-RABs-ToBeModified-ModReqItem-SCG-Bearer";} - using parent_t = asn::sequence<4, 0, true, 3>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct e_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters - { - static constexpr const char* name() {return "e_RAB_Level_QoS_Parameters_t";} - using parent_t = E_RAB_Level_QoS_Parameters; - static constexpr bool optional = true; - - }; - e_RAB_Level_QoS_Parameters_t& set_e_RAB_Level_QoS_Parameters() { e_RAB_Level_QoS_Parameters.setpresent(true); return e_RAB_Level_QoS_Parameters;} - e_RAB_Level_QoS_Parameters_t const* get_e_RAB_Level_QoS_Parameters() const {return e_RAB_Level_QoS_Parameters.is_valid() ? &e_RAB_Level_QoS_Parameters : nullptr;} - struct s1_UL_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "s1_UL_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - s1_UL_GTPtunnelEndpoint_t& set_s1_UL_GTPtunnelEndpoint() { s1_UL_GTPtunnelEndpoint.setpresent(true); return s1_UL_GTPtunnelEndpoint;} - s1_UL_GTPtunnelEndpoint_t const* get_s1_UL_GTPtunnelEndpoint() const {return s1_UL_GTPtunnelEndpoint.is_valid() ? &s1_UL_GTPtunnelEndpoint : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(e_RAB_Level_QoS_Parameters); - v(s1_UL_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(e_RAB_Level_QoS_Parameters); - v(s1_UL_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - e_RAB_Level_QoS_Parameters.clear(); - s1_UL_GTPtunnelEndpoint.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - e_RAB_Level_QoS_Parameters_t e_RAB_Level_QoS_Parameters; - s1_UL_GTPtunnelEndpoint_t s1_UL_GTPtunnelEndpoint; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeModified-ModReqItem-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-ToBeModified-ModReqItem-Split-Bearer ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - e-RAB-Level-QoS-Parameters E-RAB-Level-QoS-Parameters OPTIONAL, - meNB-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeModified-ModReqItem-Split-BearerExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeModified_ModReqItem_Split_Bearer : asn::sequence<4, 0, true, 3> -{ - static constexpr const char* name() {return "E-RABs-ToBeModified-ModReqItem-Split-Bearer";} - using parent_t = asn::sequence<4, 0, true, 3>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct e_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters - { - static constexpr const char* name() {return "e_RAB_Level_QoS_Parameters_t";} - using parent_t = E_RAB_Level_QoS_Parameters; - static constexpr bool optional = true; - - }; - e_RAB_Level_QoS_Parameters_t& set_e_RAB_Level_QoS_Parameters() { e_RAB_Level_QoS_Parameters.setpresent(true); return e_RAB_Level_QoS_Parameters;} - e_RAB_Level_QoS_Parameters_t const* get_e_RAB_Level_QoS_Parameters() const {return e_RAB_Level_QoS_Parameters.is_valid() ? &e_RAB_Level_QoS_Parameters : nullptr;} - struct meNB_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "meNB_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - meNB_GTPtunnelEndpoint_t& set_meNB_GTPtunnelEndpoint() { meNB_GTPtunnelEndpoint.setpresent(true); return meNB_GTPtunnelEndpoint;} - meNB_GTPtunnelEndpoint_t const* get_meNB_GTPtunnelEndpoint() const {return meNB_GTPtunnelEndpoint.is_valid() ? &meNB_GTPtunnelEndpoint : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(e_RAB_Level_QoS_Parameters); - v(meNB_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(e_RAB_Level_QoS_Parameters); - v(meNB_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - e_RAB_Level_QoS_Parameters.clear(); - meNB_GTPtunnelEndpoint.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - e_RAB_Level_QoS_Parameters_t e_RAB_Level_QoS_Parameters; - meNB_GTPtunnelEndpoint_t meNB_GTPtunnelEndpoint; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeModified-ModReqItem ::= CHOICE { - sCG-Bearer E-RABs-ToBeModified-ModReqItem-SCG-Bearer, - split-Bearer E-RABs-ToBeModified-ModReqItem-Split-Bearer, - ... -} -*/ - -struct E_RABs_ToBeModified_ModReqItem : asn::choice<2, 0, true> -{ - static constexpr const char* name() {return "E-RABs-ToBeModified-ModReqItem";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~E_RABs_ToBeModified_ModReqItem() {clear();} - struct sCG_Bearer_t : E_RABs_ToBeModified_ModReqItem_SCG_Bearer - { - static constexpr const char* name() {return "sCG_Bearer_t";} - using parent_t = E_RABs_ToBeModified_ModReqItem_SCG_Bearer; - - }; - struct split_Bearer_t : E_RABs_ToBeModified_ModReqItem_Split_Bearer - { - static constexpr const char* name() {return "split_Bearer_t";} - using parent_t = E_RABs_ToBeModified_ModReqItem_Split_Bearer; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - sCG_Bearer_t& select_sCG_Bearer() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - sCG_Bearer_t const* get_sCG_Bearer() const { if(get_index() == 1) { return &var.as();} return nullptr; } - split_Bearer_t& select_split_Bearer() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - split_Bearer_t const* get_split_Bearer() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(sCG_Bearer_t)]; - char dummy2[sizeof(split_Bearer_t)]; - - }; - asn::variant var; - index_type index {0}; -}; -/* -E-RABs-ToBeModified-ModReqItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-ToBeModified-ModReqItem CRITICALITY ignore TYPE E-RABs-ToBeModified-ModReqItem PRESENCE mandatory}, - ... -} -*/ - -struct E_RABs_ToBeModified_ModReqItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeModified_ModReqItem() { set(id_E_RABs_ToBeModified_ModReqItem); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_ToBeModified_ModReqItem)) { type = 1; return true; } - else { type = 2; 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_E_RABs_ToBeModified_ModReqItem);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeModified_ModReqItem() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_ToBeModified_ModReqItem& select_id_E_RABs_ToBeModified_ModReqItem() { return set(1); } - E_RABs_ToBeModified_ModReqItem const* get_id_E_RABs_ToBeModified_ModReqItem() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_ToBeModified_ModReqItem()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(E_RABs_ToBeModified_ModReqItem)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeModified_ModReqItem() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-ToBeModified-List-ModReq ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeModified-ModReqItemIEs} } -*/ - -struct E_RABs_ToBeModified_List_ModReq_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_ToBeModified_List_ModReq_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_ToBeModified_List_ModReq : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-ToBeModified-List-ModReq";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= { - { ID id-RLC-Status CRITICALITY ignore EXTENSION RLC-Status PRESENCE optional }, - ... -} -*/ - -struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_RLC_Status() { set(id_RLC_Status); type=1;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_RLC_Status)) { type = 1; return true; } - else { type = 2; 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_RLC_Status);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_RLC_Status() { set(ignore); type=1;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - RLC_Status& select_id_RLC_Status() { return set(1); } - RLC_Status const* get_id_RLC_Status() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_RLC_Status()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(RLC_Status)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_RLC_Status() { set(optional); type=1;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else { type = 2; 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(optional);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent ::= SEQUENCE { - full-E-RAB-Level-QoS-Parameters E-RAB-Level-QoS-Parameters OPTIONAL, - max-MN-admit-E-RAB-Level-QoS-Parameters GBR-QosInformation OPTIONAL, - meNB-DL-GTP-TEIDatMCG GTPtunnelEndpoint OPTIONAL, - s1-UL-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresentExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent : asn::sequence<5, 0, true, 5> -{ - static constexpr const char* name() {return "E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent";} - using parent_t = asn::sequence<5, 0, true, 5>; - struct full_E_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters - { - static constexpr const char* name() {return "full_E_RAB_Level_QoS_Parameters_t";} - using parent_t = E_RAB_Level_QoS_Parameters; - static constexpr bool optional = true; - - }; - full_E_RAB_Level_QoS_Parameters_t& set_full_E_RAB_Level_QoS_Parameters() { full_E_RAB_Level_QoS_Parameters.setpresent(true); return full_E_RAB_Level_QoS_Parameters;} - full_E_RAB_Level_QoS_Parameters_t const* get_full_E_RAB_Level_QoS_Parameters() const {return full_E_RAB_Level_QoS_Parameters.is_valid() ? &full_E_RAB_Level_QoS_Parameters : nullptr;} - struct max_MN_admit_E_RAB_Level_QoS_Parameters_t : GBR_QosInformation - { - static constexpr const char* name() {return "max_MN_admit_E_RAB_Level_QoS_Parameters_t";} - using parent_t = GBR_QosInformation; - static constexpr bool optional = true; - - }; - max_MN_admit_E_RAB_Level_QoS_Parameters_t& set_max_MN_admit_E_RAB_Level_QoS_Parameters() { max_MN_admit_E_RAB_Level_QoS_Parameters.setpresent(true); return max_MN_admit_E_RAB_Level_QoS_Parameters;} - max_MN_admit_E_RAB_Level_QoS_Parameters_t const* get_max_MN_admit_E_RAB_Level_QoS_Parameters() const {return max_MN_admit_E_RAB_Level_QoS_Parameters.is_valid() ? &max_MN_admit_E_RAB_Level_QoS_Parameters : nullptr;} - struct meNB_DL_GTP_TEIDatMCG_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "meNB_DL_GTP_TEIDatMCG_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - meNB_DL_GTP_TEIDatMCG_t& set_meNB_DL_GTP_TEIDatMCG() { meNB_DL_GTP_TEIDatMCG.setpresent(true); return meNB_DL_GTP_TEIDatMCG;} - meNB_DL_GTP_TEIDatMCG_t const* get_meNB_DL_GTP_TEIDatMCG() const {return meNB_DL_GTP_TEIDatMCG.is_valid() ? &meNB_DL_GTP_TEIDatMCG : nullptr;} - struct s1_UL_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "s1_UL_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - s1_UL_GTPtunnelEndpoint_t& set_s1_UL_GTPtunnelEndpoint() { s1_UL_GTPtunnelEndpoint.setpresent(true); return s1_UL_GTPtunnelEndpoint;} - s1_UL_GTPtunnelEndpoint_t const* get_s1_UL_GTPtunnelEndpoint() const {return s1_UL_GTPtunnelEndpoint.is_valid() ? &s1_UL_GTPtunnelEndpoint : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(full_E_RAB_Level_QoS_Parameters); - v(max_MN_admit_E_RAB_Level_QoS_Parameters); - v(meNB_DL_GTP_TEIDatMCG); - v(s1_UL_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(full_E_RAB_Level_QoS_Parameters); - v(max_MN_admit_E_RAB_Level_QoS_Parameters); - v(meNB_DL_GTP_TEIDatMCG); - v(s1_UL_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - void clear() - { - full_E_RAB_Level_QoS_Parameters.clear(); - max_MN_admit_E_RAB_Level_QoS_Parameters.clear(); - meNB_DL_GTP_TEIDatMCG.clear(); - s1_UL_GTPtunnelEndpoint.clear(); - iE_Extensions.clear(); - - }; - private: - full_E_RAB_Level_QoS_Parameters_t full_E_RAB_Level_QoS_Parameters; - max_MN_admit_E_RAB_Level_QoS_Parameters_t max_MN_admit_E_RAB_Level_QoS_Parameters; - meNB_DL_GTP_TEIDatMCG_t meNB_DL_GTP_TEIDatMCG; - s1_UL_GTPtunnelEndpoint_t s1_UL_GTPtunnelEndpoint; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= { - { ID id-uLpDCPSnLength CRITICALITY ignore EXTENSION PDCPSnLength PRESENCE optional}| - { ID id-dLPDCPSnLength CRITICALITY ignore EXTENSION PDCPSnLength PRESENCE optional}| - { ID id-secondarymeNBULGTPTEIDatPDCP CRITICALITY ignore EXTENSION GTPtunnelEndpoint PRESENCE optional}, - ... -} -*/ - -struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_uLpDCPSnLength() { set(id_uLpDCPSnLength); type=1;} - void select_id_dLPDCPSnLength() { set(id_dLPDCPSnLength); type=2;} - void select_id_secondarymeNBULGTPTEIDatPDCP() { set(id_secondarymeNBULGTPTEIDatPDCP); type=3;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_uLpDCPSnLength)) { type = 1; return true; } - else if(equal(id_dLPDCPSnLength)) { type = 2; return true; } - else if(equal(id_secondarymeNBULGTPTEIDatPDCP)) { type = 3; return true; } - else { type = 4; 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_uLpDCPSnLength);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_dLPDCPSnLength);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_secondarymeNBULGTPTEIDatPDCP);} return false; - case 4: type = 4; 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 == 4; } - void clear() {type = 0;} - void select_id_uLpDCPSnLength() { set(ignore); type=1;} - void select_id_dLPDCPSnLength() { set(ignore); type=2;} - void select_id_secondarymeNBULGTPTEIDatPDCP() { set(ignore); type=3;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else { type = 4; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - PDCPSnLength& select_id_uLpDCPSnLength() { return set(1); } - PDCPSnLength const* get_id_uLpDCPSnLength() const { return get(1); } - PDCPSnLength& select_id_dLPDCPSnLength() { return set(2); } - PDCPSnLength const* get_id_dLPDCPSnLength() const { return get(2); } - GTPtunnelEndpoint& select_id_secondarymeNBULGTPTEIDatPDCP() { return set(3); } - GTPtunnelEndpoint const* get_id_secondarymeNBULGTPTEIDatPDCP() const { return get(3); } - bool is_unknown() const { return type == 4; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_uLpDCPSnLength()); return true; - case 2: v(select_id_dLPDCPSnLength()); return true; - case 3: v(select_id_secondarymeNBULGTPTEIDatPDCP()); return true; - case 4: if(type != 4) {clear(); asn::base::set();} type = 4; 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; - } - 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(GTPtunnelEndpoint)]; - char dummy2[sizeof(PDCPSnLength)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_uLpDCPSnLength() { set(optional); type=1;} - void select_id_dLPDCPSnLength() { set(optional); type=2;} - void select_id_secondarymeNBULGTPTEIDatPDCP() { set(optional); type=3;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else { type = 4; 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(optional);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; 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}; - - }; - -}; -/* -E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent ::= SEQUENCE { - requested-SCG-E-RAB-Level-QoS-Parameters E-RAB-Level-QoS-Parameters OPTIONAL, - meNB-UL-GTP-TEIDatPDCP GTPtunnelEndpoint OPTIONAL, - uL-Configuration ULConfiguration OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresentExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent : asn::sequence<4, 0, true, 4> -{ - static constexpr const char* name() {return "E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent";} - using parent_t = asn::sequence<4, 0, true, 4>; - struct requested_SCG_E_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters - { - static constexpr const char* name() {return "requested_SCG_E_RAB_Level_QoS_Parameters_t";} - using parent_t = E_RAB_Level_QoS_Parameters; - static constexpr bool optional = true; - - }; - requested_SCG_E_RAB_Level_QoS_Parameters_t& set_requested_SCG_E_RAB_Level_QoS_Parameters() { requested_SCG_E_RAB_Level_QoS_Parameters.setpresent(true); return requested_SCG_E_RAB_Level_QoS_Parameters;} - requested_SCG_E_RAB_Level_QoS_Parameters_t const* get_requested_SCG_E_RAB_Level_QoS_Parameters() const {return requested_SCG_E_RAB_Level_QoS_Parameters.is_valid() ? &requested_SCG_E_RAB_Level_QoS_Parameters : nullptr;} - struct meNB_UL_GTP_TEIDatPDCP_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "meNB_UL_GTP_TEIDatPDCP_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - meNB_UL_GTP_TEIDatPDCP_t& set_meNB_UL_GTP_TEIDatPDCP() { meNB_UL_GTP_TEIDatPDCP.setpresent(true); return meNB_UL_GTP_TEIDatPDCP;} - meNB_UL_GTP_TEIDatPDCP_t const* get_meNB_UL_GTP_TEIDatPDCP() const {return meNB_UL_GTP_TEIDatPDCP.is_valid() ? &meNB_UL_GTP_TEIDatPDCP : nullptr;} - struct uL_Configuration_t : ULConfiguration - { - static constexpr const char* name() {return "uL_Configuration_t";} - using parent_t = ULConfiguration; - static constexpr bool optional = true; - - }; - uL_Configuration_t& set_uL_Configuration() { uL_Configuration.setpresent(true); return uL_Configuration;} - uL_Configuration_t const* get_uL_Configuration() const {return uL_Configuration.is_valid() ? &uL_Configuration : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(requested_SCG_E_RAB_Level_QoS_Parameters); - v(meNB_UL_GTP_TEIDatPDCP); - v(uL_Configuration); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(requested_SCG_E_RAB_Level_QoS_Parameters); - v(meNB_UL_GTP_TEIDatPDCP); - v(uL_Configuration); - v(iE_Extensions); - - }; - void clear() - { - requested_SCG_E_RAB_Level_QoS_Parameters.clear(); - meNB_UL_GTP_TEIDatPDCP.clear(); - uL_Configuration.clear(); - iE_Extensions.clear(); - - }; - private: - requested_SCG_E_RAB_Level_QoS_Parameters_t requested_SCG_E_RAB_Level_QoS_Parameters; - meNB_UL_GTP_TEIDatPDCP_t meNB_UL_GTP_TEIDatPDCP; - uL_Configuration_t uL_Configuration; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeModified-SgNBModReq-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeModified_SgNBModReq_ItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-ToBeModified-SgNBModReq-Item ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - en-DC-ResourceConfiguration EN-DC-ResourceConfiguration, - resource-configuration CHOICE { - sgNBPDCPpresent E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent, - sgNBPDCPnotpresent E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent, - ... - }, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeModified-SgNBModReq-ItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeModified_SgNBModReq_Item : asn::sequence<4, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-ToBeModified-SgNBModReq-Item";} - using parent_t = asn::sequence<4, 0, true, 1>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct en_DC_ResourceConfiguration_t : EN_DC_ResourceConfiguration - { - static constexpr const char* name() {return "en_DC_ResourceConfiguration_t";} - using parent_t = EN_DC_ResourceConfiguration; - - }; - en_DC_ResourceConfiguration_t& ref_en_DC_ResourceConfiguration() {return en_DC_ResourceConfiguration;} - en_DC_ResourceConfiguration_t const& ref_en_DC_ResourceConfiguration() const {return en_DC_ResourceConfiguration;} - struct resource_configuration_t : asn::choice<2, 0, true> - { - static constexpr const char* name() {return "resource_configuration_t";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~resource_configuration_t() {clear();} - struct sgNBPDCPpresent_t : E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent - { - static constexpr const char* name() {return "sgNBPDCPpresent_t";} - using parent_t = E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent; - - }; - struct sgNBPDCPnotpresent_t : E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent - { - static constexpr const char* name() {return "sgNBPDCPnotpresent_t";} - using parent_t = E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - sgNBPDCPpresent_t& select_sgNBPDCPpresent() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - sgNBPDCPpresent_t const* get_sgNBPDCPpresent() const { if(get_index() == 1) { return &var.as();} return nullptr; } - sgNBPDCPnotpresent_t& select_sgNBPDCPnotpresent() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - sgNBPDCPnotpresent_t const* get_sgNBPDCPnotpresent() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(sgNBPDCPpresent_t)]; - char dummy2[sizeof(sgNBPDCPnotpresent_t)]; - - }; - asn::variant var; - index_type index {0}; - }; - resource_configuration_t& ref_resource_configuration() {return resource_configuration;} - resource_configuration_t const& ref_resource_configuration() const {return resource_configuration;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(en_DC_ResourceConfiguration); - v(resource_configuration); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(en_DC_ResourceConfiguration); - v(resource_configuration); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - en_DC_ResourceConfiguration.clear(); - resource_configuration.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - en_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; - resource_configuration_t resource_configuration; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeModified-SgNBModReq-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-ToBeModified-SgNBModReq-Item CRITICALITY ignore TYPE E-RABs-ToBeModified-SgNBModReq-Item PRESENCE mandatory}, - ... -} -*/ - -struct E_RABs_ToBeModified_SgNBModReq_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeModified_SgNBModReq_Item() { set(id_E_RABs_ToBeModified_SgNBModReq_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_ToBeModified_SgNBModReq_Item)) { type = 1; return true; } - else { type = 2; 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_E_RABs_ToBeModified_SgNBModReq_Item);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeModified_SgNBModReq_Item() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_ToBeModified_SgNBModReq_Item& select_id_E_RABs_ToBeModified_SgNBModReq_Item() { return set(1); } - E_RABs_ToBeModified_SgNBModReq_Item const* get_id_E_RABs_ToBeModified_SgNBModReq_Item() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_ToBeModified_SgNBModReq_Item()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(E_RABs_ToBeModified_SgNBModReq_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeModified_SgNBModReq_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-ToBeModified-SgNBModReq-List ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeModified-SgNBModReq-ItemIEs} } -*/ - -struct E_RABs_ToBeModified_SgNBModReq_List_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_ToBeModified_SgNBModReq_List_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_ToBeModified_SgNBModReq_List : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-ToBeModified-SgNBModReq-List";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= { - { ID id-uLpDCPSnLength CRITICALITY ignore EXTENSION PDCPSnLength PRESENCE optional}| - { ID id-dLPDCPSnLength CRITICALITY ignore EXTENSION PDCPSnLength PRESENCE optional}| - { ID id-new-drb-ID-req CRITICALITY ignore EXTENSION NewDRBIDrequest PRESENCE optional}, - ... -} -*/ - -struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_uLpDCPSnLength() { set(id_uLpDCPSnLength); type=1;} - void select_id_dLPDCPSnLength() { set(id_dLPDCPSnLength); type=2;} - void select_id_new_drb_ID_req() { set(id_new_drb_ID_req); type=3;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_uLpDCPSnLength)) { type = 1; return true; } - else if(equal(id_dLPDCPSnLength)) { type = 2; return true; } - else if(equal(id_new_drb_ID_req)) { type = 3; return true; } - else { type = 4; 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_uLpDCPSnLength);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_dLPDCPSnLength);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_new_drb_ID_req);} return false; - case 4: type = 4; 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 == 4; } - void clear() {type = 0;} - void select_id_uLpDCPSnLength() { set(ignore); type=1;} - void select_id_dLPDCPSnLength() { set(ignore); type=2;} - void select_id_new_drb_ID_req() { set(ignore); type=3;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else { type = 4; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - PDCPSnLength& select_id_uLpDCPSnLength() { return set(1); } - PDCPSnLength const* get_id_uLpDCPSnLength() const { return get(1); } - PDCPSnLength& select_id_dLPDCPSnLength() { return set(2); } - PDCPSnLength const* get_id_dLPDCPSnLength() const { return get(2); } - NewDRBIDrequest& select_id_new_drb_ID_req() { return set(3); } - NewDRBIDrequest const* get_id_new_drb_ID_req() const { return get(3); } - bool is_unknown() const { return type == 4; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_uLpDCPSnLength()); return true; - case 2: v(select_id_dLPDCPSnLength()); return true; - case 3: v(select_id_new_drb_ID_req()); return true; - case 4: if(type != 4) {clear(); asn::base::set();} type = 4; 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; - } - 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(NewDRBIDrequest)]; - char dummy2[sizeof(PDCPSnLength)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_uLpDCPSnLength() { set(optional); type=1;} - void select_id_dLPDCPSnLength() { set(optional); type=2;} - void select_id_new_drb_ID_req() { set(optional); type=3;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else { type = 4; 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(optional);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; 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}; - - }; - -}; -/* -E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent ::= SEQUENCE { - requested-MCG-E-RAB-Level-QoS-Parameters E-RAB-Level-QoS-Parameters OPTIONAL, - uL-Configuration ULConfiguration OPTIONAL, - sgNB-UL-GTP-TEIDatPDCP GTPtunnelEndpoint OPTIONAL, - s1-DL-GTP-TEIDatSgNB GTPtunnelEndpoint OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresentExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent : asn::sequence<5, 0, true, 5> -{ - static constexpr const char* name() {return "E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent";} - using parent_t = asn::sequence<5, 0, true, 5>; - struct requested_MCG_E_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters - { - static constexpr const char* name() {return "requested_MCG_E_RAB_Level_QoS_Parameters_t";} - using parent_t = E_RAB_Level_QoS_Parameters; - static constexpr bool optional = true; - - }; - requested_MCG_E_RAB_Level_QoS_Parameters_t& set_requested_MCG_E_RAB_Level_QoS_Parameters() { requested_MCG_E_RAB_Level_QoS_Parameters.setpresent(true); return requested_MCG_E_RAB_Level_QoS_Parameters;} - requested_MCG_E_RAB_Level_QoS_Parameters_t const* get_requested_MCG_E_RAB_Level_QoS_Parameters() const {return requested_MCG_E_RAB_Level_QoS_Parameters.is_valid() ? &requested_MCG_E_RAB_Level_QoS_Parameters : nullptr;} - struct uL_Configuration_t : ULConfiguration - { - static constexpr const char* name() {return "uL_Configuration_t";} - using parent_t = ULConfiguration; - static constexpr bool optional = true; - - }; - uL_Configuration_t& set_uL_Configuration() { uL_Configuration.setpresent(true); return uL_Configuration;} - uL_Configuration_t const* get_uL_Configuration() const {return uL_Configuration.is_valid() ? &uL_Configuration : nullptr;} - struct sgNB_UL_GTP_TEIDatPDCP_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "sgNB_UL_GTP_TEIDatPDCP_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - sgNB_UL_GTP_TEIDatPDCP_t& set_sgNB_UL_GTP_TEIDatPDCP() { sgNB_UL_GTP_TEIDatPDCP.setpresent(true); return sgNB_UL_GTP_TEIDatPDCP;} - sgNB_UL_GTP_TEIDatPDCP_t const* get_sgNB_UL_GTP_TEIDatPDCP() const {return sgNB_UL_GTP_TEIDatPDCP.is_valid() ? &sgNB_UL_GTP_TEIDatPDCP : nullptr;} - struct s1_DL_GTP_TEIDatSgNB_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "s1_DL_GTP_TEIDatSgNB_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - s1_DL_GTP_TEIDatSgNB_t& set_s1_DL_GTP_TEIDatSgNB() { s1_DL_GTP_TEIDatSgNB.setpresent(true); return s1_DL_GTP_TEIDatSgNB;} - s1_DL_GTP_TEIDatSgNB_t const* get_s1_DL_GTP_TEIDatSgNB() const {return s1_DL_GTP_TEIDatSgNB.is_valid() ? &s1_DL_GTP_TEIDatSgNB : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(requested_MCG_E_RAB_Level_QoS_Parameters); - v(uL_Configuration); - v(sgNB_UL_GTP_TEIDatPDCP); - v(s1_DL_GTP_TEIDatSgNB); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(requested_MCG_E_RAB_Level_QoS_Parameters); - v(uL_Configuration); - v(sgNB_UL_GTP_TEIDatPDCP); - v(s1_DL_GTP_TEIDatSgNB); - v(iE_Extensions); - - }; - void clear() - { - requested_MCG_E_RAB_Level_QoS_Parameters.clear(); - uL_Configuration.clear(); - sgNB_UL_GTP_TEIDatPDCP.clear(); - s1_DL_GTP_TEIDatSgNB.clear(); - iE_Extensions.clear(); - - }; - private: - requested_MCG_E_RAB_Level_QoS_Parameters_t requested_MCG_E_RAB_Level_QoS_Parameters; - uL_Configuration_t uL_Configuration; - sgNB_UL_GTP_TEIDatPDCP_t sgNB_UL_GTP_TEIDatPDCP; - s1_DL_GTP_TEIDatSgNB_t s1_DL_GTP_TEIDatSgNB; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= { - { ID id-RLC-Status CRITICALITY ignore EXTENSION RLC-Status PRESENCE optional}| - { ID id-lCID CRITICALITY ignore EXTENSION LCID PRESENCE optional}, - ... -} -*/ - -struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_RLC_Status() { set(id_RLC_Status); type=1;} - void select_id_lCID() { set(id_lCID); type=2;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_RLC_Status)) { type = 1; return true; } - else if(equal(id_lCID)) { type = 2; return true; } - else { type = 3; 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_RLC_Status);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_lCID);} return false; - case 3: type = 3; 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 == 3; } - void clear() {type = 0;} - void select_id_RLC_Status() { set(ignore); type=1;} - void select_id_lCID() { set(ignore); type=2;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else { type = 3; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - RLC_Status& select_id_RLC_Status() { return set(1); } - RLC_Status const* get_id_RLC_Status() const { return get(1); } - LCID& select_id_lCID() { return set(2); } - LCID const* get_id_lCID() const { return get(2); } - bool is_unknown() const { return type == 3; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_RLC_Status()); return true; - case 2: v(select_id_lCID()); return true; - case 3: if(type != 3) {clear(); asn::base::set();} type = 3; 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; - } - 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(LCID)]; - char dummy2[sizeof(RLC_Status)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_RLC_Status() { set(optional); type=1;} - void select_id_lCID() { set(optional); type=2;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else { type = 3; 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(optional);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; 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}; - - }; - -}; -/* -E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent ::= SEQUENCE { - sgNB-DL-GTP-TEIDatSCG GTPtunnelEndpoint OPTIONAL, - secondary-sgNB-DL-GTP-TEIDatSCG GTPtunnelEndpoint OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresentExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent : asn::sequence<3, 0, true, 3> -{ - static constexpr const char* name() {return "E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent";} - using parent_t = asn::sequence<3, 0, true, 3>; - struct sgNB_DL_GTP_TEIDatSCG_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "sgNB_DL_GTP_TEIDatSCG_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - sgNB_DL_GTP_TEIDatSCG_t& set_sgNB_DL_GTP_TEIDatSCG() { sgNB_DL_GTP_TEIDatSCG.setpresent(true); return sgNB_DL_GTP_TEIDatSCG;} - sgNB_DL_GTP_TEIDatSCG_t const* get_sgNB_DL_GTP_TEIDatSCG() const {return sgNB_DL_GTP_TEIDatSCG.is_valid() ? &sgNB_DL_GTP_TEIDatSCG : nullptr;} - struct secondary_sgNB_DL_GTP_TEIDatSCG_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "secondary_sgNB_DL_GTP_TEIDatSCG_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - secondary_sgNB_DL_GTP_TEIDatSCG_t& set_secondary_sgNB_DL_GTP_TEIDatSCG() { secondary_sgNB_DL_GTP_TEIDatSCG.setpresent(true); return secondary_sgNB_DL_GTP_TEIDatSCG;} - secondary_sgNB_DL_GTP_TEIDatSCG_t const* get_secondary_sgNB_DL_GTP_TEIDatSCG() const {return secondary_sgNB_DL_GTP_TEIDatSCG.is_valid() ? &secondary_sgNB_DL_GTP_TEIDatSCG : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(sgNB_DL_GTP_TEIDatSCG); - v(secondary_sgNB_DL_GTP_TEIDatSCG); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(sgNB_DL_GTP_TEIDatSCG); - v(secondary_sgNB_DL_GTP_TEIDatSCG); - v(iE_Extensions); - - }; - void clear() - { - sgNB_DL_GTP_TEIDatSCG.clear(); - secondary_sgNB_DL_GTP_TEIDatSCG.clear(); - iE_Extensions.clear(); - - }; - private: - sgNB_DL_GTP_TEIDatSCG_t sgNB_DL_GTP_TEIDatSCG; - secondary_sgNB_DL_GTP_TEIDatSCG_t secondary_sgNB_DL_GTP_TEIDatSCG; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeModified-SgNBModReqd-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-ToBeModified-SgNBModReqd-Item ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - en-DC-ResourceConfiguration EN-DC-ResourceConfiguration, - resource-configuration CHOICE { - sgNBPDCPpresent E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent, - sgNBPDCPnotpresent E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent, - ... - }, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeModified-SgNBModReqd-ItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeModified_SgNBModReqd_Item : asn::sequence<4, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-ToBeModified-SgNBModReqd-Item";} - using parent_t = asn::sequence<4, 0, true, 1>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct en_DC_ResourceConfiguration_t : EN_DC_ResourceConfiguration - { - static constexpr const char* name() {return "en_DC_ResourceConfiguration_t";} - using parent_t = EN_DC_ResourceConfiguration; - - }; - en_DC_ResourceConfiguration_t& ref_en_DC_ResourceConfiguration() {return en_DC_ResourceConfiguration;} - en_DC_ResourceConfiguration_t const& ref_en_DC_ResourceConfiguration() const {return en_DC_ResourceConfiguration;} - struct resource_configuration_t : asn::choice<2, 0, true> - { - static constexpr const char* name() {return "resource_configuration_t";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~resource_configuration_t() {clear();} - struct sgNBPDCPpresent_t : E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent - { - static constexpr const char* name() {return "sgNBPDCPpresent_t";} - using parent_t = E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent; - - }; - struct sgNBPDCPnotpresent_t : E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent - { - static constexpr const char* name() {return "sgNBPDCPnotpresent_t";} - using parent_t = E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - sgNBPDCPpresent_t& select_sgNBPDCPpresent() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - sgNBPDCPpresent_t const* get_sgNBPDCPpresent() const { if(get_index() == 1) { return &var.as();} return nullptr; } - sgNBPDCPnotpresent_t& select_sgNBPDCPnotpresent() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - sgNBPDCPnotpresent_t const* get_sgNBPDCPnotpresent() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(sgNBPDCPpresent_t)]; - char dummy2[sizeof(sgNBPDCPnotpresent_t)]; - - }; - asn::variant var; - index_type index {0}; - }; - resource_configuration_t& ref_resource_configuration() {return resource_configuration;} - resource_configuration_t const& ref_resource_configuration() const {return resource_configuration;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(en_DC_ResourceConfiguration); - v(resource_configuration); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(en_DC_ResourceConfiguration); - v(resource_configuration); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - en_DC_ResourceConfiguration.clear(); - resource_configuration.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - en_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; - resource_configuration_t resource_configuration; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeModified-SgNBModReqd-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-ToBeModified-SgNBModReqd-Item CRITICALITY ignore TYPE E-RABs-ToBeModified-SgNBModReqd-Item PRESENCE mandatory }, - ... -} -*/ - -struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeModified_SgNBModReqd_Item() { set(id_E_RABs_ToBeModified_SgNBModReqd_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_ToBeModified_SgNBModReqd_Item)) { type = 1; return true; } - else { type = 2; 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_E_RABs_ToBeModified_SgNBModReqd_Item);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeModified_SgNBModReqd_Item() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_ToBeModified_SgNBModReqd_Item& select_id_E_RABs_ToBeModified_SgNBModReqd_Item() { return set(1); } - E_RABs_ToBeModified_SgNBModReqd_Item const* get_id_E_RABs_ToBeModified_SgNBModReqd_Item() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_ToBeModified_SgNBModReqd_Item()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(E_RABs_ToBeModified_SgNBModReqd_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeModified_SgNBModReqd_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-ToBeModified-SgNBModReqdList ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeModified-SgNBModReqd-ItemIEs} } -*/ - -struct E_RABs_ToBeModified_SgNBModReqdList_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_ToBeModified_SgNBModReqdList_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_ToBeModified_SgNBModReqdList : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-ToBeModified-SgNBModReqdList";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-ToBeReleased-ModReqItem-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-ModReqItem-SCG-Bearer ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - dL-Forwarding-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - uL-Forwarding-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeReleased-ModReqItem-SCG-BearerExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeReleased_ModReqItem_SCG_Bearer : asn::sequence<4, 0, true, 3> -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-ModReqItem-SCG-Bearer";} - using parent_t = asn::sequence<4, 0, true, 3>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct dL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "dL_Forwarding_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - dL_Forwarding_GTPtunnelEndpoint_t& set_dL_Forwarding_GTPtunnelEndpoint() { dL_Forwarding_GTPtunnelEndpoint.setpresent(true); return dL_Forwarding_GTPtunnelEndpoint;} - dL_Forwarding_GTPtunnelEndpoint_t const* get_dL_Forwarding_GTPtunnelEndpoint() const {return dL_Forwarding_GTPtunnelEndpoint.is_valid() ? &dL_Forwarding_GTPtunnelEndpoint : nullptr;} - struct uL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "uL_Forwarding_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - uL_Forwarding_GTPtunnelEndpoint_t& set_uL_Forwarding_GTPtunnelEndpoint() { uL_Forwarding_GTPtunnelEndpoint.setpresent(true); return uL_Forwarding_GTPtunnelEndpoint;} - uL_Forwarding_GTPtunnelEndpoint_t const* get_uL_Forwarding_GTPtunnelEndpoint() const {return uL_Forwarding_GTPtunnelEndpoint.is_valid() ? &uL_Forwarding_GTPtunnelEndpoint : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(dL_Forwarding_GTPtunnelEndpoint); - v(uL_Forwarding_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(dL_Forwarding_GTPtunnelEndpoint); - v(uL_Forwarding_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - dL_Forwarding_GTPtunnelEndpoint.clear(); - uL_Forwarding_GTPtunnelEndpoint.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - dL_Forwarding_GTPtunnelEndpoint_t dL_Forwarding_GTPtunnelEndpoint; - uL_Forwarding_GTPtunnelEndpoint_t uL_Forwarding_GTPtunnelEndpoint; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeReleased-ModReqItem-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-ModReqItem-Split-Bearer ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - dL-Forwarding-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeReleased-ModReqItem-Split-BearerExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeReleased_ModReqItem_Split_Bearer : asn::sequence<3, 0, true, 2> -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-ModReqItem-Split-Bearer";} - using parent_t = asn::sequence<3, 0, true, 2>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct dL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "dL_Forwarding_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - dL_Forwarding_GTPtunnelEndpoint_t& set_dL_Forwarding_GTPtunnelEndpoint() { dL_Forwarding_GTPtunnelEndpoint.setpresent(true); return dL_Forwarding_GTPtunnelEndpoint;} - dL_Forwarding_GTPtunnelEndpoint_t const* get_dL_Forwarding_GTPtunnelEndpoint() const {return dL_Forwarding_GTPtunnelEndpoint.is_valid() ? &dL_Forwarding_GTPtunnelEndpoint : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(dL_Forwarding_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(dL_Forwarding_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - dL_Forwarding_GTPtunnelEndpoint.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - dL_Forwarding_GTPtunnelEndpoint_t dL_Forwarding_GTPtunnelEndpoint; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeReleased-ModReqItem ::= CHOICE { - sCG-Bearer E-RABs-ToBeReleased-ModReqItem-SCG-Bearer, - split-Bearer E-RABs-ToBeReleased-ModReqItem-Split-Bearer, - ... -} -*/ - -struct E_RABs_ToBeReleased_ModReqItem : asn::choice<2, 0, true> -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-ModReqItem";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~E_RABs_ToBeReleased_ModReqItem() {clear();} - struct sCG_Bearer_t : E_RABs_ToBeReleased_ModReqItem_SCG_Bearer - { - static constexpr const char* name() {return "sCG_Bearer_t";} - using parent_t = E_RABs_ToBeReleased_ModReqItem_SCG_Bearer; - - }; - struct split_Bearer_t : E_RABs_ToBeReleased_ModReqItem_Split_Bearer - { - static constexpr const char* name() {return "split_Bearer_t";} - using parent_t = E_RABs_ToBeReleased_ModReqItem_Split_Bearer; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - sCG_Bearer_t& select_sCG_Bearer() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - sCG_Bearer_t const* get_sCG_Bearer() const { if(get_index() == 1) { return &var.as();} return nullptr; } - split_Bearer_t& select_split_Bearer() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - split_Bearer_t const* get_split_Bearer() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(sCG_Bearer_t)]; - char dummy2[sizeof(split_Bearer_t)]; - - }; - asn::variant var; - index_type index {0}; -}; -/* -E-RABs-ToBeReleased-ModReqItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-ToBeReleased-ModReqItem CRITICALITY ignore TYPE E-RABs-ToBeReleased-ModReqItem PRESENCE mandatory}, - ... -} -*/ - -struct E_RABs_ToBeReleased_ModReqItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_ModReqItem() { set(id_E_RABs_ToBeReleased_ModReqItem); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_ToBeReleased_ModReqItem)) { type = 1; return true; } - else { type = 2; 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_E_RABs_ToBeReleased_ModReqItem);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_ModReqItem() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_ToBeReleased_ModReqItem& select_id_E_RABs_ToBeReleased_ModReqItem() { return set(1); } - E_RABs_ToBeReleased_ModReqItem const* get_id_E_RABs_ToBeReleased_ModReqItem() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_ToBeReleased_ModReqItem()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(E_RABs_ToBeReleased_ModReqItem)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_ModReqItem() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-List-ModReq ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeReleased-ModReqItemIEs} } -*/ - -struct E_RABs_ToBeReleased_List_ModReq_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_ToBeReleased_List_ModReq_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_ToBeReleased_List_ModReq : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-List-ModReq";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-ToBeReleased-RelConfItem-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-RelConfItem-SCG-Bearer ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - uL-Forwarding-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - dL-Forwarding-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeReleased-RelConfItem-SCG-BearerExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeReleased_RelConfItem_SCG_Bearer : asn::sequence<4, 0, true, 3> -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-RelConfItem-SCG-Bearer";} - using parent_t = asn::sequence<4, 0, true, 3>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct uL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "uL_Forwarding_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - uL_Forwarding_GTPtunnelEndpoint_t& set_uL_Forwarding_GTPtunnelEndpoint() { uL_Forwarding_GTPtunnelEndpoint.setpresent(true); return uL_Forwarding_GTPtunnelEndpoint;} - uL_Forwarding_GTPtunnelEndpoint_t const* get_uL_Forwarding_GTPtunnelEndpoint() const {return uL_Forwarding_GTPtunnelEndpoint.is_valid() ? &uL_Forwarding_GTPtunnelEndpoint : nullptr;} - struct dL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "dL_Forwarding_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - dL_Forwarding_GTPtunnelEndpoint_t& set_dL_Forwarding_GTPtunnelEndpoint() { dL_Forwarding_GTPtunnelEndpoint.setpresent(true); return dL_Forwarding_GTPtunnelEndpoint;} - dL_Forwarding_GTPtunnelEndpoint_t const* get_dL_Forwarding_GTPtunnelEndpoint() const {return dL_Forwarding_GTPtunnelEndpoint.is_valid() ? &dL_Forwarding_GTPtunnelEndpoint : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(uL_Forwarding_GTPtunnelEndpoint); - v(dL_Forwarding_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(uL_Forwarding_GTPtunnelEndpoint); - v(dL_Forwarding_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - uL_Forwarding_GTPtunnelEndpoint.clear(); - dL_Forwarding_GTPtunnelEndpoint.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - uL_Forwarding_GTPtunnelEndpoint_t uL_Forwarding_GTPtunnelEndpoint; - dL_Forwarding_GTPtunnelEndpoint_t dL_Forwarding_GTPtunnelEndpoint; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeReleased-RelConfItem-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-RelConfItem-Split-Bearer ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - dL-Forwarding-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeReleased-RelConfItem-Split-BearerExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeReleased_RelConfItem_Split_Bearer : asn::sequence<3, 0, true, 2> -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-RelConfItem-Split-Bearer";} - using parent_t = asn::sequence<3, 0, true, 2>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct dL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "dL_Forwarding_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - dL_Forwarding_GTPtunnelEndpoint_t& set_dL_Forwarding_GTPtunnelEndpoint() { dL_Forwarding_GTPtunnelEndpoint.setpresent(true); return dL_Forwarding_GTPtunnelEndpoint;} - dL_Forwarding_GTPtunnelEndpoint_t const* get_dL_Forwarding_GTPtunnelEndpoint() const {return dL_Forwarding_GTPtunnelEndpoint.is_valid() ? &dL_Forwarding_GTPtunnelEndpoint : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(dL_Forwarding_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(dL_Forwarding_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - dL_Forwarding_GTPtunnelEndpoint.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - dL_Forwarding_GTPtunnelEndpoint_t dL_Forwarding_GTPtunnelEndpoint; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeReleased-RelConfItem ::= CHOICE { - sCG-Bearer E-RABs-ToBeReleased-RelConfItem-SCG-Bearer, - split-Bearer E-RABs-ToBeReleased-RelConfItem-Split-Bearer, - ... -} -*/ - -struct E_RABs_ToBeReleased_RelConfItem : asn::choice<2, 0, true> -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-RelConfItem";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~E_RABs_ToBeReleased_RelConfItem() {clear();} - struct sCG_Bearer_t : E_RABs_ToBeReleased_RelConfItem_SCG_Bearer - { - static constexpr const char* name() {return "sCG_Bearer_t";} - using parent_t = E_RABs_ToBeReleased_RelConfItem_SCG_Bearer; - - }; - struct split_Bearer_t : E_RABs_ToBeReleased_RelConfItem_Split_Bearer - { - static constexpr const char* name() {return "split_Bearer_t";} - using parent_t = E_RABs_ToBeReleased_RelConfItem_Split_Bearer; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - sCG_Bearer_t& select_sCG_Bearer() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - sCG_Bearer_t const* get_sCG_Bearer() const { if(get_index() == 1) { return &var.as();} return nullptr; } - split_Bearer_t& select_split_Bearer() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - split_Bearer_t const* get_split_Bearer() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(sCG_Bearer_t)]; - char dummy2[sizeof(split_Bearer_t)]; - - }; - asn::variant var; - index_type index {0}; -}; -/* -E-RABs-ToBeReleased-RelConfItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-ToBeReleased-RelConfItem CRITICALITY ignore TYPE E-RABs-ToBeReleased-RelConfItem PRESENCE mandatory}, - ... -} -*/ - -struct E_RABs_ToBeReleased_RelConfItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_RelConfItem() { set(id_E_RABs_ToBeReleased_RelConfItem); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_ToBeReleased_RelConfItem)) { type = 1; return true; } - else { type = 2; 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_E_RABs_ToBeReleased_RelConfItem);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_RelConfItem() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_ToBeReleased_RelConfItem& select_id_E_RABs_ToBeReleased_RelConfItem() { return set(1); } - E_RABs_ToBeReleased_RelConfItem const* get_id_E_RABs_ToBeReleased_RelConfItem() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_ToBeReleased_RelConfItem()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(E_RABs_ToBeReleased_RelConfItem)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_RelConfItem() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-List-RelConf ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeReleased-RelConfItemIEs} } -*/ - -struct E_RABs_ToBeReleased_List_RelConf_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_ToBeReleased_List_RelConf_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_ToBeReleased_List_RelConf : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-List-RelConf";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-ToBeReleased-RelReqItem-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-RelReqItem-SCG-Bearer ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - uL-Forwarding-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - dL-Forwarding-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeReleased-RelReqItem-SCG-BearerExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeReleased_RelReqItem_SCG_Bearer : asn::sequence<4, 0, true, 3> -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-RelReqItem-SCG-Bearer";} - using parent_t = asn::sequence<4, 0, true, 3>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct uL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "uL_Forwarding_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - uL_Forwarding_GTPtunnelEndpoint_t& set_uL_Forwarding_GTPtunnelEndpoint() { uL_Forwarding_GTPtunnelEndpoint.setpresent(true); return uL_Forwarding_GTPtunnelEndpoint;} - uL_Forwarding_GTPtunnelEndpoint_t const* get_uL_Forwarding_GTPtunnelEndpoint() const {return uL_Forwarding_GTPtunnelEndpoint.is_valid() ? &uL_Forwarding_GTPtunnelEndpoint : nullptr;} - struct dL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "dL_Forwarding_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - dL_Forwarding_GTPtunnelEndpoint_t& set_dL_Forwarding_GTPtunnelEndpoint() { dL_Forwarding_GTPtunnelEndpoint.setpresent(true); return dL_Forwarding_GTPtunnelEndpoint;} - dL_Forwarding_GTPtunnelEndpoint_t const* get_dL_Forwarding_GTPtunnelEndpoint() const {return dL_Forwarding_GTPtunnelEndpoint.is_valid() ? &dL_Forwarding_GTPtunnelEndpoint : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(uL_Forwarding_GTPtunnelEndpoint); - v(dL_Forwarding_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(uL_Forwarding_GTPtunnelEndpoint); - v(dL_Forwarding_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - uL_Forwarding_GTPtunnelEndpoint.clear(); - dL_Forwarding_GTPtunnelEndpoint.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - uL_Forwarding_GTPtunnelEndpoint_t uL_Forwarding_GTPtunnelEndpoint; - dL_Forwarding_GTPtunnelEndpoint_t dL_Forwarding_GTPtunnelEndpoint; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeReleased-RelReqItem-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-RelReqItem-Split-Bearer ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - dL-Forwarding-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeReleased-RelReqItem-Split-BearerExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeReleased_RelReqItem_Split_Bearer : asn::sequence<3, 0, true, 2> -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-RelReqItem-Split-Bearer";} - using parent_t = asn::sequence<3, 0, true, 2>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct dL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "dL_Forwarding_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - dL_Forwarding_GTPtunnelEndpoint_t& set_dL_Forwarding_GTPtunnelEndpoint() { dL_Forwarding_GTPtunnelEndpoint.setpresent(true); return dL_Forwarding_GTPtunnelEndpoint;} - dL_Forwarding_GTPtunnelEndpoint_t const* get_dL_Forwarding_GTPtunnelEndpoint() const {return dL_Forwarding_GTPtunnelEndpoint.is_valid() ? &dL_Forwarding_GTPtunnelEndpoint : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(dL_Forwarding_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(dL_Forwarding_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - dL_Forwarding_GTPtunnelEndpoint.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - dL_Forwarding_GTPtunnelEndpoint_t dL_Forwarding_GTPtunnelEndpoint; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeReleased-RelReqItem ::= CHOICE { - sCG-Bearer E-RABs-ToBeReleased-RelReqItem-SCG-Bearer, - split-Bearer E-RABs-ToBeReleased-RelReqItem-Split-Bearer, - ... -} -*/ - -struct E_RABs_ToBeReleased_RelReqItem : asn::choice<2, 0, true> -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-RelReqItem";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~E_RABs_ToBeReleased_RelReqItem() {clear();} - struct sCG_Bearer_t : E_RABs_ToBeReleased_RelReqItem_SCG_Bearer - { - static constexpr const char* name() {return "sCG_Bearer_t";} - using parent_t = E_RABs_ToBeReleased_RelReqItem_SCG_Bearer; - - }; - struct split_Bearer_t : E_RABs_ToBeReleased_RelReqItem_Split_Bearer - { - static constexpr const char* name() {return "split_Bearer_t";} - using parent_t = E_RABs_ToBeReleased_RelReqItem_Split_Bearer; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - sCG_Bearer_t& select_sCG_Bearer() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - sCG_Bearer_t const* get_sCG_Bearer() const { if(get_index() == 1) { return &var.as();} return nullptr; } - split_Bearer_t& select_split_Bearer() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - split_Bearer_t const* get_split_Bearer() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(sCG_Bearer_t)]; - char dummy2[sizeof(split_Bearer_t)]; - - }; - asn::variant var; - index_type index {0}; -}; -/* -E-RABs-ToBeReleased-RelReqItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-ToBeReleased-RelReqItem CRITICALITY ignore TYPE E-RABs-ToBeReleased-RelReqItem PRESENCE mandatory}, - ... -} -*/ - -struct E_RABs_ToBeReleased_RelReqItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_RelReqItem() { set(id_E_RABs_ToBeReleased_RelReqItem); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_ToBeReleased_RelReqItem)) { type = 1; return true; } - else { type = 2; 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_E_RABs_ToBeReleased_RelReqItem);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_RelReqItem() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_ToBeReleased_RelReqItem& select_id_E_RABs_ToBeReleased_RelReqItem() { return set(1); } - E_RABs_ToBeReleased_RelReqItem const* get_id_E_RABs_ToBeReleased_RelReqItem() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_ToBeReleased_RelReqItem()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(E_RABs_ToBeReleased_RelReqItem)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_RelReqItem() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-List-RelReq ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeReleased-RelReqItemIEs} } -*/ - -struct E_RABs_ToBeReleased_List_RelReq_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_ToBeReleased_List_RelReq_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_ToBeReleased_List_RelReq : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-List-RelReq";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-ToBeReleased-ModReqdItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeReleased_ModReqdItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-ModReqdItem ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - cause Cause, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeReleased-ModReqdItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeReleased_ModReqdItem : asn::sequence<3, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-ModReqdItem";} - using parent_t = asn::sequence<3, 0, true, 1>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct cause_t : Cause - { - static constexpr const char* name() {return "cause_t";} - using parent_t = Cause; - - }; - cause_t& ref_cause() {return cause;} - cause_t const& ref_cause() const {return cause;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(cause); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(cause); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - cause.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - cause_t cause; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeReleased-ModReqdItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-ToBeReleased-ModReqdItem CRITICALITY ignore TYPE E-RABs-ToBeReleased-ModReqdItem PRESENCE mandatory }, - ... -} -*/ - -struct E_RABs_ToBeReleased_ModReqdItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_ModReqdItem() { set(id_E_RABs_ToBeReleased_ModReqdItem); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_ToBeReleased_ModReqdItem)) { type = 1; return true; } - else { type = 2; 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_E_RABs_ToBeReleased_ModReqdItem);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_ModReqdItem() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_ToBeReleased_ModReqdItem& select_id_E_RABs_ToBeReleased_ModReqdItem() { return set(1); } - E_RABs_ToBeReleased_ModReqdItem const* get_id_E_RABs_ToBeReleased_ModReqdItem() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_ToBeReleased_ModReqdItem()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(E_RABs_ToBeReleased_ModReqdItem)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_ModReqdItem() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-ModReqd ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeReleased-ModReqdItemIEs} } -*/ - -struct E_RABs_ToBeReleased_ModReqd_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_ToBeReleased_ModReqd_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_ToBeReleased_ModReqd : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-ModReqd";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent ::= SEQUENCE { - uL-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - dL-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresentExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent : asn::sequence<3, 0, true, 3> -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent";} - using parent_t = asn::sequence<3, 0, true, 3>; - struct uL_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "uL_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - uL_GTPtunnelEndpoint_t& set_uL_GTPtunnelEndpoint() { uL_GTPtunnelEndpoint.setpresent(true); return uL_GTPtunnelEndpoint;} - uL_GTPtunnelEndpoint_t const* get_uL_GTPtunnelEndpoint() const {return uL_GTPtunnelEndpoint.is_valid() ? &uL_GTPtunnelEndpoint : nullptr;} - struct dL_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "dL_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - dL_GTPtunnelEndpoint_t& set_dL_GTPtunnelEndpoint() { dL_GTPtunnelEndpoint.setpresent(true); return dL_GTPtunnelEndpoint;} - dL_GTPtunnelEndpoint_t const* get_dL_GTPtunnelEndpoint() const {return dL_GTPtunnelEndpoint.is_valid() ? &dL_GTPtunnelEndpoint : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(uL_GTPtunnelEndpoint); - v(dL_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(uL_GTPtunnelEndpoint); - v(dL_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - void clear() - { - uL_GTPtunnelEndpoint.clear(); - dL_GTPtunnelEndpoint.clear(); - iE_Extensions.clear(); - - }; - private: - uL_GTPtunnelEndpoint_t uL_GTPtunnelEndpoint; - dL_GTPtunnelEndpoint_t dL_GTPtunnelEndpoint; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent ::= SEQUENCE { - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresentExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent : asn::sequence<1, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent";} - using parent_t = asn::sequence<1, 0, true, 1>; - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(iE_Extensions); - - }; - void clear() - { - iE_Extensions.clear(); - - }; - private: - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeReleased-SgNBChaConf-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-SgNBChaConf-Item ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - en-DC-ResourceConfiguration EN-DC-ResourceConfiguration, - resource-configuration CHOICE { - sgNBPDCPpresent E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent, - sgNBPDCPnotpresent E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent, - ... - }, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBChaConf-ItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBChaConf_Item : asn::sequence<4, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBChaConf-Item";} - using parent_t = asn::sequence<4, 0, true, 1>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct en_DC_ResourceConfiguration_t : EN_DC_ResourceConfiguration - { - static constexpr const char* name() {return "en_DC_ResourceConfiguration_t";} - using parent_t = EN_DC_ResourceConfiguration; - - }; - en_DC_ResourceConfiguration_t& ref_en_DC_ResourceConfiguration() {return en_DC_ResourceConfiguration;} - en_DC_ResourceConfiguration_t const& ref_en_DC_ResourceConfiguration() const {return en_DC_ResourceConfiguration;} - struct resource_configuration_t : asn::choice<2, 0, true> - { - static constexpr const char* name() {return "resource_configuration_t";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~resource_configuration_t() {clear();} - struct sgNBPDCPpresent_t : E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent - { - static constexpr const char* name() {return "sgNBPDCPpresent_t";} - using parent_t = E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent; - - }; - struct sgNBPDCPnotpresent_t : E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent - { - static constexpr const char* name() {return "sgNBPDCPnotpresent_t";} - using parent_t = E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - sgNBPDCPpresent_t& select_sgNBPDCPpresent() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - sgNBPDCPpresent_t const* get_sgNBPDCPpresent() const { if(get_index() == 1) { return &var.as();} return nullptr; } - sgNBPDCPnotpresent_t& select_sgNBPDCPnotpresent() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - sgNBPDCPnotpresent_t const* get_sgNBPDCPnotpresent() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(sgNBPDCPpresent_t)]; - char dummy2[sizeof(sgNBPDCPnotpresent_t)]; - - }; - asn::variant var; - index_type index {0}; - }; - resource_configuration_t& ref_resource_configuration() {return resource_configuration;} - resource_configuration_t const& ref_resource_configuration() const {return resource_configuration;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(en_DC_ResourceConfiguration); - v(resource_configuration); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(en_DC_ResourceConfiguration); - v(resource_configuration); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - en_DC_ResourceConfiguration.clear(); - resource_configuration.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - en_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; - resource_configuration_t resource_configuration; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeReleased-SgNBChaConf-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-ToBeReleased-SgNBChaConf-Item CRITICALITY ignore TYPE E-RABs-ToBeReleased-SgNBChaConf-Item PRESENCE mandatory}, - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_SgNBChaConf_Item() { set(id_E_RABs_ToBeReleased_SgNBChaConf_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_ToBeReleased_SgNBChaConf_Item)) { type = 1; return true; } - else { type = 2; 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_E_RABs_ToBeReleased_SgNBChaConf_Item);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_SgNBChaConf_Item() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_ToBeReleased_SgNBChaConf_Item& select_id_E_RABs_ToBeReleased_SgNBChaConf_Item() { return set(1); } - E_RABs_ToBeReleased_SgNBChaConf_Item const* get_id_E_RABs_ToBeReleased_SgNBChaConf_Item() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_ToBeReleased_SgNBChaConf_Item()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(E_RABs_ToBeReleased_SgNBChaConf_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_SgNBChaConf_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-SgNBChaConfList ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeReleased-SgNBChaConf-ItemIEs} } -*/ - -struct E_RABs_ToBeReleased_SgNBChaConfList_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_ToBeReleased_SgNBChaConfList_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_ToBeReleased_SgNBChaConfList : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBChaConfList";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent ::= SEQUENCE { - dL-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - uL-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresentExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent : asn::sequence<3, 0, true, 3> -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent";} - using parent_t = asn::sequence<3, 0, true, 3>; - struct dL_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "dL_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - dL_GTPtunnelEndpoint_t& set_dL_GTPtunnelEndpoint() { dL_GTPtunnelEndpoint.setpresent(true); return dL_GTPtunnelEndpoint;} - dL_GTPtunnelEndpoint_t const* get_dL_GTPtunnelEndpoint() const {return dL_GTPtunnelEndpoint.is_valid() ? &dL_GTPtunnelEndpoint : nullptr;} - struct uL_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "uL_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - uL_GTPtunnelEndpoint_t& set_uL_GTPtunnelEndpoint() { uL_GTPtunnelEndpoint.setpresent(true); return uL_GTPtunnelEndpoint;} - uL_GTPtunnelEndpoint_t const* get_uL_GTPtunnelEndpoint() const {return uL_GTPtunnelEndpoint.is_valid() ? &uL_GTPtunnelEndpoint : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(dL_GTPtunnelEndpoint); - v(uL_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(dL_GTPtunnelEndpoint); - v(uL_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - void clear() - { - dL_GTPtunnelEndpoint.clear(); - uL_GTPtunnelEndpoint.clear(); - iE_Extensions.clear(); - - }; - private: - dL_GTPtunnelEndpoint_t dL_GTPtunnelEndpoint; - uL_GTPtunnelEndpoint_t uL_GTPtunnelEndpoint; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent ::= SEQUENCE { - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresentExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent : asn::sequence<1, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent";} - using parent_t = asn::sequence<1, 0, true, 1>; - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(iE_Extensions); - - }; - void clear() - { - iE_Extensions.clear(); - - }; - private: - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeReleased-SgNBModReq-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-SgNBModReq-Item ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - en-DC-ResourceConfiguration EN-DC-ResourceConfiguration, - resource-configuration CHOICE { - sgNBPDCPpresent E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent, - sgNBPDCPnotpresent E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent, - ... - }, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBModReq-ItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBModReq_Item : asn::sequence<4, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBModReq-Item";} - using parent_t = asn::sequence<4, 0, true, 1>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct en_DC_ResourceConfiguration_t : EN_DC_ResourceConfiguration - { - static constexpr const char* name() {return "en_DC_ResourceConfiguration_t";} - using parent_t = EN_DC_ResourceConfiguration; - - }; - en_DC_ResourceConfiguration_t& ref_en_DC_ResourceConfiguration() {return en_DC_ResourceConfiguration;} - en_DC_ResourceConfiguration_t const& ref_en_DC_ResourceConfiguration() const {return en_DC_ResourceConfiguration;} - struct resource_configuration_t : asn::choice<2, 0, true> - { - static constexpr const char* name() {return "resource_configuration_t";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~resource_configuration_t() {clear();} - struct sgNBPDCPpresent_t : E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent - { - static constexpr const char* name() {return "sgNBPDCPpresent_t";} - using parent_t = E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent; - - }; - struct sgNBPDCPnotpresent_t : E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent - { - static constexpr const char* name() {return "sgNBPDCPnotpresent_t";} - using parent_t = E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - sgNBPDCPpresent_t& select_sgNBPDCPpresent() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - sgNBPDCPpresent_t const* get_sgNBPDCPpresent() const { if(get_index() == 1) { return &var.as();} return nullptr; } - sgNBPDCPnotpresent_t& select_sgNBPDCPnotpresent() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - sgNBPDCPnotpresent_t const* get_sgNBPDCPnotpresent() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(sgNBPDCPpresent_t)]; - char dummy2[sizeof(sgNBPDCPnotpresent_t)]; - - }; - asn::variant var; - index_type index {0}; - }; - resource_configuration_t& ref_resource_configuration() {return resource_configuration;} - resource_configuration_t const& ref_resource_configuration() const {return resource_configuration;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(en_DC_ResourceConfiguration); - v(resource_configuration); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(en_DC_ResourceConfiguration); - v(resource_configuration); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - en_DC_ResourceConfiguration.clear(); - resource_configuration.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - en_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; - resource_configuration_t resource_configuration; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeReleased-SgNBModReq-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-ToBeReleased-SgNBModReq-Item CRITICALITY ignore TYPE E-RABs-ToBeReleased-SgNBModReq-Item PRESENCE mandatory}, - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_SgNBModReq_Item() { set(id_E_RABs_ToBeReleased_SgNBModReq_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_ToBeReleased_SgNBModReq_Item)) { type = 1; return true; } - else { type = 2; 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_E_RABs_ToBeReleased_SgNBModReq_Item);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_SgNBModReq_Item() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_ToBeReleased_SgNBModReq_Item& select_id_E_RABs_ToBeReleased_SgNBModReq_Item() { return set(1); } - E_RABs_ToBeReleased_SgNBModReq_Item const* get_id_E_RABs_ToBeReleased_SgNBModReq_Item() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_ToBeReleased_SgNBModReq_Item()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(E_RABs_ToBeReleased_SgNBModReq_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_SgNBModReq_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-SgNBModReq-List ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeReleased-SgNBModReq-ItemIEs} } -*/ - -struct E_RABs_ToBeReleased_SgNBModReq_List_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_ToBeReleased_SgNBModReq_List_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_ToBeReleased_SgNBModReq_List : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBModReq-List";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-ToBeReleased-SgNBModReqd-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - { ID id-RLCMode-transferred CRITICALITY ignore EXTENSION RLCMode PRESENCE optional}, - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_RLCMode_transferred() { set(id_RLCMode_transferred); type=1;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_RLCMode_transferred)) { type = 1; return true; } - else { type = 2; 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_RLCMode_transferred);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_RLCMode_transferred() { set(ignore); type=1;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - RLCMode& select_id_RLCMode_transferred() { return set(1); } - RLCMode const* get_id_RLCMode_transferred() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_RLCMode_transferred()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(RLCMode)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_RLCMode_transferred() { set(optional); type=1;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else { type = 2; 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(optional);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-SgNBModReqd-Item ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - cause Cause, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBModReqd-ItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBModReqd_Item : asn::sequence<3, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBModReqd-Item";} - using parent_t = asn::sequence<3, 0, true, 1>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct cause_t : Cause - { - static constexpr const char* name() {return "cause_t";} - using parent_t = Cause; - - }; - cause_t& ref_cause() {return cause;} - cause_t const& ref_cause() const {return cause;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(cause); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(cause); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - cause.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - cause_t cause; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeReleased-SgNBModReqd-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-ToBeReleased-SgNBModReqd-Item CRITICALITY ignore TYPE E-RABs-ToBeReleased-SgNBModReqd-Item PRESENCE mandatory }, - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_SgNBModReqd_Item() { set(id_E_RABs_ToBeReleased_SgNBModReqd_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_ToBeReleased_SgNBModReqd_Item)) { type = 1; return true; } - else { type = 2; 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_E_RABs_ToBeReleased_SgNBModReqd_Item);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_SgNBModReqd_Item() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_ToBeReleased_SgNBModReqd_Item& select_id_E_RABs_ToBeReleased_SgNBModReqd_Item() { return set(1); } - E_RABs_ToBeReleased_SgNBModReqd_Item const* get_id_E_RABs_ToBeReleased_SgNBModReqd_Item() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_ToBeReleased_SgNBModReqd_Item()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(E_RABs_ToBeReleased_SgNBModReqd_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_SgNBModReqd_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-SgNBModReqdList ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeReleased-SgNBModReqd-ItemIEs} } -*/ - -struct E_RABs_ToBeReleased_SgNBModReqdList_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_ToBeReleased_SgNBModReqdList_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_ToBeReleased_SgNBModReqdList : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBModReqdList";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent ::= SEQUENCE { - uL-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - dL-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresentExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent : asn::sequence<3, 0, true, 3> -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent";} - using parent_t = asn::sequence<3, 0, true, 3>; - struct uL_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "uL_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - uL_GTPtunnelEndpoint_t& set_uL_GTPtunnelEndpoint() { uL_GTPtunnelEndpoint.setpresent(true); return uL_GTPtunnelEndpoint;} - uL_GTPtunnelEndpoint_t const* get_uL_GTPtunnelEndpoint() const {return uL_GTPtunnelEndpoint.is_valid() ? &uL_GTPtunnelEndpoint : nullptr;} - struct dL_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "dL_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - dL_GTPtunnelEndpoint_t& set_dL_GTPtunnelEndpoint() { dL_GTPtunnelEndpoint.setpresent(true); return dL_GTPtunnelEndpoint;} - dL_GTPtunnelEndpoint_t const* get_dL_GTPtunnelEndpoint() const {return dL_GTPtunnelEndpoint.is_valid() ? &dL_GTPtunnelEndpoint : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(uL_GTPtunnelEndpoint); - v(dL_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(uL_GTPtunnelEndpoint); - v(dL_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - void clear() - { - uL_GTPtunnelEndpoint.clear(); - dL_GTPtunnelEndpoint.clear(); - iE_Extensions.clear(); - - }; - private: - uL_GTPtunnelEndpoint_t uL_GTPtunnelEndpoint; - dL_GTPtunnelEndpoint_t dL_GTPtunnelEndpoint; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent ::= SEQUENCE { - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresentExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent : asn::sequence<1, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent";} - using parent_t = asn::sequence<1, 0, true, 1>; - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(iE_Extensions); - - }; - void clear() - { - iE_Extensions.clear(); - - }; - private: - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeReleased-SgNBRelConf-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-SgNBRelConf-Item ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - en-DC-ResourceConfiguration EN-DC-ResourceConfiguration, - resource-configuration CHOICE { - sgNBPDCPpresent E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent, - sgNBPDCPnotpresent E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent, - ... - }, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBRelConf-ItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBRelConf_Item : asn::sequence<4, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBRelConf-Item";} - using parent_t = asn::sequence<4, 0, true, 1>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct en_DC_ResourceConfiguration_t : EN_DC_ResourceConfiguration - { - static constexpr const char* name() {return "en_DC_ResourceConfiguration_t";} - using parent_t = EN_DC_ResourceConfiguration; - - }; - en_DC_ResourceConfiguration_t& ref_en_DC_ResourceConfiguration() {return en_DC_ResourceConfiguration;} - en_DC_ResourceConfiguration_t const& ref_en_DC_ResourceConfiguration() const {return en_DC_ResourceConfiguration;} - struct resource_configuration_t : asn::choice<2, 0, true> - { - static constexpr const char* name() {return "resource_configuration_t";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~resource_configuration_t() {clear();} - struct sgNBPDCPpresent_t : E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent - { - static constexpr const char* name() {return "sgNBPDCPpresent_t";} - using parent_t = E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent; - - }; - struct sgNBPDCPnotpresent_t : E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent - { - static constexpr const char* name() {return "sgNBPDCPnotpresent_t";} - using parent_t = E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - sgNBPDCPpresent_t& select_sgNBPDCPpresent() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - sgNBPDCPpresent_t const* get_sgNBPDCPpresent() const { if(get_index() == 1) { return &var.as();} return nullptr; } - sgNBPDCPnotpresent_t& select_sgNBPDCPnotpresent() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - sgNBPDCPnotpresent_t const* get_sgNBPDCPnotpresent() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(sgNBPDCPpresent_t)]; - char dummy2[sizeof(sgNBPDCPnotpresent_t)]; - - }; - asn::variant var; - index_type index {0}; - }; - resource_configuration_t& ref_resource_configuration() {return resource_configuration;} - resource_configuration_t const& ref_resource_configuration() const {return resource_configuration;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(en_DC_ResourceConfiguration); - v(resource_configuration); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(en_DC_ResourceConfiguration); - v(resource_configuration); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - en_DC_ResourceConfiguration.clear(); - resource_configuration.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - en_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; - resource_configuration_t resource_configuration; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeReleased-SgNBRelConf-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-ToBeReleased-SgNBRelConf-Item CRITICALITY ignore TYPE E-RABs-ToBeReleased-SgNBRelConf-Item PRESENCE mandatory}, - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_SgNBRelConf_Item() { set(id_E_RABs_ToBeReleased_SgNBRelConf_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_ToBeReleased_SgNBRelConf_Item)) { type = 1; return true; } - else { type = 2; 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_E_RABs_ToBeReleased_SgNBRelConf_Item);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_SgNBRelConf_Item() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_ToBeReleased_SgNBRelConf_Item& select_id_E_RABs_ToBeReleased_SgNBRelConf_Item() { return set(1); } - E_RABs_ToBeReleased_SgNBRelConf_Item const* get_id_E_RABs_ToBeReleased_SgNBRelConf_Item() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_ToBeReleased_SgNBRelConf_Item()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(E_RABs_ToBeReleased_SgNBRelConf_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_SgNBRelConf_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-SgNBRelConfList ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeReleased-SgNBRelConf-ItemIEs} } -*/ - -struct E_RABs_ToBeReleased_SgNBRelConfList_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_ToBeReleased_SgNBRelConfList_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_ToBeReleased_SgNBRelConfList : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBRelConfList";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent ::= SEQUENCE { - uL-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - dL-GTPtunnelEndpoint GTPtunnelEndpoint OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresentExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent : asn::sequence<3, 0, true, 3> -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent";} - using parent_t = asn::sequence<3, 0, true, 3>; - struct uL_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "uL_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - uL_GTPtunnelEndpoint_t& set_uL_GTPtunnelEndpoint() { uL_GTPtunnelEndpoint.setpresent(true); return uL_GTPtunnelEndpoint;} - uL_GTPtunnelEndpoint_t const* get_uL_GTPtunnelEndpoint() const {return uL_GTPtunnelEndpoint.is_valid() ? &uL_GTPtunnelEndpoint : nullptr;} - struct dL_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "dL_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - static constexpr bool optional = true; - - }; - dL_GTPtunnelEndpoint_t& set_dL_GTPtunnelEndpoint() { dL_GTPtunnelEndpoint.setpresent(true); return dL_GTPtunnelEndpoint;} - dL_GTPtunnelEndpoint_t const* get_dL_GTPtunnelEndpoint() const {return dL_GTPtunnelEndpoint.is_valid() ? &dL_GTPtunnelEndpoint : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(uL_GTPtunnelEndpoint); - v(dL_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(uL_GTPtunnelEndpoint); - v(dL_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - void clear() - { - uL_GTPtunnelEndpoint.clear(); - dL_GTPtunnelEndpoint.clear(); - iE_Extensions.clear(); - - }; - private: - uL_GTPtunnelEndpoint_t uL_GTPtunnelEndpoint; - dL_GTPtunnelEndpoint_t dL_GTPtunnelEndpoint; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent ::= SEQUENCE { - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresentExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent : asn::sequence<1, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent";} - using parent_t = asn::sequence<1, 0, true, 1>; - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(iE_Extensions); - - }; - void clear() - { - iE_Extensions.clear(); - - }; - private: - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeReleased-SgNBRelReq-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-SgNBRelReq-Item ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - en-DC-ResourceConfiguration EN-DC-ResourceConfiguration, - resource-configuration CHOICE { - sgNBPDCPpresent E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent, - sgNBPDCPnotpresent E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent, - ... - }, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBRelReq-ItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBRelReq_Item : asn::sequence<4, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBRelReq-Item";} - using parent_t = asn::sequence<4, 0, true, 1>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct en_DC_ResourceConfiguration_t : EN_DC_ResourceConfiguration - { - static constexpr const char* name() {return "en_DC_ResourceConfiguration_t";} - using parent_t = EN_DC_ResourceConfiguration; - - }; - en_DC_ResourceConfiguration_t& ref_en_DC_ResourceConfiguration() {return en_DC_ResourceConfiguration;} - en_DC_ResourceConfiguration_t const& ref_en_DC_ResourceConfiguration() const {return en_DC_ResourceConfiguration;} - struct resource_configuration_t : asn::choice<2, 0, true> - { - static constexpr const char* name() {return "resource_configuration_t";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~resource_configuration_t() {clear();} - struct sgNBPDCPpresent_t : E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent - { - static constexpr const char* name() {return "sgNBPDCPpresent_t";} - using parent_t = E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent; - - }; - struct sgNBPDCPnotpresent_t : E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent - { - static constexpr const char* name() {return "sgNBPDCPnotpresent_t";} - using parent_t = E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - sgNBPDCPpresent_t& select_sgNBPDCPpresent() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - sgNBPDCPpresent_t const* get_sgNBPDCPpresent() const { if(get_index() == 1) { return &var.as();} return nullptr; } - sgNBPDCPnotpresent_t& select_sgNBPDCPnotpresent() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - sgNBPDCPnotpresent_t const* get_sgNBPDCPnotpresent() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(sgNBPDCPpresent_t)]; - char dummy2[sizeof(sgNBPDCPnotpresent_t)]; - - }; - asn::variant var; - index_type index {0}; - }; - resource_configuration_t& ref_resource_configuration() {return resource_configuration;} - resource_configuration_t const& ref_resource_configuration() const {return resource_configuration;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(en_DC_ResourceConfiguration); - v(resource_configuration); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(en_DC_ResourceConfiguration); - v(resource_configuration); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - en_DC_ResourceConfiguration.clear(); - resource_configuration.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - en_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; - resource_configuration_t resource_configuration; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeReleased-SgNBRelReq-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-ToBeReleased-SgNBRelReq-Item CRITICALITY ignore TYPE E-RABs-ToBeReleased-SgNBRelReq-Item PRESENCE mandatory}, - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_SgNBRelReq_Item() { set(id_E_RABs_ToBeReleased_SgNBRelReq_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_ToBeReleased_SgNBRelReq_Item)) { type = 1; return true; } - else { type = 2; 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_E_RABs_ToBeReleased_SgNBRelReq_Item);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_SgNBRelReq_Item() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_ToBeReleased_SgNBRelReq_Item& select_id_E_RABs_ToBeReleased_SgNBRelReq_Item() { return set(1); } - E_RABs_ToBeReleased_SgNBRelReq_Item const* get_id_E_RABs_ToBeReleased_SgNBRelReq_Item() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_ToBeReleased_SgNBRelReq_Item()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(E_RABs_ToBeReleased_SgNBRelReq_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_SgNBRelReq_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-SgNBRelReqList ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeReleased-SgNBRelReq-ItemIEs} } -*/ - -struct E_RABs_ToBeReleased_SgNBRelReqList_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_ToBeReleased_SgNBRelReqList_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_ToBeReleased_SgNBRelReqList : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBRelReqList";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-ToBeReleased-SgNBRelReqd-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-SgNBRelReqd-Item ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - rlc-Mode-transferred RLCMode, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBRelReqd-ItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBRelReqd_Item : asn::sequence<3, 0, true, 1> -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBRelReqd-Item";} - using parent_t = asn::sequence<3, 0, true, 1>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct rlc_Mode_transferred_t : RLCMode - { - static constexpr const char* name() {return "rlc_Mode_transferred_t";} - using parent_t = RLCMode; - - }; - rlc_Mode_transferred_t& ref_rlc_Mode_transferred() {return rlc_Mode_transferred;} - rlc_Mode_transferred_t const& ref_rlc_Mode_transferred() const {return rlc_Mode_transferred;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(rlc_Mode_transferred); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(rlc_Mode_transferred); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - rlc_Mode_transferred.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - rlc_Mode_transferred_t rlc_Mode_transferred; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeReleased-SgNBRelReqd-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-ToBeReleased-SgNBRelReqd-Item CRITICALITY ignore TYPE E-RABs-ToBeReleased-SgNBRelReqd-Item PRESENCE mandatory}, - ... -} -*/ - -struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_SgNBRelReqd_Item() { set(id_E_RABs_ToBeReleased_SgNBRelReqd_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_ToBeReleased_SgNBRelReqd_Item)) { type = 1; return true; } - else { type = 2; 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_E_RABs_ToBeReleased_SgNBRelReqd_Item);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_SgNBRelReqd_Item() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_ToBeReleased_SgNBRelReqd_Item& select_id_E_RABs_ToBeReleased_SgNBRelReqd_Item() { return set(1); } - E_RABs_ToBeReleased_SgNBRelReqd_Item const* get_id_E_RABs_ToBeReleased_SgNBRelReqd_Item() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_ToBeReleased_SgNBRelReqd_Item()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(E_RABs_ToBeReleased_SgNBRelReqd_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeReleased_SgNBRelReqd_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-ToBeReleased-SgNBRelReqdList ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeReleased-SgNBRelReqd-ItemIEs} } -*/ - -struct E_RABs_ToBeReleased_SgNBRelReqdList_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_ToBeReleased_SgNBRelReqdList_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_ToBeReleased_SgNBRelReqdList : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBRelReqdList";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-ToBeSetup-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - { ID id-BearerType CRITICALITY reject EXTENSION BearerType PRESENCE optional}, - ... -} -*/ - -struct E_RABs_ToBeSetup_ItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_BearerType() { set(id_BearerType); type=1;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_BearerType)) { type = 1; return true; } - else { type = 2; 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_BearerType);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_BearerType() { set(reject); type=1;} - X2AP_PROTOCOL_EXTENSION::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 { type = 2; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - BearerType& select_id_BearerType() { return set(1); } - BearerType const* get_id_BearerType() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_BearerType()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(BearerType)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_BearerType() { set(optional); type=1;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else { type = 2; 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(optional);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-ToBeSetup-Item ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - e-RAB-Level-QoS-Parameters E-RAB-Level-QoS-Parameters, - dL-Forwarding DL-Forwarding OPTIONAL, - uL-GTPtunnelEndpoint GTPtunnelEndpoint, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeSetup-ItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeSetup_Item : asn::sequence<5, 0, true, 2> -{ - static constexpr const char* name() {return "E-RABs-ToBeSetup-Item";} - using parent_t = asn::sequence<5, 0, true, 2>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct e_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters - { - static constexpr const char* name() {return "e_RAB_Level_QoS_Parameters_t";} - using parent_t = E_RAB_Level_QoS_Parameters; - - }; - e_RAB_Level_QoS_Parameters_t& ref_e_RAB_Level_QoS_Parameters() {return e_RAB_Level_QoS_Parameters;} - e_RAB_Level_QoS_Parameters_t const& ref_e_RAB_Level_QoS_Parameters() const {return e_RAB_Level_QoS_Parameters;} - struct dL_Forwarding_t : DL_Forwarding - { - static constexpr const char* name() {return "dL_Forwarding_t";} - using parent_t = DL_Forwarding; - static constexpr bool optional = true; - - }; - dL_Forwarding_t& set_dL_Forwarding() { dL_Forwarding.setpresent(true); return dL_Forwarding;} - dL_Forwarding_t const* get_dL_Forwarding() const {return dL_Forwarding.is_valid() ? &dL_Forwarding : nullptr;} - struct uL_GTPtunnelEndpoint_t : GTPtunnelEndpoint - { - static constexpr const char* name() {return "uL_GTPtunnelEndpoint_t";} - using parent_t = GTPtunnelEndpoint; - - }; - uL_GTPtunnelEndpoint_t& ref_uL_GTPtunnelEndpoint() {return uL_GTPtunnelEndpoint;} - uL_GTPtunnelEndpoint_t const& ref_uL_GTPtunnelEndpoint() const {return uL_GTPtunnelEndpoint;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(e_RAB_Level_QoS_Parameters); - v(dL_Forwarding); - v(uL_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(e_RAB_Level_QoS_Parameters); - v(dL_Forwarding); - v(uL_GTPtunnelEndpoint); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - e_RAB_Level_QoS_Parameters.clear(); - dL_Forwarding.clear(); - uL_GTPtunnelEndpoint.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - e_RAB_Level_QoS_Parameters_t e_RAB_Level_QoS_Parameters; - dL_Forwarding_t dL_Forwarding; - uL_GTPtunnelEndpoint_t uL_GTPtunnelEndpoint; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeSetup-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-ToBeSetup-Item CRITICALITY ignore TYPE E-RABs-ToBeSetup-Item PRESENCE mandatory }, - ... -} -*/ - -struct E_RABs_ToBeSetup_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeSetup_Item() { set(id_E_RABs_ToBeSetup_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_ToBeSetup_Item)) { type = 1; return true; } - else { type = 2; 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_E_RABs_ToBeSetup_Item);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeSetup_Item() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_ToBeSetup_Item& select_id_E_RABs_ToBeSetup_Item() { return set(1); } - E_RABs_ToBeSetup_Item const* get_id_E_RABs_ToBeSetup_Item() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_ToBeSetup_Item()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(E_RABs_ToBeSetup_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeSetup_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-ToBeSetup-List ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeSetup-ItemIEs} } -*/ - -struct E_RABs_ToBeSetup_List_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_ToBeSetup_List_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_ToBeSetup_List : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-ToBeSetup-List";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -E-RABs-ToBeSetupRetrieve-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - { ID id-uL-GTPtunnelEndpoint CRITICALITY reject EXTENSION GTPtunnelEndpoint PRESENCE mandatory}| - { ID id-dL-Forwarding CRITICALITY ignore EXTENSION DL-Forwarding PRESENCE optional }, - ... -} -*/ - -struct E_RABs_ToBeSetupRetrieve_ItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_uL_GTPtunnelEndpoint() { set(id_uL_GTPtunnelEndpoint); type=1;} - void select_id_dL_Forwarding() { set(id_dL_Forwarding); type=2;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_uL_GTPtunnelEndpoint)) { type = 1; return true; } - else if(equal(id_dL_Forwarding)) { type = 2; return true; } - else { type = 3; 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_uL_GTPtunnelEndpoint);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_dL_Forwarding);} return false; - case 3: type = 3; 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 == 3; } - void clear() {type = 0;} - void select_id_uL_GTPtunnelEndpoint() { set(reject); type=1;} - void select_id_dL_Forwarding() { set(ignore); type=2;} - X2AP_PROTOCOL_EXTENSION::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(ignore)) { type = 2; return true; } - else { type = 3; 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(ignore);} return false; - case 3: type = 3; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - GTPtunnelEndpoint& select_id_uL_GTPtunnelEndpoint() { return set(1); } - GTPtunnelEndpoint const* get_id_uL_GTPtunnelEndpoint() const { return get(1); } - DL_Forwarding& select_id_dL_Forwarding() { return set(2); } - DL_Forwarding const* get_id_dL_Forwarding() const { return get(2); } - bool is_unknown() const { return type == 3; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_uL_GTPtunnelEndpoint()); return true; - case 2: v(select_id_dL_Forwarding()); return true; - case 3: if(type != 3) {clear(); asn::base::set();} type = 3; 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; - } - 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(DL_Forwarding)]; - char dummy2[sizeof(GTPtunnelEndpoint)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_uL_GTPtunnelEndpoint() { set(mandatory); type=1;} - void select_id_dL_Forwarding() { set(optional); type=2;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else { type = 3; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; 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}; - - }; - -}; -/* -E-RABs-ToBeSetupRetrieve-Item ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - e-RAB-Level-QoS-Parameters E-RAB-Level-QoS-Parameters, - bearerType BearerType OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeSetupRetrieve-ItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct E_RABs_ToBeSetupRetrieve_Item : asn::sequence<4, 0, true, 2> -{ - static constexpr const char* name() {return "E-RABs-ToBeSetupRetrieve-Item";} - using parent_t = asn::sequence<4, 0, true, 2>; - struct e_RAB_ID_t : E_RAB_ID - { - static constexpr const char* name() {return "e_RAB_ID_t";} - using parent_t = E_RAB_ID; - - }; - e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;} - e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;} - struct e_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters - { - static constexpr const char* name() {return "e_RAB_Level_QoS_Parameters_t";} - using parent_t = E_RAB_Level_QoS_Parameters; - - }; - e_RAB_Level_QoS_Parameters_t& ref_e_RAB_Level_QoS_Parameters() {return e_RAB_Level_QoS_Parameters;} - e_RAB_Level_QoS_Parameters_t const& ref_e_RAB_Level_QoS_Parameters() const {return e_RAB_Level_QoS_Parameters;} - struct bearerType_t : BearerType - { - static constexpr const char* name() {return "bearerType_t";} - using parent_t = BearerType; - static constexpr bool optional = true; - - }; - bearerType_t& set_bearerType() { bearerType.setpresent(true); return bearerType;} - bearerType_t const* get_bearerType() const {return bearerType.is_valid() ? &bearerType : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(e_RAB_ID); - v(e_RAB_Level_QoS_Parameters); - v(bearerType); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(e_RAB_ID); - v(e_RAB_Level_QoS_Parameters); - v(bearerType); - v(iE_Extensions); - - }; - void clear() - { - e_RAB_ID.clear(); - e_RAB_Level_QoS_Parameters.clear(); - bearerType.clear(); - iE_Extensions.clear(); - - }; - private: - e_RAB_ID_t e_RAB_ID; - e_RAB_Level_QoS_Parameters_t e_RAB_Level_QoS_Parameters; - bearerType_t bearerType; - iE_Extensions_t iE_Extensions; - -}; -/* -E-RABs-ToBeSetupRetrieve-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-E-RABs-ToBeSetupRetrieve-Item CRITICALITY ignore TYPE E-RABs-ToBeSetupRetrieve-Item PRESENCE mandatory}, - ... -} -*/ - -struct E_RABs_ToBeSetupRetrieve_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeSetupRetrieve_Item() { set(id_E_RABs_ToBeSetupRetrieve_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_E_RABs_ToBeSetupRetrieve_Item)) { type = 1; return true; } - else { type = 2; 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_E_RABs_ToBeSetupRetrieve_Item);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeSetupRetrieve_Item() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - E_RABs_ToBeSetupRetrieve_Item& select_id_E_RABs_ToBeSetupRetrieve_Item() { return set(1); } - E_RABs_ToBeSetupRetrieve_Item const* get_id_E_RABs_ToBeSetupRetrieve_Item() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_E_RABs_ToBeSetupRetrieve_Item()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(E_RABs_ToBeSetupRetrieve_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_E_RABs_ToBeSetupRetrieve_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -E-RABs-ToBeSetup-ListRetrieve ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeSetupRetrieve-ItemIEs} } -*/ - -struct E_RABs_ToBeSetup_ListRetrieve_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "E_RABs_ToBeSetup_ListRetrieve_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct E_RABs_ToBeSetup_ListRetrieve : asn::sequenceof -{ - static constexpr const char* name() {return "E-RABs-ToBeSetup-ListRetrieve";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -ENB-ENDCConfigUpdateAckIEs X2AP-PROTOCOL-IES ::= { - ... -} -*/ - -struct ENB_ENDCConfigUpdateAckIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -FDD-InfoNeighbourServedNRCell-Information-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -FDD-InfoNeighbourServedNRCell-Information ::= SEQUENCE { - ul-NRFreqInfo NRFreqInfo, - dl-NRFreqInfo NRFreqInfo, - iE-Extensions ProtocolExtensionContainer { {FDD-InfoNeighbourServedNRCell-Information-ExtIEs} } OPTIONAL, - ... -} -*/ - -struct FDD_InfoNeighbourServedNRCell_Information : asn::sequence<3, 0, true, 1> -{ - static constexpr const char* name() {return "FDD-InfoNeighbourServedNRCell-Information";} - using parent_t = asn::sequence<3, 0, true, 1>; - struct ul_NRFreqInfo_t : NRFreqInfo - { - static constexpr const char* name() {return "ul_NRFreqInfo_t";} - using parent_t = NRFreqInfo; - - }; - ul_NRFreqInfo_t& ref_ul_NRFreqInfo() {return ul_NRFreqInfo;} - ul_NRFreqInfo_t const& ref_ul_NRFreqInfo() const {return ul_NRFreqInfo;} - struct dl_NRFreqInfo_t : NRFreqInfo - { - static constexpr const char* name() {return "dl_NRFreqInfo_t";} - using parent_t = NRFreqInfo; - - }; - dl_NRFreqInfo_t& ref_dl_NRFreqInfo() {return dl_NRFreqInfo;} - dl_NRFreqInfo_t const& ref_dl_NRFreqInfo() const {return dl_NRFreqInfo;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(ul_NRFreqInfo); - v(dl_NRFreqInfo); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(ul_NRFreqInfo); - v(dl_NRFreqInfo); - v(iE_Extensions); - - }; - void clear() - { - ul_NRFreqInfo.clear(); - dl_NRFreqInfo.clear(); - iE_Extensions.clear(); - - }; - private: - ul_NRFreqInfo_t ul_NRFreqInfo; - dl_NRFreqInfo_t dl_NRFreqInfo; - iE_Extensions_t iE_Extensions; - -}; -/* -TDD-InfoNeighbourServedNRCell-Information-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -TDD-InfoNeighbourServedNRCell-Information ::= SEQUENCE { - nRFreqInfo NRFreqInfo, - iE-Extensions ProtocolExtensionContainer { {TDD-InfoNeighbourServedNRCell-Information-ExtIEs} } OPTIONAL, - ... -} -*/ - -struct TDD_InfoNeighbourServedNRCell_Information : asn::sequence<2, 0, true, 1> -{ - static constexpr const char* name() {return "TDD-InfoNeighbourServedNRCell-Information";} - using parent_t = asn::sequence<2, 0, true, 1>; - struct nRFreqInfo_t : NRFreqInfo - { - static constexpr const char* name() {return "nRFreqInfo_t";} - using parent_t = NRFreqInfo; - - }; - nRFreqInfo_t& ref_nRFreqInfo() {return nRFreqInfo;} - nRFreqInfo_t const& ref_nRFreqInfo() const {return nRFreqInfo;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(nRFreqInfo); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(nRFreqInfo); - v(iE_Extensions); - - }; - void clear() - { - nRFreqInfo.clear(); - iE_Extensions.clear(); - - }; - private: - nRFreqInfo_t nRFreqInfo; - iE_Extensions_t iE_Extensions; - -}; -/* -NRNeighbour-Information-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct NRNeighbour_Information_ExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -NRNeighbour-Information ::= SEQUENCE (SIZE (1.. maxofNRNeighbours))OF SEQUENCE { - nrpCI NRPCI, - nrCellID NRCGI, - fiveGS-TAC FiveGS-TAC OPTIONAL, - configured-TAC TAC OPTIONAL, - measurementTimingConfiguration OCTET STRING, - nRNeighbourModeInfo CHOICE { - fdd FDD-InfoNeighbourServedNRCell-Information, - tdd TDD-InfoNeighbourServedNRCell-Information, - ... - }, - iE-Extensions ProtocolExtensionContainer { {NRNeighbour-Information-ExtIEs} } OPTIONAL, - ... -} -*/ - -struct NRNeighbour_Information_elm : asn::sequence<7, 0, true, 3> -{ - static constexpr const char* name() {return "NRNeighbour_Information_elm";} - using parent_t = asn::sequence<7, 0, true, 3>; - struct nrpCI_t : NRPCI - { - static constexpr const char* name() {return "nrpCI_t";} - using parent_t = NRPCI; - - }; - nrpCI_t& ref_nrpCI() {return nrpCI;} - nrpCI_t const& ref_nrpCI() const {return nrpCI;} - struct nrCellID_t : NRCGI - { - static constexpr const char* name() {return "nrCellID_t";} - using parent_t = NRCGI; - - }; - nrCellID_t& ref_nrCellID() {return nrCellID;} - nrCellID_t const& ref_nrCellID() const {return nrCellID;} - struct fiveGS_TAC_t : FiveGS_TAC - { - static constexpr const char* name() {return "fiveGS_TAC_t";} - using parent_t = FiveGS_TAC; - static constexpr bool optional = true; - - }; - fiveGS_TAC_t& set_fiveGS_TAC() { fiveGS_TAC.setpresent(true); return fiveGS_TAC;} - fiveGS_TAC_t const* get_fiveGS_TAC() const {return fiveGS_TAC.is_valid() ? &fiveGS_TAC : nullptr;} - struct configured_TAC_t : TAC - { - static constexpr const char* name() {return "configured_TAC_t";} - using parent_t = TAC; - static constexpr bool optional = true; - - }; - configured_TAC_t& set_configured_TAC() { configured_TAC.setpresent(true); return configured_TAC;} - configured_TAC_t const* get_configured_TAC() const {return configured_TAC.is_valid() ? &configured_TAC : nullptr;} - struct measurementTimingConfiguration_t : asn::ostring<> - { - static constexpr const char* name() {return "measurementTimingConfiguration_t";} - using parent_t = asn::ostring<>; - - }; - - measurementTimingConfiguration_t& ref_measurementTimingConfiguration() {return measurementTimingConfiguration;} - measurementTimingConfiguration_t const& ref_measurementTimingConfiguration() const {return measurementTimingConfiguration;} - struct nRNeighbourModeInfo_t : asn::choice<2, 0, true> - { - static constexpr const char* name() {return "nRNeighbourModeInfo_t";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~nRNeighbourModeInfo_t() {clear();} - struct fdd_t : FDD_InfoNeighbourServedNRCell_Information - { - static constexpr const char* name() {return "fdd_t";} - using parent_t = FDD_InfoNeighbourServedNRCell_Information; - - }; - struct tdd_t : TDD_InfoNeighbourServedNRCell_Information - { - static constexpr const char* name() {return "tdd_t";} - using parent_t = TDD_InfoNeighbourServedNRCell_Information; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - fdd_t& select_fdd() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - fdd_t const* get_fdd() const { if(get_index() == 1) { return &var.as();} return nullptr; } - tdd_t& select_tdd() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - tdd_t const* get_tdd() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(fdd_t)]; - char dummy2[sizeof(tdd_t)]; - - }; - asn::variant var; - index_type index {0}; - }; - nRNeighbourModeInfo_t& ref_nRNeighbourModeInfo() {return nRNeighbourModeInfo;} - nRNeighbourModeInfo_t const& ref_nRNeighbourModeInfo() const {return nRNeighbourModeInfo;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(nrpCI); - v(nrCellID); - v(fiveGS_TAC); - v(configured_TAC); - v(measurementTimingConfiguration); - v(nRNeighbourModeInfo); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(nrpCI); - v(nrCellID); - v(fiveGS_TAC); - v(configured_TAC); - v(measurementTimingConfiguration); - v(nRNeighbourModeInfo); - v(iE_Extensions); - - }; - void clear() - { - nrpCI.clear(); - nrCellID.clear(); - fiveGS_TAC.clear(); - configured_TAC.clear(); - measurementTimingConfiguration.clear(); - nRNeighbourModeInfo.clear(); - iE_Extensions.clear(); - - }; - private: - nrpCI_t nrpCI; - nrCellID_t nrCellID; - fiveGS_TAC_t fiveGS_TAC; - configured_TAC_t configured_TAC; - measurementTimingConfiguration_t measurementTimingConfiguration; - nRNeighbourModeInfo_t nRNeighbourModeInfo; - iE_Extensions_t iE_Extensions; - -}; -struct NRNeighbour_Information : asn::sequenceof -{ - static constexpr const char* name() {return "NRNeighbour-Information";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -ServedEUTRAcellsENDCX2Management-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct ServedEUTRAcellsENDCX2Management_ExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -ServedEUTRAcellsENDCX2ManagementList ::= SEQUENCE (SIZE (1.. maxCellineNB)) OF SEQUENCE { - servedEUTRACellInfo ServedCell-Information, - nrNeighbourInfo NRNeighbour-Information OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {ServedEUTRAcellsENDCX2Management-ExtIEs} } OPTIONAL, - ... -} -*/ - -struct ServedEUTRAcellsENDCX2ManagementList_elm : asn::sequence<3, 0, true, 2> -{ - static constexpr const char* name() {return "ServedEUTRAcellsENDCX2ManagementList_elm";} - using parent_t = asn::sequence<3, 0, true, 2>; - struct servedEUTRACellInfo_t : ServedCell_Information - { - static constexpr const char* name() {return "servedEUTRACellInfo_t";} - using parent_t = ServedCell_Information; - - }; - servedEUTRACellInfo_t& ref_servedEUTRACellInfo() {return servedEUTRACellInfo;} - servedEUTRACellInfo_t const& ref_servedEUTRACellInfo() const {return servedEUTRACellInfo;} - struct nrNeighbourInfo_t : NRNeighbour_Information - { - static constexpr const char* name() {return "nrNeighbourInfo_t";} - using parent_t = NRNeighbour_Information; - static constexpr bool optional = true; - - }; - nrNeighbourInfo_t& set_nrNeighbourInfo() { nrNeighbourInfo.setpresent(true); return nrNeighbourInfo;} - nrNeighbourInfo_t const* get_nrNeighbourInfo() const {return nrNeighbourInfo.is_valid() ? &nrNeighbourInfo : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(servedEUTRACellInfo); - v(nrNeighbourInfo); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(servedEUTRACellInfo); - v(nrNeighbourInfo); - v(iE_Extensions); - - }; - void clear() - { - servedEUTRACellInfo.clear(); - nrNeighbourInfo.clear(); - iE_Extensions.clear(); - - }; - private: - servedEUTRACellInfo_t servedEUTRACellInfo; - nrNeighbourInfo_t nrNeighbourInfo; - iE_Extensions_t iE_Extensions; - -}; -struct ServedEUTRAcellsENDCX2ManagementList : asn::sequenceof -{ - static constexpr const char* name() {return "ServedEUTRAcellsENDCX2ManagementList";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -ServedEUTRAcellsToModifyListENDCConfUpd-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -ServedEUTRAcellsToModifyListENDCConfUpd ::= SEQUENCE (SIZE (1.. maxCellineNB)) OF SEQUENCE { - old-ECGI ECGI, - servedEUTRACellInfo ServedCell-Information, - nrNeighbourInfo NRNeighbour-Information OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {ServedEUTRAcellsToModifyListENDCConfUpd-ExtIEs} } OPTIONAL, - ... -} -*/ - -struct ServedEUTRAcellsToModifyListENDCConfUpd_elm : asn::sequence<4, 0, true, 2> -{ - static constexpr const char* name() {return "ServedEUTRAcellsToModifyListENDCConfUpd_elm";} - using parent_t = asn::sequence<4, 0, true, 2>; - struct old_ECGI_t : ECGI - { - static constexpr const char* name() {return "old_ECGI_t";} - using parent_t = ECGI; - - }; - old_ECGI_t& ref_old_ECGI() {return old_ECGI;} - old_ECGI_t const& ref_old_ECGI() const {return old_ECGI;} - struct servedEUTRACellInfo_t : ServedCell_Information - { - static constexpr const char* name() {return "servedEUTRACellInfo_t";} - using parent_t = ServedCell_Information; - - }; - servedEUTRACellInfo_t& ref_servedEUTRACellInfo() {return servedEUTRACellInfo;} - servedEUTRACellInfo_t const& ref_servedEUTRACellInfo() const {return servedEUTRACellInfo;} - struct nrNeighbourInfo_t : NRNeighbour_Information - { - static constexpr const char* name() {return "nrNeighbourInfo_t";} - using parent_t = NRNeighbour_Information; - static constexpr bool optional = true; - - }; - nrNeighbourInfo_t& set_nrNeighbourInfo() { nrNeighbourInfo.setpresent(true); return nrNeighbourInfo;} - nrNeighbourInfo_t const* get_nrNeighbourInfo() const {return nrNeighbourInfo.is_valid() ? &nrNeighbourInfo : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(old_ECGI); - v(servedEUTRACellInfo); - v(nrNeighbourInfo); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(old_ECGI); - v(servedEUTRACellInfo); - v(nrNeighbourInfo); - v(iE_Extensions); - - }; - void clear() - { - old_ECGI.clear(); - servedEUTRACellInfo.clear(); - nrNeighbourInfo.clear(); - iE_Extensions.clear(); - - }; - private: - old_ECGI_t old_ECGI; - servedEUTRACellInfo_t servedEUTRACellInfo; - nrNeighbourInfo_t nrNeighbourInfo; - iE_Extensions_t iE_Extensions; - -}; -struct ServedEUTRAcellsToModifyListENDCConfUpd : asn::sequenceof -{ - static constexpr const char* name() {return "ServedEUTRAcellsToModifyListENDCConfUpd";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -ServedEUTRAcellsToDeleteListENDCConfUpd ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ECGI -*/ - -struct ServedEUTRAcellsToDeleteListENDCConfUpd_elm : ECGI -{ - static constexpr const char* name() {return "ServedEUTRAcellsToDeleteListENDCConfUpd_elm";} - using parent_t = ECGI; - -}; -struct ServedEUTRAcellsToDeleteListENDCConfUpd : asn::sequenceof -{ - static constexpr const char* name() {return "ServedEUTRAcellsToDeleteListENDCConfUpd";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -ENB-ENDCConfigUpdateIEs X2AP-PROTOCOL-IES ::= { - { ID id-CellAssistanceInformation CRITICALITY reject TYPE CellAssistanceInformation PRESENCE optional }| - { ID id-ServedEUTRAcellsENDCX2ManagementList CRITICALITY reject TYPE ServedEUTRAcellsENDCX2ManagementList PRESENCE optional }| - { ID id-ServedEUTRAcellsToModifyListENDCConfUpd CRITICALITY reject TYPE ServedEUTRAcellsToModifyListENDCConfUpd PRESENCE optional }| - { ID id-ServedEUTRAcellsToDeleteListENDCConfUpd CRITICALITY reject TYPE ServedEUTRAcellsToDeleteListENDCConfUpd PRESENCE optional }, - ... -} -*/ - -struct ENB_ENDCConfigUpdateIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 5; } - void clear() {type = 0;} - void select_id_CellAssistanceInformation() { set(id_CellAssistanceInformation); type=1;} - void select_id_ServedEUTRAcellsENDCX2ManagementList() { set(id_ServedEUTRAcellsENDCX2ManagementList); type=2;} - void select_id_ServedEUTRAcellsToModifyListENDCConfUpd() { set(id_ServedEUTRAcellsToModifyListENDCConfUpd); type=3;} - void select_id_ServedEUTRAcellsToDeleteListENDCConfUpd() { set(id_ServedEUTRAcellsToDeleteListENDCConfUpd); type=4;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_CellAssistanceInformation)) { type = 1; return true; } - else if(equal(id_ServedEUTRAcellsENDCX2ManagementList)) { type = 2; return true; } - else if(equal(id_ServedEUTRAcellsToModifyListENDCConfUpd)) { type = 3; return true; } - else if(equal(id_ServedEUTRAcellsToDeleteListENDCConfUpd)) { type = 4; return true; } - else { type = 5; 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_CellAssistanceInformation);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_ServedEUTRAcellsENDCX2ManagementList);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_ServedEUTRAcellsToModifyListENDCConfUpd);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_ServedEUTRAcellsToDeleteListENDCConfUpd);} return false; - case 5: type = 5; 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 == 5; } - void clear() {type = 0;} - void select_id_CellAssistanceInformation() { set(reject); type=1;} - void select_id_ServedEUTRAcellsENDCX2ManagementList() { set(reject); type=2;} - void select_id_ServedEUTRAcellsToModifyListENDCConfUpd() { set(reject); type=3;} - void select_id_ServedEUTRAcellsToDeleteListENDCConfUpd() { set(reject); type=4;} - X2AP_PROTOCOL_IES::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 { type = 5; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - CellAssistanceInformation& select_id_CellAssistanceInformation() { return set(1); } - CellAssistanceInformation const* get_id_CellAssistanceInformation() const { return get(1); } - ServedEUTRAcellsENDCX2ManagementList& select_id_ServedEUTRAcellsENDCX2ManagementList() { return set(2); } - ServedEUTRAcellsENDCX2ManagementList const* get_id_ServedEUTRAcellsENDCX2ManagementList() const { return get(2); } - ServedEUTRAcellsToModifyListENDCConfUpd& select_id_ServedEUTRAcellsToModifyListENDCConfUpd() { return set(3); } - ServedEUTRAcellsToModifyListENDCConfUpd const* get_id_ServedEUTRAcellsToModifyListENDCConfUpd() const { return get(3); } - ServedEUTRAcellsToDeleteListENDCConfUpd& select_id_ServedEUTRAcellsToDeleteListENDCConfUpd() { return set(4); } - ServedEUTRAcellsToDeleteListENDCConfUpd const* get_id_ServedEUTRAcellsToDeleteListENDCConfUpd() const { return get(4); } - bool is_unknown() const { return type == 5; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: var.destroy(); break; - case 4: 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_CellAssistanceInformation()); return true; - case 2: v(select_id_ServedEUTRAcellsENDCX2ManagementList()); return true; - case 3: v(select_id_ServedEUTRAcellsToModifyListENDCConfUpd()); return true; - case 4: v(select_id_ServedEUTRAcellsToDeleteListENDCConfUpd()); return true; - case 5: if(type != 5) {clear(); asn::base::set();} type = 5; 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; - } - 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(CellAssistanceInformation)]; - char dummy2[sizeof(ServedEUTRAcellsENDCX2ManagementList)]; - char dummy3[sizeof(ServedEUTRAcellsToDeleteListENDCConfUpd)]; - char dummy4[sizeof(ServedEUTRAcellsToModifyListENDCConfUpd)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 5; } - void clear() {type = 0;} - void select_id_CellAssistanceInformation() { set(optional); type=1;} - void select_id_ServedEUTRAcellsENDCX2ManagementList() { set(optional); type=2;} - void select_id_ServedEUTRAcellsToModifyListENDCConfUpd() { set(optional); type=3;} - void select_id_ServedEUTRAcellsToDeleteListENDCConfUpd() { set(optional); type=4;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else { type = 5; 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(optional);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; 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}; - - }; - -}; -/* -ENB-ENDCX2RemovalReqAckIEs X2AP-PROTOCOL-IES ::= { - { ID id-GlobalENB-ID CRITICALITY reject TYPE GlobalENB-ID PRESENCE mandatory}, - ... -} -*/ - -struct ENB_ENDCX2RemovalReqAckIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_GlobalENB_ID() { set(id_GlobalENB_ID); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_GlobalENB_ID)) { type = 1; return true; } - else { type = 2; 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_GlobalENB_ID);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_GlobalENB_ID() { set(reject); type=1;} - X2AP_PROTOCOL_IES::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 { type = 2; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - GlobalENB_ID& select_id_GlobalENB_ID() { return set(1); } - GlobalENB_ID const* get_id_GlobalENB_ID() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_GlobalENB_ID()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(GlobalENB_ID)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_GlobalENB_ID() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -ENB-ENDCX2RemovalReqIEs X2AP-PROTOCOL-IES ::= { - { ID id-GlobalENB-ID CRITICALITY reject TYPE GlobalENB-ID PRESENCE mandatory}, - ... -} -*/ - -struct ENB_ENDCX2RemovalReqIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_GlobalENB_ID() { set(id_GlobalENB_ID); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_GlobalENB_ID)) { type = 1; return true; } - else { type = 2; 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_GlobalENB_ID);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_GlobalENB_ID() { set(reject); type=1;} - X2AP_PROTOCOL_IES::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 { type = 2; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - GlobalENB_ID& select_id_GlobalENB_ID() { return set(1); } - GlobalENB_ID const* get_id_GlobalENB_ID() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_GlobalENB_ID()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(GlobalENB_ID)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_GlobalENB_ID() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -ENB-ENDCX2SetupReqAckIEs X2AP-PROTOCOL-IES ::= { - { ID id-GlobalENB-ID CRITICALITY reject TYPE GlobalENB-ID PRESENCE mandatory}| - { ID id-ServedEUTRAcellsENDCX2ManagementList CRITICALITY reject TYPE ServedEUTRAcellsENDCX2ManagementList PRESENCE mandatory}, - ... -} -*/ - -struct ENB_ENDCX2SetupReqAckIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_GlobalENB_ID() { set(id_GlobalENB_ID); type=1;} - void select_id_ServedEUTRAcellsENDCX2ManagementList() { set(id_ServedEUTRAcellsENDCX2ManagementList); type=2;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_GlobalENB_ID)) { type = 1; return true; } - else if(equal(id_ServedEUTRAcellsENDCX2ManagementList)) { type = 2; return true; } - else { type = 3; 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_GlobalENB_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_ServedEUTRAcellsENDCX2ManagementList);} return false; - case 3: type = 3; 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 == 3; } - void clear() {type = 0;} - void select_id_GlobalENB_ID() { set(reject); type=1;} - void select_id_ServedEUTRAcellsENDCX2ManagementList() { set(reject); type=2;} - X2AP_PROTOCOL_IES::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 { type = 3; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - GlobalENB_ID& select_id_GlobalENB_ID() { return set(1); } - GlobalENB_ID const* get_id_GlobalENB_ID() const { return get(1); } - ServedEUTRAcellsENDCX2ManagementList& select_id_ServedEUTRAcellsENDCX2ManagementList() { return set(2); } - ServedEUTRAcellsENDCX2ManagementList const* get_id_ServedEUTRAcellsENDCX2ManagementList() const { return get(2); } - bool is_unknown() const { return type == 3; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_GlobalENB_ID()); return true; - case 2: v(select_id_ServedEUTRAcellsENDCX2ManagementList()); return true; - case 3: if(type != 3) {clear(); asn::base::set();} type = 3; 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; - } - 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(GlobalENB_ID)]; - char dummy2[sizeof(ServedEUTRAcellsENDCX2ManagementList)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_GlobalENB_ID() { set(mandatory); type=1;} - void select_id_ServedEUTRAcellsENDCX2ManagementList() { set(mandatory); type=2;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else { type = 3; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; 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}; - - }; - -}; -/* -ENB-ENDCX2SetupReqIEs X2AP-PROTOCOL-IES ::= { - { ID id-GlobalENB-ID CRITICALITY reject TYPE GlobalENB-ID PRESENCE mandatory}| - { ID id-ServedEUTRAcellsENDCX2ManagementList CRITICALITY reject TYPE ServedEUTRAcellsENDCX2ManagementList PRESENCE mandatory}, - ... -} -*/ - -struct ENB_ENDCX2SetupReqIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_GlobalENB_ID() { set(id_GlobalENB_ID); type=1;} - void select_id_ServedEUTRAcellsENDCX2ManagementList() { set(id_ServedEUTRAcellsENDCX2ManagementList); type=2;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_GlobalENB_ID)) { type = 1; return true; } - else if(equal(id_ServedEUTRAcellsENDCX2ManagementList)) { type = 2; return true; } - else { type = 3; 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_GlobalENB_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_ServedEUTRAcellsENDCX2ManagementList);} return false; - case 3: type = 3; 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 == 3; } - void clear() {type = 0;} - void select_id_GlobalENB_ID() { set(reject); type=1;} - void select_id_ServedEUTRAcellsENDCX2ManagementList() { set(reject); type=2;} - X2AP_PROTOCOL_IES::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 { type = 3; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - GlobalENB_ID& select_id_GlobalENB_ID() { return set(1); } - GlobalENB_ID const* get_id_GlobalENB_ID() const { return get(1); } - ServedEUTRAcellsENDCX2ManagementList& select_id_ServedEUTRAcellsENDCX2ManagementList() { return set(2); } - ServedEUTRAcellsENDCX2ManagementList const* get_id_ServedEUTRAcellsENDCX2ManagementList() const { return get(2); } - bool is_unknown() const { return type == 3; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_GlobalENB_ID()); return true; - case 2: v(select_id_ServedEUTRAcellsENDCX2ManagementList()); return true; - case 3: if(type != 3) {clear(); asn::base::set();} type = 3; 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; - } - 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(GlobalENB_ID)]; - char dummy2[sizeof(ServedEUTRAcellsENDCX2ManagementList)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_GlobalENB_ID() { set(mandatory); type=1;} - void select_id_ServedEUTRAcellsENDCX2ManagementList() { set(mandatory); type=2;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else { type = 3; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; 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}; - - }; - -}; -/* -ListofEUTRACellsinEUTRACoordinationResp ::= SEQUENCE (SIZE (0..maxCellineNB)) OF ECGI -*/ - -struct ListofEUTRACellsinEUTRACoordinationResp_elm : ECGI -{ - static constexpr const char* name() {return "ListofEUTRACellsinEUTRACoordinationResp_elm";} - using parent_t = ECGI; - -}; -struct ListofEUTRACellsinEUTRACoordinationResp : asn::sequenceof -{ - static constexpr const char* name() {return "ListofEUTRACellsinEUTRACoordinationResp";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -ENB-EUTRA-NRCellResourceCoordinationReqAckIEs X2AP-PROTOCOL-IES ::= { - { ID id-DataTrafficResourceIndication CRITICALITY reject TYPE DataTrafficResourceIndication PRESENCE mandatory}| - { ID id-SpectrumSharingGroupID CRITICALITY reject TYPE SpectrumSharingGroupID PRESENCE mandatory}| - { ID id-ListofEUTRACellsinEUTRACoordinationResp CRITICALITY reject TYPE ListofEUTRACellsinEUTRACoordinationResp PRESENCE mandatory}, - ... -} -*/ - -struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_DataTrafficResourceIndication() { set(id_DataTrafficResourceIndication); type=1;} - void select_id_SpectrumSharingGroupID() { set(id_SpectrumSharingGroupID); type=2;} - void select_id_ListofEUTRACellsinEUTRACoordinationResp() { set(id_ListofEUTRACellsinEUTRACoordinationResp); type=3;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_DataTrafficResourceIndication)) { type = 1; return true; } - else if(equal(id_SpectrumSharingGroupID)) { type = 2; return true; } - else if(equal(id_ListofEUTRACellsinEUTRACoordinationResp)) { type = 3; return true; } - else { type = 4; 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_DataTrafficResourceIndication);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SpectrumSharingGroupID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_ListofEUTRACellsinEUTRACoordinationResp);} return false; - case 4: type = 4; 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 == 4; } - void clear() {type = 0;} - void select_id_DataTrafficResourceIndication() { set(reject); type=1;} - void select_id_SpectrumSharingGroupID() { set(reject); type=2;} - void select_id_ListofEUTRACellsinEUTRACoordinationResp() { set(reject); type=3;} - X2AP_PROTOCOL_IES::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 { type = 4; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - DataTrafficResourceIndication& select_id_DataTrafficResourceIndication() { return set(1); } - DataTrafficResourceIndication const* get_id_DataTrafficResourceIndication() const { return get(1); } - SpectrumSharingGroupID& select_id_SpectrumSharingGroupID() { return set(2); } - SpectrumSharingGroupID const* get_id_SpectrumSharingGroupID() const { return get(2); } - ListofEUTRACellsinEUTRACoordinationResp& select_id_ListofEUTRACellsinEUTRACoordinationResp() { return set(3); } - ListofEUTRACellsinEUTRACoordinationResp const* get_id_ListofEUTRACellsinEUTRACoordinationResp() const { return get(3); } - bool is_unknown() const { return type == 4; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_DataTrafficResourceIndication()); return true; - case 2: v(select_id_SpectrumSharingGroupID()); return true; - case 3: v(select_id_ListofEUTRACellsinEUTRACoordinationResp()); return true; - case 4: if(type != 4) {clear(); asn::base::set();} type = 4; 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; - } - 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(DataTrafficResourceIndication)]; - char dummy2[sizeof(ListofEUTRACellsinEUTRACoordinationResp)]; - char dummy3[sizeof(SpectrumSharingGroupID)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_DataTrafficResourceIndication() { set(mandatory); type=1;} - void select_id_SpectrumSharingGroupID() { set(mandatory); type=2;} - void select_id_ListofEUTRACellsinEUTRACoordinationResp() { set(mandatory); type=3;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else { type = 4; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; 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}; - - }; - -}; -/* -ListofEUTRACellsinEUTRACoordinationReq ::= SEQUENCE (SIZE (0..maxCellineNB)) OF ECGI -*/ - -struct ListofEUTRACellsinEUTRACoordinationReq_elm : ECGI -{ - static constexpr const char* name() {return "ListofEUTRACellsinEUTRACoordinationReq_elm";} - using parent_t = ECGI; - -}; -struct ListofEUTRACellsinEUTRACoordinationReq : asn::sequenceof -{ - static constexpr const char* name() {return "ListofEUTRACellsinEUTRACoordinationReq";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -ENB-EUTRA-NRCellResourceCoordinationReqIEs X2AP-PROTOCOL-IES ::= { - { ID id-DataTrafficResourceIndication CRITICALITY reject TYPE DataTrafficResourceIndication PRESENCE mandatory}| - { ID id-SpectrumSharingGroupID CRITICALITY reject TYPE SpectrumSharingGroupID PRESENCE mandatory}| - { ID id-ListofEUTRACellsinEUTRACoordinationReq CRITICALITY reject TYPE ListofEUTRACellsinEUTRACoordinationReq PRESENCE mandatory}, - ... -} -*/ - -struct ENB_EUTRA_NRCellResourceCoordinationReqIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_DataTrafficResourceIndication() { set(id_DataTrafficResourceIndication); type=1;} - void select_id_SpectrumSharingGroupID() { set(id_SpectrumSharingGroupID); type=2;} - void select_id_ListofEUTRACellsinEUTRACoordinationReq() { set(id_ListofEUTRACellsinEUTRACoordinationReq); type=3;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_DataTrafficResourceIndication)) { type = 1; return true; } - else if(equal(id_SpectrumSharingGroupID)) { type = 2; return true; } - else if(equal(id_ListofEUTRACellsinEUTRACoordinationReq)) { type = 3; return true; } - else { type = 4; 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_DataTrafficResourceIndication);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SpectrumSharingGroupID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_ListofEUTRACellsinEUTRACoordinationReq);} return false; - case 4: type = 4; 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 == 4; } - void clear() {type = 0;} - void select_id_DataTrafficResourceIndication() { set(reject); type=1;} - void select_id_SpectrumSharingGroupID() { set(reject); type=2;} - void select_id_ListofEUTRACellsinEUTRACoordinationReq() { set(reject); type=3;} - X2AP_PROTOCOL_IES::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 { type = 4; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - DataTrafficResourceIndication& select_id_DataTrafficResourceIndication() { return set(1); } - DataTrafficResourceIndication const* get_id_DataTrafficResourceIndication() const { return get(1); } - SpectrumSharingGroupID& select_id_SpectrumSharingGroupID() { return set(2); } - SpectrumSharingGroupID const* get_id_SpectrumSharingGroupID() const { return get(2); } - ListofEUTRACellsinEUTRACoordinationReq& select_id_ListofEUTRACellsinEUTRACoordinationReq() { return set(3); } - ListofEUTRACellsinEUTRACoordinationReq const* get_id_ListofEUTRACellsinEUTRACoordinationReq() const { return get(3); } - bool is_unknown() const { return type == 4; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_DataTrafficResourceIndication()); return true; - case 2: v(select_id_SpectrumSharingGroupID()); return true; - case 3: v(select_id_ListofEUTRACellsinEUTRACoordinationReq()); return true; - case 4: if(type != 4) {clear(); asn::base::set();} type = 4; 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; - } - 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(DataTrafficResourceIndication)]; - char dummy2[sizeof(ListofEUTRACellsinEUTRACoordinationReq)]; - char dummy3[sizeof(SpectrumSharingGroupID)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_DataTrafficResourceIndication() { set(mandatory); type=1;} - void select_id_SpectrumSharingGroupID() { set(mandatory); type=2;} - void select_id_ListofEUTRACellsinEUTRACoordinationReq() { set(mandatory); type=3;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else { type = 4; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; 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}; - - }; - -}; -/* -ServedCellsToModify-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { -{ ID id-DeactivationIndication CRITICALITY ignore EXTENSION DeactivationIndication PRESENCE optional }, - ... -} -*/ - -struct ServedCellsToModify_Item_ExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_DeactivationIndication() { set(id_DeactivationIndication); type=1;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_DeactivationIndication)) { type = 1; return true; } - else { type = 2; 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_DeactivationIndication);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_DeactivationIndication() { set(ignore); type=1;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - DeactivationIndication& select_id_DeactivationIndication() { return set(1); } - DeactivationIndication const* get_id_DeactivationIndication() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_DeactivationIndication()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(DeactivationIndication)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_DeactivationIndication() { set(optional); type=1;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else { type = 2; 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(optional);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -ServedCellsToModify-Item::= SEQUENCE { - old-ecgi ECGI, - servedCellInfo ServedCell-Information, - neighbour-Info Neighbour-Information OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {ServedCellsToModify-Item-ExtIEs} } OPTIONAL, - ... -} -*/ - -struct ServedCellsToModify_Item : asn::sequence<4, 0, true, 2> -{ - static constexpr const char* name() {return "ServedCellsToModify-Item";} - using parent_t = asn::sequence<4, 0, true, 2>; - struct old_ecgi_t : ECGI - { - static constexpr const char* name() {return "old_ecgi_t";} - using parent_t = ECGI; - - }; - old_ecgi_t& ref_old_ecgi() {return old_ecgi;} - old_ecgi_t const& ref_old_ecgi() const {return old_ecgi;} - struct servedCellInfo_t : ServedCell_Information - { - static constexpr const char* name() {return "servedCellInfo_t";} - using parent_t = ServedCell_Information; - - }; - servedCellInfo_t& ref_servedCellInfo() {return servedCellInfo;} - servedCellInfo_t const& ref_servedCellInfo() const {return servedCellInfo;} - struct neighbour_Info_t : Neighbour_Information - { - static constexpr const char* name() {return "neighbour_Info_t";} - using parent_t = Neighbour_Information; - static constexpr bool optional = true; - - }; - neighbour_Info_t& set_neighbour_Info() { neighbour_Info.setpresent(true); return neighbour_Info;} - neighbour_Info_t const* get_neighbour_Info() const {return neighbour_Info.is_valid() ? &neighbour_Info : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(old_ecgi); - v(servedCellInfo); - v(neighbour_Info); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(old_ecgi); - v(servedCellInfo); - v(neighbour_Info); - v(iE_Extensions); - - }; - void clear() - { - old_ecgi.clear(); - servedCellInfo.clear(); - neighbour_Info.clear(); - iE_Extensions.clear(); - - }; - private: - old_ecgi_t old_ecgi; - servedCellInfo_t servedCellInfo; - neighbour_Info_t neighbour_Info; - iE_Extensions_t iE_Extensions; - -}; -/* -ServedCellsToModify::= SEQUENCE (SIZE (1..maxCellineNB)) OF ServedCellsToModify-Item -*/ - -struct ServedCellsToModify_elm : ServedCellsToModify_Item -{ - static constexpr const char* name() {return "ServedCellsToModify_elm";} - using parent_t = ServedCellsToModify_Item; - -}; -struct ServedCellsToModify : asn::sequenceof -{ - static constexpr const char* name() {return "ServedCellsToModify";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -Old-ECGIs::= SEQUENCE (SIZE (1..maxCellineNB)) OF ECGI -*/ - -struct Old_ECGIs_elm : ECGI -{ - static constexpr const char* name() {return "Old_ECGIs_elm";} - using parent_t = ECGI; - -}; -struct Old_ECGIs : asn::sequenceof -{ - static constexpr const char* name() {return "Old-ECGIs";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -ENBConfigurationUpdate-IEs X2AP-PROTOCOL-IES ::= { - { ID id-ServedCellsToAdd CRITICALITY reject TYPE ServedCells PRESENCE optional}| - { ID id-ServedCellsToModify CRITICALITY reject TYPE ServedCellsToModify PRESENCE optional}| - { ID id-ServedCellsToDelete CRITICALITY reject TYPE Old-ECGIs PRESENCE optional}| - { ID id-GUGroupIDToAddList CRITICALITY reject TYPE GUGroupIDList PRESENCE optional}| - { ID id-GUGroupIDToDeleteList CRITICALITY reject TYPE GUGroupIDList PRESENCE optional}| - { ID id-CoverageModificationList CRITICALITY reject TYPE CoverageModificationList PRESENCE optional}, - ... -} -*/ - -struct ENBConfigurationUpdate_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 7; } - void clear() {type = 0;} - void select_id_ServedCellsToAdd() { set(id_ServedCellsToAdd); type=1;} - void select_id_ServedCellsToModify() { set(id_ServedCellsToModify); type=2;} - void select_id_ServedCellsToDelete() { set(id_ServedCellsToDelete); type=3;} - void select_id_GUGroupIDToAddList() { set(id_GUGroupIDToAddList); type=4;} - void select_id_GUGroupIDToDeleteList() { set(id_GUGroupIDToDeleteList); type=5;} - void select_id_CoverageModificationList() { set(id_CoverageModificationList); type=6;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_ServedCellsToAdd)) { type = 1; return true; } - else if(equal(id_ServedCellsToModify)) { type = 2; return true; } - else if(equal(id_ServedCellsToDelete)) { type = 3; return true; } - else if(equal(id_GUGroupIDToAddList)) { type = 4; return true; } - else if(equal(id_GUGroupIDToDeleteList)) { type = 5; return true; } - else if(equal(id_CoverageModificationList)) { type = 6; return true; } - else { type = 7; 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_ServedCellsToAdd);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_ServedCellsToModify);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_ServedCellsToDelete);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_GUGroupIDToAddList);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_GUGroupIDToDeleteList);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_CoverageModificationList);} return false; - case 7: type = 7; 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 == 7; } - void clear() {type = 0;} - void select_id_ServedCellsToAdd() { set(reject); type=1;} - void select_id_ServedCellsToModify() { set(reject); type=2;} - void select_id_ServedCellsToDelete() { set(reject); type=3;} - void select_id_GUGroupIDToAddList() { set(reject); type=4;} - void select_id_GUGroupIDToDeleteList() { set(reject); type=5;} - void select_id_CoverageModificationList() { set(reject); type=6;} - X2AP_PROTOCOL_IES::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 { type = 7; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - ServedCells& select_id_ServedCellsToAdd() { return set(1); } - ServedCells const* get_id_ServedCellsToAdd() const { return get(1); } - ServedCellsToModify& select_id_ServedCellsToModify() { return set(2); } - ServedCellsToModify const* get_id_ServedCellsToModify() const { return get(2); } - Old_ECGIs& select_id_ServedCellsToDelete() { return set(3); } - Old_ECGIs const* get_id_ServedCellsToDelete() const { return get(3); } - GUGroupIDList& select_id_GUGroupIDToAddList() { return set(4); } - GUGroupIDList const* get_id_GUGroupIDToAddList() const { return get(4); } - GUGroupIDList& select_id_GUGroupIDToDeleteList() { return set(5); } - GUGroupIDList const* get_id_GUGroupIDToDeleteList() const { return get(5); } - CoverageModificationList& select_id_CoverageModificationList() { return set(6); } - CoverageModificationList const* get_id_CoverageModificationList() const { return get(6); } - bool is_unknown() const { return type == 7; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_ServedCellsToAdd()); return true; - case 2: v(select_id_ServedCellsToModify()); return true; - case 3: v(select_id_ServedCellsToDelete()); return true; - case 4: v(select_id_GUGroupIDToAddList()); return true; - case 5: v(select_id_GUGroupIDToDeleteList()); return true; - case 6: v(select_id_CoverageModificationList()); return true; - case 7: if(type != 7) {clear(); asn::base::set();} type = 7; 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; - } - 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(CoverageModificationList)]; - char dummy2[sizeof(GUGroupIDList)]; - char dummy3[sizeof(Old_ECGIs)]; - char dummy4[sizeof(ServedCells)]; - char dummy5[sizeof(ServedCellsToModify)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 7; } - void clear() {type = 0;} - void select_id_ServedCellsToAdd() { set(optional); type=1;} - void select_id_ServedCellsToModify() { set(optional); type=2;} - void select_id_ServedCellsToDelete() { set(optional); type=3;} - void select_id_GUGroupIDToAddList() { set(optional); type=4;} - void select_id_GUGroupIDToDeleteList() { set(optional); type=5;} - void select_id_CoverageModificationList() { set(optional); type=6;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else { type = 7; 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(optional);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; 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}; - - }; - -}; -/* -ENBConfigurationUpdate ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ENBConfigurationUpdate-IEs}}, - ... -} -*/ - -struct ENBConfigurationUpdate : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "ENBConfigurationUpdate";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -ENBConfigurationUpdateAcknowledge-IEs X2AP-PROTOCOL-IES ::= { - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}, -... -} -*/ - -struct ENBConfigurationUpdateAcknowledge_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_CriticalityDiagnostics)) { type = 1; return true; } - else { type = 2; 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_CriticalityDiagnostics);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_CriticalityDiagnostics() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(1); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_CriticalityDiagnostics()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(CriticalityDiagnostics)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_CriticalityDiagnostics() { set(optional); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else { type = 2; 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(optional);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -ENBConfigurationUpdateAcknowledge ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ENBConfigurationUpdateAcknowledge-IEs}}, - ... -} -*/ - -struct ENBConfigurationUpdateAcknowledge : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "ENBConfigurationUpdateAcknowledge";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -ENBConfigurationUpdateFailure-IEs X2AP-PROTOCOL-IES ::= { - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| - { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}, - ... -} -*/ - -struct ENBConfigurationUpdateFailure_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_Cause() { set(id_Cause); type=1;} - void select_id_TimeToWait() { set(id_TimeToWait); type=2;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=3;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_Cause)) { type = 1; return true; } - else if(equal(id_TimeToWait)) { type = 2; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 3; return true; } - else { type = 4; 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_Cause);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_TimeToWait);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 4: type = 4; 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 == 4; } - void clear() {type = 0;} - void select_id_Cause() { set(ignore); type=1;} - void select_id_TimeToWait() { set(ignore); type=2;} - void select_id_CriticalityDiagnostics() { set(ignore); type=3;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else { type = 4; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - Cause& select_id_Cause() { return set(1); } - Cause const* get_id_Cause() const { return get(1); } - TimeToWait& select_id_TimeToWait() { return set(2); } - TimeToWait const* get_id_TimeToWait() const { return get(2); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(3); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(3); } - bool is_unknown() const { return type == 4; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_Cause()); return true; - case 2: v(select_id_TimeToWait()); return true; - case 3: v(select_id_CriticalityDiagnostics()); return true; - case 4: if(type != 4) {clear(); asn::base::set();} type = 4; 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; - } - 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(Cause)]; - char dummy2[sizeof(CriticalityDiagnostics)]; - char dummy3[sizeof(TimeToWait)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_Cause() { set(mandatory); type=1;} - void select_id_TimeToWait() { set(optional); type=2;} - void select_id_CriticalityDiagnostics() { set(optional); type=3;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else { type = 4; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; 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}; - - }; - -}; -/* -ENBConfigurationUpdateFailure ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ENBConfigurationUpdateFailure-IEs}}, - ... -} -*/ - -struct ENBConfigurationUpdateFailure : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "ENBConfigurationUpdateFailure";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -ENDCCellActivationFailure-IEs X2AP-PROTOCOL-IES ::= { - { ID id-ActivationID CRITICALITY reject TYPE ActivationID PRESENCE mandatory }| - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, - ... -} -*/ - -struct ENDCCellActivationFailure_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_ActivationID() { set(id_ActivationID); type=1;} - void select_id_Cause() { set(id_Cause); type=2;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=3;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_ActivationID)) { type = 1; return true; } - else if(equal(id_Cause)) { type = 2; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 3; return true; } - else { type = 4; 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_ActivationID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_Cause);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 4: type = 4; 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 == 4; } - void clear() {type = 0;} - void select_id_ActivationID() { set(reject); type=1;} - void select_id_Cause() { set(ignore); type=2;} - void select_id_CriticalityDiagnostics() { set(ignore); type=3;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else { type = 4; 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(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - ActivationID& select_id_ActivationID() { return set(1); } - ActivationID const* get_id_ActivationID() const { return get(1); } - Cause& select_id_Cause() { return set(2); } - Cause const* get_id_Cause() const { return get(2); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(3); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(3); } - bool is_unknown() const { return type == 4; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_ActivationID()); return true; - case 2: v(select_id_Cause()); return true; - case 3: v(select_id_CriticalityDiagnostics()); return true; - case 4: if(type != 4) {clear(); asn::base::set();} type = 4; 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; - } - 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(ActivationID)]; - char dummy2[sizeof(Cause)]; - char dummy3[sizeof(CriticalityDiagnostics)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_ActivationID() { set(mandatory); type=1;} - void select_id_Cause() { set(mandatory); type=2;} - void select_id_CriticalityDiagnostics() { set(optional); type=3;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else { type = 4; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; 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}; - - }; - -}; -/* -ENDCCellActivationFailure ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ENDCCellActivationFailure-IEs}}, - ... -} -*/ - -struct ENDCCellActivationFailure : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "ENDCCellActivationFailure";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -ServedNRCellsToActivate-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct ServedNRCellsToActivate_Item_ExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -ServedNRCellsToActivate-Item::= SEQUENCE { - nrCellID NRCGI, - iE-Extensions ProtocolExtensionContainer { {ServedNRCellsToActivate-Item-ExtIEs} } OPTIONAL, - ... -} -*/ - -struct ServedNRCellsToActivate_Item : asn::sequence<2, 0, true, 1> -{ - static constexpr const char* name() {return "ServedNRCellsToActivate-Item";} - using parent_t = asn::sequence<2, 0, true, 1>; - struct nrCellID_t : NRCGI - { - static constexpr const char* name() {return "nrCellID_t";} - using parent_t = NRCGI; - - }; - nrCellID_t& ref_nrCellID() {return nrCellID;} - nrCellID_t const& ref_nrCellID() const {return nrCellID;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(nrCellID); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(nrCellID); - v(iE_Extensions); - - }; - void clear() - { - nrCellID.clear(); - iE_Extensions.clear(); - - }; - private: - nrCellID_t nrCellID; - iE_Extensions_t iE_Extensions; - -}; -/* -ServedNRCellsToActivate::= SEQUENCE (SIZE (1.. maxCellinengNB)) OF ServedNRCellsToActivate-Item -*/ - -struct ServedNRCellsToActivate_elm : ServedNRCellsToActivate_Item -{ - static constexpr const char* name() {return "ServedNRCellsToActivate_elm";} - using parent_t = ServedNRCellsToActivate_Item; - -}; -struct ServedNRCellsToActivate : asn::sequenceof -{ - static constexpr const char* name() {return "ServedNRCellsToActivate";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -ENDCCellActivationRequest-IEs X2AP-PROTOCOL-IES ::= { - { ID id-ServedNRCellsToActivate CRITICALITY reject TYPE ServedNRCellsToActivate PRESENCE mandatory}| - { ID id-ActivationID CRITICALITY reject TYPE ActivationID PRESENCE mandatory}, - ... -} -*/ - -struct ENDCCellActivationRequest_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_ServedNRCellsToActivate() { set(id_ServedNRCellsToActivate); type=1;} - void select_id_ActivationID() { set(id_ActivationID); type=2;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_ServedNRCellsToActivate)) { type = 1; return true; } - else if(equal(id_ActivationID)) { type = 2; return true; } - else { type = 3; 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_ServedNRCellsToActivate);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_ActivationID);} return false; - case 3: type = 3; 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 == 3; } - void clear() {type = 0;} - void select_id_ServedNRCellsToActivate() { set(reject); type=1;} - void select_id_ActivationID() { set(reject); type=2;} - X2AP_PROTOCOL_IES::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 { type = 3; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - ServedNRCellsToActivate& select_id_ServedNRCellsToActivate() { return set(1); } - ServedNRCellsToActivate const* get_id_ServedNRCellsToActivate() const { return get(1); } - ActivationID& select_id_ActivationID() { return set(2); } - ActivationID const* get_id_ActivationID() const { return get(2); } - bool is_unknown() const { return type == 3; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_ServedNRCellsToActivate()); return true; - case 2: v(select_id_ActivationID()); return true; - case 3: if(type != 3) {clear(); asn::base::set();} type = 3; 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; - } - 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(ActivationID)]; - char dummy2[sizeof(ServedNRCellsToActivate)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_ServedNRCellsToActivate() { set(mandatory); type=1;} - void select_id_ActivationID() { set(mandatory); type=2;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else { type = 3; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; 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}; - - }; - -}; -/* -ENDCCellActivationRequest ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ENDCCellActivationRequest-IEs}}, - ... -} -*/ - -struct ENDCCellActivationRequest : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "ENDCCellActivationRequest";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -ENDCCellActivationResponse-IEs X2AP-PROTOCOL-IES ::= { - { ID id-ActivatedNRCellList CRITICALITY ignore TYPE ActivatedNRCellList PRESENCE mandatory}| - { ID id-ActivationID CRITICALITY reject TYPE ActivationID PRESENCE mandatory}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}, - ... -} -*/ - -struct ENDCCellActivationResponse_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_ActivatedNRCellList() { set(id_ActivatedNRCellList); type=1;} - void select_id_ActivationID() { set(id_ActivationID); type=2;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=3;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_ActivatedNRCellList)) { type = 1; return true; } - else if(equal(id_ActivationID)) { type = 2; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 3; return true; } - else { type = 4; 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_ActivatedNRCellList);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_ActivationID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 4: type = 4; 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 == 4; } - void clear() {type = 0;} - void select_id_ActivatedNRCellList() { set(ignore); type=1;} - void select_id_ActivationID() { set(reject); type=2;} - void select_id_CriticalityDiagnostics() { set(ignore); type=3;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(reject)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else { type = 4; 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(ignore);} 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(ignore);} return false; - case 4: type = 4; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - ActivatedNRCellList& select_id_ActivatedNRCellList() { return set(1); } - ActivatedNRCellList const* get_id_ActivatedNRCellList() const { return get(1); } - ActivationID& select_id_ActivationID() { return set(2); } - ActivationID const* get_id_ActivationID() const { return get(2); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(3); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(3); } - bool is_unknown() const { return type == 4; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_ActivatedNRCellList()); return true; - case 2: v(select_id_ActivationID()); return true; - case 3: v(select_id_CriticalityDiagnostics()); return true; - case 4: if(type != 4) {clear(); asn::base::set();} type = 4; 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; - } - 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(ActivatedNRCellList)]; - char dummy2[sizeof(ActivationID)]; - char dummy3[sizeof(CriticalityDiagnostics)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_ActivatedNRCellList() { set(mandatory); type=1;} - void select_id_ActivationID() { set(mandatory); type=2;} - void select_id_CriticalityDiagnostics() { set(optional); type=3;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else { type = 4; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; 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}; - - }; - -}; -/* -ENDCCellActivationResponse ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ENDCCellActivationResponse-IEs}}, - ... -} -*/ - -struct ENDCCellActivationResponse : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "ENDCCellActivationResponse";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -FDD-InfoServedNRCell-Information-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct FDD_InfoServedNRCell_Information_ExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -FDD-InfoServedNRCell-Information ::= SEQUENCE { - ul-NRFreqInfo NRFreqInfo, - dl-NRFreqInfo NRFreqInfo, - ul-NR-TxBW NR-TxBW, - dl-NR-TxBW NR-TxBW, - iE-Extensions ProtocolExtensionContainer { {FDD-InfoServedNRCell-Information-ExtIEs} } OPTIONAL, - ... -} -*/ - -struct FDD_InfoServedNRCell_Information : asn::sequence<5, 0, true, 1> -{ - static constexpr const char* name() {return "FDD-InfoServedNRCell-Information";} - using parent_t = asn::sequence<5, 0, true, 1>; - struct ul_NRFreqInfo_t : NRFreqInfo - { - static constexpr const char* name() {return "ul_NRFreqInfo_t";} - using parent_t = NRFreqInfo; - - }; - ul_NRFreqInfo_t& ref_ul_NRFreqInfo() {return ul_NRFreqInfo;} - ul_NRFreqInfo_t const& ref_ul_NRFreqInfo() const {return ul_NRFreqInfo;} - struct dl_NRFreqInfo_t : NRFreqInfo - { - static constexpr const char* name() {return "dl_NRFreqInfo_t";} - using parent_t = NRFreqInfo; - - }; - dl_NRFreqInfo_t& ref_dl_NRFreqInfo() {return dl_NRFreqInfo;} - dl_NRFreqInfo_t const& ref_dl_NRFreqInfo() const {return dl_NRFreqInfo;} - struct ul_NR_TxBW_t : NR_TxBW - { - static constexpr const char* name() {return "ul_NR_TxBW_t";} - using parent_t = NR_TxBW; - - }; - ul_NR_TxBW_t& ref_ul_NR_TxBW() {return ul_NR_TxBW;} - ul_NR_TxBW_t const& ref_ul_NR_TxBW() const {return ul_NR_TxBW;} - struct dl_NR_TxBW_t : NR_TxBW - { - static constexpr const char* name() {return "dl_NR_TxBW_t";} - using parent_t = NR_TxBW; - - }; - dl_NR_TxBW_t& ref_dl_NR_TxBW() {return dl_NR_TxBW;} - dl_NR_TxBW_t const& ref_dl_NR_TxBW() const {return dl_NR_TxBW;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(ul_NRFreqInfo); - v(dl_NRFreqInfo); - v(ul_NR_TxBW); - v(dl_NR_TxBW); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(ul_NRFreqInfo); - v(dl_NRFreqInfo); - v(ul_NR_TxBW); - v(dl_NR_TxBW); - v(iE_Extensions); - - }; - void clear() - { - ul_NRFreqInfo.clear(); - dl_NRFreqInfo.clear(); - ul_NR_TxBW.clear(); - dl_NR_TxBW.clear(); - iE_Extensions.clear(); - - }; - private: - ul_NRFreqInfo_t ul_NRFreqInfo; - dl_NRFreqInfo_t dl_NRFreqInfo; - ul_NR_TxBW_t ul_NR_TxBW; - dl_NR_TxBW_t dl_NR_TxBW; - iE_Extensions_t iE_Extensions; - -}; -/* -TDD-InfoServedNRCell-Information-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct TDD_InfoServedNRCell_Information_ExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -TDD-InfoServedNRCell-Information ::= SEQUENCE { - nRFreqInfo NRFreqInfo, - nR-TxBW NR-TxBW, - iE-Extensions ProtocolExtensionContainer { {TDD-InfoServedNRCell-Information-ExtIEs} } OPTIONAL, - ... -} -*/ - -struct TDD_InfoServedNRCell_Information : asn::sequence<3, 0, true, 1> -{ - static constexpr const char* name() {return "TDD-InfoServedNRCell-Information";} - using parent_t = asn::sequence<3, 0, true, 1>; - struct nRFreqInfo_t : NRFreqInfo - { - static constexpr const char* name() {return "nRFreqInfo_t";} - using parent_t = NRFreqInfo; - - }; - nRFreqInfo_t& ref_nRFreqInfo() {return nRFreqInfo;} - nRFreqInfo_t const& ref_nRFreqInfo() const {return nRFreqInfo;} - struct nR_TxBW_t : NR_TxBW - { - static constexpr const char* name() {return "nR_TxBW_t";} - using parent_t = NR_TxBW; - - }; - nR_TxBW_t& ref_nR_TxBW() {return nR_TxBW;} - nR_TxBW_t const& ref_nR_TxBW() const {return nR_TxBW;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(nRFreqInfo); - v(nR_TxBW); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(nRFreqInfo); - v(nR_TxBW); - v(iE_Extensions); - - }; - void clear() - { - nRFreqInfo.clear(); - nR_TxBW.clear(); - iE_Extensions.clear(); - - }; - private: - nRFreqInfo_t nRFreqInfo; - nR_TxBW_t nR_TxBW; - iE_Extensions_t iE_Extensions; - -}; -/* -ServedNRCell-Information-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct ServedNRCell_Information_ExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -ServedNRCell-Information ::= SEQUENCE { - nrpCI NRPCI, - nrCellID NRCGI, - fiveGS-TAC FiveGS-TAC OPTIONAL, - configured-TAC TAC OPTIONAL, - broadcastPLMNs BroadcastPLMNs-Item, - nrModeInfo CHOICE { - fdd FDD-InfoServedNRCell-Information, - tdd TDD-InfoServedNRCell-Information, - ... - }, - measurementTimingConfiguration OCTET STRING, - iE-Extensions ProtocolExtensionContainer { {ServedNRCell-Information-ExtIEs} } OPTIONAL, - ... -} -*/ - -struct ServedNRCell_Information : asn::sequence<8, 0, true, 3> -{ - static constexpr const char* name() {return "ServedNRCell-Information";} - using parent_t = asn::sequence<8, 0, true, 3>; - struct nrpCI_t : NRPCI - { - static constexpr const char* name() {return "nrpCI_t";} - using parent_t = NRPCI; - - }; - nrpCI_t& ref_nrpCI() {return nrpCI;} - nrpCI_t const& ref_nrpCI() const {return nrpCI;} - struct nrCellID_t : NRCGI - { - static constexpr const char* name() {return "nrCellID_t";} - using parent_t = NRCGI; - - }; - nrCellID_t& ref_nrCellID() {return nrCellID;} - nrCellID_t const& ref_nrCellID() const {return nrCellID;} - struct fiveGS_TAC_t : FiveGS_TAC - { - static constexpr const char* name() {return "fiveGS_TAC_t";} - using parent_t = FiveGS_TAC; - static constexpr bool optional = true; - - }; - fiveGS_TAC_t& set_fiveGS_TAC() { fiveGS_TAC.setpresent(true); return fiveGS_TAC;} - fiveGS_TAC_t const* get_fiveGS_TAC() const {return fiveGS_TAC.is_valid() ? &fiveGS_TAC : nullptr;} - struct configured_TAC_t : TAC - { - static constexpr const char* name() {return "configured_TAC_t";} - using parent_t = TAC; - static constexpr bool optional = true; - - }; - configured_TAC_t& set_configured_TAC() { configured_TAC.setpresent(true); return configured_TAC;} - configured_TAC_t const* get_configured_TAC() const {return configured_TAC.is_valid() ? &configured_TAC : nullptr;} - struct broadcastPLMNs_t : BroadcastPLMNs_Item - { - static constexpr const char* name() {return "broadcastPLMNs_t";} - using parent_t = BroadcastPLMNs_Item; - - }; - broadcastPLMNs_t& ref_broadcastPLMNs() {return broadcastPLMNs;} - broadcastPLMNs_t const& ref_broadcastPLMNs() const {return broadcastPLMNs;} - struct nrModeInfo_t : asn::choice<2, 0, true> - { - static constexpr const char* name() {return "nrModeInfo_t";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~nrModeInfo_t() {clear();} - struct fdd_t : FDD_InfoServedNRCell_Information - { - static constexpr const char* name() {return "fdd_t";} - using parent_t = FDD_InfoServedNRCell_Information; - - }; - struct tdd_t : TDD_InfoServedNRCell_Information - { - static constexpr const char* name() {return "tdd_t";} - using parent_t = TDD_InfoServedNRCell_Information; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - fdd_t& select_fdd() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - fdd_t const* get_fdd() const { if(get_index() == 1) { return &var.as();} return nullptr; } - tdd_t& select_tdd() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - tdd_t const* get_tdd() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(fdd_t)]; - char dummy2[sizeof(tdd_t)]; - - }; - asn::variant var; - index_type index {0}; - }; - nrModeInfo_t& ref_nrModeInfo() {return nrModeInfo;} - nrModeInfo_t const& ref_nrModeInfo() const {return nrModeInfo;} - struct measurementTimingConfiguration_t : asn::ostring<> - { - static constexpr const char* name() {return "measurementTimingConfiguration_t";} - using parent_t = asn::ostring<>; - - }; - - measurementTimingConfiguration_t& ref_measurementTimingConfiguration() {return measurementTimingConfiguration;} - measurementTimingConfiguration_t const& ref_measurementTimingConfiguration() const {return measurementTimingConfiguration;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(nrpCI); - v(nrCellID); - v(fiveGS_TAC); - v(configured_TAC); - v(broadcastPLMNs); - v(nrModeInfo); - v(measurementTimingConfiguration); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(nrpCI); - v(nrCellID); - v(fiveGS_TAC); - v(configured_TAC); - v(broadcastPLMNs); - v(nrModeInfo); - v(measurementTimingConfiguration); - v(iE_Extensions); - - }; - void clear() - { - nrpCI.clear(); - nrCellID.clear(); - fiveGS_TAC.clear(); - configured_TAC.clear(); - broadcastPLMNs.clear(); - nrModeInfo.clear(); - measurementTimingConfiguration.clear(); - iE_Extensions.clear(); - - }; - private: - nrpCI_t nrpCI; - nrCellID_t nrCellID; - fiveGS_TAC_t fiveGS_TAC; - configured_TAC_t configured_TAC; - broadcastPLMNs_t broadcastPLMNs; - nrModeInfo_t nrModeInfo; - measurementTimingConfiguration_t measurementTimingConfiguration; - iE_Extensions_t iE_Extensions; - -}; -/* -En-gNBServedCells-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct En_gNBServedCells_ExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -ServedNRcellsENDCX2ManagementList ::= SEQUENCE (SIZE (1.. maxCellinengNB)) OF SEQUENCE { - servedNRCellInfo ServedNRCell-Information, - nRNeighbourInfo NRNeighbour-Information OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {En-gNBServedCells-ExtIEs} } OPTIONAL, - ... -} -*/ - -struct ServedNRcellsENDCX2ManagementList_elm : asn::sequence<3, 0, true, 2> -{ - static constexpr const char* name() {return "ServedNRcellsENDCX2ManagementList_elm";} - using parent_t = asn::sequence<3, 0, true, 2>; - struct servedNRCellInfo_t : ServedNRCell_Information - { - static constexpr const char* name() {return "servedNRCellInfo_t";} - using parent_t = ServedNRCell_Information; - - }; - servedNRCellInfo_t& ref_servedNRCellInfo() {return servedNRCellInfo;} - servedNRCellInfo_t const& ref_servedNRCellInfo() const {return servedNRCellInfo;} - struct nRNeighbourInfo_t : NRNeighbour_Information - { - static constexpr const char* name() {return "nRNeighbourInfo_t";} - using parent_t = NRNeighbour_Information; - static constexpr bool optional = true; - - }; - nRNeighbourInfo_t& set_nRNeighbourInfo() { nRNeighbourInfo.setpresent(true); return nRNeighbourInfo;} - nRNeighbourInfo_t const* get_nRNeighbourInfo() const {return nRNeighbourInfo.is_valid() ? &nRNeighbourInfo : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(servedNRCellInfo); - v(nRNeighbourInfo); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(servedNRCellInfo); - v(nRNeighbourInfo); - v(iE_Extensions); - - }; - void clear() - { - servedNRCellInfo.clear(); - nRNeighbourInfo.clear(); - iE_Extensions.clear(); - - }; - private: - servedNRCellInfo_t servedNRCellInfo; - nRNeighbourInfo_t nRNeighbourInfo; - iE_Extensions_t iE_Extensions; - -}; -struct ServedNRcellsENDCX2ManagementList : asn::sequenceof -{ - static constexpr const char* name() {return "ServedNRcellsENDCX2ManagementList";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -ServedNRCellsToModify-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct ServedNRCellsToModify_Item_ExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -ServedNRCellsToModify-Item::= SEQUENCE { - old-nrcgi NRCGI, - servedNRCellInformation ServedNRCell-Information, - nrNeighbourInformation NRNeighbour-Information OPTIONAL, - nrDeactivationIndication DeactivationIndication OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {ServedNRCellsToModify-Item-ExtIEs} } OPTIONAL, - ... -} -*/ - -struct ServedNRCellsToModify_Item : asn::sequence<5, 0, true, 3> -{ - static constexpr const char* name() {return "ServedNRCellsToModify-Item";} - using parent_t = asn::sequence<5, 0, true, 3>; - struct old_nrcgi_t : NRCGI - { - static constexpr const char* name() {return "old_nrcgi_t";} - using parent_t = NRCGI; - - }; - old_nrcgi_t& ref_old_nrcgi() {return old_nrcgi;} - old_nrcgi_t const& ref_old_nrcgi() const {return old_nrcgi;} - struct servedNRCellInformation_t : ServedNRCell_Information - { - static constexpr const char* name() {return "servedNRCellInformation_t";} - using parent_t = ServedNRCell_Information; - - }; - servedNRCellInformation_t& ref_servedNRCellInformation() {return servedNRCellInformation;} - servedNRCellInformation_t const& ref_servedNRCellInformation() const {return servedNRCellInformation;} - struct nrNeighbourInformation_t : NRNeighbour_Information - { - static constexpr const char* name() {return "nrNeighbourInformation_t";} - using parent_t = NRNeighbour_Information; - static constexpr bool optional = true; - - }; - nrNeighbourInformation_t& set_nrNeighbourInformation() { nrNeighbourInformation.setpresent(true); return nrNeighbourInformation;} - nrNeighbourInformation_t const* get_nrNeighbourInformation() const {return nrNeighbourInformation.is_valid() ? &nrNeighbourInformation : nullptr;} - struct nrDeactivationIndication_t : DeactivationIndication - { - static constexpr const char* name() {return "nrDeactivationIndication_t";} - using parent_t = DeactivationIndication; - static constexpr bool optional = true; - - }; - nrDeactivationIndication_t& set_nrDeactivationIndication() { nrDeactivationIndication.setpresent(true); return nrDeactivationIndication;} - nrDeactivationIndication_t const* get_nrDeactivationIndication() const {return nrDeactivationIndication.is_valid() ? &nrDeactivationIndication : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(old_nrcgi); - v(servedNRCellInformation); - v(nrNeighbourInformation); - v(nrDeactivationIndication); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(old_nrcgi); - v(servedNRCellInformation); - v(nrNeighbourInformation); - v(nrDeactivationIndication); - v(iE_Extensions); - - }; - void clear() - { - old_nrcgi.clear(); - servedNRCellInformation.clear(); - nrNeighbourInformation.clear(); - nrDeactivationIndication.clear(); - iE_Extensions.clear(); - - }; - private: - old_nrcgi_t old_nrcgi; - servedNRCellInformation_t servedNRCellInformation; - nrNeighbourInformation_t nrNeighbourInformation; - nrDeactivationIndication_t nrDeactivationIndication; - iE_Extensions_t iE_Extensions; - -}; -/* -ServedNRcellsToModifyENDCConfUpdList ::= SEQUENCE (SIZE (1..maxCellinengNB)) OF ServedNRCellsToModify-Item -*/ - -struct ServedNRcellsToModifyENDCConfUpdList_elm : ServedNRCellsToModify_Item -{ - static constexpr const char* name() {return "ServedNRcellsToModifyENDCConfUpdList_elm";} - using parent_t = ServedNRCellsToModify_Item; - -}; -struct ServedNRcellsToModifyENDCConfUpdList : asn::sequenceof -{ - static constexpr const char* name() {return "ServedNRcellsToModifyENDCConfUpdList";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -ServedNRcellsToDeleteENDCConfUpdList ::= SEQUENCE (SIZE (1..maxCellinengNB)) OF NRCGI -*/ - -struct ServedNRcellsToDeleteENDCConfUpdList_elm : NRCGI -{ - static constexpr const char* name() {return "ServedNRcellsToDeleteENDCConfUpdList_elm";} - using parent_t = NRCGI; - -}; -struct ServedNRcellsToDeleteENDCConfUpdList : asn::sequenceof -{ - static constexpr const char* name() {return "ServedNRcellsToDeleteENDCConfUpdList";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -En-gNB-ENDCConfigUpdateIEs X2AP-PROTOCOL-IES ::= { - { ID id-ServedNRcellsENDCX2ManagementList CRITICALITY reject TYPE ServedNRcellsENDCX2ManagementList PRESENCE optional }| - { ID id-ServedNRcellsToModifyListENDCConfUpd CRITICALITY reject TYPE ServedNRcellsToModifyENDCConfUpdList PRESENCE optional }| - { ID id-ServedNRcellsToDeleteListENDCConfUpd CRITICALITY reject TYPE ServedNRcellsToDeleteENDCConfUpdList PRESENCE optional }, - ... -} -*/ - -struct En_gNB_ENDCConfigUpdateIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_ServedNRcellsENDCX2ManagementList() { set(id_ServedNRcellsENDCX2ManagementList); type=1;} - void select_id_ServedNRcellsToModifyListENDCConfUpd() { set(id_ServedNRcellsToModifyListENDCConfUpd); type=2;} - void select_id_ServedNRcellsToDeleteListENDCConfUpd() { set(id_ServedNRcellsToDeleteListENDCConfUpd); type=3;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_ServedNRcellsENDCX2ManagementList)) { type = 1; return true; } - else if(equal(id_ServedNRcellsToModifyListENDCConfUpd)) { type = 2; return true; } - else if(equal(id_ServedNRcellsToDeleteListENDCConfUpd)) { type = 3; return true; } - else { type = 4; 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_ServedNRcellsENDCX2ManagementList);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_ServedNRcellsToModifyListENDCConfUpd);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_ServedNRcellsToDeleteListENDCConfUpd);} return false; - case 4: type = 4; 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 == 4; } - void clear() {type = 0;} - void select_id_ServedNRcellsENDCX2ManagementList() { set(reject); type=1;} - void select_id_ServedNRcellsToModifyListENDCConfUpd() { set(reject); type=2;} - void select_id_ServedNRcellsToDeleteListENDCConfUpd() { set(reject); type=3;} - X2AP_PROTOCOL_IES::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 { type = 4; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - ServedNRcellsENDCX2ManagementList& select_id_ServedNRcellsENDCX2ManagementList() { return set(1); } - ServedNRcellsENDCX2ManagementList const* get_id_ServedNRcellsENDCX2ManagementList() const { return get(1); } - ServedNRcellsToModifyENDCConfUpdList& select_id_ServedNRcellsToModifyListENDCConfUpd() { return set(2); } - ServedNRcellsToModifyENDCConfUpdList const* get_id_ServedNRcellsToModifyListENDCConfUpd() const { return get(2); } - ServedNRcellsToDeleteENDCConfUpdList& select_id_ServedNRcellsToDeleteListENDCConfUpd() { return set(3); } - ServedNRcellsToDeleteENDCConfUpdList const* get_id_ServedNRcellsToDeleteListENDCConfUpd() const { return get(3); } - bool is_unknown() const { return type == 4; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_ServedNRcellsENDCX2ManagementList()); return true; - case 2: v(select_id_ServedNRcellsToModifyListENDCConfUpd()); return true; - case 3: v(select_id_ServedNRcellsToDeleteListENDCConfUpd()); return true; - case 4: if(type != 4) {clear(); asn::base::set();} type = 4; 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; - } - 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(ServedNRcellsENDCX2ManagementList)]; - char dummy2[sizeof(ServedNRcellsToDeleteENDCConfUpdList)]; - char dummy3[sizeof(ServedNRcellsToModifyENDCConfUpdList)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_ServedNRcellsENDCX2ManagementList() { set(optional); type=1;} - void select_id_ServedNRcellsToModifyListENDCConfUpd() { set(optional); type=2;} - void select_id_ServedNRcellsToDeleteListENDCConfUpd() { set(optional); type=3;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else { type = 4; 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(optional);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; 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}; - - }; - -}; -/* -InitiatingNodeType-EndcConfigUpdate::= CHOICE { - init-eNB ProtocolIE-Container {{ENB-ENDCConfigUpdateIEs}}, - init-en-gNB ProtocolIE-Container {{En-gNB-ENDCConfigUpdateIEs}}, - ... -} -*/ - -struct InitiatingNodeType_EndcConfigUpdate : asn::choice<2, 0, true> -{ - static constexpr const char* name() {return "InitiatingNodeType-EndcConfigUpdate";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~InitiatingNodeType_EndcConfigUpdate() {clear();} - struct init_eNB_t : ProtocolIE_Container - { - static constexpr const char* name() {return "init_eNB_t";} - using parent_t = ProtocolIE_Container; - - }; - struct init_en_gNB_t : ProtocolIE_Container - { - static constexpr const char* name() {return "init_en_gNB_t";} - using parent_t = ProtocolIE_Container; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - init_eNB_t& select_init_eNB() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - init_eNB_t const* get_init_eNB() const { if(get_index() == 1) { return &var.as();} return nullptr; } - init_en_gNB_t& select_init_en_gNB() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - init_en_gNB_t const* get_init_en_gNB() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(init_eNB_t)]; - char dummy2[sizeof(init_en_gNB_t)]; - - }; - asn::variant var; - index_type index {0}; -}; -/* -ENDCConfigurationUpdate-IEs X2AP-PROTOCOL-IES ::= { - { ID id-InitiatingNodeType-EndcConfigUpdate CRITICALITY reject TYPE InitiatingNodeType-EndcConfigUpdate PRESENCE mandatory}, - ... -} -*/ - -struct ENDCConfigurationUpdate_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_InitiatingNodeType_EndcConfigUpdate() { set(id_InitiatingNodeType_EndcConfigUpdate); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_InitiatingNodeType_EndcConfigUpdate)) { type = 1; return true; } - else { type = 2; 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_InitiatingNodeType_EndcConfigUpdate);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_InitiatingNodeType_EndcConfigUpdate() { set(reject); type=1;} - X2AP_PROTOCOL_IES::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 { type = 2; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - InitiatingNodeType_EndcConfigUpdate& select_id_InitiatingNodeType_EndcConfigUpdate() { return set(1); } - InitiatingNodeType_EndcConfigUpdate const* get_id_InitiatingNodeType_EndcConfigUpdate() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_InitiatingNodeType_EndcConfigUpdate()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(InitiatingNodeType_EndcConfigUpdate)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_InitiatingNodeType_EndcConfigUpdate() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -ENDCConfigurationUpdate ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ENDCConfigurationUpdate-IEs}}, - ... -} -*/ - -struct ENDCConfigurationUpdate : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "ENDCConfigurationUpdate";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -En-gNB-ENDCConfigUpdateAckIEs X2AP-PROTOCOL-IES ::= { - { ID id-ServedNRcellsENDCX2ManagementList CRITICALITY reject TYPE ServedNRcellsENDCX2ManagementList PRESENCE optional}, - ... -} -*/ - -struct En_gNB_ENDCConfigUpdateAckIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_ServedNRcellsENDCX2ManagementList() { set(id_ServedNRcellsENDCX2ManagementList); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_ServedNRcellsENDCX2ManagementList)) { type = 1; return true; } - else { type = 2; 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_ServedNRcellsENDCX2ManagementList);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_ServedNRcellsENDCX2ManagementList() { set(reject); type=1;} - X2AP_PROTOCOL_IES::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 { type = 2; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - ServedNRcellsENDCX2ManagementList& select_id_ServedNRcellsENDCX2ManagementList() { return set(1); } - ServedNRcellsENDCX2ManagementList const* get_id_ServedNRcellsENDCX2ManagementList() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_ServedNRcellsENDCX2ManagementList()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(ServedNRcellsENDCX2ManagementList)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_ServedNRcellsENDCX2ManagementList() { set(optional); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else { type = 2; 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(optional);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -RespondingNodeType-EndcConfigUpdate::= CHOICE { - respond-eNB ProtocolIE-Container {{ENB-ENDCConfigUpdateAckIEs}}, - respond-en-gNB ProtocolIE-Container {{En-gNB-ENDCConfigUpdateAckIEs}}, - ... -} -*/ - -struct RespondingNodeType_EndcConfigUpdate : asn::choice<2, 0, true> -{ - static constexpr const char* name() {return "RespondingNodeType-EndcConfigUpdate";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~RespondingNodeType_EndcConfigUpdate() {clear();} - struct respond_eNB_t : ProtocolIE_Container - { - static constexpr const char* name() {return "respond_eNB_t";} - using parent_t = ProtocolIE_Container; - - }; - struct respond_en_gNB_t : ProtocolIE_Container - { - static constexpr const char* name() {return "respond_en_gNB_t";} - using parent_t = ProtocolIE_Container; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - respond_eNB_t& select_respond_eNB() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - respond_eNB_t const* get_respond_eNB() const { if(get_index() == 1) { return &var.as();} return nullptr; } - respond_en_gNB_t& select_respond_en_gNB() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - respond_en_gNB_t const* get_respond_en_gNB() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(respond_eNB_t)]; - char dummy2[sizeof(respond_en_gNB_t)]; - - }; - asn::variant var; - index_type index {0}; -}; -/* -ENDCConfigurationUpdateAcknowledge-IEs X2AP-PROTOCOL-IES ::= { - { ID id-RespondingNodeType-EndcConfigUpdate CRITICALITY reject TYPE RespondingNodeType-EndcConfigUpdate PRESENCE mandatory}, - ... -} -*/ - -struct ENDCConfigurationUpdateAcknowledge_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_RespondingNodeType_EndcConfigUpdate() { set(id_RespondingNodeType_EndcConfigUpdate); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_RespondingNodeType_EndcConfigUpdate)) { type = 1; return true; } - else { type = 2; 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_RespondingNodeType_EndcConfigUpdate);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_RespondingNodeType_EndcConfigUpdate() { set(reject); type=1;} - X2AP_PROTOCOL_IES::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 { type = 2; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - RespondingNodeType_EndcConfigUpdate& select_id_RespondingNodeType_EndcConfigUpdate() { return set(1); } - RespondingNodeType_EndcConfigUpdate const* get_id_RespondingNodeType_EndcConfigUpdate() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_RespondingNodeType_EndcConfigUpdate()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(RespondingNodeType_EndcConfigUpdate)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_RespondingNodeType_EndcConfigUpdate() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -ENDCConfigurationUpdateAcknowledge ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ENDCConfigurationUpdateAcknowledge-IEs}}, - ... -} -*/ - -struct ENDCConfigurationUpdateAcknowledge : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "ENDCConfigurationUpdateAcknowledge";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -ENDCConfigurationUpdateFailure-IEs X2AP-PROTOCOL-IES ::= { - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }| - { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }, - ... -} -*/ - -struct ENDCConfigurationUpdateFailure_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_Cause() { set(id_Cause); type=1;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=2;} - void select_id_TimeToWait() { set(id_TimeToWait); type=3;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_Cause)) { type = 1; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 2; return true; } - else if(equal(id_TimeToWait)) { type = 3; return true; } - else { type = 4; 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_Cause);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_TimeToWait);} return false; - case 4: type = 4; 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 == 4; } - void clear() {type = 0;} - void select_id_Cause() { set(ignore); type=1;} - void select_id_CriticalityDiagnostics() { set(ignore); type=2;} - void select_id_TimeToWait() { set(ignore); type=3;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else { type = 4; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - Cause& select_id_Cause() { return set(1); } - Cause const* get_id_Cause() const { return get(1); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(2); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(2); } - TimeToWait& select_id_TimeToWait() { return set(3); } - TimeToWait const* get_id_TimeToWait() const { return get(3); } - bool is_unknown() const { return type == 4; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_Cause()); return true; - case 2: v(select_id_CriticalityDiagnostics()); return true; - case 3: v(select_id_TimeToWait()); return true; - case 4: if(type != 4) {clear(); asn::base::set();} type = 4; 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; - } - 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(Cause)]; - char dummy2[sizeof(CriticalityDiagnostics)]; - char dummy3[sizeof(TimeToWait)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_Cause() { set(mandatory); type=1;} - void select_id_CriticalityDiagnostics() { set(optional); type=2;} - void select_id_TimeToWait() { set(optional); type=3;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else { type = 4; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; 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}; - - }; - -}; -/* -ENDCConfigurationUpdateFailure ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ENDCConfigurationUpdateFailure-IEs}}, - ... -} -*/ - -struct ENDCConfigurationUpdateFailure : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "ENDCConfigurationUpdateFailure";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -ENDCPartialResetConfirm-IEs X2AP-PROTOCOL-IES ::= { - { ID id-UEs-Admitted-ToBeReset CRITICALITY reject TYPE UEsToBeResetList PRESENCE mandatory}, - ... -} -*/ - -struct ENDCPartialResetConfirm_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_UEs_Admitted_ToBeReset() { set(id_UEs_Admitted_ToBeReset); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_UEs_Admitted_ToBeReset)) { type = 1; return true; } - else { type = 2; 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_UEs_Admitted_ToBeReset);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_UEs_Admitted_ToBeReset() { set(reject); type=1;} - X2AP_PROTOCOL_IES::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 { type = 2; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UEsToBeResetList& select_id_UEs_Admitted_ToBeReset() { return set(1); } - UEsToBeResetList const* get_id_UEs_Admitted_ToBeReset() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_UEs_Admitted_ToBeReset()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(UEsToBeResetList)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_UEs_Admitted_ToBeReset() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -ENDCPartialResetConfirm ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ENDCPartialResetConfirm-IEs}}, - ... -} -*/ - -struct ENDCPartialResetConfirm : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "ENDCPartialResetConfirm";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -ENDCPartialResetRequired-IEs X2AP-PROTOCOL-IES ::= { - { ID id-UEs-ToBeReset CRITICALITY reject TYPE UEsToBeResetList PRESENCE mandatory}| - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, - ... -} -*/ - -struct ENDCPartialResetRequired_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_UEs_ToBeReset() { set(id_UEs_ToBeReset); type=1;} - void select_id_Cause() { set(id_Cause); type=2;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_UEs_ToBeReset)) { type = 1; return true; } - else if(equal(id_Cause)) { type = 2; return true; } - else { type = 3; 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_UEs_ToBeReset);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_Cause);} return false; - case 3: type = 3; 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 == 3; } - void clear() {type = 0;} - void select_id_UEs_ToBeReset() { set(reject); type=1;} - void select_id_Cause() { set(ignore); type=2;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 2; return true; } - else { type = 3; 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(ignore);} return false; - case 3: type = 3; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UEsToBeResetList& select_id_UEs_ToBeReset() { return set(1); } - UEsToBeResetList const* get_id_UEs_ToBeReset() const { return get(1); } - Cause& select_id_Cause() { return set(2); } - Cause const* get_id_Cause() const { return get(2); } - bool is_unknown() const { return type == 3; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_UEs_ToBeReset()); return true; - case 2: v(select_id_Cause()); return true; - case 3: if(type != 3) {clear(); asn::base::set();} type = 3; 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; - } - 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(Cause)]; - char dummy2[sizeof(UEsToBeResetList)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_UEs_ToBeReset() { set(mandatory); type=1;} - void select_id_Cause() { set(mandatory); type=2;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else { type = 3; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; 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}; - - }; - -}; -/* -ENDCPartialResetRequired ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ENDCPartialResetRequired-IEs}}, - ... -} -*/ - -struct ENDCPartialResetRequired : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "ENDCPartialResetRequired";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -ENDCX2RemovalFailure-IEs X2AP-PROTOCOL-IES ::= { - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory} | - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, - ... -} -*/ - -struct ENDCX2RemovalFailure_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_Cause() { set(id_Cause); type=1;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=2;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_Cause)) { type = 1; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 2; return true; } - else { type = 3; 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_Cause);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 3: type = 3; 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 == 3; } - void clear() {type = 0;} - void select_id_Cause() { set(ignore); type=1;} - void select_id_CriticalityDiagnostics() { set(ignore); type=2;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else { type = 3; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - Cause& select_id_Cause() { return set(1); } - Cause const* get_id_Cause() const { return get(1); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(2); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(2); } - bool is_unknown() const { return type == 3; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_Cause()); return true; - case 2: v(select_id_CriticalityDiagnostics()); return true; - case 3: if(type != 3) {clear(); asn::base::set();} type = 3; 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; - } - 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(Cause)]; - char dummy2[sizeof(CriticalityDiagnostics)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_Cause() { set(mandatory); type=1;} - void select_id_CriticalityDiagnostics() { set(optional); type=2;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else { type = 3; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; 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}; - - }; - -}; -/* -ENDCX2RemovalFailure ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ENDCX2RemovalFailure-IEs}}, - ... -} -*/ - -struct ENDCX2RemovalFailure : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "ENDCX2RemovalFailure";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -En-gNB-ENDCX2RemovalReqIEs X2AP-PROTOCOL-IES ::= { - { ID id-Globalen-gNB-ID CRITICALITY reject TYPE GlobalGNB-ID PRESENCE mandatory}, - ... -} -*/ - -struct En_gNB_ENDCX2RemovalReqIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_Globalen_gNB_ID() { set(id_Globalen_gNB_ID); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_Globalen_gNB_ID)) { type = 1; return true; } - else { type = 2; 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_Globalen_gNB_ID);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_Globalen_gNB_ID() { set(reject); type=1;} - X2AP_PROTOCOL_IES::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 { type = 2; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - GlobalGNB_ID& select_id_Globalen_gNB_ID() { return set(1); } - GlobalGNB_ID const* get_id_Globalen_gNB_ID() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_Globalen_gNB_ID()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(GlobalGNB_ID)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_Globalen_gNB_ID() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -InitiatingNodeType-EndcX2Removal ::= CHOICE { - init-eNB ProtocolIE-Container {{ENB-ENDCX2RemovalReqIEs}}, - init-en-gNB ProtocolIE-Container {{En-gNB-ENDCX2RemovalReqIEs}}, - ... -} -*/ - -struct InitiatingNodeType_EndcX2Removal : asn::choice<2, 0, true> -{ - static constexpr const char* name() {return "InitiatingNodeType-EndcX2Removal";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~InitiatingNodeType_EndcX2Removal() {clear();} - struct init_eNB_t : ProtocolIE_Container - { - static constexpr const char* name() {return "init_eNB_t";} - using parent_t = ProtocolIE_Container; - - }; - struct init_en_gNB_t : ProtocolIE_Container - { - static constexpr const char* name() {return "init_en_gNB_t";} - using parent_t = ProtocolIE_Container; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - init_eNB_t& select_init_eNB() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - init_eNB_t const* get_init_eNB() const { if(get_index() == 1) { return &var.as();} return nullptr; } - init_en_gNB_t& select_init_en_gNB() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - init_en_gNB_t const* get_init_en_gNB() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(init_eNB_t)]; - char dummy2[sizeof(init_en_gNB_t)]; - - }; - asn::variant var; - index_type index {0}; -}; -/* -ENDCX2RemovalRequest-IEs X2AP-PROTOCOL-IES ::= { - { ID id-InitiatingNodeType-EndcX2Removal CRITICALITY reject TYPE InitiatingNodeType-EndcX2Removal PRESENCE mandatory}, - ... -} -*/ - -struct ENDCX2RemovalRequest_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_InitiatingNodeType_EndcX2Removal() { set(id_InitiatingNodeType_EndcX2Removal); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_InitiatingNodeType_EndcX2Removal)) { type = 1; return true; } - else { type = 2; 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_InitiatingNodeType_EndcX2Removal);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_InitiatingNodeType_EndcX2Removal() { set(reject); type=1;} - X2AP_PROTOCOL_IES::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 { type = 2; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - InitiatingNodeType_EndcX2Removal& select_id_InitiatingNodeType_EndcX2Removal() { return set(1); } - InitiatingNodeType_EndcX2Removal const* get_id_InitiatingNodeType_EndcX2Removal() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_InitiatingNodeType_EndcX2Removal()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(InitiatingNodeType_EndcX2Removal)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_InitiatingNodeType_EndcX2Removal() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -ENDCX2RemovalRequest ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ENDCX2RemovalRequest-IEs}}, - ... -} -*/ - -struct ENDCX2RemovalRequest : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "ENDCX2RemovalRequest";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -En-gNB-ENDCX2RemovalReqAckIEs X2AP-PROTOCOL-IES ::= { - { ID id-Globalen-gNB-ID CRITICALITY reject TYPE GlobalGNB-ID PRESENCE mandatory}, - ... -} -*/ - -struct En_gNB_ENDCX2RemovalReqAckIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_Globalen_gNB_ID() { set(id_Globalen_gNB_ID); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_Globalen_gNB_ID)) { type = 1; return true; } - else { type = 2; 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_Globalen_gNB_ID);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_Globalen_gNB_ID() { set(reject); type=1;} - X2AP_PROTOCOL_IES::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 { type = 2; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - GlobalGNB_ID& select_id_Globalen_gNB_ID() { return set(1); } - GlobalGNB_ID const* get_id_Globalen_gNB_ID() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_Globalen_gNB_ID()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(GlobalGNB_ID)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_Globalen_gNB_ID() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -RespondingNodeType-EndcX2Removal ::= CHOICE { - respond-eNB ProtocolIE-Container {{ENB-ENDCX2RemovalReqAckIEs}}, - respond-en-gNB ProtocolIE-Container {{En-gNB-ENDCX2RemovalReqAckIEs}}, - ... -} -*/ - -struct RespondingNodeType_EndcX2Removal : asn::choice<2, 0, true> -{ - static constexpr const char* name() {return "RespondingNodeType-EndcX2Removal";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~RespondingNodeType_EndcX2Removal() {clear();} - struct respond_eNB_t : ProtocolIE_Container - { - static constexpr const char* name() {return "respond_eNB_t";} - using parent_t = ProtocolIE_Container; - - }; - struct respond_en_gNB_t : ProtocolIE_Container - { - static constexpr const char* name() {return "respond_en_gNB_t";} - using parent_t = ProtocolIE_Container; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - respond_eNB_t& select_respond_eNB() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - respond_eNB_t const* get_respond_eNB() const { if(get_index() == 1) { return &var.as();} return nullptr; } - respond_en_gNB_t& select_respond_en_gNB() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - respond_en_gNB_t const* get_respond_en_gNB() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(respond_eNB_t)]; - char dummy2[sizeof(respond_en_gNB_t)]; - - }; - asn::variant var; - index_type index {0}; -}; -/* -ENDCX2RemovalResponse-IEs X2AP-PROTOCOL-IES ::= { - { ID id-RespondingNodeType-EndcX2Removal CRITICALITY reject TYPE RespondingNodeType-EndcX2Removal PRESENCE mandatory}, - ... -} -*/ - -struct ENDCX2RemovalResponse_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_RespondingNodeType_EndcX2Removal() { set(id_RespondingNodeType_EndcX2Removal); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_RespondingNodeType_EndcX2Removal)) { type = 1; return true; } - else { type = 2; 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_RespondingNodeType_EndcX2Removal);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_RespondingNodeType_EndcX2Removal() { set(reject); type=1;} - X2AP_PROTOCOL_IES::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 { type = 2; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - RespondingNodeType_EndcX2Removal& select_id_RespondingNodeType_EndcX2Removal() { return set(1); } - RespondingNodeType_EndcX2Removal const* get_id_RespondingNodeType_EndcX2Removal() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_RespondingNodeType_EndcX2Removal()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(RespondingNodeType_EndcX2Removal)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_RespondingNodeType_EndcX2Removal() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -ENDCX2RemovalResponse ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ENDCX2RemovalResponse-IEs}}, - ... -} -*/ - -struct ENDCX2RemovalResponse : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "ENDCX2RemovalResponse";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -ENDCX2SetupFailure-IEs X2AP-PROTOCOL-IES ::= { - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory} | - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional } | - { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }, - ... -} -*/ - -struct ENDCX2SetupFailure_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_Cause() { set(id_Cause); type=1;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=2;} - void select_id_TimeToWait() { set(id_TimeToWait); type=3;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_Cause)) { type = 1; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 2; return true; } - else if(equal(id_TimeToWait)) { type = 3; return true; } - else { type = 4; 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_Cause);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_TimeToWait);} return false; - case 4: type = 4; 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 == 4; } - void clear() {type = 0;} - void select_id_Cause() { set(ignore); type=1;} - void select_id_CriticalityDiagnostics() { set(ignore); type=2;} - void select_id_TimeToWait() { set(ignore); type=3;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else { type = 4; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - Cause& select_id_Cause() { return set(1); } - Cause const* get_id_Cause() const { return get(1); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(2); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(2); } - TimeToWait& select_id_TimeToWait() { return set(3); } - TimeToWait const* get_id_TimeToWait() const { return get(3); } - bool is_unknown() const { return type == 4; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_Cause()); return true; - case 2: v(select_id_CriticalityDiagnostics()); return true; - case 3: v(select_id_TimeToWait()); return true; - case 4: if(type != 4) {clear(); asn::base::set();} type = 4; 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; - } - 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(Cause)]; - char dummy2[sizeof(CriticalityDiagnostics)]; - char dummy3[sizeof(TimeToWait)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_Cause() { set(mandatory); type=1;} - void select_id_CriticalityDiagnostics() { set(optional); type=2;} - void select_id_TimeToWait() { set(optional); type=3;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else { type = 4; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; 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}; - - }; - -}; -/* -ENDCX2SetupFailure ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ENDCX2SetupFailure-IEs}}, - ... -} -*/ - -struct ENDCX2SetupFailure : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "ENDCX2SetupFailure";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -En-gNB-ENDCX2SetupReqIEs X2AP-PROTOCOL-IES ::= { - { ID id-Globalen-gNB-ID CRITICALITY reject TYPE GlobalGNB-ID PRESENCE mandatory}| - { ID id-ServedNRcellsENDCX2ManagementList CRITICALITY reject TYPE ServedNRcellsENDCX2ManagementList PRESENCE mandatory}, - ... -} -*/ - -struct En_gNB_ENDCX2SetupReqIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_Globalen_gNB_ID() { set(id_Globalen_gNB_ID); type=1;} - void select_id_ServedNRcellsENDCX2ManagementList() { set(id_ServedNRcellsENDCX2ManagementList); type=2;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_Globalen_gNB_ID)) { type = 1; return true; } - else if(equal(id_ServedNRcellsENDCX2ManagementList)) { type = 2; return true; } - else { type = 3; 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_Globalen_gNB_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_ServedNRcellsENDCX2ManagementList);} return false; - case 3: type = 3; 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 == 3; } - void clear() {type = 0;} - void select_id_Globalen_gNB_ID() { set(reject); type=1;} - void select_id_ServedNRcellsENDCX2ManagementList() { set(reject); type=2;} - X2AP_PROTOCOL_IES::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 { type = 3; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - GlobalGNB_ID& select_id_Globalen_gNB_ID() { return set(1); } - GlobalGNB_ID const* get_id_Globalen_gNB_ID() const { return get(1); } - ServedNRcellsENDCX2ManagementList& select_id_ServedNRcellsENDCX2ManagementList() { return set(2); } - ServedNRcellsENDCX2ManagementList const* get_id_ServedNRcellsENDCX2ManagementList() const { return get(2); } - bool is_unknown() const { return type == 3; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_Globalen_gNB_ID()); return true; - case 2: v(select_id_ServedNRcellsENDCX2ManagementList()); return true; - case 3: if(type != 3) {clear(); asn::base::set();} type = 3; 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; - } - 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(GlobalGNB_ID)]; - char dummy2[sizeof(ServedNRcellsENDCX2ManagementList)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_Globalen_gNB_ID() { set(mandatory); type=1;} - void select_id_ServedNRcellsENDCX2ManagementList() { set(mandatory); type=2;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else { type = 3; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; 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}; - - }; - -}; -/* -InitiatingNodeType-EndcX2Setup ::= CHOICE { - init-eNB ProtocolIE-Container {{ENB-ENDCX2SetupReqIEs}}, - init-en-gNB ProtocolIE-Container {{En-gNB-ENDCX2SetupReqIEs}}, - ... -} -*/ - -struct InitiatingNodeType_EndcX2Setup : asn::choice<2, 0, true> -{ - static constexpr const char* name() {return "InitiatingNodeType-EndcX2Setup";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~InitiatingNodeType_EndcX2Setup() {clear();} - struct init_eNB_t : ProtocolIE_Container - { - static constexpr const char* name() {return "init_eNB_t";} - using parent_t = ProtocolIE_Container; - - }; - struct init_en_gNB_t : ProtocolIE_Container - { - static constexpr const char* name() {return "init_en_gNB_t";} - using parent_t = ProtocolIE_Container; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - init_eNB_t& select_init_eNB() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - init_eNB_t const* get_init_eNB() const { if(get_index() == 1) { return &var.as();} return nullptr; } - init_en_gNB_t& select_init_en_gNB() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - init_en_gNB_t const* get_init_en_gNB() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(init_eNB_t)]; - char dummy2[sizeof(init_en_gNB_t)]; - - }; - asn::variant var; - index_type index {0}; -}; -/* -ENDCX2SetupRequest-IEs X2AP-PROTOCOL-IES ::= { - { ID id-InitiatingNodeType-EndcX2Setup CRITICALITY reject TYPE InitiatingNodeType-EndcX2Setup PRESENCE mandatory}, - ... -} -*/ - -struct ENDCX2SetupRequest_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_InitiatingNodeType_EndcX2Setup() { set(id_InitiatingNodeType_EndcX2Setup); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_InitiatingNodeType_EndcX2Setup)) { type = 1; return true; } - else { type = 2; 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_InitiatingNodeType_EndcX2Setup);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_InitiatingNodeType_EndcX2Setup() { set(reject); type=1;} - X2AP_PROTOCOL_IES::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 { type = 2; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - InitiatingNodeType_EndcX2Setup& select_id_InitiatingNodeType_EndcX2Setup() { return set(1); } - InitiatingNodeType_EndcX2Setup const* get_id_InitiatingNodeType_EndcX2Setup() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_InitiatingNodeType_EndcX2Setup()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(InitiatingNodeType_EndcX2Setup)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_InitiatingNodeType_EndcX2Setup() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -ENDCX2SetupRequest ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ENDCX2SetupRequest-IEs}}, - ... -} -*/ - -struct ENDCX2SetupRequest : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "ENDCX2SetupRequest";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -En-gNB-ENDCX2SetupReqAckIEs X2AP-PROTOCOL-IES ::= { - { ID id-Globalen-gNB-ID CRITICALITY reject TYPE GlobalGNB-ID PRESENCE mandatory}| - { ID id-ServedNRcellsENDCX2ManagementList CRITICALITY reject TYPE ServedNRcellsENDCX2ManagementList PRESENCE mandatory}, - ... -} -*/ - -struct En_gNB_ENDCX2SetupReqAckIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_Globalen_gNB_ID() { set(id_Globalen_gNB_ID); type=1;} - void select_id_ServedNRcellsENDCX2ManagementList() { set(id_ServedNRcellsENDCX2ManagementList); type=2;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_Globalen_gNB_ID)) { type = 1; return true; } - else if(equal(id_ServedNRcellsENDCX2ManagementList)) { type = 2; return true; } - else { type = 3; 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_Globalen_gNB_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_ServedNRcellsENDCX2ManagementList);} return false; - case 3: type = 3; 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 == 3; } - void clear() {type = 0;} - void select_id_Globalen_gNB_ID() { set(reject); type=1;} - void select_id_ServedNRcellsENDCX2ManagementList() { set(reject); type=2;} - X2AP_PROTOCOL_IES::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 { type = 3; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - GlobalGNB_ID& select_id_Globalen_gNB_ID() { return set(1); } - GlobalGNB_ID const* get_id_Globalen_gNB_ID() const { return get(1); } - ServedNRcellsENDCX2ManagementList& select_id_ServedNRcellsENDCX2ManagementList() { return set(2); } - ServedNRcellsENDCX2ManagementList const* get_id_ServedNRcellsENDCX2ManagementList() const { return get(2); } - bool is_unknown() const { return type == 3; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_Globalen_gNB_ID()); return true; - case 2: v(select_id_ServedNRcellsENDCX2ManagementList()); return true; - case 3: if(type != 3) {clear(); asn::base::set();} type = 3; 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; - } - 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(GlobalGNB_ID)]; - char dummy2[sizeof(ServedNRcellsENDCX2ManagementList)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_Globalen_gNB_ID() { set(mandatory); type=1;} - void select_id_ServedNRcellsENDCX2ManagementList() { set(mandatory); type=2;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else { type = 3; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; 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}; - - }; - -}; -/* -RespondingNodeType-EndcX2Setup ::= CHOICE { - respond-eNB ProtocolIE-Container {{ENB-ENDCX2SetupReqAckIEs}}, - respond-en-gNB ProtocolIE-Container {{En-gNB-ENDCX2SetupReqAckIEs}}, - ... -} -*/ - -struct RespondingNodeType_EndcX2Setup : asn::choice<2, 0, true> -{ - static constexpr const char* name() {return "RespondingNodeType-EndcX2Setup";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~RespondingNodeType_EndcX2Setup() {clear();} - struct respond_eNB_t : ProtocolIE_Container - { - static constexpr const char* name() {return "respond_eNB_t";} - using parent_t = ProtocolIE_Container; - - }; - struct respond_en_gNB_t : ProtocolIE_Container - { - static constexpr const char* name() {return "respond_en_gNB_t";} - using parent_t = ProtocolIE_Container; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - respond_eNB_t& select_respond_eNB() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - respond_eNB_t const* get_respond_eNB() const { if(get_index() == 1) { return &var.as();} return nullptr; } - respond_en_gNB_t& select_respond_en_gNB() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - respond_en_gNB_t const* get_respond_en_gNB() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(respond_eNB_t)]; - char dummy2[sizeof(respond_en_gNB_t)]; - - }; - asn::variant var; - index_type index {0}; -}; -/* -ENDCX2SetupResponse-IEs X2AP-PROTOCOL-IES ::= { - { ID id-RespondingNodeType-EndcX2Setup CRITICALITY reject TYPE RespondingNodeType-EndcX2Setup PRESENCE mandatory}, - ... -} -*/ - -struct ENDCX2SetupResponse_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_RespondingNodeType_EndcX2Setup() { set(id_RespondingNodeType_EndcX2Setup); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_RespondingNodeType_EndcX2Setup)) { type = 1; return true; } - else { type = 2; 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_RespondingNodeType_EndcX2Setup);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_RespondingNodeType_EndcX2Setup() { set(reject); type=1;} - X2AP_PROTOCOL_IES::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 { type = 2; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - RespondingNodeType_EndcX2Setup& select_id_RespondingNodeType_EndcX2Setup() { return set(1); } - RespondingNodeType_EndcX2Setup const* get_id_RespondingNodeType_EndcX2Setup() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_RespondingNodeType_EndcX2Setup()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(RespondingNodeType_EndcX2Setup)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_RespondingNodeType_EndcX2Setup() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -ENDCX2SetupResponse ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ENDCX2SetupResponse-IEs}}, - ... -} -*/ - -struct ENDCX2SetupResponse : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "ENDCX2SetupResponse";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -ListofEUTRACellsinNRCoordinationReq ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ECGI -*/ - -struct ListofEUTRACellsinNRCoordinationReq_elm : ECGI -{ - static constexpr const char* name() {return "ListofEUTRACellsinNRCoordinationReq_elm";} - using parent_t = ECGI; - -}; -struct ListofEUTRACellsinNRCoordinationReq : asn::sequenceof -{ - static constexpr const char* name() {return "ListofEUTRACellsinNRCoordinationReq";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -ListofNRCellsinNRCoordinationReq ::= SEQUENCE (SIZE (0..maxnoNRcellsSpectrumSharingWithE-UTRA)) OF NRCGI -*/ - -struct ListofNRCellsinNRCoordinationReq_elm : NRCGI -{ - static constexpr const char* name() {return "ListofNRCellsinNRCoordinationReq_elm";} - using parent_t = NRCGI; - -}; -struct ListofNRCellsinNRCoordinationReq : asn::sequenceof -{ - static constexpr const char* name() {return "ListofNRCellsinNRCoordinationReq";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -En-gNB-EUTRA-NRCellResourceCoordinationReqIEs X2AP-PROTOCOL-IES ::= { - { ID id-DataTrafficResourceIndication CRITICALITY reject TYPE DataTrafficResourceIndication PRESENCE mandatory}| - { ID id-ListofEUTRACellsinNRCoordinationReq CRITICALITY reject TYPE ListofEUTRACellsinNRCoordinationReq PRESENCE mandatory }| - { ID id-SpectrumSharingGroupID CRITICALITY reject TYPE SpectrumSharingGroupID PRESENCE mandatory}| - { ID id-ListofNRCellsinNRCoordinationReq CRITICALITY reject TYPE ListofNRCellsinNRCoordinationReq PRESENCE mandatory}, - ... -} -*/ - -struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 5; } - void clear() {type = 0;} - void select_id_DataTrafficResourceIndication() { set(id_DataTrafficResourceIndication); type=1;} - void select_id_ListofEUTRACellsinNRCoordinationReq() { set(id_ListofEUTRACellsinNRCoordinationReq); type=2;} - void select_id_SpectrumSharingGroupID() { set(id_SpectrumSharingGroupID); type=3;} - void select_id_ListofNRCellsinNRCoordinationReq() { set(id_ListofNRCellsinNRCoordinationReq); type=4;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_DataTrafficResourceIndication)) { type = 1; return true; } - else if(equal(id_ListofEUTRACellsinNRCoordinationReq)) { type = 2; return true; } - else if(equal(id_SpectrumSharingGroupID)) { type = 3; return true; } - else if(equal(id_ListofNRCellsinNRCoordinationReq)) { type = 4; return true; } - else { type = 5; 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_DataTrafficResourceIndication);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_ListofEUTRACellsinNRCoordinationReq);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_SpectrumSharingGroupID);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_ListofNRCellsinNRCoordinationReq);} return false; - case 5: type = 5; 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 == 5; } - void clear() {type = 0;} - void select_id_DataTrafficResourceIndication() { set(reject); type=1;} - void select_id_ListofEUTRACellsinNRCoordinationReq() { set(reject); type=2;} - void select_id_SpectrumSharingGroupID() { set(reject); type=3;} - void select_id_ListofNRCellsinNRCoordinationReq() { set(reject); type=4;} - X2AP_PROTOCOL_IES::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 { type = 5; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - DataTrafficResourceIndication& select_id_DataTrafficResourceIndication() { return set(1); } - DataTrafficResourceIndication const* get_id_DataTrafficResourceIndication() const { return get(1); } - ListofEUTRACellsinNRCoordinationReq& select_id_ListofEUTRACellsinNRCoordinationReq() { return set(2); } - ListofEUTRACellsinNRCoordinationReq const* get_id_ListofEUTRACellsinNRCoordinationReq() const { return get(2); } - SpectrumSharingGroupID& select_id_SpectrumSharingGroupID() { return set(3); } - SpectrumSharingGroupID const* get_id_SpectrumSharingGroupID() const { return get(3); } - ListofNRCellsinNRCoordinationReq& select_id_ListofNRCellsinNRCoordinationReq() { return set(4); } - ListofNRCellsinNRCoordinationReq const* get_id_ListofNRCellsinNRCoordinationReq() const { return get(4); } - bool is_unknown() const { return type == 5; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: var.destroy(); break; - case 4: 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_DataTrafficResourceIndication()); return true; - case 2: v(select_id_ListofEUTRACellsinNRCoordinationReq()); return true; - case 3: v(select_id_SpectrumSharingGroupID()); return true; - case 4: v(select_id_ListofNRCellsinNRCoordinationReq()); return true; - case 5: if(type != 5) {clear(); asn::base::set();} type = 5; 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; - } - 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(DataTrafficResourceIndication)]; - char dummy2[sizeof(ListofEUTRACellsinNRCoordinationReq)]; - char dummy3[sizeof(ListofNRCellsinNRCoordinationReq)]; - char dummy4[sizeof(SpectrumSharingGroupID)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 5; } - void clear() {type = 0;} - void select_id_DataTrafficResourceIndication() { set(mandatory); type=1;} - void select_id_ListofEUTRACellsinNRCoordinationReq() { set(mandatory); type=2;} - void select_id_SpectrumSharingGroupID() { set(mandatory); type=3;} - void select_id_ListofNRCellsinNRCoordinationReq() { set(mandatory); type=4;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(mandatory)) { type = 4; return true; } - else { type = 5; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(mandatory);} return false; - case 5: type = 5; 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}; - - }; - -}; -/* -InitiatingNodeType-EutranrCellResourceCoordination ::= CHOICE { - initiate-eNB ProtocolIE-Container {{ENB-EUTRA-NRCellResourceCoordinationReqIEs}}, - initiate-en-gNB ProtocolIE-Container {{En-gNB-EUTRA-NRCellResourceCoordinationReqIEs}}, - ... -} -*/ - -struct InitiatingNodeType_EutranrCellResourceCoordination : asn::choice<2, 0, true> -{ - static constexpr const char* name() {return "InitiatingNodeType-EutranrCellResourceCoordination";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~InitiatingNodeType_EutranrCellResourceCoordination() {clear();} - struct initiate_eNB_t : ProtocolIE_Container - { - static constexpr const char* name() {return "initiate_eNB_t";} - using parent_t = ProtocolIE_Container; - - }; - struct initiate_en_gNB_t : ProtocolIE_Container - { - static constexpr const char* name() {return "initiate_en_gNB_t";} - using parent_t = ProtocolIE_Container; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - initiate_eNB_t& select_initiate_eNB() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - initiate_eNB_t const* get_initiate_eNB() const { if(get_index() == 1) { return &var.as();} return nullptr; } - initiate_en_gNB_t& select_initiate_en_gNB() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - initiate_en_gNB_t const* get_initiate_en_gNB() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(initiate_eNB_t)]; - char dummy2[sizeof(initiate_en_gNB_t)]; - - }; - asn::variant var; - index_type index {0}; -}; -/* -EUTRANRCellResourceCoordinationRequest-IEs X2AP-PROTOCOL-IES ::= { - { ID id-InitiatingNodeType-EutranrCellResourceCoordination CRITICALITY reject TYPE InitiatingNodeType-EutranrCellResourceCoordination PRESENCE mandatory}, - ... -} -*/ - -struct EUTRANRCellResourceCoordinationRequest_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_InitiatingNodeType_EutranrCellResourceCoordination() { set(id_InitiatingNodeType_EutranrCellResourceCoordination); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_InitiatingNodeType_EutranrCellResourceCoordination)) { type = 1; return true; } - else { type = 2; 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_InitiatingNodeType_EutranrCellResourceCoordination);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_InitiatingNodeType_EutranrCellResourceCoordination() { set(reject); type=1;} - X2AP_PROTOCOL_IES::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 { type = 2; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - InitiatingNodeType_EutranrCellResourceCoordination& select_id_InitiatingNodeType_EutranrCellResourceCoordination() { return set(1); } - InitiatingNodeType_EutranrCellResourceCoordination const* get_id_InitiatingNodeType_EutranrCellResourceCoordination() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_InitiatingNodeType_EutranrCellResourceCoordination()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(InitiatingNodeType_EutranrCellResourceCoordination)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_InitiatingNodeType_EutranrCellResourceCoordination() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -EUTRANRCellResourceCoordinationRequest ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{EUTRANRCellResourceCoordinationRequest-IEs}}, - ... -} -*/ - -struct EUTRANRCellResourceCoordinationRequest : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "EUTRANRCellResourceCoordinationRequest";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -ListofNRCellsinNRCoordinationResp ::= SEQUENCE (SIZE (0..maxnoNRcellsSpectrumSharingWithE-UTRA)) OF NRCGI -*/ - -struct ListofNRCellsinNRCoordinationResp_elm : NRCGI -{ - static constexpr const char* name() {return "ListofNRCellsinNRCoordinationResp_elm";} - using parent_t = NRCGI; - -}; -struct ListofNRCellsinNRCoordinationResp : asn::sequenceof -{ - static constexpr const char* name() {return "ListofNRCellsinNRCoordinationResp";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -En-gNB-EUTRA-NRCellResourceCoordinationReqAckIEs X2AP-PROTOCOL-IES ::= { - { ID id-DataTrafficResourceIndication CRITICALITY reject TYPE DataTrafficResourceIndication PRESENCE mandatory}| - { ID id-SpectrumSharingGroupID CRITICALITY reject TYPE SpectrumSharingGroupID PRESENCE mandatory}| - { ID id-ListofNRCellsinNRCoordinationResp CRITICALITY reject TYPE ListofNRCellsinNRCoordinationResp PRESENCE mandatory}, - - - ... -} -*/ - -struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_DataTrafficResourceIndication() { set(id_DataTrafficResourceIndication); type=1;} - void select_id_SpectrumSharingGroupID() { set(id_SpectrumSharingGroupID); type=2;} - void select_id_ListofNRCellsinNRCoordinationResp() { set(id_ListofNRCellsinNRCoordinationResp); type=3;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_DataTrafficResourceIndication)) { type = 1; return true; } - else if(equal(id_SpectrumSharingGroupID)) { type = 2; return true; } - else if(equal(id_ListofNRCellsinNRCoordinationResp)) { type = 3; return true; } - else { type = 4; 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_DataTrafficResourceIndication);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SpectrumSharingGroupID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_ListofNRCellsinNRCoordinationResp);} return false; - case 4: type = 4; 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 == 4; } - void clear() {type = 0;} - void select_id_DataTrafficResourceIndication() { set(reject); type=1;} - void select_id_SpectrumSharingGroupID() { set(reject); type=2;} - void select_id_ListofNRCellsinNRCoordinationResp() { set(reject); type=3;} - X2AP_PROTOCOL_IES::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 { type = 4; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - DataTrafficResourceIndication& select_id_DataTrafficResourceIndication() { return set(1); } - DataTrafficResourceIndication const* get_id_DataTrafficResourceIndication() const { return get(1); } - SpectrumSharingGroupID& select_id_SpectrumSharingGroupID() { return set(2); } - SpectrumSharingGroupID const* get_id_SpectrumSharingGroupID() const { return get(2); } - ListofNRCellsinNRCoordinationResp& select_id_ListofNRCellsinNRCoordinationResp() { return set(3); } - ListofNRCellsinNRCoordinationResp const* get_id_ListofNRCellsinNRCoordinationResp() const { return get(3); } - bool is_unknown() const { return type == 4; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_DataTrafficResourceIndication()); return true; - case 2: v(select_id_SpectrumSharingGroupID()); return true; - case 3: v(select_id_ListofNRCellsinNRCoordinationResp()); return true; - case 4: if(type != 4) {clear(); asn::base::set();} type = 4; 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; - } - 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(DataTrafficResourceIndication)]; - char dummy2[sizeof(ListofNRCellsinNRCoordinationResp)]; - char dummy3[sizeof(SpectrumSharingGroupID)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_DataTrafficResourceIndication() { set(mandatory); type=1;} - void select_id_SpectrumSharingGroupID() { set(mandatory); type=2;} - void select_id_ListofNRCellsinNRCoordinationResp() { set(mandatory); type=3;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else { type = 4; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; 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}; - - }; - -}; -/* -RespondingNodeType-EutranrCellResourceCoordination ::= CHOICE { - respond-eNB ProtocolIE-Container {{ENB-EUTRA-NRCellResourceCoordinationReqAckIEs}}, - respond-en-gNB ProtocolIE-Container {{En-gNB-EUTRA-NRCellResourceCoordinationReqAckIEs}}, - ... -} -*/ - -struct RespondingNodeType_EutranrCellResourceCoordination : asn::choice<2, 0, true> -{ - static constexpr const char* name() {return "RespondingNodeType-EutranrCellResourceCoordination";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~RespondingNodeType_EutranrCellResourceCoordination() {clear();} - struct respond_eNB_t : ProtocolIE_Container - { - static constexpr const char* name() {return "respond_eNB_t";} - using parent_t = ProtocolIE_Container; - - }; - struct respond_en_gNB_t : ProtocolIE_Container - { - static constexpr const char* name() {return "respond_en_gNB_t";} - using parent_t = ProtocolIE_Container; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - respond_eNB_t& select_respond_eNB() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - respond_eNB_t const* get_respond_eNB() const { if(get_index() == 1) { return &var.as();} return nullptr; } - respond_en_gNB_t& select_respond_en_gNB() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - respond_en_gNB_t const* get_respond_en_gNB() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(respond_eNB_t)]; - char dummy2[sizeof(respond_en_gNB_t)]; - - }; - asn::variant var; - index_type index {0}; -}; -/* -EUTRANRCellResourceCoordinationResponse-IEs X2AP-PROTOCOL-IES ::= { - { ID id-RespondingNodeType-EutranrCellResourceCoordination CRITICALITY reject TYPE RespondingNodeType-EutranrCellResourceCoordination PRESENCE mandatory}, - ... -} -*/ - -struct EUTRANRCellResourceCoordinationResponse_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_RespondingNodeType_EutranrCellResourceCoordination() { set(id_RespondingNodeType_EutranrCellResourceCoordination); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_RespondingNodeType_EutranrCellResourceCoordination)) { type = 1; return true; } - else { type = 2; 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_RespondingNodeType_EutranrCellResourceCoordination);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_RespondingNodeType_EutranrCellResourceCoordination() { set(reject); type=1;} - X2AP_PROTOCOL_IES::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 { type = 2; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - RespondingNodeType_EutranrCellResourceCoordination& select_id_RespondingNodeType_EutranrCellResourceCoordination() { return set(1); } - RespondingNodeType_EutranrCellResourceCoordination const* get_id_RespondingNodeType_EutranrCellResourceCoordination() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_RespondingNodeType_EutranrCellResourceCoordination()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(RespondingNodeType_EutranrCellResourceCoordination)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_RespondingNodeType_EutranrCellResourceCoordination() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -EUTRANRCellResourceCoordinationResponse ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{EUTRANRCellResourceCoordinationResponse-IEs}}, - ... -} -*/ - -struct EUTRANRCellResourceCoordinationResponse : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "EUTRANRCellResourceCoordinationResponse";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -ErrorIndication-IEs X2AP-PROTOCOL-IES ::= { - { ID id-Old-eNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE optional}| - { ID id-New-eNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE optional}| - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| - { ID id-Old-eNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-New-eNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-Old-SgNB-UE-X2AP-ID CRITICALITY ignore TYPE SgNB-UE-X2AP-ID PRESENCE optional}, - ... -} -*/ - -struct ErrorIndication_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 8; } - void clear() {type = 0;} - void select_id_Old_eNB_UE_X2AP_ID() { set(id_Old_eNB_UE_X2AP_ID); type=1;} - void select_id_New_eNB_UE_X2AP_ID() { set(id_New_eNB_UE_X2AP_ID); type=2;} - void select_id_Cause() { set(id_Cause); type=3;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;} - void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(id_Old_eNB_UE_X2AP_ID_Extension); type=5;} - void select_id_New_eNB_UE_X2AP_ID_Extension() { set(id_New_eNB_UE_X2AP_ID_Extension); type=6;} - void select_id_Old_SgNB_UE_X2AP_ID() { set(id_Old_SgNB_UE_X2AP_ID); type=7;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_Old_eNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_New_eNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_Cause)) { type = 3; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; } - else if(equal(id_Old_eNB_UE_X2AP_ID_Extension)) { type = 5; return true; } - else if(equal(id_New_eNB_UE_X2AP_ID_Extension)) { type = 6; return true; } - else if(equal(id_Old_SgNB_UE_X2AP_ID)) { type = 7; return true; } - else { type = 8; 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_Old_eNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_New_eNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID_Extension);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_New_eNB_UE_X2AP_ID_Extension);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(id_Old_SgNB_UE_X2AP_ID);} return false; - case 8: type = 8; 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 == 8; } - void clear() {type = 0;} - void select_id_Old_eNB_UE_X2AP_ID() { set(ignore); type=1;} - void select_id_New_eNB_UE_X2AP_ID() { set(ignore); type=2;} - void select_id_Cause() { set(ignore); type=3;} - void select_id_CriticalityDiagnostics() { set(ignore); type=4;} - void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(ignore); type=5;} - void select_id_New_eNB_UE_X2AP_ID_Extension() { set(ignore); type=6;} - void select_id_Old_SgNB_UE_X2AP_ID() { set(ignore); type=7;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else if(equal(ignore)) { type = 6; return true; } - else if(equal(ignore)) { type = 7; return true; } - else { type = 8; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(ignore);} return false; - case 8: type = 8; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_Old_eNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_Old_eNB_UE_X2AP_ID() const { return get(1); } - UE_X2AP_ID& select_id_New_eNB_UE_X2AP_ID() { return set(2); } - UE_X2AP_ID const* get_id_New_eNB_UE_X2AP_ID() const { return get(2); } - Cause& select_id_Cause() { return set(3); } - Cause const* get_id_Cause() const { return get(3); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(4); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(4); } - UE_X2AP_ID_Extension& select_id_Old_eNB_UE_X2AP_ID_Extension() { return set(5); } - UE_X2AP_ID_Extension const* get_id_Old_eNB_UE_X2AP_ID_Extension() const { return get(5); } - UE_X2AP_ID_Extension& select_id_New_eNB_UE_X2AP_ID_Extension() { return set(6); } - UE_X2AP_ID_Extension const* get_id_New_eNB_UE_X2AP_ID_Extension() const { return get(6); } - SgNB_UE_X2AP_ID& select_id_Old_SgNB_UE_X2AP_ID() { return set(7); } - SgNB_UE_X2AP_ID const* get_id_Old_SgNB_UE_X2AP_ID() const { return get(7); } - bool is_unknown() const { return type == 8; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_Old_eNB_UE_X2AP_ID()); return true; - case 2: v(select_id_New_eNB_UE_X2AP_ID()); return true; - case 3: v(select_id_Cause()); return true; - case 4: v(select_id_CriticalityDiagnostics()); return true; - case 5: v(select_id_Old_eNB_UE_X2AP_ID_Extension()); return true; - case 6: v(select_id_New_eNB_UE_X2AP_ID_Extension()); return true; - case 7: v(select_id_Old_SgNB_UE_X2AP_ID()); return true; - case 8: if(type != 8) {clear(); asn::base::set();} type = 8; 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; - } - 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(Cause)]; - char dummy2[sizeof(CriticalityDiagnostics)]; - char dummy3[sizeof(SgNB_UE_X2AP_ID)]; - char dummy4[sizeof(UE_X2AP_ID)]; - char dummy5[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 8; } - void clear() {type = 0;} - void select_id_Old_eNB_UE_X2AP_ID() { set(optional); type=1;} - void select_id_New_eNB_UE_X2AP_ID() { set(optional); type=2;} - void select_id_Cause() { set(optional); type=3;} - void select_id_CriticalityDiagnostics() { set(optional); type=4;} - void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(optional); type=5;} - void select_id_New_eNB_UE_X2AP_ID_Extension() { set(optional); type=6;} - void select_id_Old_SgNB_UE_X2AP_ID() { set(optional); type=7;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else if(equal(optional)) { type = 7; return true; } - else { type = 8; 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(optional);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false; - case 8: type = 8; 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}; - - }; - -}; -/* -ErrorIndication ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ErrorIndication-IEs}}, - ... -} -*/ - -struct ErrorIndication : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "ErrorIndication";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -GNBStatusIndicationIEs X2AP-PROTOCOL-IES ::= { - { ID id-GNBOverloadInformation CRITICALITY ignore TYPE GNBOverloadInformation PRESENCE mandatory}, - ... -} -*/ - -struct GNBStatusIndicationIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_GNBOverloadInformation() { set(id_GNBOverloadInformation); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_GNBOverloadInformation)) { type = 1; return true; } - else { type = 2; 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_GNBOverloadInformation);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_GNBOverloadInformation() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - GNBOverloadInformation& select_id_GNBOverloadInformation() { return set(1); } - GNBOverloadInformation const* get_id_GNBOverloadInformation() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_GNBOverloadInformation()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(GNBOverloadInformation)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_GNBOverloadInformation() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -GNBStatusIndication ::= SEQUENCE { - protocolIEs ProtocolIE-Container { { GNBStatusIndicationIEs} }, - ... -} -*/ - -struct GNBStatusIndication : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "GNBStatusIndication";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -HandoverCancel-IEs X2AP-PROTOCOL-IES ::= { - { ID id-Old-eNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-New-eNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE optional}| - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| - { ID id-Old-eNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-New-eNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional}, - ... -} -*/ - -struct HandoverCancel_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_Old_eNB_UE_X2AP_ID() { set(id_Old_eNB_UE_X2AP_ID); type=1;} - void select_id_New_eNB_UE_X2AP_ID() { set(id_New_eNB_UE_X2AP_ID); type=2;} - void select_id_Cause() { set(id_Cause); type=3;} - void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(id_Old_eNB_UE_X2AP_ID_Extension); type=4;} - void select_id_New_eNB_UE_X2AP_ID_Extension() { set(id_New_eNB_UE_X2AP_ID_Extension); type=5;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_Old_eNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_New_eNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_Cause)) { type = 3; return true; } - else if(equal(id_Old_eNB_UE_X2AP_ID_Extension)) { type = 4; return true; } - else if(equal(id_New_eNB_UE_X2AP_ID_Extension)) { type = 5; return true; } - else { type = 6; 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_Old_eNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_New_eNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID_Extension);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_New_eNB_UE_X2AP_ID_Extension);} return false; - case 6: type = 6; 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 == 6; } - void clear() {type = 0;} - void select_id_Old_eNB_UE_X2AP_ID() { set(reject); type=1;} - void select_id_New_eNB_UE_X2AP_ID() { set(ignore); type=2;} - void select_id_Cause() { set(ignore); type=3;} - void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(reject); type=4;} - void select_id_New_eNB_UE_X2AP_ID_Extension() { set(ignore); type=5;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else if(equal(reject)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else { type = 6; 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(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} 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(ignore);} return false; - case 6: type = 6; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_Old_eNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_Old_eNB_UE_X2AP_ID() const { return get(1); } - UE_X2AP_ID& select_id_New_eNB_UE_X2AP_ID() { return set(2); } - UE_X2AP_ID const* get_id_New_eNB_UE_X2AP_ID() const { return get(2); } - Cause& select_id_Cause() { return set(3); } - Cause const* get_id_Cause() const { return get(3); } - UE_X2AP_ID_Extension& select_id_Old_eNB_UE_X2AP_ID_Extension() { return set(4); } - UE_X2AP_ID_Extension const* get_id_Old_eNB_UE_X2AP_ID_Extension() const { return get(4); } - UE_X2AP_ID_Extension& select_id_New_eNB_UE_X2AP_ID_Extension() { return set(5); } - UE_X2AP_ID_Extension const* get_id_New_eNB_UE_X2AP_ID_Extension() const { return get(5); } - bool is_unknown() const { return type == 6; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_Old_eNB_UE_X2AP_ID()); return true; - case 2: v(select_id_New_eNB_UE_X2AP_ID()); return true; - case 3: v(select_id_Cause()); return true; - case 4: v(select_id_Old_eNB_UE_X2AP_ID_Extension()); return true; - case 5: v(select_id_New_eNB_UE_X2AP_ID_Extension()); return true; - case 6: if(type != 6) {clear(); asn::base::set();} type = 6; 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; - } - 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(Cause)]; - char dummy2[sizeof(UE_X2AP_ID)]; - char dummy3[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_Old_eNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_New_eNB_UE_X2AP_ID() { set(optional); type=2;} - void select_id_Cause() { set(mandatory); type=3;} - void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(optional); type=4;} - void select_id_New_eNB_UE_X2AP_ID_Extension() { set(optional); type=5;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else { type = 6; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; 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}; - - }; - -}; -/* -HandoverCancel ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{HandoverCancel-IEs}}, - ... -} -*/ - -struct HandoverCancel : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "HandoverCancel";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -HandoverPreparationFailure-IEs X2AP-PROTOCOL-IES ::= { - { ID id-Old-eNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| - { ID id-Old-eNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional}, - - ... -} -*/ - -struct HandoverPreparationFailure_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 5; } - void clear() {type = 0;} - void select_id_Old_eNB_UE_X2AP_ID() { set(id_Old_eNB_UE_X2AP_ID); type=1;} - void select_id_Cause() { set(id_Cause); type=2;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=3;} - void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(id_Old_eNB_UE_X2AP_ID_Extension); type=4;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_Old_eNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_Cause)) { type = 2; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 3; return true; } - else if(equal(id_Old_eNB_UE_X2AP_ID_Extension)) { type = 4; return true; } - else { type = 5; 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_Old_eNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_Cause);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID_Extension);} return false; - case 5: type = 5; 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 == 5; } - void clear() {type = 0;} - void select_id_Old_eNB_UE_X2AP_ID() { set(ignore); type=1;} - void select_id_Cause() { set(ignore); type=2;} - void select_id_CriticalityDiagnostics() { set(ignore); type=3;} - void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(ignore); type=4;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else { type = 5; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_Old_eNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_Old_eNB_UE_X2AP_ID() const { return get(1); } - Cause& select_id_Cause() { return set(2); } - Cause const* get_id_Cause() const { return get(2); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(3); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(3); } - UE_X2AP_ID_Extension& select_id_Old_eNB_UE_X2AP_ID_Extension() { return set(4); } - UE_X2AP_ID_Extension const* get_id_Old_eNB_UE_X2AP_ID_Extension() const { return get(4); } - bool is_unknown() const { return type == 5; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: var.destroy(); break; - case 4: 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_Old_eNB_UE_X2AP_ID()); return true; - case 2: v(select_id_Cause()); return true; - case 3: v(select_id_CriticalityDiagnostics()); return true; - case 4: v(select_id_Old_eNB_UE_X2AP_ID_Extension()); return true; - case 5: if(type != 5) {clear(); asn::base::set();} type = 5; 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; - } - 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(Cause)]; - char dummy2[sizeof(CriticalityDiagnostics)]; - char dummy3[sizeof(UE_X2AP_ID)]; - char dummy4[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 5; } - void clear() {type = 0;} - void select_id_Old_eNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_Cause() { set(mandatory); type=2;} - void select_id_CriticalityDiagnostics() { set(optional); type=3;} - void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(optional); type=4;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else { type = 5; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; 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}; - - }; - -}; -/* -HandoverPreparationFailure ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{HandoverPreparationFailure-IEs}}, - ... -} -*/ - -struct HandoverPreparationFailure : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "HandoverPreparationFailure";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -MobilityInformation ::= BIT STRING (SIZE(32)) -*/ - -struct MobilityInformation : asn::bstring<> -{ - using constraint_t = asn::constraints>; - static constexpr const char* name() {return "MobilityInformation";} - using parent_t = asn::bstring<>; - -}; - -/* -HandoverReport-IEs X2AP-PROTOCOL-IES ::= { - { ID id-HandoverReportType CRITICALITY ignore TYPE HandoverReportType PRESENCE mandatory}| - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| - { ID id-SourceCellECGI CRITICALITY ignore TYPE ECGI PRESENCE mandatory}| - { ID id-FailureCellECGI CRITICALITY ignore TYPE ECGI PRESENCE mandatory}| - { ID id-Re-establishmentCellECGI CRITICALITY ignore TYPE ECGI PRESENCE conditional} -- The IE shall be present if the Handover Report Type IE is set to “HO to Wrong Cell” -- | - { ID id-TargetCellInUTRAN CRITICALITY ignore TYPE TargetCellInUTRAN PRESENCE conditional} -- The IE shall be present if the Handover Report Type IE is set to "InterRAT ping-pong" --| - { ID id-SourceCellCRNTI CRITICALITY ignore TYPE CRNTI PRESENCE optional}| - { ID id-MobilityInformation CRITICALITY ignore TYPE MobilityInformation PRESENCE optional}| - { ID id-UE-RLF-Report-Container CRITICALITY ignore TYPE UE-RLF-Report-Container PRESENCE optional}| - { ID id-UE-RLF-Report-Container-for-extended-bands CRITICALITY ignore TYPE UE-RLF-Report-Container-for-extended-bands PRESENCE optional}, - ... -} -*/ - -struct HandoverReport_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 11; } - void clear() {type = 0;} - void select_id_HandoverReportType() { set(id_HandoverReportType); type=1;} - void select_id_Cause() { set(id_Cause); type=2;} - void select_id_SourceCellECGI() { set(id_SourceCellECGI); type=3;} - void select_id_FailureCellECGI() { set(id_FailureCellECGI); type=4;} - void select_id_Re_establishmentCellECGI() { set(id_Re_establishmentCellECGI); type=5;} - void select_id_TargetCellInUTRAN() { set(id_TargetCellInUTRAN); type=6;} - void select_id_SourceCellCRNTI() { set(id_SourceCellCRNTI); type=7;} - void select_id_MobilityInformation() { set(id_MobilityInformation); type=8;} - void select_id_UE_RLF_Report_Container() { set(id_UE_RLF_Report_Container); type=9;} - void select_id_UE_RLF_Report_Container_for_extended_bands() { set(id_UE_RLF_Report_Container_for_extended_bands); type=10;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_HandoverReportType)) { type = 1; return true; } - else if(equal(id_Cause)) { type = 2; return true; } - else if(equal(id_SourceCellECGI)) { type = 3; return true; } - else if(equal(id_FailureCellECGI)) { type = 4; return true; } - else if(equal(id_Re_establishmentCellECGI)) { type = 5; return true; } - else if(equal(id_TargetCellInUTRAN)) { type = 6; return true; } - else if(equal(id_SourceCellCRNTI)) { type = 7; return true; } - else if(equal(id_MobilityInformation)) { type = 8; return true; } - else if(equal(id_UE_RLF_Report_Container)) { type = 9; return true; } - else if(equal(id_UE_RLF_Report_Container_for_extended_bands)) { type = 10; return true; } - else { type = 11; 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_HandoverReportType);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_Cause);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_SourceCellECGI);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_FailureCellECGI);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_Re_establishmentCellECGI);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_TargetCellInUTRAN);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(id_SourceCellCRNTI);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(id_MobilityInformation);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(id_UE_RLF_Report_Container);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(id_UE_RLF_Report_Container_for_extended_bands);} return false; - case 11: type = 11; 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 == 11; } - void clear() {type = 0;} - void select_id_HandoverReportType() { set(ignore); type=1;} - void select_id_Cause() { set(ignore); type=2;} - void select_id_SourceCellECGI() { set(ignore); type=3;} - void select_id_FailureCellECGI() { set(ignore); type=4;} - void select_id_Re_establishmentCellECGI() { set(ignore); type=5;} - void select_id_TargetCellInUTRAN() { set(ignore); type=6;} - void select_id_SourceCellCRNTI() { set(ignore); type=7;} - void select_id_MobilityInformation() { set(ignore); type=8;} - void select_id_UE_RLF_Report_Container() { set(ignore); type=9;} - void select_id_UE_RLF_Report_Container_for_extended_bands() { set(ignore); type=10;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else if(equal(ignore)) { type = 6; return true; } - else if(equal(ignore)) { type = 7; return true; } - else if(equal(ignore)) { type = 8; return true; } - else if(equal(ignore)) { type = 9; return true; } - else if(equal(ignore)) { type = 10; return true; } - else { type = 11; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(ignore);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(ignore);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(ignore);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(ignore);} return false; - case 11: type = 11; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - HandoverReportType& select_id_HandoverReportType() { return set(1); } - HandoverReportType const* get_id_HandoverReportType() const { return get(1); } - Cause& select_id_Cause() { return set(2); } - Cause const* get_id_Cause() const { return get(2); } - ECGI& select_id_SourceCellECGI() { return set(3); } - ECGI const* get_id_SourceCellECGI() const { return get(3); } - ECGI& select_id_FailureCellECGI() { return set(4); } - ECGI const* get_id_FailureCellECGI() const { return get(4); } - ECGI& select_id_Re_establishmentCellECGI() { return set(5); } - ECGI const* get_id_Re_establishmentCellECGI() const { return get(5); } - TargetCellInUTRAN& select_id_TargetCellInUTRAN() { return set(6); } - TargetCellInUTRAN const* get_id_TargetCellInUTRAN() const { return get(6); } - CRNTI& select_id_SourceCellCRNTI() { return set(7); } - CRNTI const* get_id_SourceCellCRNTI() const { return get(7); } - MobilityInformation& select_id_MobilityInformation() { return set(8); } - MobilityInformation const* get_id_MobilityInformation() const { return get(8); } - UE_RLF_Report_Container& select_id_UE_RLF_Report_Container() { return set(9); } - UE_RLF_Report_Container const* get_id_UE_RLF_Report_Container() const { return get(9); } - UE_RLF_Report_Container_for_extended_bands& select_id_UE_RLF_Report_Container_for_extended_bands() { return set(10); } - UE_RLF_Report_Container_for_extended_bands const* get_id_UE_RLF_Report_Container_for_extended_bands() const { return get(10); } - bool is_unknown() const { return type == 11; } - 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_HandoverReportType()); return true; - case 2: v(select_id_Cause()); return true; - case 3: v(select_id_SourceCellECGI()); return true; - case 4: v(select_id_FailureCellECGI()); return true; - case 5: v(select_id_Re_establishmentCellECGI()); return true; - case 6: v(select_id_TargetCellInUTRAN()); return true; - case 7: v(select_id_SourceCellCRNTI()); return true; - case 8: v(select_id_MobilityInformation()); return true; - case 9: v(select_id_UE_RLF_Report_Container()); return true; - case 10: v(select_id_UE_RLF_Report_Container_for_extended_bands()); return true; - case 11: if(type != 11) {clear(); asn::base::set();} type = 11; 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(CRNTI)]; - char dummy2[sizeof(Cause)]; - char dummy3[sizeof(ECGI)]; - char dummy4[sizeof(HandoverReportType)]; - char dummy5[sizeof(MobilityInformation)]; - char dummy6[sizeof(TargetCellInUTRAN)]; - char dummy7[sizeof(UE_RLF_Report_Container)]; - char dummy8[sizeof(UE_RLF_Report_Container_for_extended_bands)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 11; } - void clear() {type = 0;} - void select_id_HandoverReportType() { set(mandatory); type=1;} - void select_id_Cause() { set(mandatory); type=2;} - void select_id_SourceCellECGI() { set(mandatory); type=3;} - void select_id_FailureCellECGI() { set(mandatory); type=4;} - void select_id_Re_establishmentCellECGI() { set(conditional); type=5;} - void select_id_TargetCellInUTRAN() { set(conditional); type=6;} - void select_id_SourceCellCRNTI() { set(optional); type=7;} - void select_id_MobilityInformation() { set(optional); type=8;} - void select_id_UE_RLF_Report_Container() { set(optional); type=9;} - void select_id_UE_RLF_Report_Container_for_extended_bands() { set(optional); type=10;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(mandatory)) { type = 4; return true; } - else if(equal(conditional)) { type = 5; return true; } - else if(equal(conditional)) { type = 6; return true; } - else if(equal(optional)) { type = 7; return true; } - else if(equal(optional)) { type = 8; return true; } - else if(equal(optional)) { type = 9; return true; } - else if(equal(optional)) { type = 10; return true; } - else { type = 11; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(mandatory);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(conditional);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(conditional);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(optional);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(optional);} return false; - case 11: type = 11; 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}; - - }; - -}; -/* -HandoverReport ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{HandoverReport-IEs}}, - ... -} -*/ - -struct HandoverReport : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "HandoverReport";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -UE-ContextInformation-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { -{ ID id-ManagementBasedMDTallowed CRITICALITY ignore EXTENSION ManagementBasedMDTallowed PRESENCE optional }| -{ ID id-ManagementBasedMDTPLMNList CRITICALITY ignore EXTENSION MDTPLMNList PRESENCE optional }| -{ ID id-UESidelinkAggregateMaximumBitRate CRITICALITY ignore EXTENSION UESidelinkAggregateMaximumBitRate PRESENCE optional}, - ... -} -*/ - -struct UE_ContextInformation_ExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_ManagementBasedMDTallowed() { set(id_ManagementBasedMDTallowed); type=1;} - void select_id_ManagementBasedMDTPLMNList() { set(id_ManagementBasedMDTPLMNList); type=2;} - void select_id_UESidelinkAggregateMaximumBitRate() { set(id_UESidelinkAggregateMaximumBitRate); type=3;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_ManagementBasedMDTallowed)) { type = 1; return true; } - else if(equal(id_ManagementBasedMDTPLMNList)) { type = 2; return true; } - else if(equal(id_UESidelinkAggregateMaximumBitRate)) { type = 3; return true; } - else { type = 4; 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_ManagementBasedMDTallowed);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_ManagementBasedMDTPLMNList);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_UESidelinkAggregateMaximumBitRate);} return false; - case 4: type = 4; 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 == 4; } - void clear() {type = 0;} - void select_id_ManagementBasedMDTallowed() { set(ignore); type=1;} - void select_id_ManagementBasedMDTPLMNList() { set(ignore); type=2;} - void select_id_UESidelinkAggregateMaximumBitRate() { set(ignore); type=3;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else { type = 4; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - ManagementBasedMDTallowed& select_id_ManagementBasedMDTallowed() { return set(1); } - ManagementBasedMDTallowed const* get_id_ManagementBasedMDTallowed() const { return get(1); } - MDTPLMNList& select_id_ManagementBasedMDTPLMNList() { return set(2); } - MDTPLMNList const* get_id_ManagementBasedMDTPLMNList() const { return get(2); } - UESidelinkAggregateMaximumBitRate& select_id_UESidelinkAggregateMaximumBitRate() { return set(3); } - UESidelinkAggregateMaximumBitRate const* get_id_UESidelinkAggregateMaximumBitRate() const { return get(3); } - bool is_unknown() const { return type == 4; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_ManagementBasedMDTallowed()); return true; - case 2: v(select_id_ManagementBasedMDTPLMNList()); return true; - case 3: v(select_id_UESidelinkAggregateMaximumBitRate()); return true; - case 4: if(type != 4) {clear(); asn::base::set();} type = 4; 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; - } - 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(MDTPLMNList)]; - char dummy2[sizeof(ManagementBasedMDTallowed)]; - char dummy3[sizeof(UESidelinkAggregateMaximumBitRate)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_ManagementBasedMDTallowed() { set(optional); type=1;} - void select_id_ManagementBasedMDTPLMNList() { set(optional); type=2;} - void select_id_UESidelinkAggregateMaximumBitRate() { set(optional); type=3;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else { type = 4; 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(optional);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; 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}; - - }; - -}; -/* -UE-ContextInformation ::= SEQUENCE { - mME-UE-S1AP-ID UE-S1AP-ID, - uESecurityCapabilities UESecurityCapabilities, - aS-SecurityInformation AS-SecurityInformation, - uEaggregateMaximumBitRate UEAggregateMaximumBitRate, - subscriberProfileIDforRFP SubscriberProfileIDforRFP OPTIONAL, - e-RABs-ToBeSetup-List E-RABs-ToBeSetup-List, - rRC-Context RRC-Context, - handoverRestrictionList HandoverRestrictionList OPTIONAL, - locationReportingInformation LocationReportingInformation OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {UE-ContextInformation-ExtIEs} } OPTIONAL, - ... -} -*/ - -struct UE_ContextInformation : asn::sequence<10, 0, true, 4> -{ - static constexpr const char* name() {return "UE-ContextInformation";} - using parent_t = asn::sequence<10, 0, true, 4>; - struct mME_UE_S1AP_ID_t : UE_S1AP_ID - { - static constexpr const char* name() {return "mME_UE_S1AP_ID_t";} - using parent_t = UE_S1AP_ID; - - }; - mME_UE_S1AP_ID_t& ref_mME_UE_S1AP_ID() {return mME_UE_S1AP_ID;} - mME_UE_S1AP_ID_t const& ref_mME_UE_S1AP_ID() const {return mME_UE_S1AP_ID;} - struct uESecurityCapabilities_t : UESecurityCapabilities - { - static constexpr const char* name() {return "uESecurityCapabilities_t";} - using parent_t = UESecurityCapabilities; - - }; - uESecurityCapabilities_t& ref_uESecurityCapabilities() {return uESecurityCapabilities;} - uESecurityCapabilities_t const& ref_uESecurityCapabilities() const {return uESecurityCapabilities;} - struct aS_SecurityInformation_t : AS_SecurityInformation - { - static constexpr const char* name() {return "aS_SecurityInformation_t";} - using parent_t = AS_SecurityInformation; - - }; - aS_SecurityInformation_t& ref_aS_SecurityInformation() {return aS_SecurityInformation;} - aS_SecurityInformation_t const& ref_aS_SecurityInformation() const {return aS_SecurityInformation;} - struct uEaggregateMaximumBitRate_t : UEAggregateMaximumBitRate - { - static constexpr const char* name() {return "uEaggregateMaximumBitRate_t";} - using parent_t = UEAggregateMaximumBitRate; - - }; - uEaggregateMaximumBitRate_t& ref_uEaggregateMaximumBitRate() {return uEaggregateMaximumBitRate;} - uEaggregateMaximumBitRate_t const& ref_uEaggregateMaximumBitRate() const {return uEaggregateMaximumBitRate;} - struct subscriberProfileIDforRFP_t : SubscriberProfileIDforRFP - { - static constexpr const char* name() {return "subscriberProfileIDforRFP_t";} - using parent_t = SubscriberProfileIDforRFP; - static constexpr bool optional = true; - - }; - subscriberProfileIDforRFP_t& set_subscriberProfileIDforRFP() { subscriberProfileIDforRFP.setpresent(true); return subscriberProfileIDforRFP;} - subscriberProfileIDforRFP_t const* get_subscriberProfileIDforRFP() const {return subscriberProfileIDforRFP.is_valid() ? &subscriberProfileIDforRFP : nullptr;} - struct e_RABs_ToBeSetup_List_t : E_RABs_ToBeSetup_List - { - static constexpr const char* name() {return "e_RABs_ToBeSetup_List_t";} - using parent_t = E_RABs_ToBeSetup_List; - - }; - e_RABs_ToBeSetup_List_t& ref_e_RABs_ToBeSetup_List() {return e_RABs_ToBeSetup_List;} - e_RABs_ToBeSetup_List_t const& ref_e_RABs_ToBeSetup_List() const {return e_RABs_ToBeSetup_List;} - struct rRC_Context_t : RRC_Context - { - static constexpr const char* name() {return "rRC_Context_t";} - using parent_t = RRC_Context; - - }; - rRC_Context_t& ref_rRC_Context() {return rRC_Context;} - rRC_Context_t const& ref_rRC_Context() const {return rRC_Context;} - struct handoverRestrictionList_t : HandoverRestrictionList - { - static constexpr const char* name() {return "handoverRestrictionList_t";} - using parent_t = HandoverRestrictionList; - static constexpr bool optional = true; - - }; - handoverRestrictionList_t& set_handoverRestrictionList() { handoverRestrictionList.setpresent(true); return handoverRestrictionList;} - handoverRestrictionList_t const* get_handoverRestrictionList() const {return handoverRestrictionList.is_valid() ? &handoverRestrictionList : nullptr;} - struct locationReportingInformation_t : LocationReportingInformation - { - static constexpr const char* name() {return "locationReportingInformation_t";} - using parent_t = LocationReportingInformation; - static constexpr bool optional = true; - - }; - locationReportingInformation_t& set_locationReportingInformation() { locationReportingInformation.setpresent(true); return locationReportingInformation;} - locationReportingInformation_t const* get_locationReportingInformation() const {return locationReportingInformation.is_valid() ? &locationReportingInformation : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(mME_UE_S1AP_ID); - v(uESecurityCapabilities); - v(aS_SecurityInformation); - v(uEaggregateMaximumBitRate); - v(subscriberProfileIDforRFP); - v(e_RABs_ToBeSetup_List); - v(rRC_Context); - v(handoverRestrictionList); - v(locationReportingInformation); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(mME_UE_S1AP_ID); - v(uESecurityCapabilities); - v(aS_SecurityInformation); - v(uEaggregateMaximumBitRate); - v(subscriberProfileIDforRFP); - v(e_RABs_ToBeSetup_List); - v(rRC_Context); - v(handoverRestrictionList); - v(locationReportingInformation); - v(iE_Extensions); - - }; - void clear() - { - mME_UE_S1AP_ID.clear(); - uESecurityCapabilities.clear(); - aS_SecurityInformation.clear(); - uEaggregateMaximumBitRate.clear(); - subscriberProfileIDforRFP.clear(); - e_RABs_ToBeSetup_List.clear(); - rRC_Context.clear(); - handoverRestrictionList.clear(); - locationReportingInformation.clear(); - iE_Extensions.clear(); - - }; - private: - mME_UE_S1AP_ID_t mME_UE_S1AP_ID; - uESecurityCapabilities_t uESecurityCapabilities; - aS_SecurityInformation_t aS_SecurityInformation; - uEaggregateMaximumBitRate_t uEaggregateMaximumBitRate; - subscriberProfileIDforRFP_t subscriberProfileIDforRFP; - e_RABs_ToBeSetup_List_t e_RABs_ToBeSetup_List; - rRC_Context_t rRC_Context; - handoverRestrictionList_t handoverRestrictionList; - locationReportingInformation_t locationReportingInformation; - iE_Extensions_t iE_Extensions; - -}; -/* -UE-ContextReferenceAtSeNB-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct UE_ContextReferenceAtSeNB_ItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -UE-ContextReferenceAtSeNB ::= SEQUENCE { - source-GlobalSeNB-ID GlobalENB-ID, - seNB-UE-X2AP-ID UE-X2AP-ID, - seNB-UE-X2AP-ID-Extension UE-X2AP-ID-Extension, - iE-Extensions ProtocolExtensionContainer { {UE-ContextReferenceAtSeNB-ItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct UE_ContextReferenceAtSeNB : asn::sequence<4, 0, true, 1> -{ - static constexpr const char* name() {return "UE-ContextReferenceAtSeNB";} - using parent_t = asn::sequence<4, 0, true, 1>; - struct source_GlobalSeNB_ID_t : GlobalENB_ID - { - static constexpr const char* name() {return "source_GlobalSeNB_ID_t";} - using parent_t = GlobalENB_ID; - - }; - source_GlobalSeNB_ID_t& ref_source_GlobalSeNB_ID() {return source_GlobalSeNB_ID;} - source_GlobalSeNB_ID_t const& ref_source_GlobalSeNB_ID() const {return source_GlobalSeNB_ID;} - struct seNB_UE_X2AP_ID_t : UE_X2AP_ID - { - static constexpr const char* name() {return "seNB_UE_X2AP_ID_t";} - using parent_t = UE_X2AP_ID; - - }; - seNB_UE_X2AP_ID_t& ref_seNB_UE_X2AP_ID() {return seNB_UE_X2AP_ID;} - seNB_UE_X2AP_ID_t const& ref_seNB_UE_X2AP_ID() const {return seNB_UE_X2AP_ID;} - struct seNB_UE_X2AP_ID_Extension_t : UE_X2AP_ID_Extension - { - static constexpr const char* name() {return "seNB_UE_X2AP_ID_Extension_t";} - using parent_t = UE_X2AP_ID_Extension; - - }; - seNB_UE_X2AP_ID_Extension_t& ref_seNB_UE_X2AP_ID_Extension() {return seNB_UE_X2AP_ID_Extension;} - seNB_UE_X2AP_ID_Extension_t const& ref_seNB_UE_X2AP_ID_Extension() const {return seNB_UE_X2AP_ID_Extension;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(source_GlobalSeNB_ID); - v(seNB_UE_X2AP_ID); - v(seNB_UE_X2AP_ID_Extension); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(source_GlobalSeNB_ID); - v(seNB_UE_X2AP_ID); - v(seNB_UE_X2AP_ID_Extension); - v(iE_Extensions); - - }; - void clear() - { - source_GlobalSeNB_ID.clear(); - seNB_UE_X2AP_ID.clear(); - seNB_UE_X2AP_ID_Extension.clear(); - iE_Extensions.clear(); - - }; - private: - source_GlobalSeNB_ID_t source_GlobalSeNB_ID; - seNB_UE_X2AP_ID_t seNB_UE_X2AP_ID; - seNB_UE_X2AP_ID_Extension_t seNB_UE_X2AP_ID_Extension; - iE_Extensions_t iE_Extensions; - -}; -/* -UE-ContextReferenceAtWT-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct UE_ContextReferenceAtWT_ItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -UE-ContextReferenceAtWT ::= SEQUENCE { - wTID WTID, - wT-UE-XwAP-ID WT-UE-XwAP-ID, - iE-Extensions ProtocolExtensionContainer { {UE-ContextReferenceAtWT-ItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct UE_ContextReferenceAtWT : asn::sequence<3, 0, true, 1> -{ - static constexpr const char* name() {return "UE-ContextReferenceAtWT";} - using parent_t = asn::sequence<3, 0, true, 1>; - struct wTID_t : WTID - { - static constexpr const char* name() {return "wTID_t";} - using parent_t = WTID; - - }; - wTID_t& ref_wTID() {return wTID;} - wTID_t const& ref_wTID() const {return wTID;} - struct wT_UE_XwAP_ID_t : WT_UE_XwAP_ID - { - static constexpr const char* name() {return "wT_UE_XwAP_ID_t";} - using parent_t = WT_UE_XwAP_ID; - - }; - wT_UE_XwAP_ID_t& ref_wT_UE_XwAP_ID() {return wT_UE_XwAP_ID;} - wT_UE_XwAP_ID_t const& ref_wT_UE_XwAP_ID() const {return wT_UE_XwAP_ID;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(wTID); - v(wT_UE_XwAP_ID); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(wTID); - v(wT_UE_XwAP_ID); - v(iE_Extensions); - - }; - void clear() - { - wTID.clear(); - wT_UE_XwAP_ID.clear(); - iE_Extensions.clear(); - - }; - private: - wTID_t wTID; - wT_UE_XwAP_ID_t wT_UE_XwAP_ID; - iE_Extensions_t iE_Extensions; - -}; -/* -UE-ContextReferenceAtSgNB-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct UE_ContextReferenceAtSgNB_ItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -UE-ContextReferenceAtSgNB ::= SEQUENCE { - source-GlobalSgNB-ID GlobalGNB-ID, - sgNB-UE-X2AP-ID SgNB-UE-X2AP-ID, - iE-Extensions ProtocolExtensionContainer { {UE-ContextReferenceAtSgNB-ItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct UE_ContextReferenceAtSgNB : asn::sequence<3, 0, true, 1> -{ - static constexpr const char* name() {return "UE-ContextReferenceAtSgNB";} - using parent_t = asn::sequence<3, 0, true, 1>; - struct source_GlobalSgNB_ID_t : GlobalGNB_ID - { - static constexpr const char* name() {return "source_GlobalSgNB_ID_t";} - using parent_t = GlobalGNB_ID; - - }; - source_GlobalSgNB_ID_t& ref_source_GlobalSgNB_ID() {return source_GlobalSgNB_ID;} - source_GlobalSgNB_ID_t const& ref_source_GlobalSgNB_ID() const {return source_GlobalSgNB_ID;} - struct sgNB_UE_X2AP_ID_t : SgNB_UE_X2AP_ID - { - static constexpr const char* name() {return "sgNB_UE_X2AP_ID_t";} - using parent_t = SgNB_UE_X2AP_ID; - - }; - sgNB_UE_X2AP_ID_t& ref_sgNB_UE_X2AP_ID() {return sgNB_UE_X2AP_ID;} - sgNB_UE_X2AP_ID_t const& ref_sgNB_UE_X2AP_ID() const {return sgNB_UE_X2AP_ID;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(source_GlobalSgNB_ID); - v(sgNB_UE_X2AP_ID); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(source_GlobalSgNB_ID); - v(sgNB_UE_X2AP_ID); - v(iE_Extensions); - - }; - void clear() - { - source_GlobalSgNB_ID.clear(); - sgNB_UE_X2AP_ID.clear(); - iE_Extensions.clear(); - - }; - private: - source_GlobalSgNB_ID_t source_GlobalSgNB_ID; - sgNB_UE_X2AP_ID_t sgNB_UE_X2AP_ID; - iE_Extensions_t iE_Extensions; - -}; -/* -HandoverRequest-IEs X2AP-PROTOCOL-IES ::= { - { ID id-Old-eNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| - { ID id-TargetCell-ID CRITICALITY reject TYPE ECGI PRESENCE mandatory}| - { ID id-GUMMEI-ID CRITICALITY reject TYPE GUMMEI PRESENCE mandatory}| - { ID id-UE-ContextInformation CRITICALITY reject TYPE UE-ContextInformation PRESENCE mandatory}| - { ID id-UE-HistoryInformation CRITICALITY ignore TYPE UE-HistoryInformation PRESENCE mandatory}| - { ID id-TraceActivation CRITICALITY ignore TYPE TraceActivation PRESENCE optional}| - { ID id-SRVCCOperationPossible CRITICALITY ignore TYPE SRVCCOperationPossible PRESENCE optional}| - { ID id-CSGMembershipStatus CRITICALITY reject TYPE CSGMembershipStatus PRESENCE optional}| - { ID id-MobilityInformation CRITICALITY ignore TYPE MobilityInformation PRESENCE optional}| - { ID id-Masked-IMEISV CRITICALITY ignore TYPE Masked-IMEISV PRESENCE optional}| - { ID id-UE-HistoryInformationFromTheUE CRITICALITY ignore TYPE UE-HistoryInformationFromTheUE PRESENCE optional}| - { ID id-ExpectedUEBehaviour CRITICALITY ignore TYPE ExpectedUEBehaviour PRESENCE optional}| - { ID id-ProSeAuthorized CRITICALITY ignore TYPE ProSeAuthorized PRESENCE optional}| - { ID id-UE-ContextReferenceAtSeNB CRITICALITY ignore TYPE UE-ContextReferenceAtSeNB PRESENCE optional}| - { ID id-Old-eNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-V2XServicesAuthorized CRITICALITY ignore TYPE V2XServicesAuthorized PRESENCE optional}| - { ID id-UE-ContextReferenceAtWT CRITICALITY ignore TYPE UE-ContextReferenceAtWT PRESENCE optional}| - { ID id-NRUESecurityCapabilities CRITICALITY ignore TYPE NRUESecurityCapabilities PRESENCE optional}| - { ID id-UE-ContextReferenceAtSgNB CRITICALITY ignore TYPE UE-ContextReferenceAtSgNB PRESENCE optional}| - { ID id-AerialUEsubscriptionInformation CRITICALITY ignore TYPE AerialUEsubscriptionInformation PRESENCE optional}| - { ID id-Subscription-Based-UE-DifferentiationInfo CRITICALITY ignore TYPE Subscription-Based-UE-DifferentiationInfo PRESENCE optional}, - ... -} -*/ - -struct HandoverRequest_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 23; } - void clear() {type = 0;} - void select_id_Old_eNB_UE_X2AP_ID() { set(id_Old_eNB_UE_X2AP_ID); type=1;} - void select_id_Cause() { set(id_Cause); type=2;} - void select_id_TargetCell_ID() { set(id_TargetCell_ID); type=3;} - void select_id_GUMMEI_ID() { set(id_GUMMEI_ID); type=4;} - void select_id_UE_ContextInformation() { set(id_UE_ContextInformation); type=5;} - void select_id_UE_HistoryInformation() { set(id_UE_HistoryInformation); type=6;} - void select_id_TraceActivation() { set(id_TraceActivation); type=7;} - void select_id_SRVCCOperationPossible() { set(id_SRVCCOperationPossible); type=8;} - void select_id_CSGMembershipStatus() { set(id_CSGMembershipStatus); type=9;} - void select_id_MobilityInformation() { set(id_MobilityInformation); type=10;} - void select_id_Masked_IMEISV() { set(id_Masked_IMEISV); type=11;} - void select_id_UE_HistoryInformationFromTheUE() { set(id_UE_HistoryInformationFromTheUE); type=12;} - void select_id_ExpectedUEBehaviour() { set(id_ExpectedUEBehaviour); type=13;} - void select_id_ProSeAuthorized() { set(id_ProSeAuthorized); type=14;} - void select_id_UE_ContextReferenceAtSeNB() { set(id_UE_ContextReferenceAtSeNB); type=15;} - void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(id_Old_eNB_UE_X2AP_ID_Extension); type=16;} - void select_id_V2XServicesAuthorized() { set(id_V2XServicesAuthorized); type=17;} - void select_id_UE_ContextReferenceAtWT() { set(id_UE_ContextReferenceAtWT); type=18;} - void select_id_NRUESecurityCapabilities() { set(id_NRUESecurityCapabilities); type=19;} - void select_id_UE_ContextReferenceAtSgNB() { set(id_UE_ContextReferenceAtSgNB); type=20;} - void select_id_AerialUEsubscriptionInformation() { set(id_AerialUEsubscriptionInformation); type=21;} - void select_id_Subscription_Based_UE_DifferentiationInfo() { set(id_Subscription_Based_UE_DifferentiationInfo); type=22;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_Old_eNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_Cause)) { type = 2; return true; } - else if(equal(id_TargetCell_ID)) { type = 3; return true; } - else if(equal(id_GUMMEI_ID)) { type = 4; return true; } - else if(equal(id_UE_ContextInformation)) { type = 5; return true; } - else if(equal(id_UE_HistoryInformation)) { type = 6; return true; } - else if(equal(id_TraceActivation)) { type = 7; return true; } - else if(equal(id_SRVCCOperationPossible)) { type = 8; return true; } - else if(equal(id_CSGMembershipStatus)) { type = 9; return true; } - else if(equal(id_MobilityInformation)) { type = 10; return true; } - else if(equal(id_Masked_IMEISV)) { type = 11; return true; } - else if(equal(id_UE_HistoryInformationFromTheUE)) { type = 12; return true; } - else if(equal(id_ExpectedUEBehaviour)) { type = 13; return true; } - else if(equal(id_ProSeAuthorized)) { type = 14; return true; } - else if(equal(id_UE_ContextReferenceAtSeNB)) { type = 15; return true; } - else if(equal(id_Old_eNB_UE_X2AP_ID_Extension)) { type = 16; return true; } - else if(equal(id_V2XServicesAuthorized)) { type = 17; return true; } - else if(equal(id_UE_ContextReferenceAtWT)) { type = 18; return true; } - else if(equal(id_NRUESecurityCapabilities)) { type = 19; return true; } - else if(equal(id_UE_ContextReferenceAtSgNB)) { type = 20; return true; } - else if(equal(id_AerialUEsubscriptionInformation)) { type = 21; return true; } - else if(equal(id_Subscription_Based_UE_DifferentiationInfo)) { type = 22; return true; } - else { type = 23; 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_Old_eNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_Cause);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_TargetCell_ID);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_GUMMEI_ID);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_UE_ContextInformation);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_UE_HistoryInformation);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(id_TraceActivation);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(id_SRVCCOperationPossible);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(id_CSGMembershipStatus);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(id_MobilityInformation);} return false; - case 11: type = 11; if(v(ref_nested())) { return equal(id_Masked_IMEISV);} return false; - case 12: type = 12; if(v(ref_nested())) { return equal(id_UE_HistoryInformationFromTheUE);} return false; - case 13: type = 13; if(v(ref_nested())) { return equal(id_ExpectedUEBehaviour);} return false; - case 14: type = 14; if(v(ref_nested())) { return equal(id_ProSeAuthorized);} return false; - case 15: type = 15; if(v(ref_nested())) { return equal(id_UE_ContextReferenceAtSeNB);} return false; - case 16: type = 16; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID_Extension);} return false; - case 17: type = 17; if(v(ref_nested())) { return equal(id_V2XServicesAuthorized);} return false; - case 18: type = 18; if(v(ref_nested())) { return equal(id_UE_ContextReferenceAtWT);} return false; - case 19: type = 19; if(v(ref_nested())) { return equal(id_NRUESecurityCapabilities);} return false; - case 20: type = 20; if(v(ref_nested())) { return equal(id_UE_ContextReferenceAtSgNB);} return false; - case 21: type = 21; if(v(ref_nested())) { return equal(id_AerialUEsubscriptionInformation);} return false; - case 22: type = 22; if(v(ref_nested())) { return equal(id_Subscription_Based_UE_DifferentiationInfo);} return false; - case 23: type = 23; 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 == 23; } - void clear() {type = 0;} - void select_id_Old_eNB_UE_X2AP_ID() { set(reject); type=1;} - void select_id_Cause() { set(ignore); type=2;} - void select_id_TargetCell_ID() { set(reject); type=3;} - void select_id_GUMMEI_ID() { set(reject); type=4;} - void select_id_UE_ContextInformation() { set(reject); type=5;} - void select_id_UE_HistoryInformation() { set(ignore); type=6;} - void select_id_TraceActivation() { set(ignore); type=7;} - void select_id_SRVCCOperationPossible() { set(ignore); type=8;} - void select_id_CSGMembershipStatus() { set(reject); type=9;} - void select_id_MobilityInformation() { set(ignore); type=10;} - void select_id_Masked_IMEISV() { set(ignore); type=11;} - void select_id_UE_HistoryInformationFromTheUE() { set(ignore); type=12;} - void select_id_ExpectedUEBehaviour() { set(ignore); type=13;} - void select_id_ProSeAuthorized() { set(ignore); type=14;} - void select_id_UE_ContextReferenceAtSeNB() { set(ignore); type=15;} - void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(reject); type=16;} - void select_id_V2XServicesAuthorized() { set(ignore); type=17;} - void select_id_UE_ContextReferenceAtWT() { set(ignore); type=18;} - void select_id_NRUESecurityCapabilities() { set(ignore); type=19;} - void select_id_UE_ContextReferenceAtSgNB() { set(ignore); type=20;} - void select_id_AerialUEsubscriptionInformation() { set(ignore); type=21;} - void select_id_Subscription_Based_UE_DifferentiationInfo() { set(ignore); type=22;} - X2AP_PROTOCOL_IES::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(ignore)) { 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(ignore)) { type = 6; return true; } - else if(equal(ignore)) { type = 7; return true; } - else if(equal(ignore)) { type = 8; return true; } - else if(equal(reject)) { type = 9; return true; } - else if(equal(ignore)) { 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(reject)) { type = 16; return true; } - else if(equal(ignore)) { type = 17; return true; } - else if(equal(ignore)) { type = 18; return true; } - else if(equal(ignore)) { type = 19; return true; } - else if(equal(ignore)) { type = 20; return true; } - else if(equal(ignore)) { type = 21; return true; } - else if(equal(ignore)) { type = 22; return true; } - else { type = 23; 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(ignore);} 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(ignore);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(ignore);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(ignore);} 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(ignore);} 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(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(ignore);} return false; - case 19: type = 19; if(v(ref_nested())) { return equal(ignore);} return false; - case 20: type = 20; if(v(ref_nested())) { return equal(ignore);} return false; - case 21: type = 21; if(v(ref_nested())) { return equal(ignore);} return false; - case 22: type = 22; if(v(ref_nested())) { return equal(ignore);} return false; - case 23: type = 23; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_Old_eNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_Old_eNB_UE_X2AP_ID() const { return get(1); } - Cause& select_id_Cause() { return set(2); } - Cause const* get_id_Cause() const { return get(2); } - ECGI& select_id_TargetCell_ID() { return set(3); } - ECGI const* get_id_TargetCell_ID() const { return get(3); } - GUMMEI& select_id_GUMMEI_ID() { return set(4); } - GUMMEI const* get_id_GUMMEI_ID() const { return get(4); } - UE_ContextInformation& select_id_UE_ContextInformation() { return set(5); } - UE_ContextInformation const* get_id_UE_ContextInformation() const { return get(5); } - UE_HistoryInformation& select_id_UE_HistoryInformation() { return set(6); } - UE_HistoryInformation const* get_id_UE_HistoryInformation() const { return get(6); } - TraceActivation& select_id_TraceActivation() { return set(7); } - TraceActivation const* get_id_TraceActivation() const { return get(7); } - SRVCCOperationPossible& select_id_SRVCCOperationPossible() { return set(8); } - SRVCCOperationPossible const* get_id_SRVCCOperationPossible() const { return get(8); } - CSGMembershipStatus& select_id_CSGMembershipStatus() { return set(9); } - CSGMembershipStatus const* get_id_CSGMembershipStatus() const { return get(9); } - MobilityInformation& select_id_MobilityInformation() { return set(10); } - MobilityInformation const* get_id_MobilityInformation() const { return get(10); } - Masked_IMEISV& select_id_Masked_IMEISV() { return set(11); } - Masked_IMEISV const* get_id_Masked_IMEISV() const { return get(11); } - UE_HistoryInformationFromTheUE& select_id_UE_HistoryInformationFromTheUE() { return set(12); } - UE_HistoryInformationFromTheUE const* get_id_UE_HistoryInformationFromTheUE() const { return get(12); } - ExpectedUEBehaviour& select_id_ExpectedUEBehaviour() { return set(13); } - ExpectedUEBehaviour const* get_id_ExpectedUEBehaviour() const { return get(13); } - ProSeAuthorized& select_id_ProSeAuthorized() { return set(14); } - ProSeAuthorized const* get_id_ProSeAuthorized() const { return get(14); } - UE_ContextReferenceAtSeNB& select_id_UE_ContextReferenceAtSeNB() { return set(15); } - UE_ContextReferenceAtSeNB const* get_id_UE_ContextReferenceAtSeNB() const { return get(15); } - UE_X2AP_ID_Extension& select_id_Old_eNB_UE_X2AP_ID_Extension() { return set(16); } - UE_X2AP_ID_Extension const* get_id_Old_eNB_UE_X2AP_ID_Extension() const { return get(16); } - V2XServicesAuthorized& select_id_V2XServicesAuthorized() { return set(17); } - V2XServicesAuthorized const* get_id_V2XServicesAuthorized() const { return get(17); } - UE_ContextReferenceAtWT& select_id_UE_ContextReferenceAtWT() { return set(18); } - UE_ContextReferenceAtWT const* get_id_UE_ContextReferenceAtWT() const { return get(18); } - NRUESecurityCapabilities& select_id_NRUESecurityCapabilities() { return set(19); } - NRUESecurityCapabilities const* get_id_NRUESecurityCapabilities() const { return get(19); } - UE_ContextReferenceAtSgNB& select_id_UE_ContextReferenceAtSgNB() { return set(20); } - UE_ContextReferenceAtSgNB const* get_id_UE_ContextReferenceAtSgNB() const { return get(20); } - AerialUEsubscriptionInformation& select_id_AerialUEsubscriptionInformation() { return set(21); } - AerialUEsubscriptionInformation const* get_id_AerialUEsubscriptionInformation() const { return get(21); } - Subscription_Based_UE_DifferentiationInfo& select_id_Subscription_Based_UE_DifferentiationInfo() { return set(22); } - Subscription_Based_UE_DifferentiationInfo const* get_id_Subscription_Based_UE_DifferentiationInfo() const { return get(22); } - bool is_unknown() const { return type == 23; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_Old_eNB_UE_X2AP_ID()); return true; - case 2: v(select_id_Cause()); return true; - case 3: v(select_id_TargetCell_ID()); return true; - case 4: v(select_id_GUMMEI_ID()); return true; - case 5: v(select_id_UE_ContextInformation()); return true; - case 6: v(select_id_UE_HistoryInformation()); return true; - case 7: v(select_id_TraceActivation()); return true; - case 8: v(select_id_SRVCCOperationPossible()); return true; - case 9: v(select_id_CSGMembershipStatus()); return true; - case 10: v(select_id_MobilityInformation()); return true; - case 11: v(select_id_Masked_IMEISV()); return true; - case 12: v(select_id_UE_HistoryInformationFromTheUE()); return true; - case 13: v(select_id_ExpectedUEBehaviour()); return true; - case 14: v(select_id_ProSeAuthorized()); return true; - case 15: v(select_id_UE_ContextReferenceAtSeNB()); return true; - case 16: v(select_id_Old_eNB_UE_X2AP_ID_Extension()); return true; - case 17: v(select_id_V2XServicesAuthorized()); return true; - case 18: v(select_id_UE_ContextReferenceAtWT()); return true; - case 19: v(select_id_NRUESecurityCapabilities()); return true; - case 20: v(select_id_UE_ContextReferenceAtSgNB()); return true; - case 21: v(select_id_AerialUEsubscriptionInformation()); return true; - case 22: v(select_id_Subscription_Based_UE_DifferentiationInfo()); return true; - case 23: if(type != 23) {clear(); asn::base::set();} type = 23; 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; - } - 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(AerialUEsubscriptionInformation)]; - char dummy2[sizeof(CSGMembershipStatus)]; - char dummy3[sizeof(Cause)]; - char dummy4[sizeof(ECGI)]; - char dummy5[sizeof(ExpectedUEBehaviour)]; - char dummy6[sizeof(GUMMEI)]; - char dummy7[sizeof(Masked_IMEISV)]; - char dummy8[sizeof(MobilityInformation)]; - char dummy9[sizeof(NRUESecurityCapabilities)]; - char dummy10[sizeof(ProSeAuthorized)]; - char dummy11[sizeof(SRVCCOperationPossible)]; - char dummy12[sizeof(Subscription_Based_UE_DifferentiationInfo)]; - char dummy13[sizeof(TraceActivation)]; - char dummy14[sizeof(UE_ContextInformation)]; - char dummy15[sizeof(UE_ContextReferenceAtSeNB)]; - char dummy16[sizeof(UE_ContextReferenceAtSgNB)]; - char dummy17[sizeof(UE_ContextReferenceAtWT)]; - char dummy18[sizeof(UE_HistoryInformation)]; - char dummy19[sizeof(UE_HistoryInformationFromTheUE)]; - char dummy20[sizeof(UE_X2AP_ID)]; - char dummy21[sizeof(UE_X2AP_ID_Extension)]; - char dummy22[sizeof(V2XServicesAuthorized)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 23; } - void clear() {type = 0;} - void select_id_Old_eNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_Cause() { set(mandatory); type=2;} - void select_id_TargetCell_ID() { set(mandatory); type=3;} - void select_id_GUMMEI_ID() { set(mandatory); type=4;} - void select_id_UE_ContextInformation() { set(mandatory); type=5;} - void select_id_UE_HistoryInformation() { set(mandatory); type=6;} - void select_id_TraceActivation() { set(optional); type=7;} - void select_id_SRVCCOperationPossible() { set(optional); type=8;} - void select_id_CSGMembershipStatus() { set(optional); type=9;} - void select_id_MobilityInformation() { set(optional); type=10;} - void select_id_Masked_IMEISV() { set(optional); type=11;} - void select_id_UE_HistoryInformationFromTheUE() { set(optional); type=12;} - void select_id_ExpectedUEBehaviour() { set(optional); type=13;} - void select_id_ProSeAuthorized() { set(optional); type=14;} - void select_id_UE_ContextReferenceAtSeNB() { set(optional); type=15;} - void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(optional); type=16;} - void select_id_V2XServicesAuthorized() { set(optional); type=17;} - void select_id_UE_ContextReferenceAtWT() { set(optional); type=18;} - void select_id_NRUESecurityCapabilities() { set(optional); type=19;} - void select_id_UE_ContextReferenceAtSgNB() { set(optional); type=20;} - void select_id_AerialUEsubscriptionInformation() { set(optional); type=21;} - void select_id_Subscription_Based_UE_DifferentiationInfo() { set(optional); type=22;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(mandatory)) { type = 4; return true; } - else if(equal(mandatory)) { type = 5; return true; } - else if(equal(mandatory)) { type = 6; return true; } - else if(equal(optional)) { type = 7; return true; } - else if(equal(optional)) { type = 8; return true; } - else if(equal(optional)) { type = 9; return true; } - else if(equal(optional)) { type = 10; return true; } - else if(equal(optional)) { type = 11; return true; } - else if(equal(optional)) { type = 12; return true; } - else if(equal(optional)) { type = 13; return true; } - else if(equal(optional)) { type = 14; return true; } - else if(equal(optional)) { type = 15; return true; } - else if(equal(optional)) { type = 16; return true; } - else if(equal(optional)) { type = 17; return true; } - else if(equal(optional)) { type = 18; return true; } - else if(equal(optional)) { type = 19; return true; } - else if(equal(optional)) { type = 20; return true; } - else if(equal(optional)) { type = 21; return true; } - else if(equal(optional)) { type = 22; return true; } - else { type = 23; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(mandatory);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(mandatory);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(mandatory);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(optional);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(optional);} return false; - case 11: type = 11; if(v(ref_nested())) { return equal(optional);} return false; - case 12: type = 12; if(v(ref_nested())) { return equal(optional);} return false; - case 13: type = 13; if(v(ref_nested())) { return equal(optional);} return false; - case 14: type = 14; if(v(ref_nested())) { return equal(optional);} return false; - case 15: type = 15; if(v(ref_nested())) { return equal(optional);} return false; - case 16: type = 16; if(v(ref_nested())) { return equal(optional);} return false; - case 17: type = 17; if(v(ref_nested())) { return equal(optional);} return false; - case 18: type = 18; if(v(ref_nested())) { return equal(optional);} return false; - case 19: type = 19; if(v(ref_nested())) { return equal(optional);} return false; - case 20: type = 20; if(v(ref_nested())) { return equal(optional);} return false; - case 21: type = 21; if(v(ref_nested())) { return equal(optional);} return false; - case 22: type = 22; if(v(ref_nested())) { return equal(optional);} return false; - case 23: type = 23; 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}; - - }; - -}; -/* -HandoverRequest ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{HandoverRequest-IEs}}, - ... -} -*/ - -struct HandoverRequest : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "HandoverRequest";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -HandoverRequestAcknowledge-IEs X2AP-PROTOCOL-IES ::= { - { ID id-Old-eNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-New-eNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-E-RABs-Admitted-List CRITICALITY ignore TYPE E-RABs-Admitted-List PRESENCE mandatory}| - { ID id-E-RABs-NotAdmitted-List CRITICALITY ignore TYPE E-RAB-List PRESENCE optional}| - { ID id-TargeteNBtoSource-eNBTransparentContainer CRITICALITY ignore TYPE TargeteNBtoSource-eNBTransparentContainer PRESENCE mandatory}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| - { ID id-UE-ContextKeptIndicator CRITICALITY ignore TYPE UE-ContextKeptIndicator PRESENCE optional}| - { ID id-SeNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-Old-eNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-New-eNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-WT-UE-ContextKeptIndicator CRITICALITY ignore TYPE UE-ContextKeptIndicator PRESENCE optional}, - ... -} -*/ - -struct HandoverRequestAcknowledge_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 12; } - void clear() {type = 0;} - void select_id_Old_eNB_UE_X2AP_ID() { set(id_Old_eNB_UE_X2AP_ID); type=1;} - void select_id_New_eNB_UE_X2AP_ID() { set(id_New_eNB_UE_X2AP_ID); type=2;} - void select_id_E_RABs_Admitted_List() { set(id_E_RABs_Admitted_List); type=3;} - void select_id_E_RABs_NotAdmitted_List() { set(id_E_RABs_NotAdmitted_List); type=4;} - void select_id_TargeteNBtoSource_eNBTransparentContainer() { set(id_TargeteNBtoSource_eNBTransparentContainer); type=5;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=6;} - void select_id_UE_ContextKeptIndicator() { set(id_UE_ContextKeptIndicator); type=7;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=8;} - void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(id_Old_eNB_UE_X2AP_ID_Extension); type=9;} - void select_id_New_eNB_UE_X2AP_ID_Extension() { set(id_New_eNB_UE_X2AP_ID_Extension); type=10;} - void select_id_WT_UE_ContextKeptIndicator() { set(id_WT_UE_ContextKeptIndicator); type=11;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_Old_eNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_New_eNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_E_RABs_Admitted_List)) { type = 3; return true; } - else if(equal(id_E_RABs_NotAdmitted_List)) { type = 4; return true; } - else if(equal(id_TargeteNBtoSource_eNBTransparentContainer)) { type = 5; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 6; return true; } - else if(equal(id_UE_ContextKeptIndicator)) { type = 7; return true; } - else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 8; return true; } - else if(equal(id_Old_eNB_UE_X2AP_ID_Extension)) { type = 9; return true; } - else if(equal(id_New_eNB_UE_X2AP_ID_Extension)) { type = 10; return true; } - else if(equal(id_WT_UE_ContextKeptIndicator)) { type = 11; return true; } - else { type = 12; 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_Old_eNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_New_eNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_List);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_E_RABs_NotAdmitted_List);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_TargeteNBtoSource_eNBTransparentContainer);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(id_UE_ContextKeptIndicator);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID_Extension);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(id_New_eNB_UE_X2AP_ID_Extension);} return false; - case 11: type = 11; if(v(ref_nested())) { return equal(id_WT_UE_ContextKeptIndicator);} return false; - case 12: type = 12; 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 == 12; } - void clear() {type = 0;} - void select_id_Old_eNB_UE_X2AP_ID() { set(ignore); type=1;} - void select_id_New_eNB_UE_X2AP_ID() { set(ignore); type=2;} - void select_id_E_RABs_Admitted_List() { set(ignore); type=3;} - void select_id_E_RABs_NotAdmitted_List() { set(ignore); type=4;} - void select_id_TargeteNBtoSource_eNBTransparentContainer() { set(ignore); type=5;} - void select_id_CriticalityDiagnostics() { set(ignore); type=6;} - void select_id_UE_ContextKeptIndicator() { set(ignore); type=7;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(ignore); type=8;} - void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(ignore); type=9;} - void select_id_New_eNB_UE_X2AP_ID_Extension() { set(reject); type=10;} - void select_id_WT_UE_ContextKeptIndicator() { set(ignore); type=11;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else if(equal(ignore)) { type = 6; return true; } - else if(equal(ignore)) { type = 7; return true; } - else if(equal(ignore)) { type = 8; return true; } - else if(equal(ignore)) { type = 9; return true; } - else if(equal(reject)) { type = 10; return true; } - else if(equal(ignore)) { type = 11; return true; } - else { type = 12; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(ignore);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(ignore);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(ignore);} 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_Old_eNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_Old_eNB_UE_X2AP_ID() const { return get(1); } - UE_X2AP_ID& select_id_New_eNB_UE_X2AP_ID() { return set(2); } - UE_X2AP_ID const* get_id_New_eNB_UE_X2AP_ID() const { return get(2); } - E_RABs_Admitted_List& select_id_E_RABs_Admitted_List() { return set(3); } - E_RABs_Admitted_List const* get_id_E_RABs_Admitted_List() const { return get(3); } - E_RAB_List& select_id_E_RABs_NotAdmitted_List() { return set(4); } - E_RAB_List const* get_id_E_RABs_NotAdmitted_List() const { return get(4); } - TargeteNBtoSource_eNBTransparentContainer& select_id_TargeteNBtoSource_eNBTransparentContainer() { return set(5); } - TargeteNBtoSource_eNBTransparentContainer const* get_id_TargeteNBtoSource_eNBTransparentContainer() const { return get(5); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(6); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(6); } - UE_ContextKeptIndicator& select_id_UE_ContextKeptIndicator() { return set(7); } - UE_ContextKeptIndicator const* get_id_UE_ContextKeptIndicator() const { return get(7); } - UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set(8); } - UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get(8); } - UE_X2AP_ID_Extension& select_id_Old_eNB_UE_X2AP_ID_Extension() { return set(9); } - UE_X2AP_ID_Extension const* get_id_Old_eNB_UE_X2AP_ID_Extension() const { return get(9); } - UE_X2AP_ID_Extension& select_id_New_eNB_UE_X2AP_ID_Extension() { return set(10); } - UE_X2AP_ID_Extension const* get_id_New_eNB_UE_X2AP_ID_Extension() const { return get(10); } - UE_ContextKeptIndicator& select_id_WT_UE_ContextKeptIndicator() { return set(11); } - UE_ContextKeptIndicator const* get_id_WT_UE_ContextKeptIndicator() const { return get(11); } - bool is_unknown() const { return type == 12; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_Old_eNB_UE_X2AP_ID()); return true; - case 2: v(select_id_New_eNB_UE_X2AP_ID()); return true; - case 3: v(select_id_E_RABs_Admitted_List()); return true; - case 4: v(select_id_E_RABs_NotAdmitted_List()); return true; - case 5: v(select_id_TargeteNBtoSource_eNBTransparentContainer()); return true; - case 6: v(select_id_CriticalityDiagnostics()); return true; - case 7: v(select_id_UE_ContextKeptIndicator()); return true; - case 8: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true; - case 9: v(select_id_Old_eNB_UE_X2AP_ID_Extension()); return true; - case 10: v(select_id_New_eNB_UE_X2AP_ID_Extension()); return true; - case 11: v(select_id_WT_UE_ContextKeptIndicator()); return true; - case 12: if(type != 12) {clear(); asn::base::set();} type = 12; 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; - } - 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(CriticalityDiagnostics)]; - char dummy2[sizeof(E_RAB_List)]; - char dummy3[sizeof(E_RABs_Admitted_List)]; - char dummy4[sizeof(TargeteNBtoSource_eNBTransparentContainer)]; - char dummy5[sizeof(UE_ContextKeptIndicator)]; - char dummy6[sizeof(UE_X2AP_ID)]; - char dummy7[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 12; } - void clear() {type = 0;} - void select_id_Old_eNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_New_eNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_E_RABs_Admitted_List() { set(mandatory); type=3;} - void select_id_E_RABs_NotAdmitted_List() { set(optional); type=4;} - void select_id_TargeteNBtoSource_eNBTransparentContainer() { set(mandatory); type=5;} - void select_id_CriticalityDiagnostics() { set(optional); type=6;} - void select_id_UE_ContextKeptIndicator() { set(optional); type=7;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=8;} - void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(optional); type=9;} - void select_id_New_eNB_UE_X2AP_ID_Extension() { set(optional); type=10;} - void select_id_WT_UE_ContextKeptIndicator() { set(optional); type=11;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(mandatory)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else if(equal(optional)) { type = 7; return true; } - else if(equal(optional)) { type = 8; return true; } - else if(equal(optional)) { type = 9; return true; } - else if(equal(optional)) { type = 10; return true; } - else if(equal(optional)) { type = 11; return true; } - else { type = 12; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(mandatory);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(optional);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(optional);} return false; - case 11: type = 11; if(v(ref_nested())) { return equal(optional);} return false; - case 12: type = 12; 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}; - - }; - -}; -/* -HandoverRequestAcknowledge ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{HandoverRequestAcknowledge-IEs}}, - ... -} -*/ - -struct HandoverRequestAcknowledge : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "HandoverRequestAcknowledge";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -LoadInformation-IEs X2AP-PROTOCOL-IES ::= { - { ID id-CellInformation CRITICALITY ignore TYPE CellInformation-List PRESENCE mandatory} , - ... -} -*/ - -struct LoadInformation_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_CellInformation() { set(id_CellInformation); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_CellInformation)) { type = 1; return true; } - else { type = 2; 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_CellInformation);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_CellInformation() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - CellInformation_List& select_id_CellInformation() { return set(1); } - CellInformation_List const* get_id_CellInformation() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_CellInformation()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(CellInformation_List)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_CellInformation() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -LoadInformation ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{LoadInformation-IEs}}, - ... -} -*/ - -struct LoadInformation : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "LoadInformation";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -MeasurementInitiationResult-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct MeasurementInitiationResult_Item_ExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -MeasurementInitiationResult-Item ::= SEQUENCE { - cell-ID ECGI, - measurementFailureCause-List MeasurementFailureCause-List OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {MeasurementInitiationResult-Item-ExtIEs} } OPTIONAL, - ... -} -*/ - -struct MeasurementInitiationResult_Item : asn::sequence<3, 0, true, 2> -{ - static constexpr const char* name() {return "MeasurementInitiationResult-Item";} - using parent_t = asn::sequence<3, 0, true, 2>; - struct cell_ID_t : ECGI - { - static constexpr const char* name() {return "cell_ID_t";} - using parent_t = ECGI; - - }; - cell_ID_t& ref_cell_ID() {return cell_ID;} - cell_ID_t const& ref_cell_ID() const {return cell_ID;} - struct measurementFailureCause_List_t : MeasurementFailureCause_List - { - static constexpr const char* name() {return "measurementFailureCause_List_t";} - using parent_t = MeasurementFailureCause_List; - static constexpr bool optional = true; - - }; - measurementFailureCause_List_t& set_measurementFailureCause_List() { measurementFailureCause_List.setpresent(true); return measurementFailureCause_List;} - measurementFailureCause_List_t const* get_measurementFailureCause_List() const {return measurementFailureCause_List.is_valid() ? &measurementFailureCause_List : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(cell_ID); - v(measurementFailureCause_List); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(cell_ID); - v(measurementFailureCause_List); - v(iE_Extensions); - - }; - void clear() - { - cell_ID.clear(); - measurementFailureCause_List.clear(); - iE_Extensions.clear(); - - }; - private: - cell_ID_t cell_ID; - measurementFailureCause_List_t measurementFailureCause_List; - iE_Extensions_t iE_Extensions; - -}; -/* -MeasurementInitiationResult-ItemIEs X2AP-PROTOCOL-IES ::= { - { ID id-MeasurementInitiationResult-Item CRITICALITY ignore TYPE MeasurementInitiationResult-Item PRESENCE mandatory} -} -*/ - -struct MeasurementInitiationResult_ItemIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_MeasurementInitiationResult_Item() { set(id_MeasurementInitiationResult_Item); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeasurementInitiationResult_Item)) { type = 1; 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_MeasurementInitiationResult_Item);} return false; - 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;} - void clear() {type = 0;} - void select_id_MeasurementInitiationResult_Item() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; 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(ignore);} return false; - 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - MeasurementInitiationResult_Item& select_id_MeasurementInitiationResult_Item() { return set(1); } - MeasurementInitiationResult_Item const* get_id_MeasurementInitiationResult_Item() const { return get(1); } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeasurementInitiationResult_Item()); 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; - } - 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(MeasurementInitiationResult_Item)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - void clear() {type = 0;} - void select_id_MeasurementInitiationResult_Item() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; 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(mandatory);} return false; - 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}; - - }; - -}; -/* -MeasurementInitiationResult-List ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ProtocolIE-Single-Container { {MeasurementInitiationResult-ItemIEs} } -*/ - -struct MeasurementInitiationResult_List_elm : ProtocolIE_Single_Container -{ - static constexpr const char* name() {return "MeasurementInitiationResult_List_elm";} - using parent_t = ProtocolIE_Single_Container; - -}; -struct MeasurementInitiationResult_List : asn::sequenceof -{ - static constexpr const char* name() {return "MeasurementInitiationResult-List";} - using parent_t = asn::sequenceof; - using constraint_t = asn::constraints>; - -}; -/* -MobilityChangeAcknowledge-IEs X2AP-PROTOCOL-IES ::= { - { ID id-ENB1-Cell-ID CRITICALITY reject TYPE ECGI PRESENCE mandatory}| - { ID id-ENB2-Cell-ID CRITICALITY reject TYPE ECGI PRESENCE mandatory}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}, - ... -} -*/ - -struct MobilityChangeAcknowledge_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_ENB1_Cell_ID() { set(id_ENB1_Cell_ID); type=1;} - void select_id_ENB2_Cell_ID() { set(id_ENB2_Cell_ID); type=2;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=3;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_ENB1_Cell_ID)) { type = 1; return true; } - else if(equal(id_ENB2_Cell_ID)) { type = 2; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 3; return true; } - else { type = 4; 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_ENB1_Cell_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_ENB2_Cell_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 4: type = 4; 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 == 4; } - void clear() {type = 0;} - void select_id_ENB1_Cell_ID() { set(reject); type=1;} - void select_id_ENB2_Cell_ID() { set(reject); type=2;} - void select_id_CriticalityDiagnostics() { set(ignore); type=3;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 3; return true; } - else { type = 4; 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(ignore);} return false; - case 4: type = 4; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - ECGI& select_id_ENB1_Cell_ID() { return set(1); } - ECGI const* get_id_ENB1_Cell_ID() const { return get(1); } - ECGI& select_id_ENB2_Cell_ID() { return set(2); } - ECGI const* get_id_ENB2_Cell_ID() const { return get(2); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(3); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(3); } - bool is_unknown() const { return type == 4; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_ENB1_Cell_ID()); return true; - case 2: v(select_id_ENB2_Cell_ID()); return true; - case 3: v(select_id_CriticalityDiagnostics()); return true; - case 4: if(type != 4) {clear(); asn::base::set();} type = 4; 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; - } - 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(CriticalityDiagnostics)]; - char dummy2[sizeof(ECGI)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_ENB1_Cell_ID() { set(mandatory); type=1;} - void select_id_ENB2_Cell_ID() { set(mandatory); type=2;} - void select_id_CriticalityDiagnostics() { set(optional); type=3;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else { type = 4; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; 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}; - - }; - -}; -/* -MobilityChangeAcknowledge ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{MobilityChangeAcknowledge-IEs}}, - ... -} -*/ - -struct MobilityChangeAcknowledge : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "MobilityChangeAcknowledge";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -MobilityChangeFailure-IEs X2AP-PROTOCOL-IES ::= { - { ID id-ENB1-Cell-ID CRITICALITY ignore TYPE ECGI PRESENCE mandatory}| - { ID id-ENB2-Cell-ID CRITICALITY ignore TYPE ECGI PRESENCE mandatory}| - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| - { ID id-ENB2-Mobility-Parameters-Modification-Range CRITICALITY ignore TYPE MobilityParametersModificationRange PRESENCE optional}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}, - ... -} -*/ - -struct MobilityChangeFailure_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_ENB1_Cell_ID() { set(id_ENB1_Cell_ID); type=1;} - void select_id_ENB2_Cell_ID() { set(id_ENB2_Cell_ID); type=2;} - void select_id_Cause() { set(id_Cause); type=3;} - void select_id_ENB2_Mobility_Parameters_Modification_Range() { set(id_ENB2_Mobility_Parameters_Modification_Range); type=4;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=5;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_ENB1_Cell_ID)) { type = 1; return true; } - else if(equal(id_ENB2_Cell_ID)) { type = 2; return true; } - else if(equal(id_Cause)) { type = 3; return true; } - else if(equal(id_ENB2_Mobility_Parameters_Modification_Range)) { type = 4; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 5; return true; } - else { type = 6; 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_ENB1_Cell_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_ENB2_Cell_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_ENB2_Mobility_Parameters_Modification_Range);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 6: type = 6; 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 == 6; } - void clear() {type = 0;} - void select_id_ENB1_Cell_ID() { set(ignore); type=1;} - void select_id_ENB2_Cell_ID() { set(ignore); type=2;} - void select_id_Cause() { set(ignore); type=3;} - void select_id_ENB2_Mobility_Parameters_Modification_Range() { set(ignore); type=4;} - void select_id_CriticalityDiagnostics() { set(ignore); type=5;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else { type = 6; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false; - case 6: type = 6; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - ECGI& select_id_ENB1_Cell_ID() { return set(1); } - ECGI const* get_id_ENB1_Cell_ID() const { return get(1); } - ECGI& select_id_ENB2_Cell_ID() { return set(2); } - ECGI const* get_id_ENB2_Cell_ID() const { return get(2); } - Cause& select_id_Cause() { return set(3); } - Cause const* get_id_Cause() const { return get(3); } - MobilityParametersModificationRange& select_id_ENB2_Mobility_Parameters_Modification_Range() { return set(4); } - MobilityParametersModificationRange const* get_id_ENB2_Mobility_Parameters_Modification_Range() const { return get(4); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(5); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(5); } - bool is_unknown() const { return type == 6; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_ENB1_Cell_ID()); return true; - case 2: v(select_id_ENB2_Cell_ID()); return true; - case 3: v(select_id_Cause()); return true; - case 4: v(select_id_ENB2_Mobility_Parameters_Modification_Range()); return true; - case 5: v(select_id_CriticalityDiagnostics()); return true; - case 6: if(type != 6) {clear(); asn::base::set();} type = 6; 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; - } - 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(Cause)]; - char dummy2[sizeof(CriticalityDiagnostics)]; - char dummy3[sizeof(ECGI)]; - char dummy4[sizeof(MobilityParametersModificationRange)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_ENB1_Cell_ID() { set(mandatory); type=1;} - void select_id_ENB2_Cell_ID() { set(mandatory); type=2;} - void select_id_Cause() { set(mandatory); type=3;} - void select_id_ENB2_Mobility_Parameters_Modification_Range() { set(optional); type=4;} - void select_id_CriticalityDiagnostics() { set(optional); type=5;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else { type = 6; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; 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}; - - }; - -}; -/* -MobilityChangeFailure ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{MobilityChangeFailure-IEs}}, - ... -} -*/ - -struct MobilityChangeFailure : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "MobilityChangeFailure";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -MobilityChangeRequest-IEs X2AP-PROTOCOL-IES ::= { - { ID id-ENB1-Cell-ID CRITICALITY reject TYPE ECGI PRESENCE mandatory}| - { ID id-ENB2-Cell-ID CRITICALITY reject TYPE ECGI PRESENCE mandatory}| - { ID id-ENB1-Mobility-Parameters CRITICALITY ignore TYPE MobilityParametersInformation PRESENCE optional}| - { ID id-ENB2-Proposed-Mobility-Parameters CRITICALITY reject TYPE MobilityParametersInformation PRESENCE mandatory}| - { ID id-Cause CRITICALITY reject TYPE Cause PRESENCE mandatory}, - ... -} -*/ - -struct MobilityChangeRequest_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_ENB1_Cell_ID() { set(id_ENB1_Cell_ID); type=1;} - void select_id_ENB2_Cell_ID() { set(id_ENB2_Cell_ID); type=2;} - void select_id_ENB1_Mobility_Parameters() { set(id_ENB1_Mobility_Parameters); type=3;} - void select_id_ENB2_Proposed_Mobility_Parameters() { set(id_ENB2_Proposed_Mobility_Parameters); type=4;} - void select_id_Cause() { set(id_Cause); type=5;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_ENB1_Cell_ID)) { type = 1; return true; } - else if(equal(id_ENB2_Cell_ID)) { type = 2; return true; } - else if(equal(id_ENB1_Mobility_Parameters)) { type = 3; return true; } - else if(equal(id_ENB2_Proposed_Mobility_Parameters)) { type = 4; return true; } - else if(equal(id_Cause)) { type = 5; return true; } - else { type = 6; 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_ENB1_Cell_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_ENB2_Cell_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_ENB1_Mobility_Parameters);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_ENB2_Proposed_Mobility_Parameters);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_Cause);} return false; - case 6: type = 6; 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 == 6; } - void clear() {type = 0;} - void select_id_ENB1_Cell_ID() { set(reject); type=1;} - void select_id_ENB2_Cell_ID() { set(reject); type=2;} - void select_id_ENB1_Mobility_Parameters() { set(ignore); type=3;} - void select_id_ENB2_Proposed_Mobility_Parameters() { set(reject); type=4;} - void select_id_Cause() { set(reject); type=5;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 3; return true; } - else if(equal(reject)) { type = 4; return true; } - else if(equal(reject)) { type = 5; return true; } - else { type = 6; 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(ignore);} 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - ECGI& select_id_ENB1_Cell_ID() { return set(1); } - ECGI const* get_id_ENB1_Cell_ID() const { return get(1); } - ECGI& select_id_ENB2_Cell_ID() { return set(2); } - ECGI const* get_id_ENB2_Cell_ID() const { return get(2); } - MobilityParametersInformation& select_id_ENB1_Mobility_Parameters() { return set(3); } - MobilityParametersInformation const* get_id_ENB1_Mobility_Parameters() const { return get(3); } - MobilityParametersInformation& select_id_ENB2_Proposed_Mobility_Parameters() { return set(4); } - MobilityParametersInformation const* get_id_ENB2_Proposed_Mobility_Parameters() const { return get(4); } - Cause& select_id_Cause() { return set(5); } - Cause const* get_id_Cause() const { return get(5); } - bool is_unknown() const { return type == 6; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_ENB1_Cell_ID()); return true; - case 2: v(select_id_ENB2_Cell_ID()); return true; - case 3: v(select_id_ENB1_Mobility_Parameters()); return true; - case 4: v(select_id_ENB2_Proposed_Mobility_Parameters()); return true; - case 5: v(select_id_Cause()); return true; - case 6: if(type != 6) {clear(); asn::base::set();} type = 6; 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; - } - 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(Cause)]; - char dummy2[sizeof(ECGI)]; - char dummy3[sizeof(MobilityParametersInformation)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_ENB1_Cell_ID() { set(mandatory); type=1;} - void select_id_ENB2_Cell_ID() { set(mandatory); type=2;} - void select_id_ENB1_Mobility_Parameters() { set(optional); type=3;} - void select_id_ENB2_Proposed_Mobility_Parameters() { set(mandatory); type=4;} - void select_id_Cause() { set(mandatory); type=5;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else if(equal(mandatory)) { type = 4; return true; } - else if(equal(mandatory)) { type = 5; return true; } - else { type = 6; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(mandatory);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(mandatory);} return false; - case 6: type = 6; 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}; - - }; - -}; -/* -MobilityChangeRequest ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{MobilityChangeRequest-IEs}}, - ... -} -*/ - -struct MobilityChangeRequest : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "MobilityChangeRequest";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -PartialSuccessIndicator ::= ENUMERATED { - partial-success-allowed, -... -} -*/ - -struct PartialSuccessIndicator : asn::enumerated<1, 0, true> -{ - static constexpr const char* name() {return "PartialSuccessIndicator";} - using parent_t = asn::enumerated<1, 0, true>; - typedef enum { - partial_success_allowed - } index_t; - -}; - -/* -PrivateMessage-IEs X2AP-PRIVATE-IES ::= { - ... -} -*/ - -struct PrivateMessage_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PRIVATE_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PRIVATE_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PRIVATE_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -PrivateMessage ::= SEQUENCE { - privateIEs PrivateIE-Container {{PrivateMessage-IEs}}, - ... -} -*/ - -struct PrivateMessage : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "PrivateMessage";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct privateIEs_t : PrivateIE_Container - { - static constexpr const char* name() {return "privateIEs_t";} - using parent_t = PrivateIE_Container; - - }; - privateIEs_t& ref_privateIEs() {return privateIEs;} - privateIEs_t const& ref_privateIEs() const {return privateIEs;} - template void decode(V& v) - { - v(privateIEs); - - }; - template void encode(V& v) const - { - v(privateIEs); - - }; - void clear() - { - privateIEs.clear(); - - }; - private: - privateIEs_t privateIEs; - -}; -/* -RLFIndication-IEs X2AP-PROTOCOL-IES ::= { - { ID id-FailureCellPCI CRITICALITY ignore TYPE PCI PRESENCE mandatory}| - { ID id-Re-establishmentCellECGI CRITICALITY ignore TYPE ECGI PRESENCE mandatory}| - { ID id-FailureCellCRNTI CRITICALITY ignore TYPE CRNTI PRESENCE mandatory}| - { ID id-ShortMAC-I CRITICALITY ignore TYPE ShortMAC-I PRESENCE optional}| - { ID id-UE-RLF-Report-Container CRITICALITY ignore TYPE UE-RLF-Report-Container PRESENCE optional}| - { ID id-RRCConnSetupIndicator CRITICALITY reject TYPE RRCConnSetupIndicator PRESENCE optional}| - { ID id-RRCConnReestabIndicator CRITICALITY ignore TYPE RRCConnReestabIndicator PRESENCE optional}| - { ID id-UE-RLF-Report-Container-for-extended-bands CRITICALITY ignore TYPE UE-RLF-Report-Container-for-extended-bands PRESENCE optional}, - ... -} -*/ - -struct RLFIndication_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 9; } - void clear() {type = 0;} - void select_id_FailureCellPCI() { set(id_FailureCellPCI); type=1;} - void select_id_Re_establishmentCellECGI() { set(id_Re_establishmentCellECGI); type=2;} - void select_id_FailureCellCRNTI() { set(id_FailureCellCRNTI); type=3;} - void select_id_ShortMAC_I() { set(id_ShortMAC_I); type=4;} - void select_id_UE_RLF_Report_Container() { set(id_UE_RLF_Report_Container); type=5;} - void select_id_RRCConnSetupIndicator() { set(id_RRCConnSetupIndicator); type=6;} - void select_id_RRCConnReestabIndicator() { set(id_RRCConnReestabIndicator); type=7;} - void select_id_UE_RLF_Report_Container_for_extended_bands() { set(id_UE_RLF_Report_Container_for_extended_bands); type=8;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_FailureCellPCI)) { type = 1; return true; } - else if(equal(id_Re_establishmentCellECGI)) { type = 2; return true; } - else if(equal(id_FailureCellCRNTI)) { type = 3; return true; } - else if(equal(id_ShortMAC_I)) { type = 4; return true; } - else if(equal(id_UE_RLF_Report_Container)) { type = 5; return true; } - else if(equal(id_RRCConnSetupIndicator)) { type = 6; return true; } - else if(equal(id_RRCConnReestabIndicator)) { type = 7; return true; } - else if(equal(id_UE_RLF_Report_Container_for_extended_bands)) { type = 8; return true; } - else { type = 9; 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_FailureCellPCI);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_Re_establishmentCellECGI);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_FailureCellCRNTI);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_ShortMAC_I);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_UE_RLF_Report_Container);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_RRCConnSetupIndicator);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(id_RRCConnReestabIndicator);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(id_UE_RLF_Report_Container_for_extended_bands);} return false; - case 9: type = 9; 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 == 9; } - void clear() {type = 0;} - void select_id_FailureCellPCI() { set(ignore); type=1;} - void select_id_Re_establishmentCellECGI() { set(ignore); type=2;} - void select_id_FailureCellCRNTI() { set(ignore); type=3;} - void select_id_ShortMAC_I() { set(ignore); type=4;} - void select_id_UE_RLF_Report_Container() { set(ignore); type=5;} - void select_id_RRCConnSetupIndicator() { set(reject); type=6;} - void select_id_RRCConnReestabIndicator() { set(ignore); type=7;} - void select_id_UE_RLF_Report_Container_for_extended_bands() { set(ignore); type=8;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else if(equal(reject)) { type = 6; return true; } - else if(equal(ignore)) { type = 7; return true; } - else if(equal(ignore)) { type = 8; return true; } - else { type = 9; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} 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(ignore);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(ignore);} return false; - case 9: type = 9; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - PCI& select_id_FailureCellPCI() { return set(1); } - PCI const* get_id_FailureCellPCI() const { return get(1); } - ECGI& select_id_Re_establishmentCellECGI() { return set(2); } - ECGI const* get_id_Re_establishmentCellECGI() const { return get(2); } - CRNTI& select_id_FailureCellCRNTI() { return set(3); } - CRNTI const* get_id_FailureCellCRNTI() const { return get(3); } - ShortMAC_I& select_id_ShortMAC_I() { return set(4); } - ShortMAC_I const* get_id_ShortMAC_I() const { return get(4); } - UE_RLF_Report_Container& select_id_UE_RLF_Report_Container() { return set(5); } - UE_RLF_Report_Container const* get_id_UE_RLF_Report_Container() const { return get(5); } - RRCConnSetupIndicator& select_id_RRCConnSetupIndicator() { return set(6); } - RRCConnSetupIndicator const* get_id_RRCConnSetupIndicator() const { return get(6); } - RRCConnReestabIndicator& select_id_RRCConnReestabIndicator() { return set(7); } - RRCConnReestabIndicator const* get_id_RRCConnReestabIndicator() const { return get(7); } - UE_RLF_Report_Container_for_extended_bands& select_id_UE_RLF_Report_Container_for_extended_bands() { return set(8); } - UE_RLF_Report_Container_for_extended_bands const* get_id_UE_RLF_Report_Container_for_extended_bands() const { return get(8); } - bool is_unknown() const { return type == 9; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_FailureCellPCI()); return true; - case 2: v(select_id_Re_establishmentCellECGI()); return true; - case 3: v(select_id_FailureCellCRNTI()); return true; - case 4: v(select_id_ShortMAC_I()); return true; - case 5: v(select_id_UE_RLF_Report_Container()); return true; - case 6: v(select_id_RRCConnSetupIndicator()); return true; - case 7: v(select_id_RRCConnReestabIndicator()); return true; - case 8: v(select_id_UE_RLF_Report_Container_for_extended_bands()); return true; - case 9: if(type != 9) {clear(); asn::base::set();} type = 9; 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; - } - 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(CRNTI)]; - char dummy2[sizeof(ECGI)]; - char dummy3[sizeof(PCI)]; - char dummy4[sizeof(RRCConnReestabIndicator)]; - char dummy5[sizeof(RRCConnSetupIndicator)]; - char dummy6[sizeof(ShortMAC_I)]; - char dummy7[sizeof(UE_RLF_Report_Container)]; - char dummy8[sizeof(UE_RLF_Report_Container_for_extended_bands)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 9; } - void clear() {type = 0;} - void select_id_FailureCellPCI() { set(mandatory); type=1;} - void select_id_Re_establishmentCellECGI() { set(mandatory); type=2;} - void select_id_FailureCellCRNTI() { set(mandatory); type=3;} - void select_id_ShortMAC_I() { set(optional); type=4;} - void select_id_UE_RLF_Report_Container() { set(optional); type=5;} - void select_id_RRCConnSetupIndicator() { set(optional); type=6;} - void select_id_RRCConnReestabIndicator() { set(optional); type=7;} - void select_id_UE_RLF_Report_Container_for_extended_bands() { set(optional); type=8;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else if(equal(optional)) { type = 7; return true; } - else if(equal(optional)) { type = 8; return true; } - else { type = 9; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false; - case 9: type = 9; 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}; - - }; - -}; -/* -RLFIndication ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{RLFIndication-IEs}}, - ... -} -*/ - -struct RLFIndication : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "RLFIndication";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -RNL-Header-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct RNL_Header_Item_ExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -RNL-Header ::= SEQUENCE { - source-GlobalENB-ID GlobalENB-ID, - target-GlobalENB-ID GlobalENB-ID OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {RNL-Header-Item-ExtIEs} } OPTIONAL, - ... -} -*/ - -struct RNL_Header : asn::sequence<3, 0, true, 2> -{ - static constexpr const char* name() {return "RNL-Header";} - using parent_t = asn::sequence<3, 0, true, 2>; - struct source_GlobalENB_ID_t : GlobalENB_ID - { - static constexpr const char* name() {return "source_GlobalENB_ID_t";} - using parent_t = GlobalENB_ID; - - }; - source_GlobalENB_ID_t& ref_source_GlobalENB_ID() {return source_GlobalENB_ID;} - source_GlobalENB_ID_t const& ref_source_GlobalENB_ID() const {return source_GlobalENB_ID;} - struct target_GlobalENB_ID_t : GlobalENB_ID - { - static constexpr const char* name() {return "target_GlobalENB_ID_t";} - using parent_t = GlobalENB_ID; - static constexpr bool optional = true; - - }; - target_GlobalENB_ID_t& set_target_GlobalENB_ID() { target_GlobalENB_ID.setpresent(true); return target_GlobalENB_ID;} - target_GlobalENB_ID_t const* get_target_GlobalENB_ID() const {return target_GlobalENB_ID.is_valid() ? &target_GlobalENB_ID : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(source_GlobalENB_ID); - v(target_GlobalENB_ID); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(source_GlobalENB_ID); - v(target_GlobalENB_ID); - v(iE_Extensions); - - }; - void clear() - { - source_GlobalENB_ID.clear(); - target_GlobalENB_ID.clear(); - iE_Extensions.clear(); - - }; - private: - source_GlobalENB_ID_t source_GlobalENB_ID; - target_GlobalENB_ID_t target_GlobalENB_ID; - iE_Extensions_t iE_Extensions; - -}; -/* -RRCTransfer-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SgNB-UE-X2AP-ID CRITICALITY reject TYPE SgNB-UE-X2AP-ID PRESENCE mandatory}| - { ID id-SplitSRB CRITICALITY reject TYPE SplitSRB PRESENCE optional}| - { ID id-UENRMeasurement CRITICALITY reject TYPE UENRMeasurement PRESENCE optional}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}, - ... -} -*/ - -struct RRCTransfer_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;} - void select_id_SplitSRB() { set(id_SplitSRB); type=3;} - void select_id_UENRMeasurement() { set(id_UENRMeasurement); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=5;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_SplitSRB)) { type = 3; return true; } - else if(equal(id_UENRMeasurement)) { type = 4; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 5; return true; } - else { type = 6; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_SplitSRB);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_UENRMeasurement);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 6: type = 6; 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 == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(reject); type=2;} - void select_id_SplitSRB() { set(reject); type=3;} - void select_id_UENRMeasurement() { set(reject); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=5;} - X2AP_PROTOCOL_IES::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 { type = 6; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set(2); } - SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get(2); } - SplitSRB& select_id_SplitSRB() { return set(3); } - SplitSRB const* get_id_SplitSRB() const { return get(3); } - UENRMeasurement& select_id_UENRMeasurement() { return set(4); } - UENRMeasurement const* get_id_UENRMeasurement() const { return get(4); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(5); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(5); } - bool is_unknown() const { return type == 6; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SgNB_UE_X2AP_ID()); return true; - case 3: v(select_id_SplitSRB()); return true; - case 4: v(select_id_UENRMeasurement()); return true; - case 5: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 6: if(type != 6) {clear(); asn::base::set();} type = 6; 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; - } - 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(SgNB_UE_X2AP_ID)]; - char dummy2[sizeof(SplitSRB)]; - char dummy3[sizeof(UENRMeasurement)]; - char dummy4[sizeof(UE_X2AP_ID)]; - char dummy5[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_SplitSRB() { set(optional); type=3;} - void select_id_UENRMeasurement() { set(optional); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=5;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else { type = 6; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; 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}; - - }; - -}; -/* -RRCTransfer ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{RRCTransfer-IEs}}, - ... -} -*/ - -struct RRCTransfer : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "RRCTransfer";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -ReportingPeriodicity ::= ENUMERATED { - one-thousand-ms, - two-thousand-ms, - five-thousand-ms, - ten-thousand-ms, -... -} -*/ - -struct ReportingPeriodicity : asn::enumerated<4, 0, true> -{ - static constexpr const char* name() {return "ReportingPeriodicity";} - using parent_t = asn::enumerated<4, 0, true>; - typedef enum { - one_thousand_ms - ,two_thousand_ms - ,five_thousand_ms - ,ten_thousand_ms - } index_t; - -}; - -/* -ResetRequest-IEs X2AP-PROTOCOL-IES ::= { - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}, - ... -} -*/ - -struct ResetRequest_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_Cause() { set(id_Cause); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_Cause)) { type = 1; return true; } - else { type = 2; 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_Cause);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_Cause() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - Cause& select_id_Cause() { return set(1); } - Cause const* get_id_Cause() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_Cause()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(Cause)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_Cause() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -ResetRequest ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ResetRequest-IEs}}, - ... -} -*/ - -struct ResetRequest : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "ResetRequest";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -ResetResponse-IEs X2AP-PROTOCOL-IES ::= { - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, - ... -} -*/ - -struct ResetResponse_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_CriticalityDiagnostics)) { type = 1; return true; } - else { type = 2; 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_CriticalityDiagnostics);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_CriticalityDiagnostics() { set(ignore); type=1;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(1); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_CriticalityDiagnostics()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(CriticalityDiagnostics)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_CriticalityDiagnostics() { set(optional); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else { type = 2; 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(optional);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -ResetResponse ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ResetResponse-IEs}}, - ... -} -*/ - -struct ResetResponse : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "ResetResponse";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -ResourceStatusFailure-IEs X2AP-PROTOCOL-IES ::= { - { ID id-ENB1-Measurement-ID CRITICALITY reject TYPE Measurement-ID PRESENCE mandatory}| - { ID id-ENB2-Measurement-ID CRITICALITY reject TYPE Measurement-ID PRESENCE mandatory}| - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| - { ID id-CompleteFailureCauseInformation-List CRITICALITY ignore TYPE CompleteFailureCauseInformation-List PRESENCE optional}, - ... -} -*/ - -struct ResourceStatusFailure_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_ENB1_Measurement_ID() { set(id_ENB1_Measurement_ID); type=1;} - void select_id_ENB2_Measurement_ID() { set(id_ENB2_Measurement_ID); type=2;} - void select_id_Cause() { set(id_Cause); type=3;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;} - void select_id_CompleteFailureCauseInformation_List() { set(id_CompleteFailureCauseInformation_List); type=5;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_ENB1_Measurement_ID)) { type = 1; return true; } - else if(equal(id_ENB2_Measurement_ID)) { type = 2; return true; } - else if(equal(id_Cause)) { type = 3; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; } - else if(equal(id_CompleteFailureCauseInformation_List)) { type = 5; return true; } - else { type = 6; 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_ENB1_Measurement_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_ENB2_Measurement_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_CompleteFailureCauseInformation_List);} return false; - case 6: type = 6; 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 == 6; } - void clear() {type = 0;} - void select_id_ENB1_Measurement_ID() { set(reject); type=1;} - void select_id_ENB2_Measurement_ID() { set(reject); type=2;} - void select_id_Cause() { set(ignore); type=3;} - void select_id_CriticalityDiagnostics() { set(ignore); type=4;} - void select_id_CompleteFailureCauseInformation_List() { set(ignore); type=5;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else { type = 6; 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(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false; - case 6: type = 6; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - Measurement_ID& select_id_ENB1_Measurement_ID() { return set(1); } - Measurement_ID const* get_id_ENB1_Measurement_ID() const { return get(1); } - Measurement_ID& select_id_ENB2_Measurement_ID() { return set(2); } - Measurement_ID const* get_id_ENB2_Measurement_ID() const { return get(2); } - Cause& select_id_Cause() { return set(3); } - Cause const* get_id_Cause() const { return get(3); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(4); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(4); } - CompleteFailureCauseInformation_List& select_id_CompleteFailureCauseInformation_List() { return set(5); } - CompleteFailureCauseInformation_List const* get_id_CompleteFailureCauseInformation_List() const { return get(5); } - bool is_unknown() const { return type == 6; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_ENB1_Measurement_ID()); return true; - case 2: v(select_id_ENB2_Measurement_ID()); return true; - case 3: v(select_id_Cause()); return true; - case 4: v(select_id_CriticalityDiagnostics()); return true; - case 5: v(select_id_CompleteFailureCauseInformation_List()); return true; - case 6: if(type != 6) {clear(); asn::base::set();} type = 6; 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; - } - 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(Cause)]; - char dummy2[sizeof(CompleteFailureCauseInformation_List)]; - char dummy3[sizeof(CriticalityDiagnostics)]; - char dummy4[sizeof(Measurement_ID)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_ENB1_Measurement_ID() { set(mandatory); type=1;} - void select_id_ENB2_Measurement_ID() { set(mandatory); type=2;} - void select_id_Cause() { set(mandatory); type=3;} - void select_id_CriticalityDiagnostics() { set(optional); type=4;} - void select_id_CompleteFailureCauseInformation_List() { set(optional); type=5;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else { type = 6; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; 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}; - - }; - -}; -/* -ResourceStatusFailure ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ResourceStatusFailure-IEs}}, - ... -} -*/ - -struct ResourceStatusFailure : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "ResourceStatusFailure";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -ResourceStatusRequest-IEs X2AP-PROTOCOL-IES ::= { - { ID id-ENB1-Measurement-ID CRITICALITY reject TYPE Measurement-ID PRESENCE mandatory}| - { ID id-ENB2-Measurement-ID CRITICALITY ignore TYPE Measurement-ID PRESENCE conditional}|-- The IE shall be present if the Registration Request IE is set to “Stop”, “Partial stop” or to “Add”-- - { ID id-Registration-Request CRITICALITY reject TYPE Registration-Request PRESENCE mandatory}| - { ID id-ReportCharacteristics CRITICALITY reject TYPE ReportCharacteristics PRESENCE optional}| - { ID id-CellToReport CRITICALITY ignore TYPE CellToReport-List PRESENCE mandatory}| - { ID id-ReportingPeriodicity CRITICALITY ignore TYPE ReportingPeriodicity PRESENCE optional}| - { ID id-PartialSuccessIndicator CRITICALITY ignore TYPE PartialSuccessIndicator PRESENCE optional}| - { ID id-ReportingPeriodicityRSRPMR CRITICALITY ignore TYPE ReportingPeriodicityRSRPMR PRESENCE optional}| - { ID id-ReportingPeriodicityCSIR CRITICALITY ignore TYPE ReportingPeriodicityCSIR PRESENCE optional}, - ... -} -*/ - -struct ResourceStatusRequest_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 10; } - void clear() {type = 0;} - void select_id_ENB1_Measurement_ID() { set(id_ENB1_Measurement_ID); type=1;} - void select_id_ENB2_Measurement_ID() { set(id_ENB2_Measurement_ID); type=2;} - void select_id_Registration_Request() { set(id_Registration_Request); type=3;} - void select_id_ReportCharacteristics() { set(id_ReportCharacteristics); type=4;} - void select_id_CellToReport() { set(id_CellToReport); type=5;} - void select_id_ReportingPeriodicity() { set(id_ReportingPeriodicity); type=6;} - void select_id_PartialSuccessIndicator() { set(id_PartialSuccessIndicator); type=7;} - void select_id_ReportingPeriodicityRSRPMR() { set(id_ReportingPeriodicityRSRPMR); type=8;} - void select_id_ReportingPeriodicityCSIR() { set(id_ReportingPeriodicityCSIR); type=9;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_ENB1_Measurement_ID)) { type = 1; return true; } - else if(equal(id_ENB2_Measurement_ID)) { type = 2; return true; } - else if(equal(id_Registration_Request)) { type = 3; return true; } - else if(equal(id_ReportCharacteristics)) { type = 4; return true; } - else if(equal(id_CellToReport)) { type = 5; return true; } - else if(equal(id_ReportingPeriodicity)) { type = 6; return true; } - else if(equal(id_PartialSuccessIndicator)) { type = 7; return true; } - else if(equal(id_ReportingPeriodicityRSRPMR)) { type = 8; return true; } - else if(equal(id_ReportingPeriodicityCSIR)) { type = 9; return true; } - else { type = 10; 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_ENB1_Measurement_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_ENB2_Measurement_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_Registration_Request);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_ReportCharacteristics);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_CellToReport);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_ReportingPeriodicity);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(id_PartialSuccessIndicator);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(id_ReportingPeriodicityRSRPMR);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(id_ReportingPeriodicityCSIR);} return false; - case 10: type = 10; 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 == 10; } - void clear() {type = 0;} - void select_id_ENB1_Measurement_ID() { set(reject); type=1;} - void select_id_ENB2_Measurement_ID() { set(ignore); type=2;} - void select_id_Registration_Request() { set(reject); type=3;} - void select_id_ReportCharacteristics() { set(reject); type=4;} - void select_id_CellToReport() { set(ignore); type=5;} - void select_id_ReportingPeriodicity() { set(ignore); type=6;} - void select_id_PartialSuccessIndicator() { set(ignore); type=7;} - void select_id_ReportingPeriodicityRSRPMR() { set(ignore); type=8;} - void select_id_ReportingPeriodicityCSIR() { set(ignore); type=9;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 2; return true; } - else if(equal(reject)) { type = 3; return true; } - else if(equal(reject)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else if(equal(ignore)) { type = 6; return true; } - else if(equal(ignore)) { type = 7; return true; } - else if(equal(ignore)) { type = 8; return true; } - else if(equal(ignore)) { type = 9; return true; } - else { type = 10; 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(ignore);} 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(ignore);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(ignore);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(ignore);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(ignore);} return false; - case 10: type = 10; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - Measurement_ID& select_id_ENB1_Measurement_ID() { return set(1); } - Measurement_ID const* get_id_ENB1_Measurement_ID() const { return get(1); } - Measurement_ID& select_id_ENB2_Measurement_ID() { return set(2); } - Measurement_ID const* get_id_ENB2_Measurement_ID() const { return get(2); } - Registration_Request& select_id_Registration_Request() { return set(3); } - Registration_Request const* get_id_Registration_Request() const { return get(3); } - ReportCharacteristics& select_id_ReportCharacteristics() { return set(4); } - ReportCharacteristics const* get_id_ReportCharacteristics() const { return get(4); } - CellToReport_List& select_id_CellToReport() { return set(5); } - CellToReport_List const* get_id_CellToReport() const { return get(5); } - ReportingPeriodicity& select_id_ReportingPeriodicity() { return set(6); } - ReportingPeriodicity const* get_id_ReportingPeriodicity() const { return get(6); } - PartialSuccessIndicator& select_id_PartialSuccessIndicator() { return set(7); } - PartialSuccessIndicator const* get_id_PartialSuccessIndicator() const { return get(7); } - ReportingPeriodicityRSRPMR& select_id_ReportingPeriodicityRSRPMR() { return set(8); } - ReportingPeriodicityRSRPMR const* get_id_ReportingPeriodicityRSRPMR() const { return get(8); } - ReportingPeriodicityCSIR& select_id_ReportingPeriodicityCSIR() { return set(9); } - ReportingPeriodicityCSIR const* get_id_ReportingPeriodicityCSIR() const { return get(9); } - bool is_unknown() const { return type == 10; } - 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_ENB1_Measurement_ID()); return true; - case 2: v(select_id_ENB2_Measurement_ID()); return true; - case 3: v(select_id_Registration_Request()); return true; - case 4: v(select_id_ReportCharacteristics()); return true; - case 5: v(select_id_CellToReport()); return true; - case 6: v(select_id_ReportingPeriodicity()); return true; - case 7: v(select_id_PartialSuccessIndicator()); return true; - case 8: v(select_id_ReportingPeriodicityRSRPMR()); return true; - case 9: v(select_id_ReportingPeriodicityCSIR()); return true; - case 10: if(type != 10) {clear(); asn::base::set();} type = 10; 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(CellToReport_List)]; - char dummy2[sizeof(Measurement_ID)]; - char dummy3[sizeof(PartialSuccessIndicator)]; - char dummy4[sizeof(Registration_Request)]; - char dummy5[sizeof(ReportCharacteristics)]; - char dummy6[sizeof(ReportingPeriodicity)]; - char dummy7[sizeof(ReportingPeriodicityCSIR)]; - char dummy8[sizeof(ReportingPeriodicityRSRPMR)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 10; } - void clear() {type = 0;} - void select_id_ENB1_Measurement_ID() { set(mandatory); type=1;} - void select_id_ENB2_Measurement_ID() { set(conditional); type=2;} - void select_id_Registration_Request() { set(mandatory); type=3;} - void select_id_ReportCharacteristics() { set(optional); type=4;} - void select_id_CellToReport() { set(mandatory); type=5;} - void select_id_ReportingPeriodicity() { set(optional); type=6;} - void select_id_PartialSuccessIndicator() { set(optional); type=7;} - void select_id_ReportingPeriodicityRSRPMR() { set(optional); type=8;} - void select_id_ReportingPeriodicityCSIR() { set(optional); type=9;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(conditional)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(mandatory)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else if(equal(optional)) { type = 7; return true; } - else if(equal(optional)) { type = 8; return true; } - else if(equal(optional)) { type = 9; return true; } - else { type = 10; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(conditional);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(mandatory);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(optional);} return false; - case 10: type = 10; 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}; - - }; - -}; -/* -ResourceStatusRequest ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ResourceStatusRequest-IEs}}, - ... -} -*/ - -struct ResourceStatusRequest : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "ResourceStatusRequest";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -ResourceStatusResponse-IEs X2AP-PROTOCOL-IES ::= { - { ID id-ENB1-Measurement-ID CRITICALITY reject TYPE Measurement-ID PRESENCE mandatory}| - { ID id-ENB2-Measurement-ID CRITICALITY reject TYPE Measurement-ID PRESENCE mandatory}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| - { ID id-MeasurementInitiationResult-List CRITICALITY ignore TYPE MeasurementInitiationResult-List PRESENCE optional}, - ... -} -*/ - -struct ResourceStatusResponse_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 5; } - void clear() {type = 0;} - void select_id_ENB1_Measurement_ID() { set(id_ENB1_Measurement_ID); type=1;} - void select_id_ENB2_Measurement_ID() { set(id_ENB2_Measurement_ID); type=2;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=3;} - void select_id_MeasurementInitiationResult_List() { set(id_MeasurementInitiationResult_List); type=4;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_ENB1_Measurement_ID)) { type = 1; return true; } - else if(equal(id_ENB2_Measurement_ID)) { type = 2; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 3; return true; } - else if(equal(id_MeasurementInitiationResult_List)) { type = 4; return true; } - else { type = 5; 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_ENB1_Measurement_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_ENB2_Measurement_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_MeasurementInitiationResult_List);} return false; - case 5: type = 5; 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 == 5; } - void clear() {type = 0;} - void select_id_ENB1_Measurement_ID() { set(reject); type=1;} - void select_id_ENB2_Measurement_ID() { set(reject); type=2;} - void select_id_CriticalityDiagnostics() { set(ignore); type=3;} - void select_id_MeasurementInitiationResult_List() { set(ignore); type=4;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else { type = 5; 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(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - Measurement_ID& select_id_ENB1_Measurement_ID() { return set(1); } - Measurement_ID const* get_id_ENB1_Measurement_ID() const { return get(1); } - Measurement_ID& select_id_ENB2_Measurement_ID() { return set(2); } - Measurement_ID const* get_id_ENB2_Measurement_ID() const { return get(2); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(3); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(3); } - MeasurementInitiationResult_List& select_id_MeasurementInitiationResult_List() { return set(4); } - MeasurementInitiationResult_List const* get_id_MeasurementInitiationResult_List() const { return get(4); } - bool is_unknown() const { return type == 5; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: var.destroy(); break; - case 4: 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_ENB1_Measurement_ID()); return true; - case 2: v(select_id_ENB2_Measurement_ID()); return true; - case 3: v(select_id_CriticalityDiagnostics()); return true; - case 4: v(select_id_MeasurementInitiationResult_List()); return true; - case 5: if(type != 5) {clear(); asn::base::set();} type = 5; 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; - } - 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(CriticalityDiagnostics)]; - char dummy2[sizeof(MeasurementInitiationResult_List)]; - char dummy3[sizeof(Measurement_ID)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 5; } - void clear() {type = 0;} - void select_id_ENB1_Measurement_ID() { set(mandatory); type=1;} - void select_id_ENB2_Measurement_ID() { set(mandatory); type=2;} - void select_id_CriticalityDiagnostics() { set(optional); type=3;} - void select_id_MeasurementInitiationResult_List() { set(optional); type=4;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else { type = 5; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; 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}; - - }; - -}; -/* -ResourceStatusResponse ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ResourceStatusResponse-IEs}}, - ... -} -*/ - -struct ResourceStatusResponse : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "ResourceStatusResponse";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -ResourceStatusUpdate-IEs X2AP-PROTOCOL-IES ::= { - { ID id-ENB1-Measurement-ID CRITICALITY reject TYPE Measurement-ID PRESENCE mandatory}| - { ID id-ENB2-Measurement-ID CRITICALITY reject TYPE Measurement-ID PRESENCE mandatory}| - { ID id-CellMeasurementResult CRITICALITY ignore TYPE CellMeasurementResult-List PRESENCE mandatory}, - ... -} -*/ - -struct ResourceStatusUpdate_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_ENB1_Measurement_ID() { set(id_ENB1_Measurement_ID); type=1;} - void select_id_ENB2_Measurement_ID() { set(id_ENB2_Measurement_ID); type=2;} - void select_id_CellMeasurementResult() { set(id_CellMeasurementResult); type=3;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_ENB1_Measurement_ID)) { type = 1; return true; } - else if(equal(id_ENB2_Measurement_ID)) { type = 2; return true; } - else if(equal(id_CellMeasurementResult)) { type = 3; return true; } - else { type = 4; 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_ENB1_Measurement_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_ENB2_Measurement_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_CellMeasurementResult);} return false; - case 4: type = 4; 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 == 4; } - void clear() {type = 0;} - void select_id_ENB1_Measurement_ID() { set(reject); type=1;} - void select_id_ENB2_Measurement_ID() { set(reject); type=2;} - void select_id_CellMeasurementResult() { set(ignore); type=3;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 3; return true; } - else { type = 4; 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(ignore);} return false; - case 4: type = 4; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - Measurement_ID& select_id_ENB1_Measurement_ID() { return set(1); } - Measurement_ID const* get_id_ENB1_Measurement_ID() const { return get(1); } - Measurement_ID& select_id_ENB2_Measurement_ID() { return set(2); } - Measurement_ID const* get_id_ENB2_Measurement_ID() const { return get(2); } - CellMeasurementResult_List& select_id_CellMeasurementResult() { return set(3); } - CellMeasurementResult_List const* get_id_CellMeasurementResult() const { return get(3); } - bool is_unknown() const { return type == 4; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_ENB1_Measurement_ID()); return true; - case 2: v(select_id_ENB2_Measurement_ID()); return true; - case 3: v(select_id_CellMeasurementResult()); return true; - case 4: if(type != 4) {clear(); asn::base::set();} type = 4; 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; - } - 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(CellMeasurementResult_List)]; - char dummy2[sizeof(Measurement_ID)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_ENB1_Measurement_ID() { set(mandatory); type=1;} - void select_id_ENB2_Measurement_ID() { set(mandatory); type=2;} - void select_id_CellMeasurementResult() { set(mandatory); type=3;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else { type = 4; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; 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}; - - }; - -}; -/* -ResourceStatusUpdate ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ResourceStatusUpdate-IEs}}, - ... -} -*/ - -struct ResourceStatusUpdate : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "ResourceStatusUpdate";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -ResponseInformationSeNBReconfComp-SuccessItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -ResponseInformationSeNBReconfComp-SuccessItem ::= SEQUENCE { - meNBtoSeNBContainer MeNBtoSeNBContainer OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {ResponseInformationSeNBReconfComp-SuccessItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct ResponseInformationSeNBReconfComp_SuccessItem : asn::sequence<2, 0, true, 2> -{ - static constexpr const char* name() {return "ResponseInformationSeNBReconfComp-SuccessItem";} - using parent_t = asn::sequence<2, 0, true, 2>; - struct meNBtoSeNBContainer_t : MeNBtoSeNBContainer - { - static constexpr const char* name() {return "meNBtoSeNBContainer_t";} - using parent_t = MeNBtoSeNBContainer; - static constexpr bool optional = true; - - }; - meNBtoSeNBContainer_t& set_meNBtoSeNBContainer() { meNBtoSeNBContainer.setpresent(true); return meNBtoSeNBContainer;} - meNBtoSeNBContainer_t const* get_meNBtoSeNBContainer() const {return meNBtoSeNBContainer.is_valid() ? &meNBtoSeNBContainer : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(meNBtoSeNBContainer); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(meNBtoSeNBContainer); - v(iE_Extensions); - - }; - void clear() - { - meNBtoSeNBContainer.clear(); - iE_Extensions.clear(); - - }; - private: - meNBtoSeNBContainer_t meNBtoSeNBContainer; - iE_Extensions_t iE_Extensions; - -}; -/* -ResponseInformationSeNBReconfComp-RejectByMeNBItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -ResponseInformationSeNBReconfComp-RejectByMeNBItem ::= SEQUENCE { - cause Cause, - meNBtoSeNBContainer MeNBtoSeNBContainer OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {ResponseInformationSeNBReconfComp-RejectByMeNBItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct ResponseInformationSeNBReconfComp_RejectByMeNBItem : asn::sequence<3, 0, true, 2> -{ - static constexpr const char* name() {return "ResponseInformationSeNBReconfComp-RejectByMeNBItem";} - using parent_t = asn::sequence<3, 0, true, 2>; - struct cause_t : Cause - { - static constexpr const char* name() {return "cause_t";} - using parent_t = Cause; - - }; - cause_t& ref_cause() {return cause;} - cause_t const& ref_cause() const {return cause;} - struct meNBtoSeNBContainer_t : MeNBtoSeNBContainer - { - static constexpr const char* name() {return "meNBtoSeNBContainer_t";} - using parent_t = MeNBtoSeNBContainer; - static constexpr bool optional = true; - - }; - meNBtoSeNBContainer_t& set_meNBtoSeNBContainer() { meNBtoSeNBContainer.setpresent(true); return meNBtoSeNBContainer;} - meNBtoSeNBContainer_t const* get_meNBtoSeNBContainer() const {return meNBtoSeNBContainer.is_valid() ? &meNBtoSeNBContainer : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(cause); - v(meNBtoSeNBContainer); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(cause); - v(meNBtoSeNBContainer); - v(iE_Extensions); - - }; - void clear() - { - cause.clear(); - meNBtoSeNBContainer.clear(); - iE_Extensions.clear(); - - }; - private: - cause_t cause; - meNBtoSeNBContainer_t meNBtoSeNBContainer; - iE_Extensions_t iE_Extensions; - -}; -/* -ResponseInformationSeNBReconfComp ::= CHOICE { - success ResponseInformationSeNBReconfComp-SuccessItem, - reject-by-MeNB ResponseInformationSeNBReconfComp-RejectByMeNBItem, - ... -} -*/ - -struct ResponseInformationSeNBReconfComp : asn::choice<2, 0, true> -{ - static constexpr const char* name() {return "ResponseInformationSeNBReconfComp";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~ResponseInformationSeNBReconfComp() {clear();} - struct success_t : ResponseInformationSeNBReconfComp_SuccessItem - { - static constexpr const char* name() {return "success_t";} - using parent_t = ResponseInformationSeNBReconfComp_SuccessItem; - - }; - struct reject_by_MeNB_t : ResponseInformationSeNBReconfComp_RejectByMeNBItem - { - static constexpr const char* name() {return "reject_by_MeNB_t";} - using parent_t = ResponseInformationSeNBReconfComp_RejectByMeNBItem; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - success_t& select_success() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - success_t const* get_success() const { if(get_index() == 1) { return &var.as();} return nullptr; } - reject_by_MeNB_t& select_reject_by_MeNB() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - reject_by_MeNB_t const* get_reject_by_MeNB() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(success_t)]; - char dummy2[sizeof(reject_by_MeNB_t)]; - - }; - asn::variant var; - index_type index {0}; -}; -/* -ResponseInformationSgNBReconfComp-SuccessItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct ResponseInformationSgNBReconfComp_SuccessItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -ResponseInformationSgNBReconfComp-SuccessItem ::= SEQUENCE { - meNBtoSgNBContainer MeNBtoSgNBContainer OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {ResponseInformationSgNBReconfComp-SuccessItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct ResponseInformationSgNBReconfComp_SuccessItem : asn::sequence<2, 0, true, 2> -{ - static constexpr const char* name() {return "ResponseInformationSgNBReconfComp-SuccessItem";} - using parent_t = asn::sequence<2, 0, true, 2>; - struct meNBtoSgNBContainer_t : MeNBtoSgNBContainer - { - static constexpr const char* name() {return "meNBtoSgNBContainer_t";} - using parent_t = MeNBtoSgNBContainer; - static constexpr bool optional = true; - - }; - meNBtoSgNBContainer_t& set_meNBtoSgNBContainer() { meNBtoSgNBContainer.setpresent(true); return meNBtoSgNBContainer;} - meNBtoSgNBContainer_t const* get_meNBtoSgNBContainer() const {return meNBtoSgNBContainer.is_valid() ? &meNBtoSgNBContainer : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(meNBtoSgNBContainer); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(meNBtoSgNBContainer); - v(iE_Extensions); - - }; - void clear() - { - meNBtoSgNBContainer.clear(); - iE_Extensions.clear(); - - }; - private: - meNBtoSgNBContainer_t meNBtoSgNBContainer; - iE_Extensions_t iE_Extensions; - -}; -/* -ResponseInformationSgNBReconfComp-RejectByMeNBItemExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -ResponseInformationSgNBReconfComp-RejectByMeNBItem ::= SEQUENCE { - cause Cause, - iE-Extensions ProtocolExtensionContainer { {ResponseInformationSgNBReconfComp-RejectByMeNBItemExtIEs} } OPTIONAL, - ... -} -*/ - -struct ResponseInformationSgNBReconfComp_RejectByMeNBItem : asn::sequence<2, 0, true, 1> -{ - static constexpr const char* name() {return "ResponseInformationSgNBReconfComp-RejectByMeNBItem";} - using parent_t = asn::sequence<2, 0, true, 1>; - struct cause_t : Cause - { - static constexpr const char* name() {return "cause_t";} - using parent_t = Cause; - - }; - cause_t& ref_cause() {return cause;} - cause_t const& ref_cause() const {return cause;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(cause); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(cause); - v(iE_Extensions); - - }; - void clear() - { - cause.clear(); - iE_Extensions.clear(); - - }; - private: - cause_t cause; - iE_Extensions_t iE_Extensions; - -}; -/* -ResponseInformationSgNBReconfComp ::= CHOICE { - success-SgNBReconfComp ResponseInformationSgNBReconfComp-SuccessItem, - reject-by-MeNB-SgNBReconfComp ResponseInformationSgNBReconfComp-RejectByMeNBItem, - ... -} -*/ - -struct ResponseInformationSgNBReconfComp : asn::choice<2, 0, true> -{ - static constexpr const char* name() {return "ResponseInformationSgNBReconfComp";} - using parent_t = asn::choice<2, 0, true>; - index_type get_index() const {return index;} - bool is_unknown() const {return index == 3;} - void set_unknown() { set_index(3); } - ~ResponseInformationSgNBReconfComp() {clear();} - struct success_SgNBReconfComp_t : ResponseInformationSgNBReconfComp_SuccessItem - { - static constexpr const char* name() {return "success_SgNBReconfComp_t";} - using parent_t = ResponseInformationSgNBReconfComp_SuccessItem; - - }; - struct reject_by_MeNB_SgNBReconfComp_t : ResponseInformationSgNBReconfComp_RejectByMeNBItem - { - static constexpr const char* name() {return "reject_by_MeNB_SgNBReconfComp_t";} - using parent_t = ResponseInformationSgNBReconfComp_RejectByMeNBItem; - - }; - void clear() - { - switch(get_index()) - { - case 1: var.destroy(); break; - case 2: 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()); - } - return false; - - } - template bool encode(V& v) const - { - switch(get_index()) - { - case 1: return v(var.as()); - case 2: return v(var.as()); - } - return false; - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - success_SgNBReconfComp_t& select_success_SgNBReconfComp() { if(get_index() != 1) { clear(); set_index(1); return var.build();} return var.as();} - success_SgNBReconfComp_t const* get_success_SgNBReconfComp() const { if(get_index() == 1) { return &var.as();} return nullptr; } - reject_by_MeNB_SgNBReconfComp_t& select_reject_by_MeNB_SgNBReconfComp() { if(get_index() != 2) { clear(); set_index(2); return var.build();} return var.as();} - reject_by_MeNB_SgNBReconfComp_t const* get_reject_by_MeNB_SgNBReconfComp() const { if(get_index() == 2) { return &var.as();} return nullptr; } - private: - void set_index(index_type i) {index = i; base::set();} - union union_type - { - char dummy1[sizeof(success_SgNBReconfComp_t)]; - char dummy2[sizeof(reject_by_MeNB_SgNBReconfComp_t)]; - - }; - asn::variant var; - index_type index {0}; -}; -/* -RetrieveUEContextFailure-IEs X2AP-PROTOCOL-IES ::= { - { ID id-New-eNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-New-eNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}, - ... -} -*/ - -struct RetrieveUEContextFailure_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 5; } - void clear() {type = 0;} - void select_id_New_eNB_UE_X2AP_ID() { set(id_New_eNB_UE_X2AP_ID); type=1;} - void select_id_New_eNB_UE_X2AP_ID_Extension() { set(id_New_eNB_UE_X2AP_ID_Extension); type=2;} - void select_id_Cause() { set(id_Cause); type=3;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_New_eNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_New_eNB_UE_X2AP_ID_Extension)) { type = 2; return true; } - else if(equal(id_Cause)) { type = 3; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; } - else { type = 5; 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_New_eNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_New_eNB_UE_X2AP_ID_Extension);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 5: type = 5; 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 == 5; } - void clear() {type = 0;} - void select_id_New_eNB_UE_X2AP_ID() { set(ignore); type=1;} - void select_id_New_eNB_UE_X2AP_ID_Extension() { set(ignore); type=2;} - void select_id_Cause() { set(ignore); type=3;} - void select_id_CriticalityDiagnostics() { set(ignore); type=4;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else { type = 5; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_New_eNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_New_eNB_UE_X2AP_ID() const { return get(1); } - UE_X2AP_ID_Extension& select_id_New_eNB_UE_X2AP_ID_Extension() { return set(2); } - UE_X2AP_ID_Extension const* get_id_New_eNB_UE_X2AP_ID_Extension() const { return get(2); } - Cause& select_id_Cause() { return set(3); } - Cause const* get_id_Cause() const { return get(3); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(4); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(4); } - bool is_unknown() const { return type == 5; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: var.destroy(); break; - case 4: 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_New_eNB_UE_X2AP_ID()); return true; - case 2: v(select_id_New_eNB_UE_X2AP_ID_Extension()); return true; - case 3: v(select_id_Cause()); return true; - case 4: v(select_id_CriticalityDiagnostics()); return true; - case 5: if(type != 5) {clear(); asn::base::set();} type = 5; 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; - } - 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(Cause)]; - char dummy2[sizeof(CriticalityDiagnostics)]; - char dummy3[sizeof(UE_X2AP_ID)]; - char dummy4[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 5; } - void clear() {type = 0;} - void select_id_New_eNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_New_eNB_UE_X2AP_ID_Extension() { set(optional); type=2;} - void select_id_Cause() { set(mandatory); type=3;} - void select_id_CriticalityDiagnostics() { set(optional); type=4;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else { type = 5; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; 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}; - - }; - -}; -/* -RetrieveUEContextFailure ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ RetrieveUEContextFailure-IEs}}, - ... -} -*/ - -struct RetrieveUEContextFailure : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "RetrieveUEContextFailure";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -RetrieveUEContextRequest-IEs X2AP-PROTOCOL-IES ::= { - { ID id-New-eNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-resumeID CRITICALITY reject TYPE ResumeID PRESENCE mandatory}| - { ID id-ShortMAC-I CRITICALITY reject TYPE ShortMAC-I PRESENCE mandatory}| - { ID id-NewEUTRANCellIdentifier CRITICALITY reject TYPE EUTRANCellIdentifier PRESENCE mandatory}| - {ID id-FailureCellCRNTI CRITICALITY reject TYPE CRNTI PRESENCE optional}| - {ID id-FailureCellPCI CRITICALITY reject TYPE PCI PRESENCE optional}, - ... -} -*/ - -struct RetrieveUEContextRequest_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 8; } - void clear() {type = 0;} - void select_id_New_eNB_UE_X2AP_ID() { set(id_New_eNB_UE_X2AP_ID); type=1;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=2;} - void select_id_resumeID() { set(id_resumeID); type=3;} - void select_id_ShortMAC_I() { set(id_ShortMAC_I); type=4;} - void select_id_NewEUTRANCellIdentifier() { set(id_NewEUTRANCellIdentifier); type=5;} - void select_id_FailureCellCRNTI() { set(id_FailureCellCRNTI); type=6;} - void select_id_FailureCellPCI() { set(id_FailureCellPCI); type=7;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_New_eNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 2; return true; } - else if(equal(id_resumeID)) { type = 3; return true; } - else if(equal(id_ShortMAC_I)) { type = 4; return true; } - else if(equal(id_NewEUTRANCellIdentifier)) { type = 5; return true; } - else if(equal(id_FailureCellCRNTI)) { type = 6; return true; } - else if(equal(id_FailureCellPCI)) { type = 7; return true; } - else { type = 8; 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_New_eNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_resumeID);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_ShortMAC_I);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_NewEUTRANCellIdentifier);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_FailureCellCRNTI);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(id_FailureCellPCI);} return false; - case 8: type = 8; 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 == 8; } - void clear() {type = 0;} - void select_id_New_eNB_UE_X2AP_ID() { set(reject); type=1;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(reject); type=2;} - void select_id_resumeID() { set(reject); type=3;} - void select_id_ShortMAC_I() { set(reject); type=4;} - void select_id_NewEUTRANCellIdentifier() { set(reject); type=5;} - void select_id_FailureCellCRNTI() { set(reject); type=6;} - void select_id_FailureCellPCI() { set(reject); type=7;} - X2AP_PROTOCOL_IES::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 { type = 8; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_New_eNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_New_eNB_UE_X2AP_ID() const { return get(1); } - UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set(2); } - UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get(2); } - ResumeID& select_id_resumeID() { return set(3); } - ResumeID const* get_id_resumeID() const { return get(3); } - ShortMAC_I& select_id_ShortMAC_I() { return set(4); } - ShortMAC_I const* get_id_ShortMAC_I() const { return get(4); } - EUTRANCellIdentifier& select_id_NewEUTRANCellIdentifier() { return set(5); } - EUTRANCellIdentifier const* get_id_NewEUTRANCellIdentifier() const { return get(5); } - CRNTI& select_id_FailureCellCRNTI() { return set(6); } - CRNTI const* get_id_FailureCellCRNTI() const { return get(6); } - PCI& select_id_FailureCellPCI() { return set(7); } - PCI const* get_id_FailureCellPCI() const { return get(7); } - bool is_unknown() const { return type == 8; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_New_eNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true; - case 3: v(select_id_resumeID()); return true; - case 4: v(select_id_ShortMAC_I()); return true; - case 5: v(select_id_NewEUTRANCellIdentifier()); return true; - case 6: v(select_id_FailureCellCRNTI()); return true; - case 7: v(select_id_FailureCellPCI()); return true; - case 8: if(type != 8) {clear(); asn::base::set();} type = 8; 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; - } - 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(CRNTI)]; - char dummy2[sizeof(EUTRANCellIdentifier)]; - char dummy3[sizeof(PCI)]; - char dummy4[sizeof(ResumeID)]; - char dummy5[sizeof(ShortMAC_I)]; - char dummy6[sizeof(UE_X2AP_ID)]; - char dummy7[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 8; } - void clear() {type = 0;} - void select_id_New_eNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=2;} - void select_id_resumeID() { set(mandatory); type=3;} - void select_id_ShortMAC_I() { set(mandatory); type=4;} - void select_id_NewEUTRANCellIdentifier() { set(mandatory); type=5;} - void select_id_FailureCellCRNTI() { set(optional); type=6;} - void select_id_FailureCellPCI() { set(optional); type=7;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(mandatory)) { type = 4; return true; } - else if(equal(mandatory)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else if(equal(optional)) { type = 7; return true; } - else { type = 8; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(mandatory);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(mandatory);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false; - case 8: type = 8; 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}; - - }; - -}; -/* -RetrieveUEContextRequest ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ RetrieveUEContextRequest-IEs}}, - ... -} -*/ - -struct RetrieveUEContextRequest : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "RetrieveUEContextRequest";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -UE-ContextInformationRetrieve-ExtIEs X2AP-PROTOCOL-EXTENSION ::= { -{ ID id-UESidelinkAggregateMaximumBitRate CRITICALITY ignore EXTENSION UESidelinkAggregateMaximumBitRate PRESENCE optional}, - ... -} -*/ - -struct UE_ContextInformationRetrieve_ExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_UESidelinkAggregateMaximumBitRate() { set(id_UESidelinkAggregateMaximumBitRate); type=1;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_UESidelinkAggregateMaximumBitRate)) { type = 1; return true; } - else { type = 2; 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_UESidelinkAggregateMaximumBitRate);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_UESidelinkAggregateMaximumBitRate() { set(ignore); type=1;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - UESidelinkAggregateMaximumBitRate& select_id_UESidelinkAggregateMaximumBitRate() { return set(1); } - UESidelinkAggregateMaximumBitRate const* get_id_UESidelinkAggregateMaximumBitRate() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_UESidelinkAggregateMaximumBitRate()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(UESidelinkAggregateMaximumBitRate)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_UESidelinkAggregateMaximumBitRate() { set(optional); type=1;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else { type = 2; 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(optional);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -UE-ContextInformationRetrieve ::= SEQUENCE { - mME-UE-S1AP-ID UE-S1AP-ID, - uESecurityCapabilities UESecurityCapabilities, - aS-SecurityInformation AS-SecurityInformation, - uEaggregateMaximumBitRate UEAggregateMaximumBitRate, - subscriberProfileIDforRFP SubscriberProfileIDforRFP OPTIONAL, - e-RABs-ToBeSetup-ListRetrieve E-RABs-ToBeSetup-ListRetrieve, - rRC-Context RRC-Context, - handoverRestrictionList HandoverRestrictionList OPTIONAL, - locationReportingInformation LocationReportingInformation OPTIONAL, - managBasedMDTallowed ManagementBasedMDTallowed OPTIONAL, - managBasedMDTPLMNList MDTPLMNList OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {UE-ContextInformationRetrieve-ExtIEs} } OPTIONAL, - ... -} -*/ - -struct UE_ContextInformationRetrieve : asn::sequence<12, 0, true, 6> -{ - static constexpr const char* name() {return "UE-ContextInformationRetrieve";} - using parent_t = asn::sequence<12, 0, true, 6>; - struct mME_UE_S1AP_ID_t : UE_S1AP_ID - { - static constexpr const char* name() {return "mME_UE_S1AP_ID_t";} - using parent_t = UE_S1AP_ID; - - }; - mME_UE_S1AP_ID_t& ref_mME_UE_S1AP_ID() {return mME_UE_S1AP_ID;} - mME_UE_S1AP_ID_t const& ref_mME_UE_S1AP_ID() const {return mME_UE_S1AP_ID;} - struct uESecurityCapabilities_t : UESecurityCapabilities - { - static constexpr const char* name() {return "uESecurityCapabilities_t";} - using parent_t = UESecurityCapabilities; - - }; - uESecurityCapabilities_t& ref_uESecurityCapabilities() {return uESecurityCapabilities;} - uESecurityCapabilities_t const& ref_uESecurityCapabilities() const {return uESecurityCapabilities;} - struct aS_SecurityInformation_t : AS_SecurityInformation - { - static constexpr const char* name() {return "aS_SecurityInformation_t";} - using parent_t = AS_SecurityInformation; - - }; - aS_SecurityInformation_t& ref_aS_SecurityInformation() {return aS_SecurityInformation;} - aS_SecurityInformation_t const& ref_aS_SecurityInformation() const {return aS_SecurityInformation;} - struct uEaggregateMaximumBitRate_t : UEAggregateMaximumBitRate - { - static constexpr const char* name() {return "uEaggregateMaximumBitRate_t";} - using parent_t = UEAggregateMaximumBitRate; - - }; - uEaggregateMaximumBitRate_t& ref_uEaggregateMaximumBitRate() {return uEaggregateMaximumBitRate;} - uEaggregateMaximumBitRate_t const& ref_uEaggregateMaximumBitRate() const {return uEaggregateMaximumBitRate;} - struct subscriberProfileIDforRFP_t : SubscriberProfileIDforRFP - { - static constexpr const char* name() {return "subscriberProfileIDforRFP_t";} - using parent_t = SubscriberProfileIDforRFP; - static constexpr bool optional = true; - - }; - subscriberProfileIDforRFP_t& set_subscriberProfileIDforRFP() { subscriberProfileIDforRFP.setpresent(true); return subscriberProfileIDforRFP;} - subscriberProfileIDforRFP_t const* get_subscriberProfileIDforRFP() const {return subscriberProfileIDforRFP.is_valid() ? &subscriberProfileIDforRFP : nullptr;} - struct e_RABs_ToBeSetup_ListRetrieve_t : E_RABs_ToBeSetup_ListRetrieve - { - static constexpr const char* name() {return "e_RABs_ToBeSetup_ListRetrieve_t";} - using parent_t = E_RABs_ToBeSetup_ListRetrieve; - - }; - e_RABs_ToBeSetup_ListRetrieve_t& ref_e_RABs_ToBeSetup_ListRetrieve() {return e_RABs_ToBeSetup_ListRetrieve;} - e_RABs_ToBeSetup_ListRetrieve_t const& ref_e_RABs_ToBeSetup_ListRetrieve() const {return e_RABs_ToBeSetup_ListRetrieve;} - struct rRC_Context_t : RRC_Context - { - static constexpr const char* name() {return "rRC_Context_t";} - using parent_t = RRC_Context; - - }; - rRC_Context_t& ref_rRC_Context() {return rRC_Context;} - rRC_Context_t const& ref_rRC_Context() const {return rRC_Context;} - struct handoverRestrictionList_t : HandoverRestrictionList - { - static constexpr const char* name() {return "handoverRestrictionList_t";} - using parent_t = HandoverRestrictionList; - static constexpr bool optional = true; - - }; - handoverRestrictionList_t& set_handoverRestrictionList() { handoverRestrictionList.setpresent(true); return handoverRestrictionList;} - handoverRestrictionList_t const* get_handoverRestrictionList() const {return handoverRestrictionList.is_valid() ? &handoverRestrictionList : nullptr;} - struct locationReportingInformation_t : LocationReportingInformation - { - static constexpr const char* name() {return "locationReportingInformation_t";} - using parent_t = LocationReportingInformation; - static constexpr bool optional = true; - - }; - locationReportingInformation_t& set_locationReportingInformation() { locationReportingInformation.setpresent(true); return locationReportingInformation;} - locationReportingInformation_t const* get_locationReportingInformation() const {return locationReportingInformation.is_valid() ? &locationReportingInformation : nullptr;} - struct managBasedMDTallowed_t : ManagementBasedMDTallowed - { - static constexpr const char* name() {return "managBasedMDTallowed_t";} - using parent_t = ManagementBasedMDTallowed; - static constexpr bool optional = true; - - }; - managBasedMDTallowed_t& set_managBasedMDTallowed() { managBasedMDTallowed.setpresent(true); return managBasedMDTallowed;} - managBasedMDTallowed_t const* get_managBasedMDTallowed() const {return managBasedMDTallowed.is_valid() ? &managBasedMDTallowed : nullptr;} - struct managBasedMDTPLMNList_t : MDTPLMNList - { - static constexpr const char* name() {return "managBasedMDTPLMNList_t";} - using parent_t = MDTPLMNList; - static constexpr bool optional = true; - - }; - managBasedMDTPLMNList_t& set_managBasedMDTPLMNList() { managBasedMDTPLMNList.setpresent(true); return managBasedMDTPLMNList;} - managBasedMDTPLMNList_t const* get_managBasedMDTPLMNList() const {return managBasedMDTPLMNList.is_valid() ? &managBasedMDTPLMNList : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(mME_UE_S1AP_ID); - v(uESecurityCapabilities); - v(aS_SecurityInformation); - v(uEaggregateMaximumBitRate); - v(subscriberProfileIDforRFP); - v(e_RABs_ToBeSetup_ListRetrieve); - v(rRC_Context); - v(handoverRestrictionList); - v(locationReportingInformation); - v(managBasedMDTallowed); - v(managBasedMDTPLMNList); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(mME_UE_S1AP_ID); - v(uESecurityCapabilities); - v(aS_SecurityInformation); - v(uEaggregateMaximumBitRate); - v(subscriberProfileIDforRFP); - v(e_RABs_ToBeSetup_ListRetrieve); - v(rRC_Context); - v(handoverRestrictionList); - v(locationReportingInformation); - v(managBasedMDTallowed); - v(managBasedMDTPLMNList); - v(iE_Extensions); - - }; - void clear() - { - mME_UE_S1AP_ID.clear(); - uESecurityCapabilities.clear(); - aS_SecurityInformation.clear(); - uEaggregateMaximumBitRate.clear(); - subscriberProfileIDforRFP.clear(); - e_RABs_ToBeSetup_ListRetrieve.clear(); - rRC_Context.clear(); - handoverRestrictionList.clear(); - locationReportingInformation.clear(); - managBasedMDTallowed.clear(); - managBasedMDTPLMNList.clear(); - iE_Extensions.clear(); - - }; - private: - mME_UE_S1AP_ID_t mME_UE_S1AP_ID; - uESecurityCapabilities_t uESecurityCapabilities; - aS_SecurityInformation_t aS_SecurityInformation; - uEaggregateMaximumBitRate_t uEaggregateMaximumBitRate; - subscriberProfileIDforRFP_t subscriberProfileIDforRFP; - e_RABs_ToBeSetup_ListRetrieve_t e_RABs_ToBeSetup_ListRetrieve; - rRC_Context_t rRC_Context; - handoverRestrictionList_t handoverRestrictionList; - locationReportingInformation_t locationReportingInformation; - managBasedMDTallowed_t managBasedMDTallowed; - managBasedMDTPLMNList_t managBasedMDTPLMNList; - iE_Extensions_t iE_Extensions; - -}; -/* -RetrieveUEContextResponse-IEs X2AP-PROTOCOL-IES ::= { - { ID id-New-eNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-New-eNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-Old-eNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-Old-eNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-GUMMEI-ID CRITICALITY reject TYPE GUMMEI PRESENCE mandatory}| - { ID id-UE-ContextInformationRetrieve CRITICALITY reject TYPE UE-ContextInformationRetrieve PRESENCE mandatory}| - { ID id-TraceActivation CRITICALITY ignore TYPE TraceActivation PRESENCE optional}| - { ID id-SRVCCOperationPossible CRITICALITY ignore TYPE SRVCCOperationPossible PRESENCE optional}| - { ID id-Masked-IMEISV CRITICALITY ignore TYPE Masked-IMEISV PRESENCE optional}| - { ID id-ExpectedUEBehaviour CRITICALITY ignore TYPE ExpectedUEBehaviour PRESENCE optional}| - { ID id-ProSeAuthorized CRITICALITY ignore TYPE ProSeAuthorized PRESENCE optional}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| - { ID id-V2XServicesAuthorized CRITICALITY ignore TYPE V2XServicesAuthorized PRESENCE optional}| - { ID id-AerialUEsubscriptionInformation CRITICALITY ignore TYPE AerialUEsubscriptionInformation PRESENCE optional}| - { ID id-Subscription-Based-UE-DifferentiationInfo CRITICALITY ignore TYPE Subscription-Based-UE-DifferentiationInfo PRESENCE optional}, - ... -} -*/ - -struct RetrieveUEContextResponse_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 16; } - void clear() {type = 0;} - void select_id_New_eNB_UE_X2AP_ID() { set(id_New_eNB_UE_X2AP_ID); type=1;} - void select_id_New_eNB_UE_X2AP_ID_Extension() { set(id_New_eNB_UE_X2AP_ID_Extension); type=2;} - void select_id_Old_eNB_UE_X2AP_ID() { set(id_Old_eNB_UE_X2AP_ID); type=3;} - void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(id_Old_eNB_UE_X2AP_ID_Extension); type=4;} - void select_id_GUMMEI_ID() { set(id_GUMMEI_ID); type=5;} - void select_id_UE_ContextInformationRetrieve() { set(id_UE_ContextInformationRetrieve); type=6;} - void select_id_TraceActivation() { set(id_TraceActivation); type=7;} - void select_id_SRVCCOperationPossible() { set(id_SRVCCOperationPossible); type=8;} - void select_id_Masked_IMEISV() { set(id_Masked_IMEISV); type=9;} - void select_id_ExpectedUEBehaviour() { set(id_ExpectedUEBehaviour); type=10;} - void select_id_ProSeAuthorized() { set(id_ProSeAuthorized); type=11;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=12;} - void select_id_V2XServicesAuthorized() { set(id_V2XServicesAuthorized); type=13;} - void select_id_AerialUEsubscriptionInformation() { set(id_AerialUEsubscriptionInformation); type=14;} - void select_id_Subscription_Based_UE_DifferentiationInfo() { set(id_Subscription_Based_UE_DifferentiationInfo); type=15;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_New_eNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_New_eNB_UE_X2AP_ID_Extension)) { type = 2; return true; } - else if(equal(id_Old_eNB_UE_X2AP_ID)) { type = 3; return true; } - else if(equal(id_Old_eNB_UE_X2AP_ID_Extension)) { type = 4; return true; } - else if(equal(id_GUMMEI_ID)) { type = 5; return true; } - else if(equal(id_UE_ContextInformationRetrieve)) { type = 6; return true; } - else if(equal(id_TraceActivation)) { type = 7; return true; } - else if(equal(id_SRVCCOperationPossible)) { type = 8; return true; } - else if(equal(id_Masked_IMEISV)) { type = 9; return true; } - else if(equal(id_ExpectedUEBehaviour)) { type = 10; return true; } - else if(equal(id_ProSeAuthorized)) { type = 11; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 12; return true; } - else if(equal(id_V2XServicesAuthorized)) { type = 13; return true; } - else if(equal(id_AerialUEsubscriptionInformation)) { type = 14; return true; } - else if(equal(id_Subscription_Based_UE_DifferentiationInfo)) { type = 15; return true; } - else { type = 16; 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_New_eNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_New_eNB_UE_X2AP_ID_Extension);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID_Extension);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_GUMMEI_ID);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_UE_ContextInformationRetrieve);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(id_TraceActivation);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(id_SRVCCOperationPossible);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(id_Masked_IMEISV);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(id_ExpectedUEBehaviour);} return false; - case 11: type = 11; if(v(ref_nested())) { return equal(id_ProSeAuthorized);} return false; - case 12: type = 12; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 13: type = 13; if(v(ref_nested())) { return equal(id_V2XServicesAuthorized);} return false; - case 14: type = 14; if(v(ref_nested())) { return equal(id_AerialUEsubscriptionInformation);} return false; - case 15: type = 15; if(v(ref_nested())) { return equal(id_Subscription_Based_UE_DifferentiationInfo);} return false; - case 16: type = 16; 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 == 16; } - void clear() {type = 0;} - void select_id_New_eNB_UE_X2AP_ID() { set(ignore); type=1;} - void select_id_New_eNB_UE_X2AP_ID_Extension() { set(ignore); type=2;} - void select_id_Old_eNB_UE_X2AP_ID() { set(ignore); type=3;} - void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(ignore); type=4;} - void select_id_GUMMEI_ID() { set(reject); type=5;} - void select_id_UE_ContextInformationRetrieve() { set(reject); type=6;} - void select_id_TraceActivation() { set(ignore); type=7;} - void select_id_SRVCCOperationPossible() { set(ignore); type=8;} - void select_id_Masked_IMEISV() { set(ignore); type=9;} - void select_id_ExpectedUEBehaviour() { set(ignore); type=10;} - void select_id_ProSeAuthorized() { set(ignore); type=11;} - void select_id_CriticalityDiagnostics() { set(ignore); type=12;} - void select_id_V2XServicesAuthorized() { set(ignore); type=13;} - void select_id_AerialUEsubscriptionInformation() { set(ignore); type=14;} - void select_id_Subscription_Based_UE_DifferentiationInfo() { set(ignore); type=15;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(reject)) { type = 5; return true; } - else if(equal(reject)) { type = 6; return true; } - else if(equal(ignore)) { type = 7; return true; } - else if(equal(ignore)) { type = 8; return true; } - else if(equal(ignore)) { type = 9; return true; } - else if(equal(ignore)) { 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 { type = 16; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} 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(ignore);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(ignore);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(ignore);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(ignore);} 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_New_eNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_New_eNB_UE_X2AP_ID() const { return get(1); } - UE_X2AP_ID_Extension& select_id_New_eNB_UE_X2AP_ID_Extension() { return set(2); } - UE_X2AP_ID_Extension const* get_id_New_eNB_UE_X2AP_ID_Extension() const { return get(2); } - UE_X2AP_ID& select_id_Old_eNB_UE_X2AP_ID() { return set(3); } - UE_X2AP_ID const* get_id_Old_eNB_UE_X2AP_ID() const { return get(3); } - UE_X2AP_ID_Extension& select_id_Old_eNB_UE_X2AP_ID_Extension() { return set(4); } - UE_X2AP_ID_Extension const* get_id_Old_eNB_UE_X2AP_ID_Extension() const { return get(4); } - GUMMEI& select_id_GUMMEI_ID() { return set(5); } - GUMMEI const* get_id_GUMMEI_ID() const { return get(5); } - UE_ContextInformationRetrieve& select_id_UE_ContextInformationRetrieve() { return set(6); } - UE_ContextInformationRetrieve const* get_id_UE_ContextInformationRetrieve() const { return get(6); } - TraceActivation& select_id_TraceActivation() { return set(7); } - TraceActivation const* get_id_TraceActivation() const { return get(7); } - SRVCCOperationPossible& select_id_SRVCCOperationPossible() { return set(8); } - SRVCCOperationPossible const* get_id_SRVCCOperationPossible() const { return get(8); } - Masked_IMEISV& select_id_Masked_IMEISV() { return set(9); } - Masked_IMEISV const* get_id_Masked_IMEISV() const { return get(9); } - ExpectedUEBehaviour& select_id_ExpectedUEBehaviour() { return set(10); } - ExpectedUEBehaviour const* get_id_ExpectedUEBehaviour() const { return get(10); } - ProSeAuthorized& select_id_ProSeAuthorized() { return set(11); } - ProSeAuthorized const* get_id_ProSeAuthorized() const { return get(11); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(12); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(12); } - V2XServicesAuthorized& select_id_V2XServicesAuthorized() { return set(13); } - V2XServicesAuthorized const* get_id_V2XServicesAuthorized() const { return get(13); } - AerialUEsubscriptionInformation& select_id_AerialUEsubscriptionInformation() { return set(14); } - AerialUEsubscriptionInformation const* get_id_AerialUEsubscriptionInformation() const { return get(14); } - Subscription_Based_UE_DifferentiationInfo& select_id_Subscription_Based_UE_DifferentiationInfo() { return set(15); } - Subscription_Based_UE_DifferentiationInfo const* get_id_Subscription_Based_UE_DifferentiationInfo() const { return get(15); } - bool is_unknown() const { return type == 16; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_New_eNB_UE_X2AP_ID()); return true; - case 2: v(select_id_New_eNB_UE_X2AP_ID_Extension()); return true; - case 3: v(select_id_Old_eNB_UE_X2AP_ID()); return true; - case 4: v(select_id_Old_eNB_UE_X2AP_ID_Extension()); return true; - case 5: v(select_id_GUMMEI_ID()); return true; - case 6: v(select_id_UE_ContextInformationRetrieve()); return true; - case 7: v(select_id_TraceActivation()); return true; - case 8: v(select_id_SRVCCOperationPossible()); return true; - case 9: v(select_id_Masked_IMEISV()); return true; - case 10: v(select_id_ExpectedUEBehaviour()); return true; - case 11: v(select_id_ProSeAuthorized()); return true; - case 12: v(select_id_CriticalityDiagnostics()); return true; - case 13: v(select_id_V2XServicesAuthorized()); return true; - case 14: v(select_id_AerialUEsubscriptionInformation()); return true; - case 15: v(select_id_Subscription_Based_UE_DifferentiationInfo()); return true; - case 16: if(type != 16) {clear(); asn::base::set();} type = 16; 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; - } - 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(AerialUEsubscriptionInformation)]; - char dummy2[sizeof(CriticalityDiagnostics)]; - char dummy3[sizeof(ExpectedUEBehaviour)]; - char dummy4[sizeof(GUMMEI)]; - char dummy5[sizeof(Masked_IMEISV)]; - char dummy6[sizeof(ProSeAuthorized)]; - char dummy7[sizeof(SRVCCOperationPossible)]; - char dummy8[sizeof(Subscription_Based_UE_DifferentiationInfo)]; - char dummy9[sizeof(TraceActivation)]; - char dummy10[sizeof(UE_ContextInformationRetrieve)]; - char dummy11[sizeof(UE_X2AP_ID)]; - char dummy12[sizeof(UE_X2AP_ID_Extension)]; - char dummy13[sizeof(V2XServicesAuthorized)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 16; } - void clear() {type = 0;} - void select_id_New_eNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_New_eNB_UE_X2AP_ID_Extension() { set(optional); type=2;} - void select_id_Old_eNB_UE_X2AP_ID() { set(mandatory); type=3;} - void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(optional); type=4;} - void select_id_GUMMEI_ID() { set(mandatory); type=5;} - void select_id_UE_ContextInformationRetrieve() { set(mandatory); type=6;} - void select_id_TraceActivation() { set(optional); type=7;} - void select_id_SRVCCOperationPossible() { set(optional); type=8;} - void select_id_Masked_IMEISV() { set(optional); type=9;} - void select_id_ExpectedUEBehaviour() { set(optional); type=10;} - void select_id_ProSeAuthorized() { set(optional); type=11;} - void select_id_CriticalityDiagnostics() { set(optional); type=12;} - void select_id_V2XServicesAuthorized() { set(optional); type=13;} - void select_id_AerialUEsubscriptionInformation() { set(optional); type=14;} - void select_id_Subscription_Based_UE_DifferentiationInfo() { set(optional); type=15;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(mandatory)) { type = 5; return true; } - else if(equal(mandatory)) { type = 6; return true; } - else if(equal(optional)) { type = 7; return true; } - else if(equal(optional)) { type = 8; return true; } - else if(equal(optional)) { type = 9; return true; } - else if(equal(optional)) { type = 10; return true; } - else if(equal(optional)) { type = 11; return true; } - else if(equal(optional)) { type = 12; return true; } - else if(equal(optional)) { type = 13; return true; } - else if(equal(optional)) { type = 14; return true; } - else if(equal(optional)) { type = 15; return true; } - else { type = 16; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(mandatory);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(mandatory);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(optional);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(optional);} return false; - case 11: type = 11; if(v(ref_nested())) { return equal(optional);} return false; - case 12: type = 12; if(v(ref_nested())) { return equal(optional);} return false; - case 13: type = 13; if(v(ref_nested())) { return equal(optional);} return false; - case 14: type = 14; if(v(ref_nested())) { return equal(optional);} return false; - case 15: type = 15; if(v(ref_nested())) { return equal(optional);} return false; - case 16: type = 16; 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}; - - }; - -}; -/* -RetrieveUEContextResponse ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ RetrieveUEContextResponse-IEs}}, - ... -} -*/ - -struct RetrieveUEContextResponse : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "RetrieveUEContextResponse";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SNStatusTransfer-IEs X2AP-PROTOCOL-IES ::= { - { ID id-Old-eNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-New-eNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-E-RABs-SubjectToStatusTransfer-List CRITICALITY ignore TYPE E-RABs-SubjectToStatusTransfer-List PRESENCE mandatory}| - { ID id-Old-eNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-New-eNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-SgNB-UE-X2AP-ID CRITICALITY ignore TYPE SgNB-UE-X2AP-ID PRESENCE optional}, - ... -} -*/ - -struct SNStatusTransfer_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 7; } - void clear() {type = 0;} - void select_id_Old_eNB_UE_X2AP_ID() { set(id_Old_eNB_UE_X2AP_ID); type=1;} - void select_id_New_eNB_UE_X2AP_ID() { set(id_New_eNB_UE_X2AP_ID); type=2;} - void select_id_E_RABs_SubjectToStatusTransfer_List() { set(id_E_RABs_SubjectToStatusTransfer_List); type=3;} - void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(id_Old_eNB_UE_X2AP_ID_Extension); type=4;} - void select_id_New_eNB_UE_X2AP_ID_Extension() { set(id_New_eNB_UE_X2AP_ID_Extension); type=5;} - void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=6;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_Old_eNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_New_eNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_E_RABs_SubjectToStatusTransfer_List)) { type = 3; return true; } - else if(equal(id_Old_eNB_UE_X2AP_ID_Extension)) { type = 4; return true; } - else if(equal(id_New_eNB_UE_X2AP_ID_Extension)) { type = 5; return true; } - else if(equal(id_SgNB_UE_X2AP_ID)) { type = 6; return true; } - else { type = 7; 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_Old_eNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_New_eNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_E_RABs_SubjectToStatusTransfer_List);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID_Extension);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_New_eNB_UE_X2AP_ID_Extension);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false; - case 7: type = 7; 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 == 7; } - void clear() {type = 0;} - void select_id_Old_eNB_UE_X2AP_ID() { set(reject); type=1;} - void select_id_New_eNB_UE_X2AP_ID() { set(reject); type=2;} - void select_id_E_RABs_SubjectToStatusTransfer_List() { set(ignore); type=3;} - void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(reject); type=4;} - void select_id_New_eNB_UE_X2AP_ID_Extension() { set(reject); type=5;} - void select_id_SgNB_UE_X2AP_ID() { set(ignore); type=6;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 3; return true; } - else if(equal(reject)) { type = 4; return true; } - else if(equal(reject)) { type = 5; return true; } - else if(equal(ignore)) { type = 6; return true; } - else { type = 7; 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(ignore);} 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(ignore);} return false; - case 7: type = 7; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_Old_eNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_Old_eNB_UE_X2AP_ID() const { return get(1); } - UE_X2AP_ID& select_id_New_eNB_UE_X2AP_ID() { return set(2); } - UE_X2AP_ID const* get_id_New_eNB_UE_X2AP_ID() const { return get(2); } - E_RABs_SubjectToStatusTransfer_List& select_id_E_RABs_SubjectToStatusTransfer_List() { return set(3); } - E_RABs_SubjectToStatusTransfer_List const* get_id_E_RABs_SubjectToStatusTransfer_List() const { return get(3); } - UE_X2AP_ID_Extension& select_id_Old_eNB_UE_X2AP_ID_Extension() { return set(4); } - UE_X2AP_ID_Extension const* get_id_Old_eNB_UE_X2AP_ID_Extension() const { return get(4); } - UE_X2AP_ID_Extension& select_id_New_eNB_UE_X2AP_ID_Extension() { return set(5); } - UE_X2AP_ID_Extension const* get_id_New_eNB_UE_X2AP_ID_Extension() const { return get(5); } - SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set(6); } - SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get(6); } - bool is_unknown() const { return type == 7; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_Old_eNB_UE_X2AP_ID()); return true; - case 2: v(select_id_New_eNB_UE_X2AP_ID()); return true; - case 3: v(select_id_E_RABs_SubjectToStatusTransfer_List()); return true; - case 4: v(select_id_Old_eNB_UE_X2AP_ID_Extension()); return true; - case 5: v(select_id_New_eNB_UE_X2AP_ID_Extension()); return true; - case 6: v(select_id_SgNB_UE_X2AP_ID()); return true; - case 7: if(type != 7) {clear(); asn::base::set();} type = 7; 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; - } - 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(E_RABs_SubjectToStatusTransfer_List)]; - char dummy2[sizeof(SgNB_UE_X2AP_ID)]; - char dummy3[sizeof(UE_X2AP_ID)]; - char dummy4[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 7; } - void clear() {type = 0;} - void select_id_Old_eNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_New_eNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_E_RABs_SubjectToStatusTransfer_List() { set(mandatory); type=3;} - void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(optional); type=4;} - void select_id_New_eNB_UE_X2AP_ID_Extension() { set(optional); type=5;} - void select_id_SgNB_UE_X2AP_ID() { set(optional); type=6;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else { type = 7; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; 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}; - - }; - -}; -/* -SNStatusTransfer ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SNStatusTransfer-IEs}}, - ... -} -*/ - -struct SNStatusTransfer : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SNStatusTransfer";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SeNBAdditionRequest-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-UE-SecurityCapabilities CRITICALITY reject TYPE UESecurityCapabilities PRESENCE conditional}| - -- This IE shall be present if the Bearer Option IE is set to the value “SCG bearer” -- - { ID id-SeNBSecurityKey CRITICALITY reject TYPE SeNBSecurityKey PRESENCE conditional}| - -- This IE shall be present if the Bearer Option IE is set to the value “SCG bearer” -- - { ID id-SeNBUEAggregateMaximumBitRate CRITICALITY reject TYPE UEAggregateMaximumBitRate PRESENCE mandatory}| - { ID id-ServingPLMN CRITICALITY ignore TYPE PLMN-Identity PRESENCE optional}| - { ID id-E-RABs-ToBeAdded-List CRITICALITY reject TYPE E-RABs-ToBeAdded-List PRESENCE mandatory}| - { ID id-MeNBtoSeNBContainer CRITICALITY reject TYPE MeNBtoSeNBContainer PRESENCE mandatory}| - { ID id-CSGMembershipStatus CRITICALITY reject TYPE CSGMembershipStatus PRESENCE optional}| - { ID id-SeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE optional}| - { ID id-SeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-ExpectedUEBehaviour CRITICALITY ignore TYPE ExpectedUEBehaviour PRESENCE optional}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}, - ... -} -*/ - -struct SeNBAdditionRequest_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 13; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_UE_SecurityCapabilities() { set(id_UE_SecurityCapabilities); type=2;} - void select_id_SeNBSecurityKey() { set(id_SeNBSecurityKey); type=3;} - void select_id_SeNBUEAggregateMaximumBitRate() { set(id_SeNBUEAggregateMaximumBitRate); type=4;} - void select_id_ServingPLMN() { set(id_ServingPLMN); type=5;} - void select_id_E_RABs_ToBeAdded_List() { set(id_E_RABs_ToBeAdded_List); type=6;} - void select_id_MeNBtoSeNBContainer() { set(id_MeNBtoSeNBContainer); type=7;} - void select_id_CSGMembershipStatus() { set(id_CSGMembershipStatus); type=8;} - void select_id_SeNB_UE_X2AP_ID() { set(id_SeNB_UE_X2AP_ID); type=9;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=10;} - void select_id_ExpectedUEBehaviour() { set(id_ExpectedUEBehaviour); type=11;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=12;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_UE_SecurityCapabilities)) { type = 2; return true; } - else if(equal(id_SeNBSecurityKey)) { type = 3; return true; } - else if(equal(id_SeNBUEAggregateMaximumBitRate)) { type = 4; return true; } - else if(equal(id_ServingPLMN)) { type = 5; return true; } - else if(equal(id_E_RABs_ToBeAdded_List)) { type = 6; return true; } - else if(equal(id_MeNBtoSeNBContainer)) { type = 7; return true; } - else if(equal(id_CSGMembershipStatus)) { type = 8; return true; } - else if(equal(id_SeNB_UE_X2AP_ID)) { type = 9; return true; } - else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 10; return true; } - else if(equal(id_ExpectedUEBehaviour)) { type = 11; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 12; return true; } - else { type = 13; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_UE_SecurityCapabilities);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_SeNBSecurityKey);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_SeNBUEAggregateMaximumBitRate);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_ServingPLMN);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_E_RABs_ToBeAdded_List);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(id_MeNBtoSeNBContainer);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(id_CSGMembershipStatus);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false; - case 11: type = 11; if(v(ref_nested())) { return equal(id_ExpectedUEBehaviour);} return false; - case 12: type = 12; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 13: type = 13; 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 == 13; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;} - void select_id_UE_SecurityCapabilities() { set(reject); type=2;} - void select_id_SeNBSecurityKey() { set(reject); type=3;} - void select_id_SeNBUEAggregateMaximumBitRate() { set(reject); type=4;} - void select_id_ServingPLMN() { set(ignore); type=5;} - void select_id_E_RABs_ToBeAdded_List() { set(reject); type=6;} - void select_id_MeNBtoSeNBContainer() { set(reject); type=7;} - void select_id_CSGMembershipStatus() { set(reject); type=8;} - void select_id_SeNB_UE_X2AP_ID() { set(reject); type=9;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(reject); type=10;} - void select_id_ExpectedUEBehaviour() { set(ignore); type=11;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=12;} - X2AP_PROTOCOL_IES::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(ignore)) { 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(reject)) { type = 12; return true; } - else { type = 13; 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(ignore);} 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(reject);} return false; - case 13: type = 13; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - UESecurityCapabilities& select_id_UE_SecurityCapabilities() { return set(2); } - UESecurityCapabilities const* get_id_UE_SecurityCapabilities() const { return get(2); } - SeNBSecurityKey& select_id_SeNBSecurityKey() { return set(3); } - SeNBSecurityKey const* get_id_SeNBSecurityKey() const { return get(3); } - UEAggregateMaximumBitRate& select_id_SeNBUEAggregateMaximumBitRate() { return set(4); } - UEAggregateMaximumBitRate const* get_id_SeNBUEAggregateMaximumBitRate() const { return get(4); } - PLMN_Identity& select_id_ServingPLMN() { return set(5); } - PLMN_Identity const* get_id_ServingPLMN() const { return get(5); } - E_RABs_ToBeAdded_List& select_id_E_RABs_ToBeAdded_List() { return set(6); } - E_RABs_ToBeAdded_List const* get_id_E_RABs_ToBeAdded_List() const { return get(6); } - MeNBtoSeNBContainer& select_id_MeNBtoSeNBContainer() { return set(7); } - MeNBtoSeNBContainer const* get_id_MeNBtoSeNBContainer() const { return get(7); } - CSGMembershipStatus& select_id_CSGMembershipStatus() { return set(8); } - CSGMembershipStatus const* get_id_CSGMembershipStatus() const { return get(8); } - UE_X2AP_ID& select_id_SeNB_UE_X2AP_ID() { return set(9); } - UE_X2AP_ID const* get_id_SeNB_UE_X2AP_ID() const { return get(9); } - UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set(10); } - UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get(10); } - ExpectedUEBehaviour& select_id_ExpectedUEBehaviour() { return set(11); } - ExpectedUEBehaviour const* get_id_ExpectedUEBehaviour() const { return get(11); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(12); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(12); } - bool is_unknown() const { return type == 13; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_UE_SecurityCapabilities()); return true; - case 3: v(select_id_SeNBSecurityKey()); return true; - case 4: v(select_id_SeNBUEAggregateMaximumBitRate()); return true; - case 5: v(select_id_ServingPLMN()); return true; - case 6: v(select_id_E_RABs_ToBeAdded_List()); return true; - case 7: v(select_id_MeNBtoSeNBContainer()); return true; - case 8: v(select_id_CSGMembershipStatus()); return true; - case 9: v(select_id_SeNB_UE_X2AP_ID()); return true; - case 10: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true; - case 11: v(select_id_ExpectedUEBehaviour()); return true; - case 12: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 13: if(type != 13) {clear(); asn::base::set();} type = 13; 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; - } - 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(CSGMembershipStatus)]; - char dummy2[sizeof(E_RABs_ToBeAdded_List)]; - char dummy3[sizeof(ExpectedUEBehaviour)]; - char dummy4[sizeof(MeNBtoSeNBContainer)]; - char dummy5[sizeof(PLMN_Identity)]; - char dummy6[sizeof(SeNBSecurityKey)]; - char dummy7[sizeof(UEAggregateMaximumBitRate)]; - char dummy8[sizeof(UESecurityCapabilities)]; - char dummy9[sizeof(UE_X2AP_ID)]; - char dummy10[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 13; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_UE_SecurityCapabilities() { set(conditional); type=2;} - void select_id_SeNBSecurityKey() { set(conditional); type=3;} - void select_id_SeNBUEAggregateMaximumBitRate() { set(mandatory); type=4;} - void select_id_ServingPLMN() { set(optional); type=5;} - void select_id_E_RABs_ToBeAdded_List() { set(mandatory); type=6;} - void select_id_MeNBtoSeNBContainer() { set(mandatory); type=7;} - void select_id_CSGMembershipStatus() { set(optional); type=8;} - void select_id_SeNB_UE_X2AP_ID() { set(optional); type=9;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=10;} - void select_id_ExpectedUEBehaviour() { set(optional); type=11;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=12;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(conditional)) { type = 2; return true; } - else if(equal(conditional)) { type = 3; return true; } - else if(equal(mandatory)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else if(equal(mandatory)) { type = 6; return true; } - else if(equal(mandatory)) { type = 7; return true; } - else if(equal(optional)) { type = 8; return true; } - else if(equal(optional)) { type = 9; return true; } - else if(equal(optional)) { type = 10; return true; } - else if(equal(optional)) { type = 11; return true; } - else if(equal(optional)) { type = 12; return true; } - else { type = 13; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(conditional);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(conditional);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(mandatory);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(mandatory);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(mandatory);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(optional);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(optional);} return false; - case 11: type = 11; if(v(ref_nested())) { return equal(optional);} return false; - case 12: type = 12; if(v(ref_nested())) { return equal(optional);} return false; - case 13: type = 13; 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}; - - }; - -}; -/* -SeNBAdditionRequest ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SeNBAdditionRequest-IEs}}, - ... -} -*/ - -struct SeNBAdditionRequest : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SeNBAdditionRequest";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SeNBAdditionRequestAcknowledge-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-E-RABs-Admitted-ToBeAdded-List CRITICALITY ignore TYPE E-RABs-Admitted-ToBeAdded-List PRESENCE mandatory}| - { ID id-E-RABs-NotAdmitted-List CRITICALITY ignore TYPE E-RAB-List PRESENCE optional}| - { ID id-SeNBtoMeNBContainer CRITICALITY reject TYPE SeNBtoMeNBContainer PRESENCE mandatory}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| - { ID id-GW-TransportLayerAddress CRITICALITY ignore TYPE TransportLayerAddress PRESENCE optional}| - { ID id-SIPTO-L-GW-TransportLayerAddress CRITICALITY ignore TYPE TransportLayerAddress PRESENCE optional}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-SeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-Tunnel-Information-for-BBF CRITICALITY ignore TYPE TunnelInformation PRESENCE optional}, - ... -} -*/ - -struct SeNBAdditionRequestAcknowledge_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 12; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(id_SeNB_UE_X2AP_ID); type=2;} - void select_id_E_RABs_Admitted_ToBeAdded_List() { set(id_E_RABs_Admitted_ToBeAdded_List); type=3;} - void select_id_E_RABs_NotAdmitted_List() { set(id_E_RABs_NotAdmitted_List); type=4;} - void select_id_SeNBtoMeNBContainer() { set(id_SeNBtoMeNBContainer); type=5;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=6;} - void select_id_GW_TransportLayerAddress() { set(id_GW_TransportLayerAddress); type=7;} - void select_id_SIPTO_L_GW_TransportLayerAddress() { set(id_SIPTO_L_GW_TransportLayerAddress); type=8;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=9;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=10;} - void select_id_Tunnel_Information_for_BBF() { set(id_Tunnel_Information_for_BBF); type=11;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SeNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_E_RABs_Admitted_ToBeAdded_List)) { type = 3; return true; } - else if(equal(id_E_RABs_NotAdmitted_List)) { type = 4; return true; } - else if(equal(id_SeNBtoMeNBContainer)) { type = 5; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 6; return true; } - else if(equal(id_GW_TransportLayerAddress)) { type = 7; return true; } - else if(equal(id_SIPTO_L_GW_TransportLayerAddress)) { type = 8; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 9; return true; } - else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 10; return true; } - else if(equal(id_Tunnel_Information_for_BBF)) { type = 11; return true; } - else { type = 12; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_ToBeAdded_List);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_E_RABs_NotAdmitted_List);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_SeNBtoMeNBContainer);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(id_GW_TransportLayerAddress);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(id_SIPTO_L_GW_TransportLayerAddress);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false; - case 11: type = 11; if(v(ref_nested())) { return equal(id_Tunnel_Information_for_BBF);} return false; - case 12: type = 12; 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 == 12; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(reject); type=2;} - void select_id_E_RABs_Admitted_ToBeAdded_List() { set(ignore); type=3;} - void select_id_E_RABs_NotAdmitted_List() { set(ignore); type=4;} - void select_id_SeNBtoMeNBContainer() { set(reject); type=5;} - void select_id_CriticalityDiagnostics() { set(ignore); type=6;} - void select_id_GW_TransportLayerAddress() { set(ignore); type=7;} - void select_id_SIPTO_L_GW_TransportLayerAddress() { set(ignore); type=8;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=9;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(reject); type=10;} - void select_id_Tunnel_Information_for_BBF() { set(ignore); type=11;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(reject)) { type = 5; return true; } - else if(equal(ignore)) { type = 6; return true; } - else if(equal(ignore)) { type = 7; return true; } - else if(equal(ignore)) { 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 { type = 12; 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(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} 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(ignore);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(ignore);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(ignore);} 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - UE_X2AP_ID& select_id_SeNB_UE_X2AP_ID() { return set(2); } - UE_X2AP_ID const* get_id_SeNB_UE_X2AP_ID() const { return get(2); } - E_RABs_Admitted_ToBeAdded_List& select_id_E_RABs_Admitted_ToBeAdded_List() { return set(3); } - E_RABs_Admitted_ToBeAdded_List const* get_id_E_RABs_Admitted_ToBeAdded_List() const { return get(3); } - E_RAB_List& select_id_E_RABs_NotAdmitted_List() { return set(4); } - E_RAB_List const* get_id_E_RABs_NotAdmitted_List() const { return get(4); } - SeNBtoMeNBContainer& select_id_SeNBtoMeNBContainer() { return set(5); } - SeNBtoMeNBContainer const* get_id_SeNBtoMeNBContainer() const { return get(5); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(6); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(6); } - TransportLayerAddress& select_id_GW_TransportLayerAddress() { return set(7); } - TransportLayerAddress const* get_id_GW_TransportLayerAddress() const { return get(7); } - TransportLayerAddress& select_id_SIPTO_L_GW_TransportLayerAddress() { return set(8); } - TransportLayerAddress const* get_id_SIPTO_L_GW_TransportLayerAddress() const { return get(8); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(9); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(9); } - UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set(10); } - UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get(10); } - TunnelInformation& select_id_Tunnel_Information_for_BBF() { return set(11); } - TunnelInformation const* get_id_Tunnel_Information_for_BBF() const { return get(11); } - bool is_unknown() const { return type == 12; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SeNB_UE_X2AP_ID()); return true; - case 3: v(select_id_E_RABs_Admitted_ToBeAdded_List()); return true; - case 4: v(select_id_E_RABs_NotAdmitted_List()); return true; - case 5: v(select_id_SeNBtoMeNBContainer()); return true; - case 6: v(select_id_CriticalityDiagnostics()); return true; - case 7: v(select_id_GW_TransportLayerAddress()); return true; - case 8: v(select_id_SIPTO_L_GW_TransportLayerAddress()); return true; - case 9: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 10: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true; - case 11: v(select_id_Tunnel_Information_for_BBF()); return true; - case 12: if(type != 12) {clear(); asn::base::set();} type = 12; 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; - } - 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(CriticalityDiagnostics)]; - char dummy2[sizeof(E_RAB_List)]; - char dummy3[sizeof(E_RABs_Admitted_ToBeAdded_List)]; - char dummy4[sizeof(SeNBtoMeNBContainer)]; - char dummy5[sizeof(TransportLayerAddress)]; - char dummy6[sizeof(TunnelInformation)]; - char dummy7[sizeof(UE_X2AP_ID)]; - char dummy8[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 12; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_E_RABs_Admitted_ToBeAdded_List() { set(mandatory); type=3;} - void select_id_E_RABs_NotAdmitted_List() { set(optional); type=4;} - void select_id_SeNBtoMeNBContainer() { set(mandatory); type=5;} - void select_id_CriticalityDiagnostics() { set(optional); type=6;} - void select_id_GW_TransportLayerAddress() { set(optional); type=7;} - void select_id_SIPTO_L_GW_TransportLayerAddress() { set(optional); type=8;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=9;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=10;} - void select_id_Tunnel_Information_for_BBF() { set(optional); type=11;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(mandatory)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else if(equal(optional)) { type = 7; return true; } - else if(equal(optional)) { type = 8; return true; } - else if(equal(optional)) { type = 9; return true; } - else if(equal(optional)) { type = 10; return true; } - else if(equal(optional)) { type = 11; return true; } - else { type = 12; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(mandatory);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(optional);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(optional);} return false; - case 11: type = 11; if(v(ref_nested())) { return equal(optional);} return false; - case 12: type = 12; 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}; - - }; - -}; -/* -SeNBAdditionRequestAcknowledge ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SeNBAdditionRequestAcknowledge-IEs}}, - ... -} -*/ - -struct SeNBAdditionRequestAcknowledge : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SeNBAdditionRequestAcknowledge";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SeNBAdditionRequestReject-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-SeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}, - ... -} -*/ - -struct SeNBAdditionRequestReject_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 7; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(id_SeNB_UE_X2AP_ID); type=2;} - void select_id_Cause() { set(id_Cause); type=3;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=5;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=6;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SeNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_Cause)) { type = 3; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 5; return true; } - else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 6; return true; } - else { type = 7; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false; - case 7: type = 7; 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 == 7; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(reject); type=2;} - void select_id_Cause() { set(ignore); type=3;} - void select_id_CriticalityDiagnostics() { set(ignore); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=5;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(reject); type=6;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(reject)) { type = 5; return true; } - else if(equal(reject)) { type = 6; return true; } - else { type = 7; 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(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - UE_X2AP_ID& select_id_SeNB_UE_X2AP_ID() { return set(2); } - UE_X2AP_ID const* get_id_SeNB_UE_X2AP_ID() const { return get(2); } - Cause& select_id_Cause() { return set(3); } - Cause const* get_id_Cause() const { return get(3); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(4); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(4); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(5); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(5); } - UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set(6); } - UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get(6); } - bool is_unknown() const { return type == 7; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SeNB_UE_X2AP_ID()); return true; - case 3: v(select_id_Cause()); return true; - case 4: v(select_id_CriticalityDiagnostics()); return true; - case 5: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 6: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true; - case 7: if(type != 7) {clear(); asn::base::set();} type = 7; 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; - } - 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(Cause)]; - char dummy2[sizeof(CriticalityDiagnostics)]; - char dummy3[sizeof(UE_X2AP_ID)]; - char dummy4[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 7; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_Cause() { set(mandatory); type=3;} - void select_id_CriticalityDiagnostics() { set(optional); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=5;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=6;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else { type = 7; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; 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}; - - }; - -}; -/* -SeNBAdditionRequestReject ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SeNBAdditionRequestReject-IEs}}, - ... -} -*/ - -struct SeNBAdditionRequestReject : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SeNBAdditionRequestReject";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SeNBCounterCheckRequest-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-E-RABs-SubjectToCounterCheck-List CRITICALITY ignore TYPE E-RABs-SubjectToCounterCheck-List PRESENCE mandatory}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-SeNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional}, - ... -} -*/ - -struct SeNBCounterCheckRequest_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(id_SeNB_UE_X2AP_ID); type=2;} - void select_id_E_RABs_SubjectToCounterCheck_List() { set(id_E_RABs_SubjectToCounterCheck_List); type=3;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=4;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=5;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SeNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_E_RABs_SubjectToCounterCheck_List)) { type = 3; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 4; return true; } - else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 5; return true; } - else { type = 6; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_E_RABs_SubjectToCounterCheck_List);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false; - case 6: type = 6; 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 == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(reject); type=2;} - void select_id_E_RABs_SubjectToCounterCheck_List() { set(ignore); type=3;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(ignore); type=4;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(ignore); type=5;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else { type = 6; 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(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false; - case 6: type = 6; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - UE_X2AP_ID& select_id_SeNB_UE_X2AP_ID() { return set(2); } - UE_X2AP_ID const* get_id_SeNB_UE_X2AP_ID() const { return get(2); } - E_RABs_SubjectToCounterCheck_List& select_id_E_RABs_SubjectToCounterCheck_List() { return set(3); } - E_RABs_SubjectToCounterCheck_List const* get_id_E_RABs_SubjectToCounterCheck_List() const { return get(3); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(4); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(4); } - UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set(5); } - UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get(5); } - bool is_unknown() const { return type == 6; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SeNB_UE_X2AP_ID()); return true; - case 3: v(select_id_E_RABs_SubjectToCounterCheck_List()); return true; - case 4: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 5: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true; - case 6: if(type != 6) {clear(); asn::base::set();} type = 6; 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; - } - 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(E_RABs_SubjectToCounterCheck_List)]; - char dummy2[sizeof(UE_X2AP_ID)]; - char dummy3[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_E_RABs_SubjectToCounterCheck_List() { set(mandatory); type=3;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=4;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=5;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else { type = 6; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; 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}; - - }; - -}; -/* -SeNBCounterCheckRequest ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SeNBCounterCheckRequest-IEs}}, - ... -} -*/ - -struct SeNBCounterCheckRequest : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SeNBCounterCheckRequest";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SeNBModificationConfirm-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SeNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-MeNBtoSeNBContainer CRITICALITY ignore TYPE MeNBtoSeNBContainer PRESENCE optional}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-SeNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional}, - ... -} -*/ - -struct SeNBModificationConfirm_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 7; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(id_SeNB_UE_X2AP_ID); type=2;} - void select_id_MeNBtoSeNBContainer() { set(id_MeNBtoSeNBContainer); type=3;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=5;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=6;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SeNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_MeNBtoSeNBContainer)) { type = 3; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 5; return true; } - else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 6; return true; } - else { type = 7; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_MeNBtoSeNBContainer);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false; - case 7: type = 7; 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 == 7; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(ignore); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(ignore); type=2;} - void select_id_MeNBtoSeNBContainer() { set(ignore); type=3;} - void select_id_CriticalityDiagnostics() { set(ignore); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(ignore); type=5;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(ignore); type=6;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else if(equal(ignore)) { type = 6; return true; } - else { type = 7; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false; - case 7: type = 7; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - UE_X2AP_ID& select_id_SeNB_UE_X2AP_ID() { return set(2); } - UE_X2AP_ID const* get_id_SeNB_UE_X2AP_ID() const { return get(2); } - MeNBtoSeNBContainer& select_id_MeNBtoSeNBContainer() { return set(3); } - MeNBtoSeNBContainer const* get_id_MeNBtoSeNBContainer() const { return get(3); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(4); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(4); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(5); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(5); } - UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set(6); } - UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get(6); } - bool is_unknown() const { return type == 7; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SeNB_UE_X2AP_ID()); return true; - case 3: v(select_id_MeNBtoSeNBContainer()); return true; - case 4: v(select_id_CriticalityDiagnostics()); return true; - case 5: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 6: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true; - case 7: if(type != 7) {clear(); asn::base::set();} type = 7; 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; - } - 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(CriticalityDiagnostics)]; - char dummy2[sizeof(MeNBtoSeNBContainer)]; - char dummy3[sizeof(UE_X2AP_ID)]; - char dummy4[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 7; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_MeNBtoSeNBContainer() { set(optional); type=3;} - void select_id_CriticalityDiagnostics() { set(optional); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=5;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=6;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else { type = 7; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; 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}; - - }; - -}; -/* -SeNBModificationConfirm ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SeNBModificationConfirm-IEs}}, - ... -} -*/ - -struct SeNBModificationConfirm : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SeNBModificationConfirm";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SeNBModificationRefuse-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SeNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| - { ID id-MeNBtoSeNBContainer CRITICALITY ignore TYPE MeNBtoSeNBContainer PRESENCE optional}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-SeNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional}, - ... -} -*/ - -struct SeNBModificationRefuse_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 8; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(id_SeNB_UE_X2AP_ID); type=2;} - void select_id_Cause() { set(id_Cause); type=3;} - void select_id_MeNBtoSeNBContainer() { set(id_MeNBtoSeNBContainer); type=4;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=5;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=6;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=7;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SeNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_Cause)) { type = 3; return true; } - else if(equal(id_MeNBtoSeNBContainer)) { type = 4; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 5; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 6; return true; } - else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 7; return true; } - else { type = 8; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_MeNBtoSeNBContainer);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false; - case 8: type = 8; 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 == 8; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(ignore); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(ignore); type=2;} - void select_id_Cause() { set(ignore); type=3;} - void select_id_MeNBtoSeNBContainer() { set(ignore); type=4;} - void select_id_CriticalityDiagnostics() { set(ignore); type=5;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(ignore); type=6;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(ignore); type=7;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else if(equal(ignore)) { type = 6; return true; } - else if(equal(ignore)) { type = 7; return true; } - else { type = 8; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(ignore);} return false; - case 8: type = 8; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - UE_X2AP_ID& select_id_SeNB_UE_X2AP_ID() { return set(2); } - UE_X2AP_ID const* get_id_SeNB_UE_X2AP_ID() const { return get(2); } - Cause& select_id_Cause() { return set(3); } - Cause const* get_id_Cause() const { return get(3); } - MeNBtoSeNBContainer& select_id_MeNBtoSeNBContainer() { return set(4); } - MeNBtoSeNBContainer const* get_id_MeNBtoSeNBContainer() const { return get(4); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(5); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(5); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(6); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(6); } - UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set(7); } - UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get(7); } - bool is_unknown() const { return type == 8; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SeNB_UE_X2AP_ID()); return true; - case 3: v(select_id_Cause()); return true; - case 4: v(select_id_MeNBtoSeNBContainer()); return true; - case 5: v(select_id_CriticalityDiagnostics()); return true; - case 6: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 7: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true; - case 8: if(type != 8) {clear(); asn::base::set();} type = 8; 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; - } - 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(Cause)]; - char dummy2[sizeof(CriticalityDiagnostics)]; - char dummy3[sizeof(MeNBtoSeNBContainer)]; - char dummy4[sizeof(UE_X2AP_ID)]; - char dummy5[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 8; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_Cause() { set(mandatory); type=3;} - void select_id_MeNBtoSeNBContainer() { set(optional); type=4;} - void select_id_CriticalityDiagnostics() { set(optional); type=5;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=6;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=7;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else if(equal(optional)) { type = 7; return true; } - else { type = 8; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false; - case 8: type = 8; 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}; - - }; - -}; -/* -SeNBModificationRefuse ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SeNBModificationRefuse-IEs}}, - ... -} -*/ - -struct SeNBModificationRefuse : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SeNBModificationRefuse";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -UE-ContextInformationSeNBModReqExtIEs X2AP-PROTOCOL-EXTENSION ::= { - ... -} -*/ - -struct UE_ContextInformationSeNBModReqExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() - { - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true; - } - return false; - - } - template bool encode(size_t index, V& v) const - { - if(index != type) return false; - return false; - - } - private: - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 1; } - void clear() {type = 0;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - { type = 1; 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; 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}; - - }; - -}; -/* -UE-ContextInformationSeNBModReq ::= SEQUENCE { - uE-SecurityCapabilities UESecurityCapabilities OPTIONAL, - seNB-SecurityKey SeNBSecurityKey OPTIONAL, - seNBUEAggregateMaximumBitRate UEAggregateMaximumBitRate OPTIONAL, - e-RABs-ToBeAdded E-RABs-ToBeAdded-List-ModReq OPTIONAL, - e-RABs-ToBeModified E-RABs-ToBeModified-List-ModReq OPTIONAL, - e-RABs-ToBeReleased E-RABs-ToBeReleased-List-ModReq OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {UE-ContextInformationSeNBModReqExtIEs} } OPTIONAL, - ... -} -*/ - -struct UE_ContextInformationSeNBModReq : asn::sequence<7, 0, true, 7> -{ - static constexpr const char* name() {return "UE-ContextInformationSeNBModReq";} - using parent_t = asn::sequence<7, 0, true, 7>; - struct uE_SecurityCapabilities_t : UESecurityCapabilities - { - static constexpr const char* name() {return "uE_SecurityCapabilities_t";} - using parent_t = UESecurityCapabilities; - static constexpr bool optional = true; - - }; - uE_SecurityCapabilities_t& set_uE_SecurityCapabilities() { uE_SecurityCapabilities.setpresent(true); return uE_SecurityCapabilities;} - uE_SecurityCapabilities_t const* get_uE_SecurityCapabilities() const {return uE_SecurityCapabilities.is_valid() ? &uE_SecurityCapabilities : nullptr;} - struct seNB_SecurityKey_t : SeNBSecurityKey - { - static constexpr const char* name() {return "seNB_SecurityKey_t";} - using parent_t = SeNBSecurityKey; - static constexpr bool optional = true; - - }; - seNB_SecurityKey_t& set_seNB_SecurityKey() { seNB_SecurityKey.setpresent(true); return seNB_SecurityKey;} - seNB_SecurityKey_t const* get_seNB_SecurityKey() const {return seNB_SecurityKey.is_valid() ? &seNB_SecurityKey : nullptr;} - struct seNBUEAggregateMaximumBitRate_t : UEAggregateMaximumBitRate - { - static constexpr const char* name() {return "seNBUEAggregateMaximumBitRate_t";} - using parent_t = UEAggregateMaximumBitRate; - static constexpr bool optional = true; - - }; - seNBUEAggregateMaximumBitRate_t& set_seNBUEAggregateMaximumBitRate() { seNBUEAggregateMaximumBitRate.setpresent(true); return seNBUEAggregateMaximumBitRate;} - seNBUEAggregateMaximumBitRate_t const* get_seNBUEAggregateMaximumBitRate() const {return seNBUEAggregateMaximumBitRate.is_valid() ? &seNBUEAggregateMaximumBitRate : nullptr;} - struct e_RABs_ToBeAdded_t : E_RABs_ToBeAdded_List_ModReq - { - static constexpr const char* name() {return "e_RABs_ToBeAdded_t";} - using parent_t = E_RABs_ToBeAdded_List_ModReq; - static constexpr bool optional = true; - - }; - e_RABs_ToBeAdded_t& set_e_RABs_ToBeAdded() { e_RABs_ToBeAdded.setpresent(true); return e_RABs_ToBeAdded;} - e_RABs_ToBeAdded_t const* get_e_RABs_ToBeAdded() const {return e_RABs_ToBeAdded.is_valid() ? &e_RABs_ToBeAdded : nullptr;} - struct e_RABs_ToBeModified_t : E_RABs_ToBeModified_List_ModReq - { - static constexpr const char* name() {return "e_RABs_ToBeModified_t";} - using parent_t = E_RABs_ToBeModified_List_ModReq; - static constexpr bool optional = true; - - }; - e_RABs_ToBeModified_t& set_e_RABs_ToBeModified() { e_RABs_ToBeModified.setpresent(true); return e_RABs_ToBeModified;} - e_RABs_ToBeModified_t const* get_e_RABs_ToBeModified() const {return e_RABs_ToBeModified.is_valid() ? &e_RABs_ToBeModified : nullptr;} - struct e_RABs_ToBeReleased_t : E_RABs_ToBeReleased_List_ModReq - { - static constexpr const char* name() {return "e_RABs_ToBeReleased_t";} - using parent_t = E_RABs_ToBeReleased_List_ModReq; - static constexpr bool optional = true; - - }; - e_RABs_ToBeReleased_t& set_e_RABs_ToBeReleased() { e_RABs_ToBeReleased.setpresent(true); return e_RABs_ToBeReleased;} - e_RABs_ToBeReleased_t const* get_e_RABs_ToBeReleased() const {return e_RABs_ToBeReleased.is_valid() ? &e_RABs_ToBeReleased : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(uE_SecurityCapabilities); - v(seNB_SecurityKey); - v(seNBUEAggregateMaximumBitRate); - v(e_RABs_ToBeAdded); - v(e_RABs_ToBeModified); - v(e_RABs_ToBeReleased); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(uE_SecurityCapabilities); - v(seNB_SecurityKey); - v(seNBUEAggregateMaximumBitRate); - v(e_RABs_ToBeAdded); - v(e_RABs_ToBeModified); - v(e_RABs_ToBeReleased); - v(iE_Extensions); - - }; - void clear() - { - uE_SecurityCapabilities.clear(); - seNB_SecurityKey.clear(); - seNBUEAggregateMaximumBitRate.clear(); - e_RABs_ToBeAdded.clear(); - e_RABs_ToBeModified.clear(); - e_RABs_ToBeReleased.clear(); - iE_Extensions.clear(); - - }; - private: - uE_SecurityCapabilities_t uE_SecurityCapabilities; - seNB_SecurityKey_t seNB_SecurityKey; - seNBUEAggregateMaximumBitRate_t seNBUEAggregateMaximumBitRate; - e_RABs_ToBeAdded_t e_RABs_ToBeAdded; - e_RABs_ToBeModified_t e_RABs_ToBeModified; - e_RABs_ToBeReleased_t e_RABs_ToBeReleased; - iE_Extensions_t iE_Extensions; - -}; -/* -SeNBModificationRequest-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| - { ID id-SCGChangeIndication CRITICALITY ignore TYPE SCGChangeIndication PRESENCE optional}| - { ID id-ServingPLMN CRITICALITY ignore TYPE PLMN-Identity PRESENCE optional}| - { ID id-UE-ContextInformationSeNBModReq CRITICALITY reject TYPE UE-ContextInformationSeNBModReq PRESENCE optional}| - { ID id-MeNBtoSeNBContainer CRITICALITY ignore TYPE MeNBtoSeNBContainer PRESENCE optional}| - { ID id-CSGMembershipStatus CRITICALITY reject TYPE CSGMembershipStatus PRESENCE optional}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-SeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}, - ... -} -*/ - -struct SeNBModificationRequest_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 11; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(id_SeNB_UE_X2AP_ID); type=2;} - void select_id_Cause() { set(id_Cause); type=3;} - void select_id_SCGChangeIndication() { set(id_SCGChangeIndication); type=4;} - void select_id_ServingPLMN() { set(id_ServingPLMN); type=5;} - void select_id_UE_ContextInformationSeNBModReq() { set(id_UE_ContextInformationSeNBModReq); type=6;} - void select_id_MeNBtoSeNBContainer() { set(id_MeNBtoSeNBContainer); type=7;} - void select_id_CSGMembershipStatus() { set(id_CSGMembershipStatus); type=8;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=9;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=10;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SeNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_Cause)) { type = 3; return true; } - else if(equal(id_SCGChangeIndication)) { type = 4; return true; } - else if(equal(id_ServingPLMN)) { type = 5; return true; } - else if(equal(id_UE_ContextInformationSeNBModReq)) { type = 6; return true; } - else if(equal(id_MeNBtoSeNBContainer)) { type = 7; return true; } - else if(equal(id_CSGMembershipStatus)) { type = 8; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 9; return true; } - else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 10; return true; } - else { type = 11; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_SCGChangeIndication);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_ServingPLMN);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_UE_ContextInformationSeNBModReq);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(id_MeNBtoSeNBContainer);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(id_CSGMembershipStatus);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false; - case 11: type = 11; 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 == 11; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(reject); type=2;} - void select_id_Cause() { set(ignore); type=3;} - void select_id_SCGChangeIndication() { set(ignore); type=4;} - void select_id_ServingPLMN() { set(ignore); type=5;} - void select_id_UE_ContextInformationSeNBModReq() { set(reject); type=6;} - void select_id_MeNBtoSeNBContainer() { set(ignore); type=7;} - void select_id_CSGMembershipStatus() { set(reject); type=8;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=9;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(reject); type=10;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else if(equal(reject)) { type = 6; return true; } - else if(equal(ignore)) { 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 { type = 11; 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(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} 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(ignore);} 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - UE_X2AP_ID& select_id_SeNB_UE_X2AP_ID() { return set(2); } - UE_X2AP_ID const* get_id_SeNB_UE_X2AP_ID() const { return get(2); } - Cause& select_id_Cause() { return set(3); } - Cause const* get_id_Cause() const { return get(3); } - SCGChangeIndication& select_id_SCGChangeIndication() { return set(4); } - SCGChangeIndication const* get_id_SCGChangeIndication() const { return get(4); } - PLMN_Identity& select_id_ServingPLMN() { return set(5); } - PLMN_Identity const* get_id_ServingPLMN() const { return get(5); } - UE_ContextInformationSeNBModReq& select_id_UE_ContextInformationSeNBModReq() { return set(6); } - UE_ContextInformationSeNBModReq const* get_id_UE_ContextInformationSeNBModReq() const { return get(6); } - MeNBtoSeNBContainer& select_id_MeNBtoSeNBContainer() { return set(7); } - MeNBtoSeNBContainer const* get_id_MeNBtoSeNBContainer() const { return get(7); } - CSGMembershipStatus& select_id_CSGMembershipStatus() { return set(8); } - CSGMembershipStatus const* get_id_CSGMembershipStatus() const { return get(8); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(9); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(9); } - UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set(10); } - UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get(10); } - bool is_unknown() const { return type == 11; } - 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_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SeNB_UE_X2AP_ID()); return true; - case 3: v(select_id_Cause()); return true; - case 4: v(select_id_SCGChangeIndication()); return true; - case 5: v(select_id_ServingPLMN()); return true; - case 6: v(select_id_UE_ContextInformationSeNBModReq()); return true; - case 7: v(select_id_MeNBtoSeNBContainer()); return true; - case 8: v(select_id_CSGMembershipStatus()); return true; - case 9: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 10: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true; - case 11: if(type != 11) {clear(); asn::base::set();} type = 11; 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(CSGMembershipStatus)]; - char dummy2[sizeof(Cause)]; - char dummy3[sizeof(MeNBtoSeNBContainer)]; - char dummy4[sizeof(PLMN_Identity)]; - char dummy5[sizeof(SCGChangeIndication)]; - char dummy6[sizeof(UE_ContextInformationSeNBModReq)]; - char dummy7[sizeof(UE_X2AP_ID)]; - char dummy8[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 11; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_Cause() { set(mandatory); type=3;} - void select_id_SCGChangeIndication() { set(optional); type=4;} - void select_id_ServingPLMN() { set(optional); type=5;} - void select_id_UE_ContextInformationSeNBModReq() { set(optional); type=6;} - void select_id_MeNBtoSeNBContainer() { set(optional); type=7;} - void select_id_CSGMembershipStatus() { set(optional); type=8;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=9;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=10;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else if(equal(optional)) { type = 7; return true; } - else if(equal(optional)) { type = 8; return true; } - else if(equal(optional)) { type = 9; return true; } - else if(equal(optional)) { type = 10; return true; } - else { type = 11; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(optional);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(optional);} return false; - case 11: type = 11; 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}; - - }; - -}; -/* -SeNBModificationRequest ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ SeNBModificationRequest-IEs}}, - ... -} -*/ - -struct SeNBModificationRequest : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SeNBModificationRequest";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SeNBModificationRequestAcknowledge-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SeNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-E-RABs-Admitted-ToBeAdded-ModAckList CRITICALITY ignore TYPE E-RABs-Admitted-ToBeAdded-ModAckList PRESENCE optional}| - { ID id-E-RABs-Admitted-ToBeModified-ModAckList CRITICALITY ignore TYPE E-RABs-Admitted-ToBeModified-ModAckList PRESENCE optional}| - { ID id-E-RABs-Admitted-ToBeReleased-ModAckList CRITICALITY ignore TYPE E-RABs-Admitted-ToBeReleased-ModAckList PRESENCE optional}| - { ID id-E-RABs-NotAdmitted-List CRITICALITY ignore TYPE E-RAB-List PRESENCE optional}| - { ID id-SeNBtoMeNBContainer CRITICALITY ignore TYPE SeNBtoMeNBContainer PRESENCE optional}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-SeNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional}, - ... -} -*/ - -struct SeNBModificationRequestAcknowledge_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 11; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(id_SeNB_UE_X2AP_ID); type=2;} - void select_id_E_RABs_Admitted_ToBeAdded_ModAckList() { set(id_E_RABs_Admitted_ToBeAdded_ModAckList); type=3;} - void select_id_E_RABs_Admitted_ToBeModified_ModAckList() { set(id_E_RABs_Admitted_ToBeModified_ModAckList); type=4;} - void select_id_E_RABs_Admitted_ToBeReleased_ModAckList() { set(id_E_RABs_Admitted_ToBeReleased_ModAckList); type=5;} - void select_id_E_RABs_NotAdmitted_List() { set(id_E_RABs_NotAdmitted_List); type=6;} - void select_id_SeNBtoMeNBContainer() { set(id_SeNBtoMeNBContainer); type=7;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=8;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=9;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=10;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SeNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_E_RABs_Admitted_ToBeAdded_ModAckList)) { type = 3; return true; } - else if(equal(id_E_RABs_Admitted_ToBeModified_ModAckList)) { type = 4; return true; } - else if(equal(id_E_RABs_Admitted_ToBeReleased_ModAckList)) { type = 5; return true; } - else if(equal(id_E_RABs_NotAdmitted_List)) { type = 6; return true; } - else if(equal(id_SeNBtoMeNBContainer)) { type = 7; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 8; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 9; return true; } - else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 10; return true; } - else { type = 11; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_ToBeAdded_ModAckList);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_ToBeModified_ModAckList);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_ToBeReleased_ModAckList);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_E_RABs_NotAdmitted_List);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(id_SeNBtoMeNBContainer);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false; - case 11: type = 11; 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 == 11; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(ignore); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(ignore); type=2;} - void select_id_E_RABs_Admitted_ToBeAdded_ModAckList() { set(ignore); type=3;} - void select_id_E_RABs_Admitted_ToBeModified_ModAckList() { set(ignore); type=4;} - void select_id_E_RABs_Admitted_ToBeReleased_ModAckList() { set(ignore); type=5;} - void select_id_E_RABs_NotAdmitted_List() { set(ignore); type=6;} - void select_id_SeNBtoMeNBContainer() { set(ignore); type=7;} - void select_id_CriticalityDiagnostics() { set(ignore); type=8;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(ignore); type=9;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(ignore); type=10;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else if(equal(ignore)) { type = 6; return true; } - else if(equal(ignore)) { type = 7; return true; } - else if(equal(ignore)) { type = 8; return true; } - else if(equal(ignore)) { type = 9; return true; } - else if(equal(ignore)) { type = 10; return true; } - else { type = 11; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(ignore);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(ignore);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(ignore);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(ignore);} return false; - case 11: type = 11; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - UE_X2AP_ID& select_id_SeNB_UE_X2AP_ID() { return set(2); } - UE_X2AP_ID const* get_id_SeNB_UE_X2AP_ID() const { return get(2); } - E_RABs_Admitted_ToBeAdded_ModAckList& select_id_E_RABs_Admitted_ToBeAdded_ModAckList() { return set(3); } - E_RABs_Admitted_ToBeAdded_ModAckList const* get_id_E_RABs_Admitted_ToBeAdded_ModAckList() const { return get(3); } - E_RABs_Admitted_ToBeModified_ModAckList& select_id_E_RABs_Admitted_ToBeModified_ModAckList() { return set(4); } - E_RABs_Admitted_ToBeModified_ModAckList const* get_id_E_RABs_Admitted_ToBeModified_ModAckList() const { return get(4); } - E_RABs_Admitted_ToBeReleased_ModAckList& select_id_E_RABs_Admitted_ToBeReleased_ModAckList() { return set(5); } - E_RABs_Admitted_ToBeReleased_ModAckList const* get_id_E_RABs_Admitted_ToBeReleased_ModAckList() const { return get(5); } - E_RAB_List& select_id_E_RABs_NotAdmitted_List() { return set(6); } - E_RAB_List const* get_id_E_RABs_NotAdmitted_List() const { return get(6); } - SeNBtoMeNBContainer& select_id_SeNBtoMeNBContainer() { return set(7); } - SeNBtoMeNBContainer const* get_id_SeNBtoMeNBContainer() const { return get(7); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(8); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(8); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(9); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(9); } - UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set(10); } - UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get(10); } - bool is_unknown() const { return type == 11; } - 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_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SeNB_UE_X2AP_ID()); return true; - case 3: v(select_id_E_RABs_Admitted_ToBeAdded_ModAckList()); return true; - case 4: v(select_id_E_RABs_Admitted_ToBeModified_ModAckList()); return true; - case 5: v(select_id_E_RABs_Admitted_ToBeReleased_ModAckList()); return true; - case 6: v(select_id_E_RABs_NotAdmitted_List()); return true; - case 7: v(select_id_SeNBtoMeNBContainer()); return true; - case 8: v(select_id_CriticalityDiagnostics()); return true; - case 9: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 10: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true; - case 11: if(type != 11) {clear(); asn::base::set();} type = 11; 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(CriticalityDiagnostics)]; - char dummy2[sizeof(E_RAB_List)]; - char dummy3[sizeof(E_RABs_Admitted_ToBeAdded_ModAckList)]; - char dummy4[sizeof(E_RABs_Admitted_ToBeModified_ModAckList)]; - char dummy5[sizeof(E_RABs_Admitted_ToBeReleased_ModAckList)]; - char dummy6[sizeof(SeNBtoMeNBContainer)]; - char dummy7[sizeof(UE_X2AP_ID)]; - char dummy8[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 11; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_E_RABs_Admitted_ToBeAdded_ModAckList() { set(optional); type=3;} - void select_id_E_RABs_Admitted_ToBeModified_ModAckList() { set(optional); type=4;} - void select_id_E_RABs_Admitted_ToBeReleased_ModAckList() { set(optional); type=5;} - void select_id_E_RABs_NotAdmitted_List() { set(optional); type=6;} - void select_id_SeNBtoMeNBContainer() { set(optional); type=7;} - void select_id_CriticalityDiagnostics() { set(optional); type=8;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=9;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=10;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else if(equal(optional)) { type = 7; return true; } - else if(equal(optional)) { type = 8; return true; } - else if(equal(optional)) { type = 9; return true; } - else if(equal(optional)) { type = 10; return true; } - else { type = 11; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(optional);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(optional);} return false; - case 11: type = 11; 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}; - - }; - -}; -/* -SeNBModificationRequestAcknowledge ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SeNBModificationRequestAcknowledge-IEs}}, - ... -} -*/ - -struct SeNBModificationRequestAcknowledge : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SeNBModificationRequestAcknowledge";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SeNBModificationRequestReject-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SeNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-SeNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional}, - ... -} -*/ - -struct SeNBModificationRequestReject_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 7; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(id_SeNB_UE_X2AP_ID); type=2;} - void select_id_Cause() { set(id_Cause); type=3;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=5;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=6;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SeNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_Cause)) { type = 3; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 5; return true; } - else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 6; return true; } - else { type = 7; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false; - case 7: type = 7; 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 == 7; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(ignore); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(ignore); type=2;} - void select_id_Cause() { set(ignore); type=3;} - void select_id_CriticalityDiagnostics() { set(ignore); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(ignore); type=5;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(ignore); type=6;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else if(equal(ignore)) { type = 6; return true; } - else { type = 7; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false; - case 7: type = 7; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - UE_X2AP_ID& select_id_SeNB_UE_X2AP_ID() { return set(2); } - UE_X2AP_ID const* get_id_SeNB_UE_X2AP_ID() const { return get(2); } - Cause& select_id_Cause() { return set(3); } - Cause const* get_id_Cause() const { return get(3); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(4); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(4); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(5); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(5); } - UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set(6); } - UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get(6); } - bool is_unknown() const { return type == 7; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SeNB_UE_X2AP_ID()); return true; - case 3: v(select_id_Cause()); return true; - case 4: v(select_id_CriticalityDiagnostics()); return true; - case 5: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 6: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true; - case 7: if(type != 7) {clear(); asn::base::set();} type = 7; 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; - } - 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(Cause)]; - char dummy2[sizeof(CriticalityDiagnostics)]; - char dummy3[sizeof(UE_X2AP_ID)]; - char dummy4[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 7; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_Cause() { set(mandatory); type=3;} - void select_id_CriticalityDiagnostics() { set(optional); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=5;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=6;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else { type = 7; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; 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}; - - }; - -}; -/* -SeNBModificationRequestReject ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SeNBModificationRequestReject-IEs}}, - ... -} -*/ - -struct SeNBModificationRequestReject : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SeNBModificationRequestReject";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SeNBModificationRequired-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| - { ID id-SCGChangeIndication CRITICALITY ignore TYPE SCGChangeIndication PRESENCE optional}| - { ID id-E-RABs-ToBeReleased-ModReqd CRITICALITY ignore TYPE E-RABs-ToBeReleased-ModReqd PRESENCE optional}| - { ID id-SeNBtoMeNBContainer CRITICALITY ignore TYPE SeNBtoMeNBContainer PRESENCE optional}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-SeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}, - ... -} -*/ - -struct SeNBModificationRequired_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 9; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(id_SeNB_UE_X2AP_ID); type=2;} - void select_id_Cause() { set(id_Cause); type=3;} - void select_id_SCGChangeIndication() { set(id_SCGChangeIndication); type=4;} - void select_id_E_RABs_ToBeReleased_ModReqd() { set(id_E_RABs_ToBeReleased_ModReqd); type=5;} - void select_id_SeNBtoMeNBContainer() { set(id_SeNBtoMeNBContainer); type=6;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=7;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=8;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SeNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_Cause)) { type = 3; return true; } - else if(equal(id_SCGChangeIndication)) { type = 4; return true; } - else if(equal(id_E_RABs_ToBeReleased_ModReqd)) { type = 5; return true; } - else if(equal(id_SeNBtoMeNBContainer)) { type = 6; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 7; return true; } - else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 8; return true; } - else { type = 9; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_SCGChangeIndication);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_E_RABs_ToBeReleased_ModReqd);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_SeNBtoMeNBContainer);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false; - case 9: type = 9; 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 == 9; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(reject); type=2;} - void select_id_Cause() { set(ignore); type=3;} - void select_id_SCGChangeIndication() { set(ignore); type=4;} - void select_id_E_RABs_ToBeReleased_ModReqd() { set(ignore); type=5;} - void select_id_SeNBtoMeNBContainer() { set(ignore); type=6;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=7;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(reject); type=8;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else if(equal(ignore)) { type = 6; return true; } - else if(equal(reject)) { type = 7; return true; } - else if(equal(reject)) { type = 8; return true; } - else { type = 9; 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(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - UE_X2AP_ID& select_id_SeNB_UE_X2AP_ID() { return set(2); } - UE_X2AP_ID const* get_id_SeNB_UE_X2AP_ID() const { return get(2); } - Cause& select_id_Cause() { return set(3); } - Cause const* get_id_Cause() const { return get(3); } - SCGChangeIndication& select_id_SCGChangeIndication() { return set(4); } - SCGChangeIndication const* get_id_SCGChangeIndication() const { return get(4); } - E_RABs_ToBeReleased_ModReqd& select_id_E_RABs_ToBeReleased_ModReqd() { return set(5); } - E_RABs_ToBeReleased_ModReqd const* get_id_E_RABs_ToBeReleased_ModReqd() const { return get(5); } - SeNBtoMeNBContainer& select_id_SeNBtoMeNBContainer() { return set(6); } - SeNBtoMeNBContainer const* get_id_SeNBtoMeNBContainer() const { return get(6); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(7); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(7); } - UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set(8); } - UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get(8); } - bool is_unknown() const { return type == 9; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SeNB_UE_X2AP_ID()); return true; - case 3: v(select_id_Cause()); return true; - case 4: v(select_id_SCGChangeIndication()); return true; - case 5: v(select_id_E_RABs_ToBeReleased_ModReqd()); return true; - case 6: v(select_id_SeNBtoMeNBContainer()); return true; - case 7: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 8: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true; - case 9: if(type != 9) {clear(); asn::base::set();} type = 9; 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; - } - 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(Cause)]; - char dummy2[sizeof(E_RABs_ToBeReleased_ModReqd)]; - char dummy3[sizeof(SCGChangeIndication)]; - char dummy4[sizeof(SeNBtoMeNBContainer)]; - char dummy5[sizeof(UE_X2AP_ID)]; - char dummy6[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 9; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_Cause() { set(mandatory); type=3;} - void select_id_SCGChangeIndication() { set(optional); type=4;} - void select_id_E_RABs_ToBeReleased_ModReqd() { set(optional); type=5;} - void select_id_SeNBtoMeNBContainer() { set(optional); type=6;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=7;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=8;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else if(equal(optional)) { type = 7; return true; } - else if(equal(optional)) { type = 8; return true; } - else { type = 9; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false; - case 9: type = 9; 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}; - - }; - -}; -/* -SeNBModificationRequired ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SeNBModificationRequired-IEs}}, - ... -} -*/ - -struct SeNBModificationRequired : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SeNBModificationRequired";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SeNBReconfigurationComplete-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-ResponseInformationSeNBReconfComp CRITICALITY ignore TYPE ResponseInformationSeNBReconfComp PRESENCE mandatory}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-SeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}, - ... -} -*/ - -struct SeNBReconfigurationComplete_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(id_SeNB_UE_X2AP_ID); type=2;} - void select_id_ResponseInformationSeNBReconfComp() { set(id_ResponseInformationSeNBReconfComp); type=3;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=4;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=5;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SeNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_ResponseInformationSeNBReconfComp)) { type = 3; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 4; return true; } - else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 5; return true; } - else { type = 6; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_ResponseInformationSeNBReconfComp);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false; - case 6: type = 6; 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 == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(reject); type=2;} - void select_id_ResponseInformationSeNBReconfComp() { set(ignore); type=3;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=4;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(reject); type=5;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 3; return true; } - else if(equal(reject)) { type = 4; return true; } - else if(equal(reject)) { type = 5; return true; } - else { type = 6; 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(ignore);} 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - UE_X2AP_ID& select_id_SeNB_UE_X2AP_ID() { return set(2); } - UE_X2AP_ID const* get_id_SeNB_UE_X2AP_ID() const { return get(2); } - ResponseInformationSeNBReconfComp& select_id_ResponseInformationSeNBReconfComp() { return set(3); } - ResponseInformationSeNBReconfComp const* get_id_ResponseInformationSeNBReconfComp() const { return get(3); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(4); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(4); } - UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set(5); } - UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get(5); } - bool is_unknown() const { return type == 6; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SeNB_UE_X2AP_ID()); return true; - case 3: v(select_id_ResponseInformationSeNBReconfComp()); return true; - case 4: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 5: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true; - case 6: if(type != 6) {clear(); asn::base::set();} type = 6; 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; - } - 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(ResponseInformationSeNBReconfComp)]; - char dummy2[sizeof(UE_X2AP_ID)]; - char dummy3[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_ResponseInformationSeNBReconfComp() { set(mandatory); type=3;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=4;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=5;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else { type = 6; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; 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}; - - }; - -}; -/* -SeNBReconfigurationComplete ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SeNBReconfigurationComplete-IEs}}, - ... -} -*/ - -struct SeNBReconfigurationComplete : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SeNBReconfigurationComplete";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SeNBReleaseConfirm-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SeNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-E-RABs-ToBeReleased-List-RelConf CRITICALITY ignore TYPE E-RABs-ToBeReleased-List-RelConf PRESENCE optional}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-SeNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional}, - ... -} -*/ - -struct SeNBReleaseConfirm_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 7; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(id_SeNB_UE_X2AP_ID); type=2;} - void select_id_E_RABs_ToBeReleased_List_RelConf() { set(id_E_RABs_ToBeReleased_List_RelConf); type=3;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=5;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=6;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SeNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_E_RABs_ToBeReleased_List_RelConf)) { type = 3; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 5; return true; } - else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 6; return true; } - else { type = 7; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_E_RABs_ToBeReleased_List_RelConf);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false; - case 7: type = 7; 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 == 7; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(ignore); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(ignore); type=2;} - void select_id_E_RABs_ToBeReleased_List_RelConf() { set(ignore); type=3;} - void select_id_CriticalityDiagnostics() { set(ignore); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(ignore); type=5;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(ignore); type=6;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else if(equal(ignore)) { type = 6; return true; } - else { type = 7; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false; - case 7: type = 7; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - UE_X2AP_ID& select_id_SeNB_UE_X2AP_ID() { return set(2); } - UE_X2AP_ID const* get_id_SeNB_UE_X2AP_ID() const { return get(2); } - E_RABs_ToBeReleased_List_RelConf& select_id_E_RABs_ToBeReleased_List_RelConf() { return set(3); } - E_RABs_ToBeReleased_List_RelConf const* get_id_E_RABs_ToBeReleased_List_RelConf() const { return get(3); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(4); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(4); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(5); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(5); } - UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set(6); } - UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get(6); } - bool is_unknown() const { return type == 7; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SeNB_UE_X2AP_ID()); return true; - case 3: v(select_id_E_RABs_ToBeReleased_List_RelConf()); return true; - case 4: v(select_id_CriticalityDiagnostics()); return true; - case 5: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 6: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true; - case 7: if(type != 7) {clear(); asn::base::set();} type = 7; 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; - } - 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(CriticalityDiagnostics)]; - char dummy2[sizeof(E_RABs_ToBeReleased_List_RelConf)]; - char dummy3[sizeof(UE_X2AP_ID)]; - char dummy4[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 7; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_E_RABs_ToBeReleased_List_RelConf() { set(optional); type=3;} - void select_id_CriticalityDiagnostics() { set(optional); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=5;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=6;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else { type = 7; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; 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}; - - }; - -}; -/* -SeNBReleaseConfirm ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SeNBReleaseConfirm-IEs}}, - ... -} -*/ - -struct SeNBReleaseConfirm : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SeNBReleaseConfirm";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SeNBReleaseRequest-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE optional}| - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional}| - { ID id-E-RABs-ToBeReleased-List-RelReq CRITICALITY ignore TYPE E-RABs-ToBeReleased-List-RelReq PRESENCE optional}| - { ID id-UE-ContextKeptIndicator CRITICALITY ignore TYPE UE-ContextKeptIndicator PRESENCE optional}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-SeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-MakeBeforeBreakIndicator CRITICALITY ignore TYPE MakeBeforeBreakIndicator PRESENCE optional}, - ... -} -*/ - -struct SeNBReleaseRequest_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 9; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(id_SeNB_UE_X2AP_ID); type=2;} - void select_id_Cause() { set(id_Cause); type=3;} - void select_id_E_RABs_ToBeReleased_List_RelReq() { set(id_E_RABs_ToBeReleased_List_RelReq); type=4;} - void select_id_UE_ContextKeptIndicator() { set(id_UE_ContextKeptIndicator); type=5;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=6;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=7;} - void select_id_MakeBeforeBreakIndicator() { set(id_MakeBeforeBreakIndicator); type=8;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SeNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_Cause)) { type = 3; return true; } - else if(equal(id_E_RABs_ToBeReleased_List_RelReq)) { type = 4; return true; } - else if(equal(id_UE_ContextKeptIndicator)) { type = 5; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 6; return true; } - else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 7; return true; } - else if(equal(id_MakeBeforeBreakIndicator)) { type = 8; return true; } - else { type = 9; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_E_RABs_ToBeReleased_List_RelReq);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_UE_ContextKeptIndicator);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(id_MakeBeforeBreakIndicator);} return false; - case 9: type = 9; 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 == 9; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(reject); type=2;} - void select_id_Cause() { set(ignore); type=3;} - void select_id_E_RABs_ToBeReleased_List_RelReq() { set(ignore); type=4;} - void select_id_UE_ContextKeptIndicator() { set(ignore); type=5;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=6;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(reject); type=7;} - void select_id_MakeBeforeBreakIndicator() { set(ignore); type=8;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else if(equal(reject)) { type = 6; return true; } - else if(equal(reject)) { type = 7; return true; } - else if(equal(ignore)) { type = 8; return true; } - else { type = 9; 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(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} 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(ignore);} return false; - case 9: type = 9; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - UE_X2AP_ID& select_id_SeNB_UE_X2AP_ID() { return set(2); } - UE_X2AP_ID const* get_id_SeNB_UE_X2AP_ID() const { return get(2); } - Cause& select_id_Cause() { return set(3); } - Cause const* get_id_Cause() const { return get(3); } - E_RABs_ToBeReleased_List_RelReq& select_id_E_RABs_ToBeReleased_List_RelReq() { return set(4); } - E_RABs_ToBeReleased_List_RelReq const* get_id_E_RABs_ToBeReleased_List_RelReq() const { return get(4); } - UE_ContextKeptIndicator& select_id_UE_ContextKeptIndicator() { return set(5); } - UE_ContextKeptIndicator const* get_id_UE_ContextKeptIndicator() const { return get(5); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(6); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(6); } - UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set(7); } - UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get(7); } - MakeBeforeBreakIndicator& select_id_MakeBeforeBreakIndicator() { return set(8); } - MakeBeforeBreakIndicator const* get_id_MakeBeforeBreakIndicator() const { return get(8); } - bool is_unknown() const { return type == 9; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SeNB_UE_X2AP_ID()); return true; - case 3: v(select_id_Cause()); return true; - case 4: v(select_id_E_RABs_ToBeReleased_List_RelReq()); return true; - case 5: v(select_id_UE_ContextKeptIndicator()); return true; - case 6: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 7: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true; - case 8: v(select_id_MakeBeforeBreakIndicator()); return true; - case 9: if(type != 9) {clear(); asn::base::set();} type = 9; 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; - } - 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(Cause)]; - char dummy2[sizeof(E_RABs_ToBeReleased_List_RelReq)]; - char dummy3[sizeof(MakeBeforeBreakIndicator)]; - char dummy4[sizeof(UE_ContextKeptIndicator)]; - char dummy5[sizeof(UE_X2AP_ID)]; - char dummy6[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 9; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(optional); type=2;} - void select_id_Cause() { set(optional); type=3;} - void select_id_E_RABs_ToBeReleased_List_RelReq() { set(optional); type=4;} - void select_id_UE_ContextKeptIndicator() { set(optional); type=5;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=6;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=7;} - void select_id_MakeBeforeBreakIndicator() { set(optional); type=8;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else if(equal(optional)) { type = 7; return true; } - else if(equal(optional)) { type = 8; return true; } - else { type = 9; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false; - case 9: type = 9; 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}; - - }; - -}; -/* -SeNBReleaseRequest ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SeNBReleaseRequest-IEs}}, - ... -} -*/ - -struct SeNBReleaseRequest : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SeNBReleaseRequest";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SeNBReleaseRequired-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-SeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}, - ... -} -*/ - -struct SeNBReleaseRequired_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(id_SeNB_UE_X2AP_ID); type=2;} - void select_id_Cause() { set(id_Cause); type=3;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=4;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=5;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SeNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_Cause)) { type = 3; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 4; return true; } - else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 5; return true; } - else { type = 6; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false; - case 6: type = 6; 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 == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(reject); type=2;} - void select_id_Cause() { set(ignore); type=3;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=4;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(reject); type=5;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 3; return true; } - else if(equal(reject)) { type = 4; return true; } - else if(equal(reject)) { type = 5; return true; } - else { type = 6; 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(ignore);} 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - UE_X2AP_ID& select_id_SeNB_UE_X2AP_ID() { return set(2); } - UE_X2AP_ID const* get_id_SeNB_UE_X2AP_ID() const { return get(2); } - Cause& select_id_Cause() { return set(3); } - Cause const* get_id_Cause() const { return get(3); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(4); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(4); } - UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set(5); } - UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get(5); } - bool is_unknown() const { return type == 6; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SeNB_UE_X2AP_ID()); return true; - case 3: v(select_id_Cause()); return true; - case 4: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 5: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true; - case 6: if(type != 6) {clear(); asn::base::set();} type = 6; 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; - } - 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(Cause)]; - char dummy2[sizeof(UE_X2AP_ID)]; - char dummy3[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SeNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_Cause() { set(mandatory); type=3;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=4;} - void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=5;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else { type = 6; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; 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}; - - }; - -}; -/* -SeNBReleaseRequired ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SeNBReleaseRequired-IEs}}, - ... -} -*/ - -struct SeNBReleaseRequired : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SeNBReleaseRequired";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SecondaryRATDataUsageReport-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SgNB-UE-X2AP-ID CRITICALITY reject TYPE SgNB-UE-X2AP-ID PRESENCE mandatory}| - { ID id-SecondaryRATUsageReportList CRITICALITY reject TYPE SecondaryRATUsageReportList PRESENCE mandatory}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}, - ... -} -*/ - -struct SecondaryRATDataUsageReport_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 5; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;} - void select_id_SecondaryRATUsageReportList() { set(id_SecondaryRATUsageReportList); type=3;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=4;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_SecondaryRATUsageReportList)) { type = 3; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 4; return true; } - else { type = 5; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_SecondaryRATUsageReportList);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 5: type = 5; 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 == 5; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(reject); type=2;} - void select_id_SecondaryRATUsageReportList() { set(reject); type=3;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=4;} - X2AP_PROTOCOL_IES::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 { type = 5; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set(2); } - SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get(2); } - SecondaryRATUsageReportList& select_id_SecondaryRATUsageReportList() { return set(3); } - SecondaryRATUsageReportList const* get_id_SecondaryRATUsageReportList() const { return get(3); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(4); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(4); } - bool is_unknown() const { return type == 5; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: var.destroy(); break; - case 4: 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SgNB_UE_X2AP_ID()); return true; - case 3: v(select_id_SecondaryRATUsageReportList()); return true; - case 4: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 5: if(type != 5) {clear(); asn::base::set();} type = 5; 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; - } - 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(SecondaryRATUsageReportList)]; - char dummy2[sizeof(SgNB_UE_X2AP_ID)]; - char dummy3[sizeof(UE_X2AP_ID)]; - char dummy4[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 5; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_SecondaryRATUsageReportList() { set(mandatory); type=3;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=4;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else { type = 5; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; 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}; - - }; - -}; -/* -SecondaryRATDataUsageReport ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SecondaryRATDataUsageReport-IEs}}, - ... -} -*/ - -struct SecondaryRATDataUsageReport : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SecondaryRATDataUsageReport";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SgNBActivityNotification-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SgNB-UE-X2AP-ID CRITICALITY reject TYPE SgNB-UE-X2AP-ID PRESENCE mandatory}| - { ID id-UEContextLevelUserPlaneActivity CRITICALITY ignore TYPE UserPlaneTrafficActivityReport PRESENCE optional}| - { ID id-ERABActivityNotifyItemList CRITICALITY ignore TYPE ERABActivityNotifyItemList PRESENCE optional}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}, - ... -} -*/ - -struct SgNBActivityNotification_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;} - void select_id_UEContextLevelUserPlaneActivity() { set(id_UEContextLevelUserPlaneActivity); type=3;} - void select_id_ERABActivityNotifyItemList() { set(id_ERABActivityNotifyItemList); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=5;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_UEContextLevelUserPlaneActivity)) { type = 3; return true; } - else if(equal(id_ERABActivityNotifyItemList)) { type = 4; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 5; return true; } - else { type = 6; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_UEContextLevelUserPlaneActivity);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_ERABActivityNotifyItemList);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 6: type = 6; 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 == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(reject); type=2;} - void select_id_UEContextLevelUserPlaneActivity() { set(ignore); type=3;} - void select_id_ERABActivityNotifyItemList() { set(ignore); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=5;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(reject)) { type = 5; return true; } - else { type = 6; 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(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(reject);} return false; - case 6: type = 6; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set(2); } - SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get(2); } - UserPlaneTrafficActivityReport& select_id_UEContextLevelUserPlaneActivity() { return set(3); } - UserPlaneTrafficActivityReport const* get_id_UEContextLevelUserPlaneActivity() const { return get(3); } - ERABActivityNotifyItemList& select_id_ERABActivityNotifyItemList() { return set(4); } - ERABActivityNotifyItemList const* get_id_ERABActivityNotifyItemList() const { return get(4); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(5); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(5); } - bool is_unknown() const { return type == 6; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SgNB_UE_X2AP_ID()); return true; - case 3: v(select_id_UEContextLevelUserPlaneActivity()); return true; - case 4: v(select_id_ERABActivityNotifyItemList()); return true; - case 5: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 6: if(type != 6) {clear(); asn::base::set();} type = 6; 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; - } - 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(ERABActivityNotifyItemList)]; - char dummy2[sizeof(SgNB_UE_X2AP_ID)]; - char dummy3[sizeof(UE_X2AP_ID)]; - char dummy4[sizeof(UE_X2AP_ID_Extension)]; - char dummy5[sizeof(UserPlaneTrafficActivityReport)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_UEContextLevelUserPlaneActivity() { set(optional); type=3;} - void select_id_ERABActivityNotifyItemList() { set(optional); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=5;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else { type = 6; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; 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}; - - }; - -}; -/* -SgNBActivityNotification ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SgNBActivityNotification-IEs}}, - ... -} -*/ - -struct SgNBActivityNotification : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SgNBActivityNotification";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SgNBAdditionRequest-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-NRUESecurityCapabilities CRITICALITY reject TYPE NRUESecurityCapabilities PRESENCE mandatory}| - { ID id-SgNBSecurityKey CRITICALITY reject TYPE SgNBSecurityKey PRESENCE mandatory}| - { ID id-SgNBUEAggregateMaximumBitRate CRITICALITY reject TYPE UEAggregateMaximumBitRate PRESENCE mandatory}| - { ID id-SelectedPLMN CRITICALITY ignore TYPE PLMN-Identity PRESENCE optional}| - { ID id-HandoverRestrictionList CRITICALITY ignore TYPE HandoverRestrictionList PRESENCE optional}| - { ID id-E-RABs-ToBeAdded-SgNBAddReqList CRITICALITY reject TYPE E-RABs-ToBeAdded-SgNBAddReqList PRESENCE mandatory}| - { ID id-MeNBtoSgNBContainer CRITICALITY reject TYPE MeNBtoSgNBContainer PRESENCE mandatory}| - { ID id-SgNB-UE-X2AP-ID CRITICALITY reject TYPE SgNB-UE-X2AP-ID PRESENCE optional}| - { ID id-ExpectedUEBehaviour CRITICALITY ignore TYPE ExpectedUEBehaviour PRESENCE optional}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-RequestedSplitSRBs CRITICALITY reject TYPE SplitSRBs PRESENCE optional}| - { ID id-MeNBResourceCoordinationInformation CRITICALITY ignore TYPE MeNBResourceCoordinationInformation PRESENCE optional}| - { ID id-SGNB-Addition-Trigger-Ind CRITICALITY reject TYPE SGNB-Addition-Trigger-Ind PRESENCE optional}| - { ID id-SubscriberProfileIDforRFP CRITICALITY ignore TYPE SubscriberProfileIDforRFP PRESENCE optional}| - { ID id-MeNBCell-ID CRITICALITY reject TYPE ECGI PRESENCE mandatory}, - ... -} -*/ - -struct SgNBAdditionRequest_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 17; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_NRUESecurityCapabilities() { set(id_NRUESecurityCapabilities); type=2;} - void select_id_SgNBSecurityKey() { set(id_SgNBSecurityKey); type=3;} - void select_id_SgNBUEAggregateMaximumBitRate() { set(id_SgNBUEAggregateMaximumBitRate); type=4;} - void select_id_SelectedPLMN() { set(id_SelectedPLMN); type=5;} - void select_id_HandoverRestrictionList() { set(id_HandoverRestrictionList); type=6;} - void select_id_E_RABs_ToBeAdded_SgNBAddReqList() { set(id_E_RABs_ToBeAdded_SgNBAddReqList); type=7;} - void select_id_MeNBtoSgNBContainer() { set(id_MeNBtoSgNBContainer); type=8;} - void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=9;} - void select_id_ExpectedUEBehaviour() { set(id_ExpectedUEBehaviour); type=10;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=11;} - void select_id_RequestedSplitSRBs() { set(id_RequestedSplitSRBs); type=12;} - void select_id_MeNBResourceCoordinationInformation() { set(id_MeNBResourceCoordinationInformation); type=13;} - void select_id_SGNB_Addition_Trigger_Ind() { set(id_SGNB_Addition_Trigger_Ind); type=14;} - void select_id_SubscriberProfileIDforRFP() { set(id_SubscriberProfileIDforRFP); type=15;} - void select_id_MeNBCell_ID() { set(id_MeNBCell_ID); type=16;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_NRUESecurityCapabilities)) { type = 2; return true; } - else if(equal(id_SgNBSecurityKey)) { type = 3; return true; } - else if(equal(id_SgNBUEAggregateMaximumBitRate)) { type = 4; return true; } - else if(equal(id_SelectedPLMN)) { type = 5; return true; } - else if(equal(id_HandoverRestrictionList)) { type = 6; return true; } - else if(equal(id_E_RABs_ToBeAdded_SgNBAddReqList)) { type = 7; return true; } - else if(equal(id_MeNBtoSgNBContainer)) { type = 8; return true; } - else if(equal(id_SgNB_UE_X2AP_ID)) { type = 9; return true; } - else if(equal(id_ExpectedUEBehaviour)) { type = 10; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 11; return true; } - else if(equal(id_RequestedSplitSRBs)) { type = 12; return true; } - else if(equal(id_MeNBResourceCoordinationInformation)) { type = 13; return true; } - else if(equal(id_SGNB_Addition_Trigger_Ind)) { type = 14; return true; } - else if(equal(id_SubscriberProfileIDforRFP)) { type = 15; return true; } - else if(equal(id_MeNBCell_ID)) { 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_NRUESecurityCapabilities);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_SgNBSecurityKey);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_SgNBUEAggregateMaximumBitRate);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_SelectedPLMN);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_HandoverRestrictionList);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(id_E_RABs_ToBeAdded_SgNBAddReqList);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(id_MeNBtoSgNBContainer);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(id_ExpectedUEBehaviour);} return false; - case 11: type = 11; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 12: type = 12; if(v(ref_nested())) { return equal(id_RequestedSplitSRBs);} return false; - case 13: type = 13; if(v(ref_nested())) { return equal(id_MeNBResourceCoordinationInformation);} return false; - case 14: type = 14; if(v(ref_nested())) { return equal(id_SGNB_Addition_Trigger_Ind);} return false; - case 15: type = 15; if(v(ref_nested())) { return equal(id_SubscriberProfileIDforRFP);} return false; - case 16: type = 16; if(v(ref_nested())) { return equal(id_MeNBCell_ID);} 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_MeNB_UE_X2AP_ID() { set(reject); type=1;} - void select_id_NRUESecurityCapabilities() { set(reject); type=2;} - void select_id_SgNBSecurityKey() { set(reject); type=3;} - void select_id_SgNBUEAggregateMaximumBitRate() { set(reject); type=4;} - void select_id_SelectedPLMN() { set(ignore); type=5;} - void select_id_HandoverRestrictionList() { set(ignore); type=6;} - void select_id_E_RABs_ToBeAdded_SgNBAddReqList() { set(reject); type=7;} - void select_id_MeNBtoSgNBContainer() { set(reject); type=8;} - void select_id_SgNB_UE_X2AP_ID() { set(reject); type=9;} - void select_id_ExpectedUEBehaviour() { set(ignore); type=10;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=11;} - void select_id_RequestedSplitSRBs() { set(reject); type=12;} - void select_id_MeNBResourceCoordinationInformation() { set(ignore); type=13;} - void select_id_SGNB_Addition_Trigger_Ind() { set(reject); type=14;} - void select_id_SubscriberProfileIDforRFP() { set(ignore); type=15;} - void select_id_MeNBCell_ID() { set(reject); type=16;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 5; return true; } - else if(equal(ignore)) { 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(ignore)) { type = 10; return true; } - else if(equal(reject)) { type = 11; return true; } - else if(equal(reject)) { type = 12; return true; } - else if(equal(ignore)) { type = 13; return true; } - else if(equal(reject)) { type = 14; return true; } - else if(equal(ignore)) { type = 15; return true; } - else if(equal(reject)) { 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(ignore);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} 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(ignore);} 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(ignore);} 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(ignore);} return false; - case 16: type = 16; if(v(ref_nested())) { return equal(reject);} 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - NRUESecurityCapabilities& select_id_NRUESecurityCapabilities() { return set(2); } - NRUESecurityCapabilities const* get_id_NRUESecurityCapabilities() const { return get(2); } - SgNBSecurityKey& select_id_SgNBSecurityKey() { return set(3); } - SgNBSecurityKey const* get_id_SgNBSecurityKey() const { return get(3); } - UEAggregateMaximumBitRate& select_id_SgNBUEAggregateMaximumBitRate() { return set(4); } - UEAggregateMaximumBitRate const* get_id_SgNBUEAggregateMaximumBitRate() const { return get(4); } - PLMN_Identity& select_id_SelectedPLMN() { return set(5); } - PLMN_Identity const* get_id_SelectedPLMN() const { return get(5); } - HandoverRestrictionList& select_id_HandoverRestrictionList() { return set(6); } - HandoverRestrictionList const* get_id_HandoverRestrictionList() const { return get(6); } - E_RABs_ToBeAdded_SgNBAddReqList& select_id_E_RABs_ToBeAdded_SgNBAddReqList() { return set(7); } - E_RABs_ToBeAdded_SgNBAddReqList const* get_id_E_RABs_ToBeAdded_SgNBAddReqList() const { return get(7); } - MeNBtoSgNBContainer& select_id_MeNBtoSgNBContainer() { return set(8); } - MeNBtoSgNBContainer const* get_id_MeNBtoSgNBContainer() const { return get(8); } - SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set(9); } - SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get(9); } - ExpectedUEBehaviour& select_id_ExpectedUEBehaviour() { return set(10); } - ExpectedUEBehaviour const* get_id_ExpectedUEBehaviour() const { return get(10); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(11); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(11); } - SplitSRBs& select_id_RequestedSplitSRBs() { return set(12); } - SplitSRBs const* get_id_RequestedSplitSRBs() const { return get(12); } - MeNBResourceCoordinationInformation& select_id_MeNBResourceCoordinationInformation() { return set(13); } - MeNBResourceCoordinationInformation const* get_id_MeNBResourceCoordinationInformation() const { return get(13); } - SGNB_Addition_Trigger_Ind& select_id_SGNB_Addition_Trigger_Ind() { return set(14); } - SGNB_Addition_Trigger_Ind const* get_id_SGNB_Addition_Trigger_Ind() const { return get(14); } - SubscriberProfileIDforRFP& select_id_SubscriberProfileIDforRFP() { return set(15); } - SubscriberProfileIDforRFP const* get_id_SubscriberProfileIDforRFP() const { return get(15); } - ECGI& select_id_MeNBCell_ID() { return set(16); } - ECGI const* get_id_MeNBCell_ID() 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_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_NRUESecurityCapabilities()); return true; - case 3: v(select_id_SgNBSecurityKey()); return true; - case 4: v(select_id_SgNBUEAggregateMaximumBitRate()); return true; - case 5: v(select_id_SelectedPLMN()); return true; - case 6: v(select_id_HandoverRestrictionList()); return true; - case 7: v(select_id_E_RABs_ToBeAdded_SgNBAddReqList()); return true; - case 8: v(select_id_MeNBtoSgNBContainer()); return true; - case 9: v(select_id_SgNB_UE_X2AP_ID()); return true; - case 10: v(select_id_ExpectedUEBehaviour()); return true; - case 11: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 12: v(select_id_RequestedSplitSRBs()); return true; - case 13: v(select_id_MeNBResourceCoordinationInformation()); return true; - case 14: v(select_id_SGNB_Addition_Trigger_Ind()); return true; - case 15: v(select_id_SubscriberProfileIDforRFP()); return true; - case 16: v(select_id_MeNBCell_ID()); 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(ECGI)]; - char dummy2[sizeof(E_RABs_ToBeAdded_SgNBAddReqList)]; - char dummy3[sizeof(ExpectedUEBehaviour)]; - char dummy4[sizeof(HandoverRestrictionList)]; - char dummy5[sizeof(MeNBResourceCoordinationInformation)]; - char dummy6[sizeof(MeNBtoSgNBContainer)]; - char dummy7[sizeof(NRUESecurityCapabilities)]; - char dummy8[sizeof(PLMN_Identity)]; - char dummy9[sizeof(SGNB_Addition_Trigger_Ind)]; - char dummy10[sizeof(SgNBSecurityKey)]; - char dummy11[sizeof(SgNB_UE_X2AP_ID)]; - char dummy12[sizeof(SplitSRBs)]; - char dummy13[sizeof(SubscriberProfileIDforRFP)]; - char dummy14[sizeof(UEAggregateMaximumBitRate)]; - char dummy15[sizeof(UE_X2AP_ID)]; - char dummy16[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 17; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_NRUESecurityCapabilities() { set(mandatory); type=2;} - void select_id_SgNBSecurityKey() { set(mandatory); type=3;} - void select_id_SgNBUEAggregateMaximumBitRate() { set(mandatory); type=4;} - void select_id_SelectedPLMN() { set(optional); type=5;} - void select_id_HandoverRestrictionList() { set(optional); type=6;} - void select_id_E_RABs_ToBeAdded_SgNBAddReqList() { set(mandatory); type=7;} - void select_id_MeNBtoSgNBContainer() { set(mandatory); type=8;} - void select_id_SgNB_UE_X2AP_ID() { set(optional); type=9;} - void select_id_ExpectedUEBehaviour() { set(optional); type=10;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=11;} - void select_id_RequestedSplitSRBs() { set(optional); type=12;} - void select_id_MeNBResourceCoordinationInformation() { set(optional); type=13;} - void select_id_SGNB_Addition_Trigger_Ind() { set(optional); type=14;} - void select_id_SubscriberProfileIDforRFP() { set(optional); type=15;} - void select_id_MeNBCell_ID() { set(mandatory); type=16;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(mandatory)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else if(equal(mandatory)) { type = 7; return true; } - else if(equal(mandatory)) { type = 8; return true; } - else if(equal(optional)) { type = 9; return true; } - else if(equal(optional)) { type = 10; return true; } - else if(equal(optional)) { type = 11; return true; } - else if(equal(optional)) { type = 12; return true; } - else if(equal(optional)) { type = 13; return true; } - else if(equal(optional)) { type = 14; return true; } - else if(equal(optional)) { type = 15; return true; } - else if(equal(mandatory)) { 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(mandatory);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(mandatory);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(mandatory);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(optional);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(optional);} return false; - case 11: type = 11; if(v(ref_nested())) { return equal(optional);} return false; - case 12: type = 12; if(v(ref_nested())) { return equal(optional);} return false; - case 13: type = 13; if(v(ref_nested())) { return equal(optional);} return false; - case 14: type = 14; if(v(ref_nested())) { return equal(optional);} return false; - case 15: type = 15; if(v(ref_nested())) { return equal(optional);} return false; - case 16: type = 16; if(v(ref_nested())) { return equal(mandatory);} 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}; - - }; - -}; -/* -SgNBAdditionRequest ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SgNBAdditionRequest-IEs}}, - ... -} -*/ - -struct SgNBAdditionRequest : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SgNBAdditionRequest";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SgNBAdditionRequestAcknowledge-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SgNB-UE-X2AP-ID CRITICALITY reject TYPE SgNB-UE-X2AP-ID PRESENCE mandatory}| - { ID id-E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList CRITICALITY ignore TYPE E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList PRESENCE mandatory}| - { ID id-E-RABs-NotAdmitted-List CRITICALITY ignore TYPE E-RAB-List PRESENCE optional}| - { ID id-SgNBtoMeNBContainer CRITICALITY reject TYPE SgNBtoMeNBContainer PRESENCE mandatory}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-AdmittedSplitSRBs CRITICALITY reject TYPE SplitSRBs PRESENCE optional}| - { ID id-SgNBResourceCoordinationInformation CRITICALITY ignore TYPE SgNBResourceCoordinationInformation PRESENCE optional}| - { ID id-RRCConfigIndication CRITICALITY reject TYPE RRC-Config-Ind PRESENCE optional}, - ... -} -*/ - -struct SgNBAdditionRequestAcknowledge_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 11; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;} - void select_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList() { set(id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList); type=3;} - void select_id_E_RABs_NotAdmitted_List() { set(id_E_RABs_NotAdmitted_List); type=4;} - void select_id_SgNBtoMeNBContainer() { set(id_SgNBtoMeNBContainer); type=5;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=6;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=7;} - void select_id_AdmittedSplitSRBs() { set(id_AdmittedSplitSRBs); type=8;} - void select_id_SgNBResourceCoordinationInformation() { set(id_SgNBResourceCoordinationInformation); type=9;} - void select_id_RRCConfigIndication() { set(id_RRCConfigIndication); type=10;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList)) { type = 3; return true; } - else if(equal(id_E_RABs_NotAdmitted_List)) { type = 4; return true; } - else if(equal(id_SgNBtoMeNBContainer)) { type = 5; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 6; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 7; return true; } - else if(equal(id_AdmittedSplitSRBs)) { type = 8; return true; } - else if(equal(id_SgNBResourceCoordinationInformation)) { type = 9; return true; } - else if(equal(id_RRCConfigIndication)) { type = 10; return true; } - else { type = 11; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_E_RABs_NotAdmitted_List);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_SgNBtoMeNBContainer);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(id_AdmittedSplitSRBs);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(id_SgNBResourceCoordinationInformation);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(id_RRCConfigIndication);} return false; - case 11: type = 11; 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 == 11; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(reject); type=2;} - void select_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList() { set(ignore); type=3;} - void select_id_E_RABs_NotAdmitted_List() { set(ignore); type=4;} - void select_id_SgNBtoMeNBContainer() { set(reject); type=5;} - void select_id_CriticalityDiagnostics() { set(ignore); type=6;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=7;} - void select_id_AdmittedSplitSRBs() { set(reject); type=8;} - void select_id_SgNBResourceCoordinationInformation() { set(ignore); type=9;} - void select_id_RRCConfigIndication() { set(reject); type=10;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(reject)) { type = 5; return true; } - else if(equal(ignore)) { type = 6; return true; } - else if(equal(reject)) { type = 7; return true; } - else if(equal(reject)) { type = 8; return true; } - else if(equal(ignore)) { type = 9; return true; } - else if(equal(reject)) { type = 10; return true; } - else { type = 11; 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(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} 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(ignore);} 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(ignore);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(reject);} return false; - case 11: type = 11; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set(2); } - SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get(2); } - E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList& select_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList() { return set(3); } - E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList const* get_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList() const { return get(3); } - E_RAB_List& select_id_E_RABs_NotAdmitted_List() { return set(4); } - E_RAB_List const* get_id_E_RABs_NotAdmitted_List() const { return get(4); } - SgNBtoMeNBContainer& select_id_SgNBtoMeNBContainer() { return set(5); } - SgNBtoMeNBContainer const* get_id_SgNBtoMeNBContainer() const { return get(5); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(6); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(6); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(7); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(7); } - SplitSRBs& select_id_AdmittedSplitSRBs() { return set(8); } - SplitSRBs const* get_id_AdmittedSplitSRBs() const { return get(8); } - SgNBResourceCoordinationInformation& select_id_SgNBResourceCoordinationInformation() { return set(9); } - SgNBResourceCoordinationInformation const* get_id_SgNBResourceCoordinationInformation() const { return get(9); } - RRC_Config_Ind& select_id_RRCConfigIndication() { return set(10); } - RRC_Config_Ind const* get_id_RRCConfigIndication() const { return get(10); } - bool is_unknown() const { return type == 11; } - 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_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SgNB_UE_X2AP_ID()); return true; - case 3: v(select_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList()); return true; - case 4: v(select_id_E_RABs_NotAdmitted_List()); return true; - case 5: v(select_id_SgNBtoMeNBContainer()); return true; - case 6: v(select_id_CriticalityDiagnostics()); return true; - case 7: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 8: v(select_id_AdmittedSplitSRBs()); return true; - case 9: v(select_id_SgNBResourceCoordinationInformation()); return true; - case 10: v(select_id_RRCConfigIndication()); return true; - case 11: if(type != 11) {clear(); asn::base::set();} type = 11; 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(CriticalityDiagnostics)]; - char dummy2[sizeof(E_RAB_List)]; - char dummy3[sizeof(E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList)]; - char dummy4[sizeof(RRC_Config_Ind)]; - char dummy5[sizeof(SgNBResourceCoordinationInformation)]; - char dummy6[sizeof(SgNB_UE_X2AP_ID)]; - char dummy7[sizeof(SgNBtoMeNBContainer)]; - char dummy8[sizeof(SplitSRBs)]; - char dummy9[sizeof(UE_X2AP_ID)]; - char dummy10[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 11; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList() { set(mandatory); type=3;} - void select_id_E_RABs_NotAdmitted_List() { set(optional); type=4;} - void select_id_SgNBtoMeNBContainer() { set(mandatory); type=5;} - void select_id_CriticalityDiagnostics() { set(optional); type=6;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=7;} - void select_id_AdmittedSplitSRBs() { set(optional); type=8;} - void select_id_SgNBResourceCoordinationInformation() { set(optional); type=9;} - void select_id_RRCConfigIndication() { set(optional); type=10;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(mandatory)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else if(equal(optional)) { type = 7; return true; } - else if(equal(optional)) { type = 8; return true; } - else if(equal(optional)) { type = 9; return true; } - else if(equal(optional)) { type = 10; return true; } - else { type = 11; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(mandatory);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(optional);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(optional);} return false; - case 11: type = 11; 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}; - - }; - -}; -/* -SgNBAdditionRequestAcknowledge ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SgNBAdditionRequestAcknowledge-IEs}}, - ... -} -*/ - -struct SgNBAdditionRequestAcknowledge : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SgNBAdditionRequestAcknowledge";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SgNBAdditionRequestReject-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SgNB-UE-X2AP-ID CRITICALITY reject TYPE SgNB-UE-X2AP-ID PRESENCE optional}| - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}, - ... -} -*/ - -struct SgNBAdditionRequestReject_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;} - void select_id_Cause() { set(id_Cause); type=3;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=5;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_Cause)) { type = 3; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 5; return true; } - else { type = 6; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 6: type = 6; 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 == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(reject); type=2;} - void select_id_Cause() { set(ignore); type=3;} - void select_id_CriticalityDiagnostics() { set(ignore); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=5;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(reject)) { type = 5; return true; } - else { type = 6; 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(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(reject);} return false; - case 6: type = 6; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set(2); } - SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get(2); } - Cause& select_id_Cause() { return set(3); } - Cause const* get_id_Cause() const { return get(3); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(4); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(4); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(5); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(5); } - bool is_unknown() const { return type == 6; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SgNB_UE_X2AP_ID()); return true; - case 3: v(select_id_Cause()); return true; - case 4: v(select_id_CriticalityDiagnostics()); return true; - case 5: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 6: if(type != 6) {clear(); asn::base::set();} type = 6; 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; - } - 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(Cause)]; - char dummy2[sizeof(CriticalityDiagnostics)]; - char dummy3[sizeof(SgNB_UE_X2AP_ID)]; - char dummy4[sizeof(UE_X2AP_ID)]; - char dummy5[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(optional); type=2;} - void select_id_Cause() { set(mandatory); type=3;} - void select_id_CriticalityDiagnostics() { set(optional); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=5;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else { type = 6; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; 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}; - - }; - -}; -/* -SgNBAdditionRequestReject ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SgNBAdditionRequestReject-IEs}}, - ... -} -*/ - -struct SgNBAdditionRequestReject : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SgNBAdditionRequestReject";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SgNBChangeConfirm-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SgNB-UE-X2AP-ID CRITICALITY ignore TYPE SgNB-UE-X2AP-ID PRESENCE mandatory}| - { ID id-E-RABs-ToBeReleased-SgNBChaConfList CRITICALITY ignore TYPE E-RABs-ToBeReleased-SgNBChaConfList PRESENCE optional}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional}, - ... -} -*/ - -struct SgNBChangeConfirm_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;} - void select_id_E_RABs_ToBeReleased_SgNBChaConfList() { set(id_E_RABs_ToBeReleased_SgNBChaConfList); type=3;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=5;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_E_RABs_ToBeReleased_SgNBChaConfList)) { type = 3; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 5; return true; } - else { type = 6; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_E_RABs_ToBeReleased_SgNBChaConfList);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 6: type = 6; 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 == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(ignore); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(ignore); type=2;} - void select_id_E_RABs_ToBeReleased_SgNBChaConfList() { set(ignore); type=3;} - void select_id_CriticalityDiagnostics() { set(ignore); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(ignore); type=5;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else { type = 6; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false; - case 6: type = 6; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set(2); } - SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get(2); } - E_RABs_ToBeReleased_SgNBChaConfList& select_id_E_RABs_ToBeReleased_SgNBChaConfList() { return set(3); } - E_RABs_ToBeReleased_SgNBChaConfList const* get_id_E_RABs_ToBeReleased_SgNBChaConfList() const { return get(3); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(4); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(4); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(5); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(5); } - bool is_unknown() const { return type == 6; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SgNB_UE_X2AP_ID()); return true; - case 3: v(select_id_E_RABs_ToBeReleased_SgNBChaConfList()); return true; - case 4: v(select_id_CriticalityDiagnostics()); return true; - case 5: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 6: if(type != 6) {clear(); asn::base::set();} type = 6; 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; - } - 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(CriticalityDiagnostics)]; - char dummy2[sizeof(E_RABs_ToBeReleased_SgNBChaConfList)]; - char dummy3[sizeof(SgNB_UE_X2AP_ID)]; - char dummy4[sizeof(UE_X2AP_ID)]; - char dummy5[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_E_RABs_ToBeReleased_SgNBChaConfList() { set(optional); type=3;} - void select_id_CriticalityDiagnostics() { set(optional); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=5;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else { type = 6; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; 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}; - - }; - -}; -/* -SgNBChangeConfirm ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SgNBChangeConfirm-IEs}}, - ... -} -*/ - -struct SgNBChangeConfirm : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SgNBChangeConfirm";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SgNBChangeRefuse-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SgNB-UE-X2AP-ID CRITICALITY ignore TYPE SgNB-UE-X2AP-ID PRESENCE mandatory}| - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}, - ... -} -*/ - -struct SgNBChangeRefuse_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;} - void select_id_Cause() { set(id_Cause); type=3;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=5;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_Cause)) { type = 3; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 5; return true; } - else { type = 6; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 6: type = 6; 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 == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(ignore); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(ignore); type=2;} - void select_id_Cause() { set(ignore); type=3;} - void select_id_CriticalityDiagnostics() { set(ignore); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=5;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(reject)) { type = 5; return true; } - else { type = 6; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(reject);} return false; - case 6: type = 6; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set(2); } - SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get(2); } - Cause& select_id_Cause() { return set(3); } - Cause const* get_id_Cause() const { return get(3); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(4); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(4); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(5); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(5); } - bool is_unknown() const { return type == 6; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SgNB_UE_X2AP_ID()); return true; - case 3: v(select_id_Cause()); return true; - case 4: v(select_id_CriticalityDiagnostics()); return true; - case 5: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 6: if(type != 6) {clear(); asn::base::set();} type = 6; 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; - } - 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(Cause)]; - char dummy2[sizeof(CriticalityDiagnostics)]; - char dummy3[sizeof(SgNB_UE_X2AP_ID)]; - char dummy4[sizeof(UE_X2AP_ID)]; - char dummy5[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_Cause() { set(mandatory); type=3;} - void select_id_CriticalityDiagnostics() { set(optional); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=5;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else { type = 6; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; 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}; - - }; - -}; -/* -SgNBChangeRefuse ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SgNBChangeRefuse-IEs}}, - ... -} -*/ - -struct SgNBChangeRefuse : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SgNBChangeRefuse";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SgNBChangeRequired-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SgNB-UE-X2AP-ID CRITICALITY reject TYPE SgNB-UE-X2AP-ID PRESENCE mandatory}| - { ID id-Target-SgNB-ID CRITICALITY reject TYPE GlobalGNB-ID PRESENCE mandatory}| - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| - { ID id-SgNBtoMeNBContainer CRITICALITY reject TYPE SgNBtoMeNBContainer PRESENCE optional}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}, - ... -} -*/ - -struct SgNBChangeRequired_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 7; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;} - void select_id_Target_SgNB_ID() { set(id_Target_SgNB_ID); type=3;} - void select_id_Cause() { set(id_Cause); type=4;} - void select_id_SgNBtoMeNBContainer() { set(id_SgNBtoMeNBContainer); type=5;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=6;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_Target_SgNB_ID)) { type = 3; return true; } - else if(equal(id_Cause)) { type = 4; return true; } - else if(equal(id_SgNBtoMeNBContainer)) { type = 5; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 6; return true; } - else { type = 7; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_Target_SgNB_ID);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_Cause);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_SgNBtoMeNBContainer);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 7: type = 7; 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 == 7; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(reject); type=2;} - void select_id_Target_SgNB_ID() { set(reject); type=3;} - void select_id_Cause() { set(ignore); type=4;} - void select_id_SgNBtoMeNBContainer() { set(reject); type=5;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=6;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 4; return true; } - else if(equal(reject)) { type = 5; return true; } - else if(equal(reject)) { type = 6; return true; } - else { type = 7; 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(ignore);} 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set(2); } - SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get(2); } - GlobalGNB_ID& select_id_Target_SgNB_ID() { return set(3); } - GlobalGNB_ID const* get_id_Target_SgNB_ID() const { return get(3); } - Cause& select_id_Cause() { return set(4); } - Cause const* get_id_Cause() const { return get(4); } - SgNBtoMeNBContainer& select_id_SgNBtoMeNBContainer() { return set(5); } - SgNBtoMeNBContainer const* get_id_SgNBtoMeNBContainer() const { return get(5); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(6); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(6); } - bool is_unknown() const { return type == 7; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SgNB_UE_X2AP_ID()); return true; - case 3: v(select_id_Target_SgNB_ID()); return true; - case 4: v(select_id_Cause()); return true; - case 5: v(select_id_SgNBtoMeNBContainer()); return true; - case 6: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 7: if(type != 7) {clear(); asn::base::set();} type = 7; 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; - } - 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(Cause)]; - char dummy2[sizeof(GlobalGNB_ID)]; - char dummy3[sizeof(SgNB_UE_X2AP_ID)]; - char dummy4[sizeof(SgNBtoMeNBContainer)]; - char dummy5[sizeof(UE_X2AP_ID)]; - char dummy6[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 7; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_Target_SgNB_ID() { set(mandatory); type=3;} - void select_id_Cause() { set(mandatory); type=4;} - void select_id_SgNBtoMeNBContainer() { set(optional); type=5;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=6;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(mandatory)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else { type = 7; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(mandatory);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; 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}; - - }; - -}; -/* -SgNBChangeRequired ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SgNBChangeRequired-IEs}}, - ... -} -*/ - -struct SgNBChangeRequired : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SgNBChangeRequired";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SgNBCounterCheckRequest-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SgNB-UE-X2AP-ID CRITICALITY reject TYPE SgNB-UE-X2AP-ID PRESENCE mandatory}| - { ID id-E-RABs-SubjectToSgNBCounterCheck-List CRITICALITY ignore TYPE E-RABs-SubjectToSgNBCounterCheck-List PRESENCE mandatory}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional}, - ... -} -*/ - -struct SgNBCounterCheckRequest_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 5; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;} - void select_id_E_RABs_SubjectToSgNBCounterCheck_List() { set(id_E_RABs_SubjectToSgNBCounterCheck_List); type=3;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=4;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_E_RABs_SubjectToSgNBCounterCheck_List)) { type = 3; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 4; return true; } - else { type = 5; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_E_RABs_SubjectToSgNBCounterCheck_List);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 5: type = 5; 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 == 5; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(reject); type=2;} - void select_id_E_RABs_SubjectToSgNBCounterCheck_List() { set(ignore); type=3;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(ignore); type=4;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else { type = 5; 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(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set(2); } - SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get(2); } - E_RABs_SubjectToSgNBCounterCheck_List& select_id_E_RABs_SubjectToSgNBCounterCheck_List() { return set(3); } - E_RABs_SubjectToSgNBCounterCheck_List const* get_id_E_RABs_SubjectToSgNBCounterCheck_List() const { return get(3); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(4); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(4); } - bool is_unknown() const { return type == 5; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: var.destroy(); break; - case 4: 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SgNB_UE_X2AP_ID()); return true; - case 3: v(select_id_E_RABs_SubjectToSgNBCounterCheck_List()); return true; - case 4: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 5: if(type != 5) {clear(); asn::base::set();} type = 5; 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; - } - 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(E_RABs_SubjectToSgNBCounterCheck_List)]; - char dummy2[sizeof(SgNB_UE_X2AP_ID)]; - char dummy3[sizeof(UE_X2AP_ID)]; - char dummy4[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 5; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_E_RABs_SubjectToSgNBCounterCheck_List() { set(mandatory); type=3;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=4;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else { type = 5; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; 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}; - - }; - -}; -/* -SgNBCounterCheckRequest ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SgNBCounterCheckRequest-IEs}}, - ... -} -*/ - -struct SgNBCounterCheckRequest : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SgNBCounterCheckRequest";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SgNBModificationConfirm-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SgNB-UE-X2AP-ID CRITICALITY ignore TYPE SgNB-UE-X2AP-ID PRESENCE mandatory}| - { ID id-E-RABs-AdmittedToBeModified-SgNBModConfList CRITICALITY ignore TYPE E-RABs-AdmittedToBeModified-SgNBModConfList PRESENCE optional}| - { ID id-MeNBtoSgNBContainer CRITICALITY ignore TYPE MeNBtoSgNBContainer PRESENCE optional}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-MeNBResourceCoordinationInformation CRITICALITY ignore TYPE MeNBResourceCoordinationInformation PRESENCE optional}, - ... -} -*/ - -struct SgNBModificationConfirm_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 8; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;} - void select_id_E_RABs_AdmittedToBeModified_SgNBModConfList() { set(id_E_RABs_AdmittedToBeModified_SgNBModConfList); type=3;} - void select_id_MeNBtoSgNBContainer() { set(id_MeNBtoSgNBContainer); type=4;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=5;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=6;} - void select_id_MeNBResourceCoordinationInformation() { set(id_MeNBResourceCoordinationInformation); type=7;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_E_RABs_AdmittedToBeModified_SgNBModConfList)) { type = 3; return true; } - else if(equal(id_MeNBtoSgNBContainer)) { type = 4; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 5; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 6; return true; } - else if(equal(id_MeNBResourceCoordinationInformation)) { type = 7; return true; } - else { type = 8; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_E_RABs_AdmittedToBeModified_SgNBModConfList);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_MeNBtoSgNBContainer);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(id_MeNBResourceCoordinationInformation);} return false; - case 8: type = 8; 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 == 8; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(ignore); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(ignore); type=2;} - void select_id_E_RABs_AdmittedToBeModified_SgNBModConfList() { set(ignore); type=3;} - void select_id_MeNBtoSgNBContainer() { set(ignore); type=4;} - void select_id_CriticalityDiagnostics() { set(ignore); type=5;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(ignore); type=6;} - void select_id_MeNBResourceCoordinationInformation() { set(ignore); type=7;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else if(equal(ignore)) { type = 6; return true; } - else if(equal(ignore)) { type = 7; return true; } - else { type = 8; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(ignore);} return false; - case 8: type = 8; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set(2); } - SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get(2); } - E_RABs_AdmittedToBeModified_SgNBModConfList& select_id_E_RABs_AdmittedToBeModified_SgNBModConfList() { return set(3); } - E_RABs_AdmittedToBeModified_SgNBModConfList const* get_id_E_RABs_AdmittedToBeModified_SgNBModConfList() const { return get(3); } - MeNBtoSgNBContainer& select_id_MeNBtoSgNBContainer() { return set(4); } - MeNBtoSgNBContainer const* get_id_MeNBtoSgNBContainer() const { return get(4); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(5); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(5); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(6); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(6); } - MeNBResourceCoordinationInformation& select_id_MeNBResourceCoordinationInformation() { return set(7); } - MeNBResourceCoordinationInformation const* get_id_MeNBResourceCoordinationInformation() const { return get(7); } - bool is_unknown() const { return type == 8; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SgNB_UE_X2AP_ID()); return true; - case 3: v(select_id_E_RABs_AdmittedToBeModified_SgNBModConfList()); return true; - case 4: v(select_id_MeNBtoSgNBContainer()); return true; - case 5: v(select_id_CriticalityDiagnostics()); return true; - case 6: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 7: v(select_id_MeNBResourceCoordinationInformation()); return true; - case 8: if(type != 8) {clear(); asn::base::set();} type = 8; 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; - } - 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(CriticalityDiagnostics)]; - char dummy2[sizeof(E_RABs_AdmittedToBeModified_SgNBModConfList)]; - char dummy3[sizeof(MeNBResourceCoordinationInformation)]; - char dummy4[sizeof(MeNBtoSgNBContainer)]; - char dummy5[sizeof(SgNB_UE_X2AP_ID)]; - char dummy6[sizeof(UE_X2AP_ID)]; - char dummy7[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 8; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_E_RABs_AdmittedToBeModified_SgNBModConfList() { set(optional); type=3;} - void select_id_MeNBtoSgNBContainer() { set(optional); type=4;} - void select_id_CriticalityDiagnostics() { set(optional); type=5;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=6;} - void select_id_MeNBResourceCoordinationInformation() { set(optional); type=7;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else if(equal(optional)) { type = 7; return true; } - else { type = 8; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false; - case 8: type = 8; 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}; - - }; - -}; -/* -SgNBModificationConfirm ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SgNBModificationConfirm-IEs}}, - ... -} -*/ - -struct SgNBModificationConfirm : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SgNBModificationConfirm";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SgNBModificationRefuse-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SgNB-UE-X2AP-ID CRITICALITY ignore TYPE SgNB-UE-X2AP-ID PRESENCE mandatory}| - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| - { ID id-MeNBtoSgNBContainer CRITICALITY ignore TYPE MeNBtoSgNBContainer PRESENCE optional}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional}, - ... -} -*/ - -struct SgNBModificationRefuse_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 7; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;} - void select_id_Cause() { set(id_Cause); type=3;} - void select_id_MeNBtoSgNBContainer() { set(id_MeNBtoSgNBContainer); type=4;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=5;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=6;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_Cause)) { type = 3; return true; } - else if(equal(id_MeNBtoSgNBContainer)) { type = 4; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 5; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 6; return true; } - else { type = 7; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_MeNBtoSgNBContainer);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 7: type = 7; 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 == 7; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(ignore); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(ignore); type=2;} - void select_id_Cause() { set(ignore); type=3;} - void select_id_MeNBtoSgNBContainer() { set(ignore); type=4;} - void select_id_CriticalityDiagnostics() { set(ignore); type=5;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(ignore); type=6;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else if(equal(ignore)) { type = 6; return true; } - else { type = 7; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false; - case 7: type = 7; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set(2); } - SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get(2); } - Cause& select_id_Cause() { return set(3); } - Cause const* get_id_Cause() const { return get(3); } - MeNBtoSgNBContainer& select_id_MeNBtoSgNBContainer() { return set(4); } - MeNBtoSgNBContainer const* get_id_MeNBtoSgNBContainer() const { return get(4); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(5); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(5); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(6); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(6); } - bool is_unknown() const { return type == 7; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SgNB_UE_X2AP_ID()); return true; - case 3: v(select_id_Cause()); return true; - case 4: v(select_id_MeNBtoSgNBContainer()); return true; - case 5: v(select_id_CriticalityDiagnostics()); return true; - case 6: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 7: if(type != 7) {clear(); asn::base::set();} type = 7; 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; - } - 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(Cause)]; - char dummy2[sizeof(CriticalityDiagnostics)]; - char dummy3[sizeof(MeNBtoSgNBContainer)]; - char dummy4[sizeof(SgNB_UE_X2AP_ID)]; - char dummy5[sizeof(UE_X2AP_ID)]; - char dummy6[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 7; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_Cause() { set(mandatory); type=3;} - void select_id_MeNBtoSgNBContainer() { set(optional); type=4;} - void select_id_CriticalityDiagnostics() { set(optional); type=5;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=6;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else { type = 7; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; 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}; - - }; - -}; -/* -SgNBModificationRefuse ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SgNBModificationRefuse-IEs}}, - ... -} -*/ - -struct SgNBModificationRefuse : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SgNBModificationRefuse";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -UE-ContextInformationSgNBModReqExtIEs X2AP-PROTOCOL-EXTENSION ::= { - { ID id-SubscriberProfileIDforRFP CRITICALITY ignore EXTENSION SubscriberProfileIDforRFP PRESENCE optional}, - ... -} -*/ - -struct UE_ContextInformationSgNBModReqExtIEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_SubscriberProfileIDforRFP() { set(id_SubscriberProfileIDforRFP); type=1;} - X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_SubscriberProfileIDforRFP)) { type = 1; return true; } - else { type = 2; 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_SubscriberProfileIDforRFP);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_SubscriberProfileIDforRFP() { set(ignore); type=1;} - X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else { type = 2; 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(ignore);} return false; - case 2: type = 2; 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 Extension_t : asn::typefield - { - ~Extension_t() {clear();} - size_t get_index() const {return type;} - SubscriberProfileIDforRFP& select_id_SubscriberProfileIDforRFP() { return set(1); } - SubscriberProfileIDforRFP const* get_id_SubscriberProfileIDforRFP() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_SubscriberProfileIDforRFP()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(SubscriberProfileIDforRFP)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_SubscriberProfileIDforRFP() { set(optional); type=1;} - X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(optional)) { type = 1; return true; } - else { type = 2; 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(optional);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -UE-ContextInformation-SgNBModReq ::= SEQUENCE { - nRUE-SecurityCapabilities NRUESecurityCapabilities OPTIONAL, - sgNB-SecurityKey SgNBSecurityKey OPTIONAL, - sgNBUEAggregateMaximumBitRate UEAggregateMaximumBitRate OPTIONAL, - e-RABs-ToBeAdded E-RABs-ToBeAdded-SgNBModReq-List OPTIONAL, - e-RABs-ToBeModified E-RABs-ToBeModified-SgNBModReq-List OPTIONAL, - e-RABs-ToBeReleased E-RABs-ToBeReleased-SgNBModReq-List OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {UE-ContextInformationSgNBModReqExtIEs} } OPTIONAL, - ... -} -*/ - -struct UE_ContextInformation_SgNBModReq : asn::sequence<7, 0, true, 7> -{ - static constexpr const char* name() {return "UE-ContextInformation-SgNBModReq";} - using parent_t = asn::sequence<7, 0, true, 7>; - struct nRUE_SecurityCapabilities_t : NRUESecurityCapabilities - { - static constexpr const char* name() {return "nRUE_SecurityCapabilities_t";} - using parent_t = NRUESecurityCapabilities; - static constexpr bool optional = true; - - }; - nRUE_SecurityCapabilities_t& set_nRUE_SecurityCapabilities() { nRUE_SecurityCapabilities.setpresent(true); return nRUE_SecurityCapabilities;} - nRUE_SecurityCapabilities_t const* get_nRUE_SecurityCapabilities() const {return nRUE_SecurityCapabilities.is_valid() ? &nRUE_SecurityCapabilities : nullptr;} - struct sgNB_SecurityKey_t : SgNBSecurityKey - { - static constexpr const char* name() {return "sgNB_SecurityKey_t";} - using parent_t = SgNBSecurityKey; - static constexpr bool optional = true; - - }; - sgNB_SecurityKey_t& set_sgNB_SecurityKey() { sgNB_SecurityKey.setpresent(true); return sgNB_SecurityKey;} - sgNB_SecurityKey_t const* get_sgNB_SecurityKey() const {return sgNB_SecurityKey.is_valid() ? &sgNB_SecurityKey : nullptr;} - struct sgNBUEAggregateMaximumBitRate_t : UEAggregateMaximumBitRate - { - static constexpr const char* name() {return "sgNBUEAggregateMaximumBitRate_t";} - using parent_t = UEAggregateMaximumBitRate; - static constexpr bool optional = true; - - }; - sgNBUEAggregateMaximumBitRate_t& set_sgNBUEAggregateMaximumBitRate() { sgNBUEAggregateMaximumBitRate.setpresent(true); return sgNBUEAggregateMaximumBitRate;} - sgNBUEAggregateMaximumBitRate_t const* get_sgNBUEAggregateMaximumBitRate() const {return sgNBUEAggregateMaximumBitRate.is_valid() ? &sgNBUEAggregateMaximumBitRate : nullptr;} - struct e_RABs_ToBeAdded_t : E_RABs_ToBeAdded_SgNBModReq_List - { - static constexpr const char* name() {return "e_RABs_ToBeAdded_t";} - using parent_t = E_RABs_ToBeAdded_SgNBModReq_List; - static constexpr bool optional = true; - - }; - e_RABs_ToBeAdded_t& set_e_RABs_ToBeAdded() { e_RABs_ToBeAdded.setpresent(true); return e_RABs_ToBeAdded;} - e_RABs_ToBeAdded_t const* get_e_RABs_ToBeAdded() const {return e_RABs_ToBeAdded.is_valid() ? &e_RABs_ToBeAdded : nullptr;} - struct e_RABs_ToBeModified_t : E_RABs_ToBeModified_SgNBModReq_List - { - static constexpr const char* name() {return "e_RABs_ToBeModified_t";} - using parent_t = E_RABs_ToBeModified_SgNBModReq_List; - static constexpr bool optional = true; - - }; - e_RABs_ToBeModified_t& set_e_RABs_ToBeModified() { e_RABs_ToBeModified.setpresent(true); return e_RABs_ToBeModified;} - e_RABs_ToBeModified_t const* get_e_RABs_ToBeModified() const {return e_RABs_ToBeModified.is_valid() ? &e_RABs_ToBeModified : nullptr;} - struct e_RABs_ToBeReleased_t : E_RABs_ToBeReleased_SgNBModReq_List - { - static constexpr const char* name() {return "e_RABs_ToBeReleased_t";} - using parent_t = E_RABs_ToBeReleased_SgNBModReq_List; - static constexpr bool optional = true; - - }; - e_RABs_ToBeReleased_t& set_e_RABs_ToBeReleased() { e_RABs_ToBeReleased.setpresent(true); return e_RABs_ToBeReleased;} - e_RABs_ToBeReleased_t const* get_e_RABs_ToBeReleased() const {return e_RABs_ToBeReleased.is_valid() ? &e_RABs_ToBeReleased : nullptr;} - struct iE_Extensions_t : ProtocolExtensionContainer - { - static constexpr const char* name() {return "iE_Extensions_t";} - using parent_t = ProtocolExtensionContainer; - static constexpr bool optional = true; - - }; - iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;} - iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;} - template void decode(V& v) - { - v(nRUE_SecurityCapabilities); - v(sgNB_SecurityKey); - v(sgNBUEAggregateMaximumBitRate); - v(e_RABs_ToBeAdded); - v(e_RABs_ToBeModified); - v(e_RABs_ToBeReleased); - v(iE_Extensions); - - }; - template void encode(V& v) const - { - v(nRUE_SecurityCapabilities); - v(sgNB_SecurityKey); - v(sgNBUEAggregateMaximumBitRate); - v(e_RABs_ToBeAdded); - v(e_RABs_ToBeModified); - v(e_RABs_ToBeReleased); - v(iE_Extensions); - - }; - void clear() - { - nRUE_SecurityCapabilities.clear(); - sgNB_SecurityKey.clear(); - sgNBUEAggregateMaximumBitRate.clear(); - e_RABs_ToBeAdded.clear(); - e_RABs_ToBeModified.clear(); - e_RABs_ToBeReleased.clear(); - iE_Extensions.clear(); - - }; - private: - nRUE_SecurityCapabilities_t nRUE_SecurityCapabilities; - sgNB_SecurityKey_t sgNB_SecurityKey; - sgNBUEAggregateMaximumBitRate_t sgNBUEAggregateMaximumBitRate; - e_RABs_ToBeAdded_t e_RABs_ToBeAdded; - e_RABs_ToBeModified_t e_RABs_ToBeModified; - e_RABs_ToBeReleased_t e_RABs_ToBeReleased; - iE_Extensions_t iE_Extensions; - -}; -/* -SgNBModificationRequest-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SgNB-UE-X2AP-ID CRITICALITY reject TYPE SgNB-UE-X2AP-ID PRESENCE mandatory}| - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| - { ID id-SelectedPLMN CRITICALITY ignore TYPE PLMN-Identity PRESENCE optional}| - { ID id-HandoverRestrictionList CRITICALITY ignore TYPE HandoverRestrictionList PRESENCE optional}| - { ID id-SCGConfigurationQuery CRITICALITY ignore TYPE SCGConfigurationQuery PRESENCE optional}| - { ID id-UE-ContextInformation-SgNBModReq CRITICALITY reject TYPE UE-ContextInformation-SgNBModReq PRESENCE optional}| - { ID id-MeNBtoSgNBContainer CRITICALITY reject TYPE MeNBtoSgNBContainer PRESENCE optional}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-MeNBResourceCoordinationInformation CRITICALITY ignore TYPE MeNBResourceCoordinationInformation PRESENCE optional}| - { ID id-RequestedSplitSRBs CRITICALITY ignore TYPE SplitSRBs PRESENCE optional}| - { ID id-RequestedSplitSRBsrelease CRITICALITY ignore TYPE SplitSRBs PRESENCE optional}, - ... -} -*/ - -struct SgNBModificationRequest_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 13; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;} - void select_id_Cause() { set(id_Cause); type=3;} - void select_id_SelectedPLMN() { set(id_SelectedPLMN); type=4;} - void select_id_HandoverRestrictionList() { set(id_HandoverRestrictionList); type=5;} - void select_id_SCGConfigurationQuery() { set(id_SCGConfigurationQuery); type=6;} - void select_id_UE_ContextInformation_SgNBModReq() { set(id_UE_ContextInformation_SgNBModReq); type=7;} - void select_id_MeNBtoSgNBContainer() { set(id_MeNBtoSgNBContainer); type=8;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=9;} - void select_id_MeNBResourceCoordinationInformation() { set(id_MeNBResourceCoordinationInformation); type=10;} - void select_id_RequestedSplitSRBs() { set(id_RequestedSplitSRBs); type=11;} - void select_id_RequestedSplitSRBsrelease() { set(id_RequestedSplitSRBsrelease); type=12;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_Cause)) { type = 3; return true; } - else if(equal(id_SelectedPLMN)) { type = 4; return true; } - else if(equal(id_HandoverRestrictionList)) { type = 5; return true; } - else if(equal(id_SCGConfigurationQuery)) { type = 6; return true; } - else if(equal(id_UE_ContextInformation_SgNBModReq)) { type = 7; return true; } - else if(equal(id_MeNBtoSgNBContainer)) { type = 8; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 9; return true; } - else if(equal(id_MeNBResourceCoordinationInformation)) { type = 10; return true; } - else if(equal(id_RequestedSplitSRBs)) { type = 11; return true; } - else if(equal(id_RequestedSplitSRBsrelease)) { type = 12; return true; } - else { type = 13; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_SelectedPLMN);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_HandoverRestrictionList);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_SCGConfigurationQuery);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(id_UE_ContextInformation_SgNBModReq);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(id_MeNBtoSgNBContainer);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(id_MeNBResourceCoordinationInformation);} return false; - case 11: type = 11; if(v(ref_nested())) { return equal(id_RequestedSplitSRBs);} return false; - case 12: type = 12; if(v(ref_nested())) { return equal(id_RequestedSplitSRBsrelease);} return false; - case 13: type = 13; 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 == 13; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(reject); type=2;} - void select_id_Cause() { set(ignore); type=3;} - void select_id_SelectedPLMN() { set(ignore); type=4;} - void select_id_HandoverRestrictionList() { set(ignore); type=5;} - void select_id_SCGConfigurationQuery() { set(ignore); type=6;} - void select_id_UE_ContextInformation_SgNBModReq() { set(reject); type=7;} - void select_id_MeNBtoSgNBContainer() { set(reject); type=8;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=9;} - void select_id_MeNBResourceCoordinationInformation() { set(ignore); type=10;} - void select_id_RequestedSplitSRBs() { set(ignore); type=11;} - void select_id_RequestedSplitSRBsrelease() { set(ignore); type=12;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else if(equal(ignore)) { 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(ignore)) { type = 10; return true; } - else if(equal(ignore)) { type = 11; return true; } - else if(equal(ignore)) { type = 12; return true; } - else { type = 13; 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(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} 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(ignore);} 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set(2); } - SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get(2); } - Cause& select_id_Cause() { return set(3); } - Cause const* get_id_Cause() const { return get(3); } - PLMN_Identity& select_id_SelectedPLMN() { return set(4); } - PLMN_Identity const* get_id_SelectedPLMN() const { return get(4); } - HandoverRestrictionList& select_id_HandoverRestrictionList() { return set(5); } - HandoverRestrictionList const* get_id_HandoverRestrictionList() const { return get(5); } - SCGConfigurationQuery& select_id_SCGConfigurationQuery() { return set(6); } - SCGConfigurationQuery const* get_id_SCGConfigurationQuery() const { return get(6); } - UE_ContextInformation_SgNBModReq& select_id_UE_ContextInformation_SgNBModReq() { return set(7); } - UE_ContextInformation_SgNBModReq const* get_id_UE_ContextInformation_SgNBModReq() const { return get(7); } - MeNBtoSgNBContainer& select_id_MeNBtoSgNBContainer() { return set(8); } - MeNBtoSgNBContainer const* get_id_MeNBtoSgNBContainer() const { return get(8); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(9); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(9); } - MeNBResourceCoordinationInformation& select_id_MeNBResourceCoordinationInformation() { return set(10); } - MeNBResourceCoordinationInformation const* get_id_MeNBResourceCoordinationInformation() const { return get(10); } - SplitSRBs& select_id_RequestedSplitSRBs() { return set(11); } - SplitSRBs const* get_id_RequestedSplitSRBs() const { return get(11); } - SplitSRBs& select_id_RequestedSplitSRBsrelease() { return set(12); } - SplitSRBs const* get_id_RequestedSplitSRBsrelease() const { return get(12); } - bool is_unknown() const { return type == 13; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SgNB_UE_X2AP_ID()); return true; - case 3: v(select_id_Cause()); return true; - case 4: v(select_id_SelectedPLMN()); return true; - case 5: v(select_id_HandoverRestrictionList()); return true; - case 6: v(select_id_SCGConfigurationQuery()); return true; - case 7: v(select_id_UE_ContextInformation_SgNBModReq()); return true; - case 8: v(select_id_MeNBtoSgNBContainer()); return true; - case 9: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 10: v(select_id_MeNBResourceCoordinationInformation()); return true; - case 11: v(select_id_RequestedSplitSRBs()); return true; - case 12: v(select_id_RequestedSplitSRBsrelease()); return true; - case 13: if(type != 13) {clear(); asn::base::set();} type = 13; 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; - } - 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(Cause)]; - char dummy2[sizeof(HandoverRestrictionList)]; - char dummy3[sizeof(MeNBResourceCoordinationInformation)]; - char dummy4[sizeof(MeNBtoSgNBContainer)]; - char dummy5[sizeof(PLMN_Identity)]; - char dummy6[sizeof(SCGConfigurationQuery)]; - char dummy7[sizeof(SgNB_UE_X2AP_ID)]; - char dummy8[sizeof(SplitSRBs)]; - char dummy9[sizeof(UE_ContextInformation_SgNBModReq)]; - char dummy10[sizeof(UE_X2AP_ID)]; - char dummy11[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 13; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_Cause() { set(mandatory); type=3;} - void select_id_SelectedPLMN() { set(optional); type=4;} - void select_id_HandoverRestrictionList() { set(optional); type=5;} - void select_id_SCGConfigurationQuery() { set(optional); type=6;} - void select_id_UE_ContextInformation_SgNBModReq() { set(optional); type=7;} - void select_id_MeNBtoSgNBContainer() { set(optional); type=8;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=9;} - void select_id_MeNBResourceCoordinationInformation() { set(optional); type=10;} - void select_id_RequestedSplitSRBs() { set(optional); type=11;} - void select_id_RequestedSplitSRBsrelease() { set(optional); type=12;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else if(equal(optional)) { type = 7; return true; } - else if(equal(optional)) { type = 8; return true; } - else if(equal(optional)) { type = 9; return true; } - else if(equal(optional)) { type = 10; return true; } - else if(equal(optional)) { type = 11; return true; } - else if(equal(optional)) { type = 12; return true; } - else { type = 13; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(optional);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(optional);} return false; - case 11: type = 11; if(v(ref_nested())) { return equal(optional);} return false; - case 12: type = 12; if(v(ref_nested())) { return equal(optional);} return false; - case 13: type = 13; 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}; - - }; - -}; -/* -SgNBModificationRequest ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{ SgNBModificationRequest-IEs}}, - ... -} -*/ - -struct SgNBModificationRequest : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SgNBModificationRequest";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SgNBModificationRequestAcknowledge-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SgNB-UE-X2AP-ID CRITICALITY ignore TYPE SgNB-UE-X2AP-ID PRESENCE mandatory}| - { ID id-E-RABs-Admitted-ToBeAdded-SgNBModAckList CRITICALITY ignore TYPE E-RABs-Admitted-ToBeAdded-SgNBModAckList PRESENCE optional}| - { ID id-E-RABs-Admitted-ToBeModified-SgNBModAckList CRITICALITY ignore TYPE E-RABs-Admitted-ToBeModified-SgNBModAckList PRESENCE optional}| - { ID id-E-RABs-Admitted-ToBeReleased-SgNBModAckList CRITICALITY ignore TYPE E-RABs-Admitted-ToBeReleased-SgNBModAckList PRESENCE optional}| - { ID id-E-RABs-NotAdmitted-List CRITICALITY ignore TYPE E-RAB-List PRESENCE optional}| - { ID id-SgNBtoMeNBContainer CRITICALITY ignore TYPE SgNBtoMeNBContainer PRESENCE optional}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-SgNBResourceCoordinationInformation CRITICALITY ignore TYPE SgNBResourceCoordinationInformation PRESENCE optional}| - { ID id-AdmittedSplitSRBs CRITICALITY ignore TYPE SplitSRBs PRESENCE optional}| - { ID id-AdmittedSplitSRBsrelease CRITICALITY ignore TYPE SplitSRBs PRESENCE optional}| - { ID id-RRCConfigIndication CRITICALITY reject TYPE RRC-Config-Ind PRESENCE optional}, - ... -} -*/ - -struct SgNBModificationRequestAcknowledge_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 14; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;} - void select_id_E_RABs_Admitted_ToBeAdded_SgNBModAckList() { set(id_E_RABs_Admitted_ToBeAdded_SgNBModAckList); type=3;} - void select_id_E_RABs_Admitted_ToBeModified_SgNBModAckList() { set(id_E_RABs_Admitted_ToBeModified_SgNBModAckList); type=4;} - void select_id_E_RABs_Admitted_ToBeReleased_SgNBModAckList() { set(id_E_RABs_Admitted_ToBeReleased_SgNBModAckList); type=5;} - void select_id_E_RABs_NotAdmitted_List() { set(id_E_RABs_NotAdmitted_List); type=6;} - void select_id_SgNBtoMeNBContainer() { set(id_SgNBtoMeNBContainer); type=7;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=8;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=9;} - void select_id_SgNBResourceCoordinationInformation() { set(id_SgNBResourceCoordinationInformation); type=10;} - void select_id_AdmittedSplitSRBs() { set(id_AdmittedSplitSRBs); type=11;} - void select_id_AdmittedSplitSRBsrelease() { set(id_AdmittedSplitSRBsrelease); type=12;} - void select_id_RRCConfigIndication() { set(id_RRCConfigIndication); type=13;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_E_RABs_Admitted_ToBeAdded_SgNBModAckList)) { type = 3; return true; } - else if(equal(id_E_RABs_Admitted_ToBeModified_SgNBModAckList)) { type = 4; return true; } - else if(equal(id_E_RABs_Admitted_ToBeReleased_SgNBModAckList)) { type = 5; return true; } - else if(equal(id_E_RABs_NotAdmitted_List)) { type = 6; return true; } - else if(equal(id_SgNBtoMeNBContainer)) { type = 7; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 8; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 9; return true; } - else if(equal(id_SgNBResourceCoordinationInformation)) { type = 10; return true; } - else if(equal(id_AdmittedSplitSRBs)) { type = 11; return true; } - else if(equal(id_AdmittedSplitSRBsrelease)) { type = 12; return true; } - else if(equal(id_RRCConfigIndication)) { type = 13; return true; } - else { type = 14; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_ToBeAdded_SgNBModAckList);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_ToBeModified_SgNBModAckList);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_ToBeReleased_SgNBModAckList);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_E_RABs_NotAdmitted_List);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(id_SgNBtoMeNBContainer);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(id_SgNBResourceCoordinationInformation);} return false; - case 11: type = 11; if(v(ref_nested())) { return equal(id_AdmittedSplitSRBs);} return false; - case 12: type = 12; if(v(ref_nested())) { return equal(id_AdmittedSplitSRBsrelease);} return false; - case 13: type = 13; if(v(ref_nested())) { return equal(id_RRCConfigIndication);} return false; - case 14: type = 14; 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 == 14; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(ignore); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(ignore); type=2;} - void select_id_E_RABs_Admitted_ToBeAdded_SgNBModAckList() { set(ignore); type=3;} - void select_id_E_RABs_Admitted_ToBeModified_SgNBModAckList() { set(ignore); type=4;} - void select_id_E_RABs_Admitted_ToBeReleased_SgNBModAckList() { set(ignore); type=5;} - void select_id_E_RABs_NotAdmitted_List() { set(ignore); type=6;} - void select_id_SgNBtoMeNBContainer() { set(ignore); type=7;} - void select_id_CriticalityDiagnostics() { set(ignore); type=8;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(ignore); type=9;} - void select_id_SgNBResourceCoordinationInformation() { set(ignore); type=10;} - void select_id_AdmittedSplitSRBs() { set(ignore); type=11;} - void select_id_AdmittedSplitSRBsrelease() { set(ignore); type=12;} - void select_id_RRCConfigIndication() { set(reject); type=13;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else if(equal(ignore)) { type = 6; return true; } - else if(equal(ignore)) { type = 7; return true; } - else if(equal(ignore)) { type = 8; return true; } - else if(equal(ignore)) { type = 9; return true; } - else if(equal(ignore)) { type = 10; return true; } - else if(equal(ignore)) { type = 11; return true; } - else if(equal(ignore)) { type = 12; return true; } - else if(equal(reject)) { type = 13; return true; } - else { type = 14; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(ignore);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(ignore);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(ignore);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(ignore);} 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(reject);} return false; - case 14: type = 14; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set(2); } - SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get(2); } - E_RABs_Admitted_ToBeAdded_SgNBModAckList& select_id_E_RABs_Admitted_ToBeAdded_SgNBModAckList() { return set(3); } - E_RABs_Admitted_ToBeAdded_SgNBModAckList const* get_id_E_RABs_Admitted_ToBeAdded_SgNBModAckList() const { return get(3); } - E_RABs_Admitted_ToBeModified_SgNBModAckList& select_id_E_RABs_Admitted_ToBeModified_SgNBModAckList() { return set(4); } - E_RABs_Admitted_ToBeModified_SgNBModAckList const* get_id_E_RABs_Admitted_ToBeModified_SgNBModAckList() const { return get(4); } - E_RABs_Admitted_ToBeReleased_SgNBModAckList& select_id_E_RABs_Admitted_ToBeReleased_SgNBModAckList() { return set(5); } - E_RABs_Admitted_ToBeReleased_SgNBModAckList const* get_id_E_RABs_Admitted_ToBeReleased_SgNBModAckList() const { return get(5); } - E_RAB_List& select_id_E_RABs_NotAdmitted_List() { return set(6); } - E_RAB_List const* get_id_E_RABs_NotAdmitted_List() const { return get(6); } - SgNBtoMeNBContainer& select_id_SgNBtoMeNBContainer() { return set(7); } - SgNBtoMeNBContainer const* get_id_SgNBtoMeNBContainer() const { return get(7); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(8); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(8); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(9); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(9); } - SgNBResourceCoordinationInformation& select_id_SgNBResourceCoordinationInformation() { return set(10); } - SgNBResourceCoordinationInformation const* get_id_SgNBResourceCoordinationInformation() const { return get(10); } - SplitSRBs& select_id_AdmittedSplitSRBs() { return set(11); } - SplitSRBs const* get_id_AdmittedSplitSRBs() const { return get(11); } - SplitSRBs& select_id_AdmittedSplitSRBsrelease() { return set(12); } - SplitSRBs const* get_id_AdmittedSplitSRBsrelease() const { return get(12); } - RRC_Config_Ind& select_id_RRCConfigIndication() { return set(13); } - RRC_Config_Ind const* get_id_RRCConfigIndication() const { return get(13); } - bool is_unknown() const { return type == 14; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SgNB_UE_X2AP_ID()); return true; - case 3: v(select_id_E_RABs_Admitted_ToBeAdded_SgNBModAckList()); return true; - case 4: v(select_id_E_RABs_Admitted_ToBeModified_SgNBModAckList()); return true; - case 5: v(select_id_E_RABs_Admitted_ToBeReleased_SgNBModAckList()); return true; - case 6: v(select_id_E_RABs_NotAdmitted_List()); return true; - case 7: v(select_id_SgNBtoMeNBContainer()); return true; - case 8: v(select_id_CriticalityDiagnostics()); return true; - case 9: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 10: v(select_id_SgNBResourceCoordinationInformation()); return true; - case 11: v(select_id_AdmittedSplitSRBs()); return true; - case 12: v(select_id_AdmittedSplitSRBsrelease()); return true; - case 13: v(select_id_RRCConfigIndication()); return true; - case 14: if(type != 14) {clear(); asn::base::set();} type = 14; 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; - } - 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(CriticalityDiagnostics)]; - char dummy2[sizeof(E_RAB_List)]; - char dummy3[sizeof(E_RABs_Admitted_ToBeAdded_SgNBModAckList)]; - char dummy4[sizeof(E_RABs_Admitted_ToBeModified_SgNBModAckList)]; - char dummy5[sizeof(E_RABs_Admitted_ToBeReleased_SgNBModAckList)]; - char dummy6[sizeof(RRC_Config_Ind)]; - char dummy7[sizeof(SgNBResourceCoordinationInformation)]; - char dummy8[sizeof(SgNB_UE_X2AP_ID)]; - char dummy9[sizeof(SgNBtoMeNBContainer)]; - char dummy10[sizeof(SplitSRBs)]; - char dummy11[sizeof(UE_X2AP_ID)]; - char dummy12[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 14; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_E_RABs_Admitted_ToBeAdded_SgNBModAckList() { set(optional); type=3;} - void select_id_E_RABs_Admitted_ToBeModified_SgNBModAckList() { set(optional); type=4;} - void select_id_E_RABs_Admitted_ToBeReleased_SgNBModAckList() { set(optional); type=5;} - void select_id_E_RABs_NotAdmitted_List() { set(optional); type=6;} - void select_id_SgNBtoMeNBContainer() { set(optional); type=7;} - void select_id_CriticalityDiagnostics() { set(optional); type=8;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=9;} - void select_id_SgNBResourceCoordinationInformation() { set(optional); type=10;} - void select_id_AdmittedSplitSRBs() { set(optional); type=11;} - void select_id_AdmittedSplitSRBsrelease() { set(optional); type=12;} - void select_id_RRCConfigIndication() { set(optional); type=13;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else if(equal(optional)) { type = 7; return true; } - else if(equal(optional)) { type = 8; return true; } - else if(equal(optional)) { type = 9; return true; } - else if(equal(optional)) { type = 10; return true; } - else if(equal(optional)) { type = 11; return true; } - else if(equal(optional)) { type = 12; return true; } - else if(equal(optional)) { type = 13; return true; } - else { type = 14; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(optional);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(optional);} return false; - case 11: type = 11; if(v(ref_nested())) { return equal(optional);} return false; - case 12: type = 12; if(v(ref_nested())) { return equal(optional);} return false; - case 13: type = 13; if(v(ref_nested())) { return equal(optional);} return false; - case 14: type = 14; 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}; - - }; - -}; -/* -SgNBModificationRequestAcknowledge ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SgNBModificationRequestAcknowledge-IEs}}, - ... -} -*/ - -struct SgNBModificationRequestAcknowledge : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SgNBModificationRequestAcknowledge";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SgNBModificationRequestReject-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SgNB-UE-X2AP-ID CRITICALITY ignore TYPE SgNB-UE-X2AP-ID PRESENCE mandatory}| - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional}, - ... -} -*/ - -struct SgNBModificationRequestReject_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;} - void select_id_Cause() { set(id_Cause); type=3;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=5;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_Cause)) { type = 3; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 5; return true; } - else { type = 6; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 6: type = 6; 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 == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(ignore); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(ignore); type=2;} - void select_id_Cause() { set(ignore); type=3;} - void select_id_CriticalityDiagnostics() { set(ignore); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(ignore); type=5;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else { type = 6; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false; - case 6: type = 6; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set(2); } - SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get(2); } - Cause& select_id_Cause() { return set(3); } - Cause const* get_id_Cause() const { return get(3); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(4); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(4); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(5); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(5); } - bool is_unknown() const { return type == 6; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SgNB_UE_X2AP_ID()); return true; - case 3: v(select_id_Cause()); return true; - case 4: v(select_id_CriticalityDiagnostics()); return true; - case 5: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 6: if(type != 6) {clear(); asn::base::set();} type = 6; 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; - } - 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(Cause)]; - char dummy2[sizeof(CriticalityDiagnostics)]; - char dummy3[sizeof(SgNB_UE_X2AP_ID)]; - char dummy4[sizeof(UE_X2AP_ID)]; - char dummy5[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_Cause() { set(mandatory); type=3;} - void select_id_CriticalityDiagnostics() { set(optional); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=5;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else { type = 6; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; 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}; - - }; - -}; -/* -SgNBModificationRequestReject ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SgNBModificationRequestReject-IEs}}, - ... -} -*/ - -struct SgNBModificationRequestReject : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SgNBModificationRequestReject";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SgNBModificationRequired-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SgNB-UE-X2AP-ID CRITICALITY reject TYPE SgNB-UE-X2AP-ID PRESENCE mandatory}| - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| - { ID id-PDCPChangeIndication CRITICALITY ignore TYPE PDCPChangeIndication PRESENCE optional}| - { ID id-E-RABs-ToBeReleased-SgNBModReqdList CRITICALITY ignore TYPE E-RABs-ToBeReleased-SgNBModReqdList PRESENCE optional}| - { ID id-SgNBtoMeNBContainer CRITICALITY ignore TYPE SgNBtoMeNBContainer PRESENCE optional}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-E-RABs-ToBeModified-SgNBModReqdList CRITICALITY ignore TYPE E-RABs-ToBeModified-SgNBModReqdList PRESENCE optional}| - { ID id-SgNBResourceCoordinationInformation CRITICALITY ignore TYPE SgNBResourceCoordinationInformation PRESENCE optional}| - { ID id-RRCConfigIndication CRITICALITY reject TYPE RRC-Config-Ind PRESENCE optional}, - ... -} -*/ - -struct SgNBModificationRequired_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 11; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;} - void select_id_Cause() { set(id_Cause); type=3;} - void select_id_PDCPChangeIndication() { set(id_PDCPChangeIndication); type=4;} - void select_id_E_RABs_ToBeReleased_SgNBModReqdList() { set(id_E_RABs_ToBeReleased_SgNBModReqdList); type=5;} - void select_id_SgNBtoMeNBContainer() { set(id_SgNBtoMeNBContainer); type=6;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=7;} - void select_id_E_RABs_ToBeModified_SgNBModReqdList() { set(id_E_RABs_ToBeModified_SgNBModReqdList); type=8;} - void select_id_SgNBResourceCoordinationInformation() { set(id_SgNBResourceCoordinationInformation); type=9;} - void select_id_RRCConfigIndication() { set(id_RRCConfigIndication); type=10;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_Cause)) { type = 3; return true; } - else if(equal(id_PDCPChangeIndication)) { type = 4; return true; } - else if(equal(id_E_RABs_ToBeReleased_SgNBModReqdList)) { type = 5; return true; } - else if(equal(id_SgNBtoMeNBContainer)) { type = 6; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 7; return true; } - else if(equal(id_E_RABs_ToBeModified_SgNBModReqdList)) { type = 8; return true; } - else if(equal(id_SgNBResourceCoordinationInformation)) { type = 9; return true; } - else if(equal(id_RRCConfigIndication)) { type = 10; return true; } - else { type = 11; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_PDCPChangeIndication);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_E_RABs_ToBeReleased_SgNBModReqdList);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_SgNBtoMeNBContainer);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(id_E_RABs_ToBeModified_SgNBModReqdList);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(id_SgNBResourceCoordinationInformation);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(id_RRCConfigIndication);} return false; - case 11: type = 11; 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 == 11; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(reject); type=2;} - void select_id_Cause() { set(ignore); type=3;} - void select_id_PDCPChangeIndication() { set(ignore); type=4;} - void select_id_E_RABs_ToBeReleased_SgNBModReqdList() { set(ignore); type=5;} - void select_id_SgNBtoMeNBContainer() { set(ignore); type=6;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=7;} - void select_id_E_RABs_ToBeModified_SgNBModReqdList() { set(ignore); type=8;} - void select_id_SgNBResourceCoordinationInformation() { set(ignore); type=9;} - void select_id_RRCConfigIndication() { set(reject); type=10;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else if(equal(ignore)) { type = 6; return true; } - else if(equal(reject)) { type = 7; return true; } - else if(equal(ignore)) { type = 8; return true; } - else if(equal(ignore)) { type = 9; return true; } - else if(equal(reject)) { type = 10; return true; } - else { type = 11; 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(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} 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(ignore);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(ignore);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(reject);} return false; - case 11: type = 11; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set(2); } - SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get(2); } - Cause& select_id_Cause() { return set(3); } - Cause const* get_id_Cause() const { return get(3); } - PDCPChangeIndication& select_id_PDCPChangeIndication() { return set(4); } - PDCPChangeIndication const* get_id_PDCPChangeIndication() const { return get(4); } - E_RABs_ToBeReleased_SgNBModReqdList& select_id_E_RABs_ToBeReleased_SgNBModReqdList() { return set(5); } - E_RABs_ToBeReleased_SgNBModReqdList const* get_id_E_RABs_ToBeReleased_SgNBModReqdList() const { return get(5); } - SgNBtoMeNBContainer& select_id_SgNBtoMeNBContainer() { return set(6); } - SgNBtoMeNBContainer const* get_id_SgNBtoMeNBContainer() const { return get(6); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(7); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(7); } - E_RABs_ToBeModified_SgNBModReqdList& select_id_E_RABs_ToBeModified_SgNBModReqdList() { return set(8); } - E_RABs_ToBeModified_SgNBModReqdList const* get_id_E_RABs_ToBeModified_SgNBModReqdList() const { return get(8); } - SgNBResourceCoordinationInformation& select_id_SgNBResourceCoordinationInformation() { return set(9); } - SgNBResourceCoordinationInformation const* get_id_SgNBResourceCoordinationInformation() const { return get(9); } - RRC_Config_Ind& select_id_RRCConfigIndication() { return set(10); } - RRC_Config_Ind const* get_id_RRCConfigIndication() const { return get(10); } - bool is_unknown() const { return type == 11; } - 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_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SgNB_UE_X2AP_ID()); return true; - case 3: v(select_id_Cause()); return true; - case 4: v(select_id_PDCPChangeIndication()); return true; - case 5: v(select_id_E_RABs_ToBeReleased_SgNBModReqdList()); return true; - case 6: v(select_id_SgNBtoMeNBContainer()); return true; - case 7: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 8: v(select_id_E_RABs_ToBeModified_SgNBModReqdList()); return true; - case 9: v(select_id_SgNBResourceCoordinationInformation()); return true; - case 10: v(select_id_RRCConfigIndication()); return true; - case 11: if(type != 11) {clear(); asn::base::set();} type = 11; 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(Cause)]; - char dummy2[sizeof(E_RABs_ToBeModified_SgNBModReqdList)]; - char dummy3[sizeof(E_RABs_ToBeReleased_SgNBModReqdList)]; - char dummy4[sizeof(PDCPChangeIndication)]; - char dummy5[sizeof(RRC_Config_Ind)]; - char dummy6[sizeof(SgNBResourceCoordinationInformation)]; - char dummy7[sizeof(SgNB_UE_X2AP_ID)]; - char dummy8[sizeof(SgNBtoMeNBContainer)]; - char dummy9[sizeof(UE_X2AP_ID)]; - char dummy10[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 11; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_Cause() { set(mandatory); type=3;} - void select_id_PDCPChangeIndication() { set(optional); type=4;} - void select_id_E_RABs_ToBeReleased_SgNBModReqdList() { set(optional); type=5;} - void select_id_SgNBtoMeNBContainer() { set(optional); type=6;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=7;} - void select_id_E_RABs_ToBeModified_SgNBModReqdList() { set(optional); type=8;} - void select_id_SgNBResourceCoordinationInformation() { set(optional); type=9;} - void select_id_RRCConfigIndication() { set(optional); type=10;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else if(equal(optional)) { type = 7; return true; } - else if(equal(optional)) { type = 8; return true; } - else if(equal(optional)) { type = 9; return true; } - else if(equal(optional)) { type = 10; return true; } - else { type = 11; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false; - case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false; - case 9: type = 9; if(v(ref_nested())) { return equal(optional);} return false; - case 10: type = 10; if(v(ref_nested())) { return equal(optional);} return false; - case 11: type = 11; 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}; - - }; - -}; -/* -SgNBModificationRequired ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SgNBModificationRequired-IEs}}, - ... -} -*/ - -struct SgNBModificationRequired : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SgNBModificationRequired";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SgNBReconfigurationComplete-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SgNB-UE-X2AP-ID CRITICALITY reject TYPE SgNB-UE-X2AP-ID PRESENCE mandatory}| - { ID id-ResponseInformationSgNBReconfComp CRITICALITY ignore TYPE ResponseInformationSgNBReconfComp PRESENCE mandatory}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}, - ... -} -*/ - -struct SgNBReconfigurationComplete_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 5; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;} - void select_id_ResponseInformationSgNBReconfComp() { set(id_ResponseInformationSgNBReconfComp); type=3;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=4;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_ResponseInformationSgNBReconfComp)) { type = 3; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 4; return true; } - else { type = 5; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_ResponseInformationSgNBReconfComp);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 5: type = 5; 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 == 5; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(reject); type=2;} - void select_id_ResponseInformationSgNBReconfComp() { set(ignore); type=3;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=4;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 3; return true; } - else if(equal(reject)) { type = 4; return true; } - else { type = 5; 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(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(reject);} return false; - case 5: type = 5; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set(2); } - SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get(2); } - ResponseInformationSgNBReconfComp& select_id_ResponseInformationSgNBReconfComp() { return set(3); } - ResponseInformationSgNBReconfComp const* get_id_ResponseInformationSgNBReconfComp() const { return get(3); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(4); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(4); } - bool is_unknown() const { return type == 5; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: var.destroy(); break; - case 4: 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SgNB_UE_X2AP_ID()); return true; - case 3: v(select_id_ResponseInformationSgNBReconfComp()); return true; - case 4: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 5: if(type != 5) {clear(); asn::base::set();} type = 5; 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; - } - 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(ResponseInformationSgNBReconfComp)]; - char dummy2[sizeof(SgNB_UE_X2AP_ID)]; - char dummy3[sizeof(UE_X2AP_ID)]; - char dummy4[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 5; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_ResponseInformationSgNBReconfComp() { set(mandatory); type=3;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=4;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else { type = 5; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; 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}; - - }; - -}; -/* -SgNBReconfigurationComplete ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SgNBReconfigurationComplete-IEs}}, - ... -} -*/ - -struct SgNBReconfigurationComplete : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SgNBReconfigurationComplete";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SgNBReleaseConfirm-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SgNB-UE-X2AP-ID CRITICALITY ignore TYPE SgNB-UE-X2AP-ID PRESENCE mandatory}| - { ID id-E-RABs-ToBeReleased-SgNBRelConfList CRITICALITY ignore TYPE E-RABs-ToBeReleased-SgNBRelConfList PRESENCE optional}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY ignore TYPE UE-X2AP-ID-Extension PRESENCE optional}, - ... -} -*/ - -struct SgNBReleaseConfirm_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;} - void select_id_E_RABs_ToBeReleased_SgNBRelConfList() { set(id_E_RABs_ToBeReleased_SgNBRelConfList); type=3;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=5;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_E_RABs_ToBeReleased_SgNBRelConfList)) { type = 3; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 5; return true; } - else { type = 6; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_E_RABs_ToBeReleased_SgNBRelConfList);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 6: type = 6; 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 == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(ignore); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(ignore); type=2;} - void select_id_E_RABs_ToBeReleased_SgNBRelConfList() { set(ignore); type=3;} - void select_id_CriticalityDiagnostics() { set(ignore); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(ignore); type=5;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else { type = 6; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false; - case 6: type = 6; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set(2); } - SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get(2); } - E_RABs_ToBeReleased_SgNBRelConfList& select_id_E_RABs_ToBeReleased_SgNBRelConfList() { return set(3); } - E_RABs_ToBeReleased_SgNBRelConfList const* get_id_E_RABs_ToBeReleased_SgNBRelConfList() const { return get(3); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(4); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(4); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(5); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(5); } - bool is_unknown() const { return type == 6; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SgNB_UE_X2AP_ID()); return true; - case 3: v(select_id_E_RABs_ToBeReleased_SgNBRelConfList()); return true; - case 4: v(select_id_CriticalityDiagnostics()); return true; - case 5: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 6: if(type != 6) {clear(); asn::base::set();} type = 6; 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; - } - 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(CriticalityDiagnostics)]; - char dummy2[sizeof(E_RABs_ToBeReleased_SgNBRelConfList)]; - char dummy3[sizeof(SgNB_UE_X2AP_ID)]; - char dummy4[sizeof(UE_X2AP_ID)]; - char dummy5[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_E_RABs_ToBeReleased_SgNBRelConfList() { set(optional); type=3;} - void select_id_CriticalityDiagnostics() { set(optional); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=5;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else { type = 6; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; 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}; - - }; - -}; -/* -SgNBReleaseConfirm ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SgNBReleaseConfirm-IEs}}, - ... -} -*/ - -struct SgNBReleaseConfirm : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SgNBReleaseConfirm";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SgNBReleaseRequest-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SgNB-UE-X2AP-ID CRITICALITY reject TYPE SgNB-UE-X2AP-ID PRESENCE optional}| - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| - { ID id-E-RABs-ToBeReleased-SgNBRelReqList CRITICALITY ignore TYPE E-RABs-ToBeReleased-SgNBRelReqList PRESENCE optional}| - { ID id-UE-ContextKeptIndicator CRITICALITY ignore TYPE UE-ContextKeptIndicator PRESENCE optional}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-MeNBtoSgNBContainer CRITICALITY reject TYPE MeNBtoSgNBContainer PRESENCE optional}, - ... -} -*/ - -struct SgNBReleaseRequest_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 8; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;} - void select_id_Cause() { set(id_Cause); type=3;} - void select_id_E_RABs_ToBeReleased_SgNBRelReqList() { set(id_E_RABs_ToBeReleased_SgNBRelReqList); type=4;} - void select_id_UE_ContextKeptIndicator() { set(id_UE_ContextKeptIndicator); type=5;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=6;} - void select_id_MeNBtoSgNBContainer() { set(id_MeNBtoSgNBContainer); type=7;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_Cause)) { type = 3; return true; } - else if(equal(id_E_RABs_ToBeReleased_SgNBRelReqList)) { type = 4; return true; } - else if(equal(id_UE_ContextKeptIndicator)) { type = 5; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 6; return true; } - else if(equal(id_MeNBtoSgNBContainer)) { type = 7; return true; } - else { type = 8; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_E_RABs_ToBeReleased_SgNBRelReqList);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_UE_ContextKeptIndicator);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(id_MeNBtoSgNBContainer);} return false; - case 8: type = 8; 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 == 8; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(reject); type=2;} - void select_id_Cause() { set(ignore); type=3;} - void select_id_E_RABs_ToBeReleased_SgNBRelReqList() { set(ignore); type=4;} - void select_id_UE_ContextKeptIndicator() { set(ignore); type=5;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=6;} - void select_id_MeNBtoSgNBContainer() { set(reject); type=7;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else if(equal(reject)) { type = 6; return true; } - else if(equal(reject)) { type = 7; return true; } - else { type = 8; 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(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set(2); } - SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get(2); } - Cause& select_id_Cause() { return set(3); } - Cause const* get_id_Cause() const { return get(3); } - E_RABs_ToBeReleased_SgNBRelReqList& select_id_E_RABs_ToBeReleased_SgNBRelReqList() { return set(4); } - E_RABs_ToBeReleased_SgNBRelReqList const* get_id_E_RABs_ToBeReleased_SgNBRelReqList() const { return get(4); } - UE_ContextKeptIndicator& select_id_UE_ContextKeptIndicator() { return set(5); } - UE_ContextKeptIndicator const* get_id_UE_ContextKeptIndicator() const { return get(5); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(6); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(6); } - MeNBtoSgNBContainer& select_id_MeNBtoSgNBContainer() { return set(7); } - MeNBtoSgNBContainer const* get_id_MeNBtoSgNBContainer() const { return get(7); } - bool is_unknown() const { return type == 8; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SgNB_UE_X2AP_ID()); return true; - case 3: v(select_id_Cause()); return true; - case 4: v(select_id_E_RABs_ToBeReleased_SgNBRelReqList()); return true; - case 5: v(select_id_UE_ContextKeptIndicator()); return true; - case 6: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 7: v(select_id_MeNBtoSgNBContainer()); return true; - case 8: if(type != 8) {clear(); asn::base::set();} type = 8; 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; - } - 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(Cause)]; - char dummy2[sizeof(E_RABs_ToBeReleased_SgNBRelReqList)]; - char dummy3[sizeof(MeNBtoSgNBContainer)]; - char dummy4[sizeof(SgNB_UE_X2AP_ID)]; - char dummy5[sizeof(UE_ContextKeptIndicator)]; - char dummy6[sizeof(UE_X2AP_ID)]; - char dummy7[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 8; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(optional); type=2;} - void select_id_Cause() { set(mandatory); type=3;} - void select_id_E_RABs_ToBeReleased_SgNBRelReqList() { set(optional); type=4;} - void select_id_UE_ContextKeptIndicator() { set(optional); type=5;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=6;} - void select_id_MeNBtoSgNBContainer() { set(optional); type=7;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else if(equal(optional)) { type = 7; return true; } - else { type = 8; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false; - case 8: type = 8; 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}; - - }; - -}; -/* -SgNBReleaseRequest ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SgNBReleaseRequest-IEs}}, - ... -} -*/ - -struct SgNBReleaseRequest : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SgNBReleaseRequest";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SgNBReleaseRequestAcknowledge-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SgNB-UE-X2AP-ID CRITICALITY ignore TYPE SgNB-UE-X2AP-ID PRESENCE mandatory}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional }| - { ID id-E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList CRITICALITY ignore TYPE E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList PRESENCE optional }, - ... -} -*/ - -struct SgNBReleaseRequestAcknowledge_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=3;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=4;} - void select_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList() { set(id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList); type=5;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 3; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 4; return true; } - else if(equal(id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList)) { type = 5; return true; } - else { type = 6; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList);} return false; - case 6: type = 6; 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 == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(ignore); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(ignore); type=2;} - void select_id_CriticalityDiagnostics() { set(ignore); type=3;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=4;} - void select_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList() { set(ignore); type=5;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else if(equal(reject)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else { type = 6; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} 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(ignore);} return false; - case 6: type = 6; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set(2); } - SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get(2); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(3); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(3); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(4); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(4); } - E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList& select_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList() { return set(5); } - E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList const* get_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList() const { return get(5); } - bool is_unknown() const { return type == 6; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SgNB_UE_X2AP_ID()); return true; - case 3: v(select_id_CriticalityDiagnostics()); return true; - case 4: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 5: v(select_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList()); return true; - case 6: if(type != 6) {clear(); asn::base::set();} type = 6; 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; - } - 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(CriticalityDiagnostics)]; - char dummy2[sizeof(E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList)]; - char dummy3[sizeof(SgNB_UE_X2AP_ID)]; - char dummy4[sizeof(UE_X2AP_ID)]; - char dummy5[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_CriticalityDiagnostics() { set(optional); type=3;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=4;} - void select_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList() { set(optional); type=5;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else { type = 6; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; 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}; - - }; - -}; -/* -SgNBReleaseRequestAcknowledge ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SgNBReleaseRequestAcknowledge-IEs}}, - ... -} -*/ - -struct SgNBReleaseRequestAcknowledge : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SgNBReleaseRequestAcknowledge";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SgNBReleaseRequestReject-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SgNB-UE-X2AP-ID CRITICALITY ignore TYPE SgNB-UE-X2AP-ID PRESENCE mandatory}| - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}, - ... -} -*/ - -struct SgNBReleaseRequestReject_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;} - void select_id_Cause() { set(id_Cause); type=3;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=5;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_Cause)) { type = 3; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 5; return true; } - else { type = 6; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 6: type = 6; 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 == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(ignore); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(ignore); type=2;} - void select_id_Cause() { set(ignore); type=3;} - void select_id_CriticalityDiagnostics() { set(ignore); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=5;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else if(equal(ignore)) { type = 4; return true; } - else if(equal(reject)) { type = 5; return true; } - else { type = 6; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(reject);} return false; - case 6: type = 6; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set(2); } - SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get(2); } - Cause& select_id_Cause() { return set(3); } - Cause const* get_id_Cause() const { return get(3); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(4); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(4); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(5); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(5); } - bool is_unknown() const { return type == 6; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SgNB_UE_X2AP_ID()); return true; - case 3: v(select_id_Cause()); return true; - case 4: v(select_id_CriticalityDiagnostics()); return true; - case 5: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 6: if(type != 6) {clear(); asn::base::set();} type = 6; 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; - } - 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(Cause)]; - char dummy2[sizeof(CriticalityDiagnostics)]; - char dummy3[sizeof(SgNB_UE_X2AP_ID)]; - char dummy4[sizeof(UE_X2AP_ID)]; - char dummy5[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_Cause() { set(mandatory); type=3;} - void select_id_CriticalityDiagnostics() { set(optional); type=4;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=5;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else { type = 6; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; 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}; - - }; - -}; -/* -SgNBReleaseRequestReject ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SgNBReleaseRequestReject-IEs}}, - ... -} -*/ - -struct SgNBReleaseRequestReject : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SgNBReleaseRequestReject";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -SgNBReleaseRequired-IEs X2AP-PROTOCOL-IES ::= { - { ID id-MeNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-SgNB-UE-X2AP-ID CRITICALITY reject TYPE SgNB-UE-X2AP-ID PRESENCE mandatory}| - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| - { ID id-MeNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional }| - { ID id-E-RABs-ToBeReleased-SgNBRelReqdList CRITICALITY ignore TYPE E-RABs-ToBeReleased-SgNBRelReqdList PRESENCE optional }, - ... -} -*/ - -struct SgNBReleaseRequired_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;} - void select_id_Cause() { set(id_Cause); type=3;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=4;} - void select_id_E_RABs_ToBeReleased_SgNBRelReqdList() { set(id_E_RABs_ToBeReleased_SgNBRelReqdList); type=5;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_Cause)) { type = 3; return true; } - else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 4; return true; } - else if(equal(id_E_RABs_ToBeReleased_SgNBRelReqdList)) { type = 5; return true; } - else { type = 6; 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_MeNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_E_RABs_ToBeReleased_SgNBRelReqdList);} return false; - case 6: type = 6; 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 == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(reject); type=2;} - void select_id_Cause() { set(ignore); type=3;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=4;} - void select_id_E_RABs_ToBeReleased_SgNBRelReqdList() { set(ignore); type=5;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 3; return true; } - else if(equal(reject)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else { type = 6; 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(ignore);} 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(ignore);} return false; - case 6: type = 6; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get(1); } - SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set(2); } - SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get(2); } - Cause& select_id_Cause() { return set(3); } - Cause const* get_id_Cause() const { return get(3); } - UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set(4); } - UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get(4); } - E_RABs_ToBeReleased_SgNBRelReqdList& select_id_E_RABs_ToBeReleased_SgNBRelReqdList() { return set(5); } - E_RABs_ToBeReleased_SgNBRelReqdList const* get_id_E_RABs_ToBeReleased_SgNBRelReqdList() const { return get(5); } - bool is_unknown() const { return type == 6; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_MeNB_UE_X2AP_ID()); return true; - case 2: v(select_id_SgNB_UE_X2AP_ID()); return true; - case 3: v(select_id_Cause()); return true; - case 4: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true; - case 5: v(select_id_E_RABs_ToBeReleased_SgNBRelReqdList()); return true; - case 6: if(type != 6) {clear(); asn::base::set();} type = 6; 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; - } - 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(Cause)]; - char dummy2[sizeof(E_RABs_ToBeReleased_SgNBRelReqdList)]; - char dummy3[sizeof(SgNB_UE_X2AP_ID)]; - char dummy4[sizeof(UE_X2AP_ID)]; - char dummy5[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_Cause() { set(mandatory); type=3;} - void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=4;} - void select_id_E_RABs_ToBeReleased_SgNBRelReqdList() { set(optional); type=5;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(mandatory)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else { type = 6; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; 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}; - - }; - -}; -/* -SgNBReleaseRequired ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{SgNBReleaseRequired-IEs}}, - ... -} -*/ - -struct SgNBReleaseRequired : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "SgNBReleaseRequired";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -UEContextRelease-IEs X2AP-PROTOCOL-IES ::= { - { ID id-Old-eNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-New-eNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory}| - { ID id-Old-eNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-New-eNB-UE-X2AP-ID-Extension CRITICALITY reject TYPE UE-X2AP-ID-Extension PRESENCE optional}| - { ID id-SIPTO-BearerDeactivationIndication CRITICALITY ignore TYPE SIPTOBearerDeactivationIndication PRESENCE optional}| - { ID id-SgNB-UE-X2AP-ID CRITICALITY ignore TYPE SgNB-UE-X2AP-ID PRESENCE optional}, - ... -} -*/ - -struct UEContextRelease_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 7; } - void clear() {type = 0;} - void select_id_Old_eNB_UE_X2AP_ID() { set(id_Old_eNB_UE_X2AP_ID); type=1;} - void select_id_New_eNB_UE_X2AP_ID() { set(id_New_eNB_UE_X2AP_ID); type=2;} - void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(id_Old_eNB_UE_X2AP_ID_Extension); type=3;} - void select_id_New_eNB_UE_X2AP_ID_Extension() { set(id_New_eNB_UE_X2AP_ID_Extension); type=4;} - void select_id_SIPTO_BearerDeactivationIndication() { set(id_SIPTO_BearerDeactivationIndication); type=5;} - void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=6;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_Old_eNB_UE_X2AP_ID)) { type = 1; return true; } - else if(equal(id_New_eNB_UE_X2AP_ID)) { type = 2; return true; } - else if(equal(id_Old_eNB_UE_X2AP_ID_Extension)) { type = 3; return true; } - else if(equal(id_New_eNB_UE_X2AP_ID_Extension)) { type = 4; return true; } - else if(equal(id_SIPTO_BearerDeactivationIndication)) { type = 5; return true; } - else if(equal(id_SgNB_UE_X2AP_ID)) { type = 6; return true; } - else { type = 7; 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_Old_eNB_UE_X2AP_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_New_eNB_UE_X2AP_ID);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID_Extension);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_New_eNB_UE_X2AP_ID_Extension);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_SIPTO_BearerDeactivationIndication);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false; - case 7: type = 7; 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 == 7; } - void clear() {type = 0;} - void select_id_Old_eNB_UE_X2AP_ID() { set(reject); type=1;} - void select_id_New_eNB_UE_X2AP_ID() { set(reject); type=2;} - void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(reject); type=3;} - void select_id_New_eNB_UE_X2AP_ID_Extension() { set(reject); type=4;} - void select_id_SIPTO_BearerDeactivationIndication() { set(ignore); type=5;} - void select_id_SgNB_UE_X2AP_ID() { set(ignore); type=6;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 5; return true; } - else if(equal(ignore)) { type = 6; return true; } - else { type = 7; 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(ignore);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false; - case 7: type = 7; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - UE_X2AP_ID& select_id_Old_eNB_UE_X2AP_ID() { return set(1); } - UE_X2AP_ID const* get_id_Old_eNB_UE_X2AP_ID() const { return get(1); } - UE_X2AP_ID& select_id_New_eNB_UE_X2AP_ID() { return set(2); } - UE_X2AP_ID const* get_id_New_eNB_UE_X2AP_ID() const { return get(2); } - UE_X2AP_ID_Extension& select_id_Old_eNB_UE_X2AP_ID_Extension() { return set(3); } - UE_X2AP_ID_Extension const* get_id_Old_eNB_UE_X2AP_ID_Extension() const { return get(3); } - UE_X2AP_ID_Extension& select_id_New_eNB_UE_X2AP_ID_Extension() { return set(4); } - UE_X2AP_ID_Extension const* get_id_New_eNB_UE_X2AP_ID_Extension() const { return get(4); } - SIPTOBearerDeactivationIndication& select_id_SIPTO_BearerDeactivationIndication() { return set(5); } - SIPTOBearerDeactivationIndication const* get_id_SIPTO_BearerDeactivationIndication() const { return get(5); } - SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set(6); } - SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get(6); } - bool is_unknown() const { return type == 7; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_Old_eNB_UE_X2AP_ID()); return true; - case 2: v(select_id_New_eNB_UE_X2AP_ID()); return true; - case 3: v(select_id_Old_eNB_UE_X2AP_ID_Extension()); return true; - case 4: v(select_id_New_eNB_UE_X2AP_ID_Extension()); return true; - case 5: v(select_id_SIPTO_BearerDeactivationIndication()); return true; - case 6: v(select_id_SgNB_UE_X2AP_ID()); return true; - case 7: if(type != 7) {clear(); asn::base::set();} type = 7; 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; - } - 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(SIPTOBearerDeactivationIndication)]; - char dummy2[sizeof(SgNB_UE_X2AP_ID)]; - char dummy3[sizeof(UE_X2AP_ID)]; - char dummy4[sizeof(UE_X2AP_ID_Extension)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 7; } - void clear() {type = 0;} - void select_id_Old_eNB_UE_X2AP_ID() { set(mandatory); type=1;} - void select_id_New_eNB_UE_X2AP_ID() { set(mandatory); type=2;} - void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(optional); type=3;} - void select_id_New_eNB_UE_X2AP_ID_Extension() { set(optional); type=4;} - void select_id_SIPTO_BearerDeactivationIndication() { set(optional); type=5;} - void select_id_SgNB_UE_X2AP_ID() { set(optional); type=6;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else if(equal(optional)) { type = 6; return true; } - else { type = 7; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false; - case 7: type = 7; 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}; - - }; - -}; -/* -UEContextRelease ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{UEContextRelease-IEs}}, - ... -} -*/ - -struct UEContextRelease : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "UEContextRelease";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -X2AP-Message ::= OCTET STRING -*/ - -struct X2AP_Message : asn::ostring<> -{ - static constexpr const char* name() {return "X2AP-Message";} - using parent_t = asn::ostring<>; - -}; - -/* -X2APMessageTransfer-IEs X2AP-PROTOCOL-IES ::= { - { ID id-RNL-Header CRITICALITY reject TYPE RNL-Header PRESENCE mandatory}| - { ID id-x2APMessage CRITICALITY reject TYPE X2AP-Message PRESENCE optional}, - ... -} -*/ - -struct X2APMessageTransfer_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_RNL_Header() { set(id_RNL_Header); type=1;} - void select_id_x2APMessage() { set(id_x2APMessage); type=2;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_RNL_Header)) { type = 1; return true; } - else if(equal(id_x2APMessage)) { type = 2; return true; } - else { type = 3; 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_RNL_Header);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_x2APMessage);} return false; - case 3: type = 3; 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 == 3; } - void clear() {type = 0;} - void select_id_RNL_Header() { set(reject); type=1;} - void select_id_x2APMessage() { set(reject); type=2;} - X2AP_PROTOCOL_IES::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 { type = 3; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - RNL_Header& select_id_RNL_Header() { return set(1); } - RNL_Header const* get_id_RNL_Header() const { return get(1); } - X2AP_Message& select_id_x2APMessage() { return set(2); } - X2AP_Message const* get_id_x2APMessage() const { return get(2); } - bool is_unknown() const { return type == 3; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_RNL_Header()); return true; - case 2: v(select_id_x2APMessage()); return true; - case 3: if(type != 3) {clear(); asn::base::set();} type = 3; 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; - } - 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(RNL_Header)]; - char dummy2[sizeof(X2AP_Message)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_RNL_Header() { set(mandatory); type=1;} - void select_id_x2APMessage() { set(optional); type=2;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else { type = 3; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; 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}; - - }; - -}; -/* -X2APMessageTransfer ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{X2APMessageTransfer-IEs}}, - ... -} -*/ - -struct X2APMessageTransfer : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "X2APMessageTransfer";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -X2Release-IEs X2AP-PROTOCOL-IES ::= { - { ID id-GlobalENB-ID CRITICALITY reject TYPE GlobalENB-ID PRESENCE mandatory}, -... -} -*/ - -struct X2Release_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_GlobalENB_ID() { set(id_GlobalENB_ID); type=1;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_GlobalENB_ID)) { type = 1; return true; } - else { type = 2; 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_GlobalENB_ID);} return false; - case 2: type = 2; 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 == 2; } - void clear() {type = 0;} - void select_id_GlobalENB_ID() { set(reject); type=1;} - X2AP_PROTOCOL_IES::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 { type = 2; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - GlobalENB_ID& select_id_GlobalENB_ID() { return set(1); } - GlobalENB_ID const* get_id_GlobalENB_ID() const { return get(1); } - bool is_unknown() const { return type == 2; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_GlobalENB_ID()); return true; - case 2: if(type != 2) {clear(); asn::base::set();} type = 2; 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; - } - 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(GlobalENB_ID)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 2; } - void clear() {type = 0;} - void select_id_GlobalENB_ID() { set(mandatory); type=1;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else { type = 2; 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(mandatory);} return false; - case 2: type = 2; 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}; - - }; - -}; -/* -X2Release ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{X2Release-IEs}}, - ... -} -*/ - -struct X2Release : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "X2Release";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -X2RemovalFailure-IEs X2AP-PROTOCOL-IES ::= { - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}, - ... -} -*/ - -struct X2RemovalFailure_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_Cause() { set(id_Cause); type=1;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=2;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_Cause)) { type = 1; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 2; return true; } - else { type = 3; 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_Cause);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 3: type = 3; 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 == 3; } - void clear() {type = 0;} - void select_id_Cause() { set(ignore); type=1;} - void select_id_CriticalityDiagnostics() { set(ignore); type=2;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else { type = 3; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - Cause& select_id_Cause() { return set(1); } - Cause const* get_id_Cause() const { return get(1); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(2); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(2); } - bool is_unknown() const { return type == 3; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_Cause()); return true; - case 2: v(select_id_CriticalityDiagnostics()); return true; - case 3: if(type != 3) {clear(); asn::base::set();} type = 3; 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; - } - 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(Cause)]; - char dummy2[sizeof(CriticalityDiagnostics)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_Cause() { set(mandatory); type=1;} - void select_id_CriticalityDiagnostics() { set(optional); type=2;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else { type = 3; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; 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}; - - }; - -}; -/* -X2RemovalFailure ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{X2RemovalFailure-IEs}}, - ... -} -*/ - -struct X2RemovalFailure : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "X2RemovalFailure";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -X2RemovalRequest-IEs X2AP-PROTOCOL-IES ::= { - { ID id-GlobalENB-ID CRITICALITY reject TYPE GlobalENB-ID PRESENCE mandatory}| - { ID id-X2RemovalThreshold CRITICALITY reject TYPE X2BenefitValue PRESENCE optional}, -... -} -*/ - -struct X2RemovalRequest_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_GlobalENB_ID() { set(id_GlobalENB_ID); type=1;} - void select_id_X2RemovalThreshold() { set(id_X2RemovalThreshold); type=2;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_GlobalENB_ID)) { type = 1; return true; } - else if(equal(id_X2RemovalThreshold)) { type = 2; return true; } - else { type = 3; 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_GlobalENB_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_X2RemovalThreshold);} return false; - case 3: type = 3; 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 == 3; } - void clear() {type = 0;} - void select_id_GlobalENB_ID() { set(reject); type=1;} - void select_id_X2RemovalThreshold() { set(reject); type=2;} - X2AP_PROTOCOL_IES::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 { type = 3; 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; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - GlobalENB_ID& select_id_GlobalENB_ID() { return set(1); } - GlobalENB_ID const* get_id_GlobalENB_ID() const { return get(1); } - X2BenefitValue& select_id_X2RemovalThreshold() { return set(2); } - X2BenefitValue const* get_id_X2RemovalThreshold() const { return get(2); } - bool is_unknown() const { return type == 3; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_GlobalENB_ID()); return true; - case 2: v(select_id_X2RemovalThreshold()); return true; - case 3: if(type != 3) {clear(); asn::base::set();} type = 3; 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; - } - 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(GlobalENB_ID)]; - char dummy2[sizeof(X2BenefitValue)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_GlobalENB_ID() { set(mandatory); type=1;} - void select_id_X2RemovalThreshold() { set(optional); type=2;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else { type = 3; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; 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}; - - }; - -}; -/* -X2RemovalRequest ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{X2RemovalRequest-IEs}}, - ... -} -*/ - -struct X2RemovalRequest : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "X2RemovalRequest";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -X2RemovalResponse-IEs X2AP-PROTOCOL-IES ::= { - { ID id-GlobalENB-ID CRITICALITY reject TYPE GlobalENB-ID PRESENCE mandatory}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}, - ... -} -*/ - -struct X2RemovalResponse_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_GlobalENB_ID() { set(id_GlobalENB_ID); type=1;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=2;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_GlobalENB_ID)) { type = 1; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 2; return true; } - else { type = 3; 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_GlobalENB_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 3: type = 3; 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 == 3; } - void clear() {type = 0;} - void select_id_GlobalENB_ID() { set(reject); type=1;} - void select_id_CriticalityDiagnostics() { set(ignore); type=2;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 2; return true; } - else { type = 3; 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(ignore);} return false; - case 3: type = 3; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - GlobalENB_ID& select_id_GlobalENB_ID() { return set(1); } - GlobalENB_ID const* get_id_GlobalENB_ID() const { return get(1); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(2); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(2); } - bool is_unknown() const { return type == 3; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - } - type = 0; ref_nested().clear(); - } - template static inline void enumerate(V& v) - { - v.template operator()(1); - v.template operator()(2); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_GlobalENB_ID()); return true; - case 2: v(select_id_CriticalityDiagnostics()); return true; - case 3: if(type != 3) {clear(); asn::base::set();} type = 3; 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; - } - 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(CriticalityDiagnostics)]; - char dummy2[sizeof(GlobalENB_ID)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 3; } - void clear() {type = 0;} - void select_id_GlobalENB_ID() { set(mandatory); type=1;} - void select_id_CriticalityDiagnostics() { set(optional); type=2;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else { type = 3; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; 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}; - - }; - -}; -/* -X2RemovalResponse ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{X2RemovalResponse-IEs}}, - ... -} -*/ - -struct X2RemovalResponse : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "X2RemovalResponse";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -X2SetupFailure-IEs X2AP-PROTOCOL-IES ::= { - { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory} | - { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional} | - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, - - ... -} -*/ - -struct X2SetupFailure_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_Cause() { set(id_Cause); type=1;} - void select_id_TimeToWait() { set(id_TimeToWait); type=2;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=3;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_Cause)) { type = 1; return true; } - else if(equal(id_TimeToWait)) { type = 2; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 3; return true; } - else { type = 4; 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_Cause);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_TimeToWait);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 4: type = 4; 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 == 4; } - void clear() {type = 0;} - void select_id_Cause() { set(ignore); type=1;} - void select_id_TimeToWait() { set(ignore); type=2;} - void select_id_CriticalityDiagnostics() { set(ignore); type=3;} - X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(ignore)) { type = 1; return true; } - else if(equal(ignore)) { type = 2; return true; } - else if(equal(ignore)) { type = 3; return true; } - else { type = 4; 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(ignore);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false; - case 4: type = 4; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - Cause& select_id_Cause() { return set(1); } - Cause const* get_id_Cause() const { return get(1); } - TimeToWait& select_id_TimeToWait() { return set(2); } - TimeToWait const* get_id_TimeToWait() const { return get(2); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(3); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(3); } - bool is_unknown() const { return type == 4; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_Cause()); return true; - case 2: v(select_id_TimeToWait()); return true; - case 3: v(select_id_CriticalityDiagnostics()); return true; - case 4: if(type != 4) {clear(); asn::base::set();} type = 4; 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; - } - 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(Cause)]; - char dummy2[sizeof(CriticalityDiagnostics)]; - char dummy3[sizeof(TimeToWait)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 4; } - void clear() {type = 0;} - void select_id_Cause() { set(mandatory); type=1;} - void select_id_TimeToWait() { set(optional); type=2;} - void select_id_CriticalityDiagnostics() { set(optional); type=3;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(optional)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else { type = 4; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; 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}; - - }; - -}; -/* -X2SetupFailure ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{X2SetupFailure-IEs}}, - ... -} -*/ - -struct X2SetupFailure : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "X2SetupFailure";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -X2SetupRequest-IEs X2AP-PROTOCOL-IES ::= { - { ID id-GlobalENB-ID CRITICALITY reject TYPE GlobalENB-ID PRESENCE mandatory}| - { ID id-ServedCells CRITICALITY reject TYPE ServedCells PRESENCE mandatory}| - { ID id-GUGroupIDList CRITICALITY reject TYPE GUGroupIDList PRESENCE optional}| - { ID id-LHN-ID CRITICALITY ignore TYPE LHN-ID PRESENCE optional}, -... -} -*/ - -struct X2SetupRequest_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 5; } - void clear() {type = 0;} - void select_id_GlobalENB_ID() { set(id_GlobalENB_ID); type=1;} - void select_id_ServedCells() { set(id_ServedCells); type=2;} - void select_id_GUGroupIDList() { set(id_GUGroupIDList); type=3;} - void select_id_LHN_ID() { set(id_LHN_ID); type=4;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_GlobalENB_ID)) { type = 1; return true; } - else if(equal(id_ServedCells)) { type = 2; return true; } - else if(equal(id_GUGroupIDList)) { type = 3; return true; } - else if(equal(id_LHN_ID)) { type = 4; return true; } - else { type = 5; 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_GlobalENB_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_ServedCells);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_GUGroupIDList);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_LHN_ID);} return false; - case 5: type = 5; 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 == 5; } - void clear() {type = 0;} - void select_id_GlobalENB_ID() { set(reject); type=1;} - void select_id_ServedCells() { set(reject); type=2;} - void select_id_GUGroupIDList() { set(reject); type=3;} - void select_id_LHN_ID() { set(ignore); type=4;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 4; return true; } - else { type = 5; 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(ignore);} return false; - case 5: type = 5; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - GlobalENB_ID& select_id_GlobalENB_ID() { return set(1); } - GlobalENB_ID const* get_id_GlobalENB_ID() const { return get(1); } - ServedCells& select_id_ServedCells() { return set(2); } - ServedCells const* get_id_ServedCells() const { return get(2); } - GUGroupIDList& select_id_GUGroupIDList() { return set(3); } - GUGroupIDList const* get_id_GUGroupIDList() const { return get(3); } - LHN_ID& select_id_LHN_ID() { return set(4); } - LHN_ID const* get_id_LHN_ID() const { return get(4); } - bool is_unknown() const { return type == 5; } - void clear() - { - switch(type) - { - case 1: var.destroy(); break; - case 2: var.destroy(); break; - case 3: var.destroy(); break; - case 4: 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_GlobalENB_ID()); return true; - case 2: v(select_id_ServedCells()); return true; - case 3: v(select_id_GUGroupIDList()); return true; - case 4: v(select_id_LHN_ID()); return true; - case 5: if(type != 5) {clear(); asn::base::set();} type = 5; 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; - } - 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(GUGroupIDList)]; - char dummy2[sizeof(GlobalENB_ID)]; - char dummy3[sizeof(LHN_ID)]; - char dummy4[sizeof(ServedCells)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 5; } - void clear() {type = 0;} - void select_id_GlobalENB_ID() { set(mandatory); type=1;} - void select_id_ServedCells() { set(mandatory); type=2;} - void select_id_GUGroupIDList() { set(optional); type=3;} - void select_id_LHN_ID() { set(optional); type=4;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else { type = 5; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; 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}; - - }; - -}; -/* -X2SetupRequest ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{X2SetupRequest-IEs}}, - ... -} -*/ - -struct X2SetupRequest : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "X2SetupRequest";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -}; -/* -X2SetupResponse-IEs X2AP-PROTOCOL-IES ::= { - { ID id-GlobalENB-ID CRITICALITY reject TYPE GlobalENB-ID PRESENCE mandatory}| - { ID id-ServedCells CRITICALITY reject TYPE ServedCells PRESENCE mandatory}| - { ID id-GUGroupIDList CRITICALITY reject TYPE GUGroupIDList PRESENCE optional}| - { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| - { ID id-LHN-ID CRITICALITY ignore TYPE LHN-ID PRESENCE optional}, - ... -} -*/ - -struct X2SetupResponse_IEs -{ - struct id_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_GlobalENB_ID() { set(id_GlobalENB_ID); type=1;} - void select_id_ServedCells() { set(id_ServedCells); type=2;} - void select_id_GUGroupIDList() { set(id_GUGroupIDList); type=3;} - void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;} - void select_id_LHN_ID() { set(id_LHN_ID); type=5;} - X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(id_GlobalENB_ID)) { type = 1; return true; } - else if(equal(id_ServedCells)) { type = 2; return true; } - else if(equal(id_GUGroupIDList)) { type = 3; return true; } - else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; } - else if(equal(id_LHN_ID)) { type = 5; return true; } - else { type = 6; 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_GlobalENB_ID);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(id_ServedCells);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(id_GUGroupIDList);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(id_LHN_ID);} return false; - case 6: type = 6; 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 == 6; } - void clear() {type = 0;} - void select_id_GlobalENB_ID() { set(reject); type=1;} - void select_id_ServedCells() { set(reject); type=2;} - void select_id_GUGroupIDList() { set(reject); type=3;} - void select_id_CriticalityDiagnostics() { set(ignore); type=4;} - void select_id_LHN_ID() { set(ignore); type=5;} - X2AP_PROTOCOL_IES::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(ignore)) { type = 4; return true; } - else if(equal(ignore)) { type = 5; return true; } - else { type = 6; 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(ignore);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false; - case 6: type = 6; 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 Value_t : asn::typefield - { - ~Value_t() {clear();} - size_t get_index() const {return type;} - GlobalENB_ID& select_id_GlobalENB_ID() { return set(1); } - GlobalENB_ID const* get_id_GlobalENB_ID() const { return get(1); } - ServedCells& select_id_ServedCells() { return set(2); } - ServedCells const* get_id_ServedCells() const { return get(2); } - GUGroupIDList& select_id_GUGroupIDList() { return set(3); } - GUGroupIDList const* get_id_GUGroupIDList() const { return get(3); } - CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set(4); } - CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get(4); } - LHN_ID& select_id_LHN_ID() { return set(5); } - LHN_ID const* get_id_LHN_ID() const { return get(5); } - bool is_unknown() const { return type == 6; } - 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; - } - 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); - - } - protected: - template bool decode(size_t index, V& v) - { - clear(); - switch(index) - { - case 1: v(select_id_GlobalENB_ID()); return true; - case 2: v(select_id_ServedCells()); return true; - case 3: v(select_id_GUGroupIDList()); return true; - case 4: v(select_id_CriticalityDiagnostics()); return true; - case 5: v(select_id_LHN_ID()); return true; - case 6: if(type != 6) {clear(); asn::base::set();} type = 6; 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; - } - 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(CriticalityDiagnostics)]; - char dummy2[sizeof(GUGroupIDList)]; - char dummy3[sizeof(GlobalENB_ID)]; - char dummy4[sizeof(LHN_ID)]; - char dummy5[sizeof(ServedCells)]; - - }; - asn::variant var; - size_t type {0}; - - }; - struct presence_t : asn::fixedtypefield - { - size_t get_index() const {return type;} - bool is_unknown() const { return type == 6; } - void clear() {type = 0;} - void select_id_GlobalENB_ID() { set(mandatory); type=1;} - void select_id_ServedCells() { set(mandatory); type=2;} - void select_id_GUGroupIDList() { set(optional); type=3;} - void select_id_CriticalityDiagnostics() { set(optional); type=4;} - void select_id_LHN_ID() { set(optional); type=5;} - X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();} - template bool decode(V& v) - { - clear(); - if(!v(ref_nested())) return false; - if(equal(mandatory)) { type = 1; return true; } - else if(equal(mandatory)) { type = 2; return true; } - else if(equal(optional)) { type = 3; return true; } - else if(equal(optional)) { type = 4; return true; } - else if(equal(optional)) { type = 5; return true; } - else { type = 6; 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(mandatory);} return false; - case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false; - case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false; - case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false; - case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false; - case 6: type = 6; 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}; - - }; - -}; -/* -X2SetupResponse ::= SEQUENCE { - protocolIEs ProtocolIE-Container {{X2SetupResponse-IEs}}, - ... -} -*/ - -struct X2SetupResponse : asn::sequence<1, 0, true, 0> -{ - static constexpr const char* name() {return "X2SetupResponse";} - using parent_t = asn::sequence<1, 0, true, 0>; - struct protocolIEs_t : ProtocolIE_Container - { - static constexpr const char* name() {return "protocolIEs_t";} - using parent_t = ProtocolIE_Container; - - }; - protocolIEs_t& ref_protocolIEs() {return protocolIEs;} - protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;} - template void decode(V& v) - { - v(protocolIEs); - - }; - template void encode(V& v) const - { - v(protocolIEs); - - }; - void clear() - { - protocolIEs.clear(); - - }; - private: - protocolIEs_t protocolIEs; - -};