/* * Copyright 2013-2020 Software Radio Systems Limited * * This file is part of srsLTE. * * srsLTE is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of * the License, or (at your option) any later version. * * srsLTE is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * A copy of the GNU Affero General Public License can be found in * the LICENSE file in the top-level directory of this distribution * and at http://www.gnu.org/licenses/. * */ /******************************************************************************* * * 3GPP TS ASN1 RRC v15.11.0 (2020-09) * ******************************************************************************/ #ifndef SRSASN1_RRC_ULCCCH_MSG_H #define SRSASN1_RRC_ULCCCH_MSG_H #include "paging.h" namespace asn1 { namespace rrc { /******************************************************************************* * Struct Definitions ******************************************************************************/ // EstablishmentCause ::= ENUMERATED struct establishment_cause_opts { enum options { emergency, high_prio_access, mt_access, mo_sig, mo_data, delay_tolerant_access_v1020, mo_voice_call_v1280, spare1, nulltype } value; std::string to_string() const; }; typedef enumerated establishment_cause_e; // EstablishmentCause-5GC ::= ENUMERATED struct establishment_cause_minus5_gc_opts { enum options { emergency, high_prio_access, mt_access, mo_sig, mo_data, mo_voice_call, spare2, spare1, nulltype } value; std::string to_string() const; }; typedef enumerated establishment_cause_minus5_gc_e; // InitialUE-Identity ::= CHOICE struct init_ue_id_c { struct types_opts { enum options { s_tmsi, random_value, nulltype } value; std::string to_string() const; }; typedef enumerated types; // choice methods init_ue_id_c() = default; init_ue_id_c(const init_ue_id_c& other); init_ue_id_c& operator=(const init_ue_id_c& other); ~init_ue_id_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters s_tmsi_s& s_tmsi() { assert_choice_type("s-TMSI", type_.to_string(), "InitialUE-Identity"); return c.get(); } fixed_bitstring<40>& random_value() { assert_choice_type("randomValue", type_.to_string(), "InitialUE-Identity"); return c.get >(); } const s_tmsi_s& s_tmsi() const { assert_choice_type("s-TMSI", type_.to_string(), "InitialUE-Identity"); return c.get(); } const fixed_bitstring<40>& random_value() const { assert_choice_type("randomValue", type_.to_string(), "InitialUE-Identity"); return c.get >(); } s_tmsi_s& set_s_tmsi() { set(types::s_tmsi); return c.get(); } fixed_bitstring<40>& set_random_value() { set(types::random_value); return c.get >(); } private: types type_; choice_buffer_t, s_tmsi_s> c; void destroy_(); }; // InitialUE-Identity-5GC ::= CHOICE struct init_ue_id_minus5_gc_c { struct types_opts { enum options { ng_minus5_g_s_tmsi_part1, random_value, nulltype } value; typedef int8_t number_type; std::string to_string() const; int8_t to_number() const; }; typedef enumerated types; // choice methods init_ue_id_minus5_gc_c() = default; init_ue_id_minus5_gc_c(const init_ue_id_minus5_gc_c& other); init_ue_id_minus5_gc_c& operator=(const init_ue_id_minus5_gc_c& other); ~init_ue_id_minus5_gc_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<40>& ng_minus5_g_s_tmsi_part1() { assert_choice_type("ng-5G-S-TMSI-Part1", type_.to_string(), "InitialUE-Identity-5GC"); return c.get >(); } fixed_bitstring<40>& random_value() { assert_choice_type("randomValue", type_.to_string(), "InitialUE-Identity-5GC"); return c.get >(); } const fixed_bitstring<40>& ng_minus5_g_s_tmsi_part1() const { assert_choice_type("ng-5G-S-TMSI-Part1", type_.to_string(), "InitialUE-Identity-5GC"); return c.get >(); } const fixed_bitstring<40>& random_value() const { assert_choice_type("randomValue", type_.to_string(), "InitialUE-Identity-5GC"); return c.get >(); } fixed_bitstring<40>& set_ng_minus5_g_s_tmsi_part1() { set(types::ng_minus5_g_s_tmsi_part1); return c.get >(); } fixed_bitstring<40>& set_random_value() { set(types::random_value); return c.get >(); } private: types type_; choice_buffer_t > c; void destroy_(); }; // ReestabUE-Identity ::= SEQUENCE struct reestab_ue_id_s { fixed_bitstring<16> c_rnti; uint16_t pci = 0; fixed_bitstring<16> short_mac_i; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // ReestablishmentCause ::= ENUMERATED struct reest_cause_opts { enum options { recfg_fail, ho_fail, other_fail, spare1, nulltype } value; std::string to_string() const; }; typedef enumerated reest_cause_e; // ResumeCause ::= ENUMERATED struct resume_cause_opts { enum options { emergency, high_prio_access, mt_access, mo_sig, mo_data, delay_tolerant_access_v1020, mo_voice_call_v1280, spare1, nulltype } value; std::string to_string() const; }; typedef enumerated resume_cause_e; // ResumeCause-r15 ::= ENUMERATED struct resume_cause_r15_opts { enum options { emergency, high_prio_access, mt_access, mo_sig, mo_data, rna_upd, mo_voice_call, spare1, nulltype } value; std::string to_string() const; }; typedef enumerated resume_cause_r15_e; // RRCConnectionReestablishmentRequest-r8-IEs ::= SEQUENCE struct rrc_conn_reest_request_r8_ies_s { reestab_ue_id_s ue_id; reest_cause_e reest_cause; fixed_bitstring<2> spare; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionRequest-5GC-r15-IEs ::= SEQUENCE struct rrc_conn_request_minus5_gc_r15_ies_s { init_ue_id_minus5_gc_c ue_id; establishment_cause_minus5_gc_e establishment_cause; fixed_bitstring<1> spare; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionRequest-r8-IEs ::= SEQUENCE struct rrc_conn_request_r8_ies_s { init_ue_id_c ue_id; establishment_cause_e establishment_cause; fixed_bitstring<1> spare; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionResumeRequest-5GC-r15-IEs ::= SEQUENCE struct rrc_conn_resume_request_minus5_gc_r15_ies_s { struct resume_id_r15_c_ { struct types_opts { enum options { full_i_rnti_r15, short_i_rnti_r15, nulltype } value; std::string to_string() const; }; typedef enumerated types; // choice methods resume_id_r15_c_() = default; resume_id_r15_c_(const resume_id_r15_c_& other); resume_id_r15_c_& operator=(const resume_id_r15_c_& other); ~resume_id_r15_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<40>& full_i_rnti_r15() { assert_choice_type("fullI-RNTI-r15", type_.to_string(), "resumeIdentity-r15"); return c.get >(); } fixed_bitstring<24>& short_i_rnti_r15() { assert_choice_type("shortI-RNTI-r15", type_.to_string(), "resumeIdentity-r15"); return c.get >(); } const fixed_bitstring<40>& full_i_rnti_r15() const { assert_choice_type("fullI-RNTI-r15", type_.to_string(), "resumeIdentity-r15"); return c.get >(); } const fixed_bitstring<24>& short_i_rnti_r15() const { assert_choice_type("shortI-RNTI-r15", type_.to_string(), "resumeIdentity-r15"); return c.get >(); } fixed_bitstring<40>& set_full_i_rnti_r15() { set(types::full_i_rnti_r15); return c.get >(); } fixed_bitstring<24>& set_short_i_rnti_r15() { set(types::short_i_rnti_r15); return c.get >(); } private: types type_; choice_buffer_t > c; void destroy_(); }; // member variables resume_id_r15_c_ resume_id_r15; fixed_bitstring<16> short_resume_mac_i_r15; resume_cause_r15_e resume_cause_r15; fixed_bitstring<1> spare; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionResumeRequest-r13-IEs ::= SEQUENCE struct rrc_conn_resume_request_r13_ies_s { struct resume_id_r13_c_ { struct types_opts { enum options { resume_id_r13, truncated_resume_id_r13, nulltype } value; std::string to_string() const; }; typedef enumerated types; // choice methods resume_id_r13_c_() = default; resume_id_r13_c_(const resume_id_r13_c_& other); resume_id_r13_c_& operator=(const resume_id_r13_c_& other); ~resume_id_r13_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<40>& resume_id_r13() { assert_choice_type("resumeID-r13", type_.to_string(), "resumeIdentity-r13"); return c.get >(); } fixed_bitstring<24>& truncated_resume_id_r13() { assert_choice_type("truncatedResumeID-r13", type_.to_string(), "resumeIdentity-r13"); return c.get >(); } const fixed_bitstring<40>& resume_id_r13() const { assert_choice_type("resumeID-r13", type_.to_string(), "resumeIdentity-r13"); return c.get >(); } const fixed_bitstring<24>& truncated_resume_id_r13() const { assert_choice_type("truncatedResumeID-r13", type_.to_string(), "resumeIdentity-r13"); return c.get >(); } fixed_bitstring<40>& set_resume_id_r13() { set(types::resume_id_r13); return c.get >(); } fixed_bitstring<24>& set_truncated_resume_id_r13() { set(types::truncated_resume_id_r13); return c.get >(); } private: types type_; choice_buffer_t > c; void destroy_(); }; // member variables resume_id_r13_c_ resume_id_r13; fixed_bitstring<16> short_resume_mac_i_r13; resume_cause_e resume_cause_r13; fixed_bitstring<1> spare; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // RRCEarlyDataRequest-r15-IEs ::= SEQUENCE struct rrc_early_data_request_r15_ies_s { struct establishment_cause_r15_opts { enum options { mo_data_r15, delay_tolerant_access_r15, nulltype } value; std::string to_string() const; }; typedef enumerated establishment_cause_r15_e_; // member variables bool non_crit_ext_present = false; s_tmsi_s s_tmsi_r15; establishment_cause_r15_e_ establishment_cause_r15; dyn_octstring ded_info_nas_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReestablishmentRequest ::= SEQUENCE struct rrc_conn_reest_request_s { struct crit_exts_c_ { struct types_opts { enum options { rrc_conn_reest_request_r8, crit_exts_future, nulltype } value; std::string to_string() const; }; typedef enumerated types; // choice methods crit_exts_c_() = default; crit_exts_c_(const crit_exts_c_& other); crit_exts_c_& operator=(const crit_exts_c_& other); ~crit_exts_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters rrc_conn_reest_request_r8_ies_s& rrc_conn_reest_request_r8() { assert_choice_type("rrcConnectionReestablishmentRequest-r8", type_.to_string(), "criticalExtensions"); return c.get(); } const rrc_conn_reest_request_r8_ies_s& rrc_conn_reest_request_r8() const { assert_choice_type("rrcConnectionReestablishmentRequest-r8", type_.to_string(), "criticalExtensions"); return c.get(); } rrc_conn_reest_request_r8_ies_s& set_rrc_conn_reest_request_r8() { set(types::rrc_conn_reest_request_r8); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables crit_exts_c_ crit_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionRequest ::= SEQUENCE struct rrc_conn_request_s { struct crit_exts_c_ { struct types_opts { enum options { rrc_conn_request_r8, rrc_conn_request_r15, nulltype } value; std::string to_string() const; }; typedef enumerated types; // choice methods crit_exts_c_() = default; crit_exts_c_(const crit_exts_c_& other); crit_exts_c_& operator=(const crit_exts_c_& other); ~crit_exts_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters rrc_conn_request_r8_ies_s& rrc_conn_request_r8() { assert_choice_type("rrcConnectionRequest-r8", type_.to_string(), "criticalExtensions"); return c.get(); } rrc_conn_request_minus5_gc_r15_ies_s& rrc_conn_request_r15() { assert_choice_type("rrcConnectionRequest-r15", type_.to_string(), "criticalExtensions"); return c.get(); } const rrc_conn_request_r8_ies_s& rrc_conn_request_r8() const { assert_choice_type("rrcConnectionRequest-r8", type_.to_string(), "criticalExtensions"); return c.get(); } const rrc_conn_request_minus5_gc_r15_ies_s& rrc_conn_request_r15() const { assert_choice_type("rrcConnectionRequest-r15", type_.to_string(), "criticalExtensions"); return c.get(); } rrc_conn_request_r8_ies_s& set_rrc_conn_request_r8() { set(types::rrc_conn_request_r8); return c.get(); } rrc_conn_request_minus5_gc_r15_ies_s& set_rrc_conn_request_r15() { set(types::rrc_conn_request_r15); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables crit_exts_c_ crit_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionResumeRequest-r13 ::= SEQUENCE struct rrc_conn_resume_request_r13_s { struct crit_exts_c_ { struct types_opts { enum options { rrc_conn_resume_request_r13, rrc_conn_resume_request_r15, nulltype } value; std::string to_string() const; }; typedef enumerated types; // choice methods crit_exts_c_() = default; crit_exts_c_(const crit_exts_c_& other); crit_exts_c_& operator=(const crit_exts_c_& other); ~crit_exts_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters rrc_conn_resume_request_r13_ies_s& rrc_conn_resume_request_r13() { assert_choice_type("rrcConnectionResumeRequest-r13", type_.to_string(), "criticalExtensions"); return c.get(); } rrc_conn_resume_request_minus5_gc_r15_ies_s& rrc_conn_resume_request_r15() { assert_choice_type("rrcConnectionResumeRequest-r15", type_.to_string(), "criticalExtensions"); return c.get(); } const rrc_conn_resume_request_r13_ies_s& rrc_conn_resume_request_r13() const { assert_choice_type("rrcConnectionResumeRequest-r13", type_.to_string(), "criticalExtensions"); return c.get(); } const rrc_conn_resume_request_minus5_gc_r15_ies_s& rrc_conn_resume_request_r15() const { assert_choice_type("rrcConnectionResumeRequest-r15", type_.to_string(), "criticalExtensions"); return c.get(); } rrc_conn_resume_request_r13_ies_s& set_rrc_conn_resume_request_r13() { set(types::rrc_conn_resume_request_r13); return c.get(); } rrc_conn_resume_request_minus5_gc_r15_ies_s& set_rrc_conn_resume_request_r15() { set(types::rrc_conn_resume_request_r15); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables crit_exts_c_ crit_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // RRCEarlyDataRequest-r15 ::= SEQUENCE struct rrc_early_data_request_r15_s { struct crit_exts_c_ { struct types_opts { enum options { rrc_early_data_request_r15, crit_exts_future, nulltype } value; std::string to_string() const; }; typedef enumerated types; // choice methods crit_exts_c_() = default; crit_exts_c_(const crit_exts_c_& other); crit_exts_c_& operator=(const crit_exts_c_& other); ~crit_exts_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters rrc_early_data_request_r15_ies_s& rrc_early_data_request_r15() { assert_choice_type("rrcEarlyDataRequest-r15", type_.to_string(), "criticalExtensions"); return c.get(); } const rrc_early_data_request_r15_ies_s& rrc_early_data_request_r15() const { assert_choice_type("rrcEarlyDataRequest-r15", type_.to_string(), "criticalExtensions"); return c.get(); } rrc_early_data_request_r15_ies_s& set_rrc_early_data_request_r15() { set(types::rrc_early_data_request_r15); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables crit_exts_c_ crit_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // UL-CCCH-MessageType ::= CHOICE struct ul_ccch_msg_type_c { struct c1_c_ { struct types_opts { enum options { rrc_conn_reest_request, rrc_conn_request, nulltype } value; std::string to_string() const; }; typedef enumerated types; // choice methods c1_c_() = default; c1_c_(const c1_c_& other); c1_c_& operator=(const c1_c_& other); ~c1_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters rrc_conn_reest_request_s& rrc_conn_reest_request() { assert_choice_type("rrcConnectionReestablishmentRequest", type_.to_string(), "c1"); return c.get(); } rrc_conn_request_s& rrc_conn_request() { assert_choice_type("rrcConnectionRequest", type_.to_string(), "c1"); return c.get(); } const rrc_conn_reest_request_s& rrc_conn_reest_request() const { assert_choice_type("rrcConnectionReestablishmentRequest", type_.to_string(), "c1"); return c.get(); } const rrc_conn_request_s& rrc_conn_request() const { assert_choice_type("rrcConnectionRequest", type_.to_string(), "c1"); return c.get(); } rrc_conn_reest_request_s& set_rrc_conn_reest_request() { set(types::rrc_conn_reest_request); return c.get(); } rrc_conn_request_s& set_rrc_conn_request() { set(types::rrc_conn_request); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct msg_class_ext_c_ { struct c2_c_ { struct types_opts { enum options { rrc_conn_resume_request_r13, nulltype } value; std::string to_string() const; }; typedef enumerated types; // choice methods types type() const { return types::rrc_conn_resume_request_r13; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters rrc_conn_resume_request_r13_s& rrc_conn_resume_request_r13() { return c; } const rrc_conn_resume_request_r13_s& rrc_conn_resume_request_r13() const { return c; } private: rrc_conn_resume_request_r13_s c; }; struct msg_class_ext_future_r13_c_ { struct c3_c_ { struct types_opts { enum options { rrc_early_data_request_r15, spare3, spare2, spare1, nulltype } value; std::string to_string() const; }; typedef enumerated types; // choice methods c3_c_() = default; void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters rrc_early_data_request_r15_s& rrc_early_data_request_r15() { assert_choice_type("rrcEarlyDataRequest-r15", type_.to_string(), "c3"); return c; } const rrc_early_data_request_r15_s& rrc_early_data_request_r15() const { assert_choice_type("rrcEarlyDataRequest-r15", type_.to_string(), "c3"); return c; } rrc_early_data_request_r15_s& set_rrc_early_data_request_r15() { set(types::rrc_early_data_request_r15); return c; } private: types type_; rrc_early_data_request_r15_s c; }; struct types_opts { enum options { c3, msg_class_ext_future_r15, nulltype } value; typedef uint8_t number_type; std::string to_string() const; uint8_t to_number() const; }; typedef enumerated types; // choice methods msg_class_ext_future_r13_c_() = default; msg_class_ext_future_r13_c_(const msg_class_ext_future_r13_c_& other); msg_class_ext_future_r13_c_& operator=(const msg_class_ext_future_r13_c_& other); ~msg_class_ext_future_r13_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters c3_c_& c3() { assert_choice_type("c3", type_.to_string(), "messageClassExtensionFuture-r13"); return c.get(); } const c3_c_& c3() const { assert_choice_type("c3", type_.to_string(), "messageClassExtensionFuture-r13"); return c.get(); } c3_c_& set_c3() { set(types::c3); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct types_opts { enum options { c2, msg_class_ext_future_r13, nulltype } value; typedef uint8_t number_type; std::string to_string() const; uint8_t to_number() const; }; typedef enumerated types; // choice methods msg_class_ext_c_() = default; msg_class_ext_c_(const msg_class_ext_c_& other); msg_class_ext_c_& operator=(const msg_class_ext_c_& other); ~msg_class_ext_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters c2_c_& c2() { assert_choice_type("c2", type_.to_string(), "messageClassExtension"); return c.get(); } msg_class_ext_future_r13_c_& msg_class_ext_future_r13() { assert_choice_type("messageClassExtensionFuture-r13", type_.to_string(), "messageClassExtension"); return c.get(); } const c2_c_& c2() const { assert_choice_type("c2", type_.to_string(), "messageClassExtension"); return c.get(); } const msg_class_ext_future_r13_c_& msg_class_ext_future_r13() const { assert_choice_type("messageClassExtensionFuture-r13", type_.to_string(), "messageClassExtension"); return c.get(); } c2_c_& set_c2() { set(types::c2); return c.get(); } msg_class_ext_future_r13_c_& set_msg_class_ext_future_r13() { set(types::msg_class_ext_future_r13); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct types_opts { enum options { c1, msg_class_ext, nulltype } value; typedef uint8_t number_type; std::string to_string() const; uint8_t to_number() const; }; typedef enumerated types; // choice methods ul_ccch_msg_type_c() = default; ul_ccch_msg_type_c(const ul_ccch_msg_type_c& other); ul_ccch_msg_type_c& operator=(const ul_ccch_msg_type_c& other); ~ul_ccch_msg_type_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "UL-CCCH-MessageType"); return c.get(); } msg_class_ext_c_& msg_class_ext() { assert_choice_type("messageClassExtension", type_.to_string(), "UL-CCCH-MessageType"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "UL-CCCH-MessageType"); return c.get(); } const msg_class_ext_c_& msg_class_ext() const { assert_choice_type("messageClassExtension", type_.to_string(), "UL-CCCH-MessageType"); return c.get(); } c1_c_& set_c1() { set(types::c1); return c.get(); } msg_class_ext_c_& set_msg_class_ext() { set(types::msg_class_ext); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // UL-CCCH-Message ::= SEQUENCE struct ul_ccch_msg_s { ul_ccch_msg_type_c msg; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; } // namespace rrc } // namespace asn1 #endif // SRSASN1_RRC_ULCCCH_MSG_H