/** * * \section COPYRIGHT * * Copyright 2013-2021 Software Radio Systems Limited * * By using this file, you agree to the terms and conditions set * forth in the LICENSE file which can be found at the top level of * the distribution. * */ /******************************************************************************* * * 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; const char* 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; const char* 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; const char* 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(types::s_tmsi, type_, "InitialUE-Identity"); return c.get(); } fixed_bitstring<40>& random_value() { assert_choice_type(types::random_value, type_, "InitialUE-Identity"); return c.get >(); } const s_tmsi_s& s_tmsi() const { assert_choice_type(types::s_tmsi, type_, "InitialUE-Identity"); return c.get(); } const fixed_bitstring<40>& random_value() const { assert_choice_type(types::random_value, type_, "InitialUE-Identity"); return c.get >(); } s_tmsi_s& set_s_tmsi(); fixed_bitstring<40>& set_random_value(); 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; const char* 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(types::ng_minus5_g_s_tmsi_part1, type_, "InitialUE-Identity-5GC"); return c.get >(); } fixed_bitstring<40>& random_value() { assert_choice_type(types::random_value, type_, "InitialUE-Identity-5GC"); return c.get >(); } const fixed_bitstring<40>& ng_minus5_g_s_tmsi_part1() const { assert_choice_type(types::ng_minus5_g_s_tmsi_part1, type_, "InitialUE-Identity-5GC"); return c.get >(); } const fixed_bitstring<40>& random_value() const { assert_choice_type(types::random_value, type_, "InitialUE-Identity-5GC"); return c.get >(); } fixed_bitstring<40>& set_ng_minus5_g_s_tmsi_part1(); fixed_bitstring<40>& set_random_value(); private: types type_; choice_buffer_t > c; void destroy_(); }; // RRCEarlyDataRequest-v1590-IEs ::= SEQUENCE struct rrc_early_data_request_v1590_ies_s { bool late_non_crit_ext_present = false; bool non_crit_ext_present = false; dyn_octstring late_non_crit_ext; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // 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; const char* 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; const char* 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; const char* 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; const char* 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(types::full_i_rnti_r15, type_, "resumeIdentity-r15"); return c.get >(); } fixed_bitstring<24>& short_i_rnti_r15() { assert_choice_type(types::short_i_rnti_r15, type_, "resumeIdentity-r15"); return c.get >(); } const fixed_bitstring<40>& full_i_rnti_r15() const { assert_choice_type(types::full_i_rnti_r15, type_, "resumeIdentity-r15"); return c.get >(); } const fixed_bitstring<24>& short_i_rnti_r15() const { assert_choice_type(types::short_i_rnti_r15, type_, "resumeIdentity-r15"); return c.get >(); } fixed_bitstring<40>& set_full_i_rnti_r15(); fixed_bitstring<24>& set_short_i_rnti_r15(); 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; const char* 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(types::resume_id_r13, type_, "resumeIdentity-r13"); return c.get >(); } fixed_bitstring<24>& truncated_resume_id_r13() { assert_choice_type(types::truncated_resume_id_r13, type_, "resumeIdentity-r13"); return c.get >(); } const fixed_bitstring<40>& resume_id_r13() const { assert_choice_type(types::resume_id_r13, type_, "resumeIdentity-r13"); return c.get >(); } const fixed_bitstring<24>& truncated_resume_id_r13() const { assert_choice_type(types::truncated_resume_id_r13, type_, "resumeIdentity-r13"); return c.get >(); } fixed_bitstring<40>& set_resume_id_r13(); fixed_bitstring<24>& set_truncated_resume_id_r13(); 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, delay_tolerant_access, nulltype } value; const char* 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; rrc_early_data_request_v1590_ies_s non_crit_ext; // 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; const char* to_string() const; }; typedef enumerated types; // choice methods crit_exts_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_conn_reest_request_r8_ies_s& rrc_conn_reest_request_r8() { assert_choice_type(types::rrc_conn_reest_request_r8, type_, "criticalExtensions"); return c; } const rrc_conn_reest_request_r8_ies_s& rrc_conn_reest_request_r8() const { assert_choice_type(types::rrc_conn_reest_request_r8, type_, "criticalExtensions"); return c; } rrc_conn_reest_request_r8_ies_s& set_rrc_conn_reest_request_r8(); void set_crit_exts_future(); private: types type_; rrc_conn_reest_request_r8_ies_s c; }; // 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; const char* 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(types::rrc_conn_request_r8, type_, "criticalExtensions"); return c.get(); } rrc_conn_request_minus5_gc_r15_ies_s& rrc_conn_request_r15() { assert_choice_type(types::rrc_conn_request_r15, type_, "criticalExtensions"); return c.get(); } const rrc_conn_request_r8_ies_s& rrc_conn_request_r8() const { assert_choice_type(types::rrc_conn_request_r8, type_, "criticalExtensions"); return c.get(); } const rrc_conn_request_minus5_gc_r15_ies_s& rrc_conn_request_r15() const { assert_choice_type(types::rrc_conn_request_r15, type_, "criticalExtensions"); return c.get(); } rrc_conn_request_r8_ies_s& set_rrc_conn_request_r8(); rrc_conn_request_minus5_gc_r15_ies_s& set_rrc_conn_request_r15(); 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; const char* 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(types::rrc_conn_resume_request_r13, type_, "criticalExtensions"); return c.get(); } rrc_conn_resume_request_minus5_gc_r15_ies_s& rrc_conn_resume_request_r15() { assert_choice_type(types::rrc_conn_resume_request_r15, type_, "criticalExtensions"); return c.get(); } const rrc_conn_resume_request_r13_ies_s& rrc_conn_resume_request_r13() const { assert_choice_type(types::rrc_conn_resume_request_r13, type_, "criticalExtensions"); return c.get(); } const rrc_conn_resume_request_minus5_gc_r15_ies_s& rrc_conn_resume_request_r15() const { assert_choice_type(types::rrc_conn_resume_request_r15, type_, "criticalExtensions"); return c.get(); } rrc_conn_resume_request_r13_ies_s& set_rrc_conn_resume_request_r13(); rrc_conn_resume_request_minus5_gc_r15_ies_s& set_rrc_conn_resume_request_r15(); 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; const char* to_string() const; }; typedef enumerated types; // choice methods crit_exts_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_ies_s& rrc_early_data_request_r15() { assert_choice_type(types::rrc_early_data_request_r15, type_, "criticalExtensions"); return c; } const rrc_early_data_request_r15_ies_s& rrc_early_data_request_r15() const { assert_choice_type(types::rrc_early_data_request_r15, type_, "criticalExtensions"); return c; } rrc_early_data_request_r15_ies_s& set_rrc_early_data_request_r15(); void set_crit_exts_future(); private: types type_; rrc_early_data_request_r15_ies_s c; }; // 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; const char* 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(types::rrc_conn_reest_request, type_, "c1"); return c.get(); } rrc_conn_request_s& rrc_conn_request() { assert_choice_type(types::rrc_conn_request, type_, "c1"); return c.get(); } const rrc_conn_reest_request_s& rrc_conn_reest_request() const { assert_choice_type(types::rrc_conn_reest_request, type_, "c1"); return c.get(); } const rrc_conn_request_s& rrc_conn_request() const { assert_choice_type(types::rrc_conn_request, type_, "c1"); return c.get(); } rrc_conn_reest_request_s& set_rrc_conn_reest_request(); rrc_conn_request_s& set_rrc_conn_request(); 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; const char* 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; const char* 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(types::rrc_early_data_request_r15, type_, "c3"); return c; } const rrc_early_data_request_r15_s& rrc_early_data_request_r15() const { assert_choice_type(types::rrc_early_data_request_r15, type_, "c3"); return c; } rrc_early_data_request_r15_s& set_rrc_early_data_request_r15(); void set_spare3(); void set_spare2(); void set_spare1(); 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; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated types; // choice methods msg_class_ext_future_r13_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 c3_c_& c3() { assert_choice_type(types::c3, type_, "messageClassExtensionFuture-r13"); return c; } const c3_c_& c3() const { assert_choice_type(types::c3, type_, "messageClassExtensionFuture-r13"); return c; } c3_c_& set_c3(); void set_msg_class_ext_future_r15(); private: types type_; c3_c_ c; }; struct types_opts { enum options { c2, msg_class_ext_future_r13, nulltype } value; typedef uint8_t number_type; const char* 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(types::c2, type_, "messageClassExtension"); return c.get(); } msg_class_ext_future_r13_c_& msg_class_ext_future_r13() { assert_choice_type(types::msg_class_ext_future_r13, type_, "messageClassExtension"); return c.get(); } const c2_c_& c2() const { assert_choice_type(types::c2, type_, "messageClassExtension"); return c.get(); } const msg_class_ext_future_r13_c_& msg_class_ext_future_r13() const { assert_choice_type(types::msg_class_ext_future_r13, type_, "messageClassExtension"); return c.get(); } c2_c_& set_c2(); msg_class_ext_future_r13_c_& set_msg_class_ext_future_r13(); 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; const char* 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(types::c1, type_, "UL-CCCH-MessageType"); return c.get(); } msg_class_ext_c_& msg_class_ext() { assert_choice_type(types::msg_class_ext, type_, "UL-CCCH-MessageType"); return c.get(); } const c1_c_& c1() const { assert_choice_type(types::c1, type_, "UL-CCCH-MessageType"); return c.get(); } const msg_class_ext_c_& msg_class_ext() const { assert_choice_type(types::msg_class_ext, type_, "UL-CCCH-MessageType"); return c.get(); } c1_c_& set_c1(); msg_class_ext_c_& set_msg_class_ext(); 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