/** * Copyright 2013-2023 Software Radio Systems Limited * * This file is part of srsRAN. * * srsRAN 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. * * srsRAN 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 v17.4.0 (2023-03) * ******************************************************************************/ #ifndef SRSASN1_RRC_DLCCCH_MSG_H #define SRSASN1_RRC_DLCCCH_MSG_H #include "meascfg.h" #include "rr_ded.h" namespace asn1 { namespace rrc { /******************************************************************************* * Struct Definitions ******************************************************************************/ // RRCConnectionReject-v1320-IEs ::= SEQUENCE struct rrc_conn_reject_v1320_ies_s { bool rrc_suspend_ind_r13_present = false; bool non_crit_ext_present = false; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // BandClassPriority1XRTT ::= SEQUENCE struct band_class_prio1_xrtt_s { bandclass_cdma2000_e band_class; uint8_t cell_resel_prio = 0; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // BandClassPriorityHRPD ::= SEQUENCE struct band_class_prio_hrpd_s { bandclass_cdma2000_e band_class; uint8_t cell_resel_prio = 0; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // FreqPriorityEUTRA ::= SEQUENCE struct freq_prio_eutra_s { uint32_t carrier_freq = 0; uint8_t cell_resel_prio = 0; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // FreqPriorityEUTRA-r12 ::= SEQUENCE struct freq_prio_eutra_r12_s { uint32_t carrier_freq_r12 = 0; uint8_t cell_resel_prio_r12 = 0; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // FreqPriorityEUTRA-v1310 ::= SEQUENCE struct freq_prio_eutra_v1310_s { bool cell_resel_sub_prio_r13_present = false; cell_resel_sub_prio_r13_e cell_resel_sub_prio_r13; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // FreqPriorityNR-r15 ::= SEQUENCE struct freq_prio_nr_r15_s { bool cell_resel_sub_prio_r15_present = false; uint32_t carrier_freq_r15 = 0; uint8_t cell_resel_prio_r15 = 0; cell_resel_sub_prio_r13_e cell_resel_sub_prio_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // FreqPriorityUTRA-FDD ::= SEQUENCE struct freq_prio_utra_fdd_s { uint16_t carrier_freq = 0; uint8_t cell_resel_prio = 0; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // FreqPriorityUTRA-TDD ::= SEQUENCE struct freq_prio_utra_tdd_s { uint16_t carrier_freq = 0; uint8_t cell_resel_prio = 0; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // FreqsPriorityGERAN ::= SEQUENCE struct freqs_prio_geran_s { carrier_freqs_geran_s carrier_freqs; uint8_t cell_resel_prio = 0; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReject-v1130-IEs ::= SEQUENCE struct rrc_conn_reject_v1130_ies_s { struct depriorit_req_r11_s_ { struct depriorit_type_r11_opts { enum options { freq, e_utra, nulltype } value; const char* to_string() const; }; typedef enumerated depriorit_type_r11_e_; struct depriorit_timer_r11_opts { enum options { min5, min10, min15, min30, nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated depriorit_timer_r11_e_; // member variables depriorit_type_r11_e_ depriorit_type_r11; depriorit_timer_r11_e_ depriorit_timer_r11; }; // member variables bool depriorit_req_r11_present = false; bool non_crit_ext_present = false; depriorit_req_r11_s_ depriorit_req_r11; rrc_conn_reject_v1320_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; }; // BandClassPriorityList1XRTT ::= SEQUENCE (SIZE (1..32)) OF BandClassPriority1XRTT using band_class_prio_list1_xrtt_l = dyn_array; // BandClassPriorityListHRPD ::= SEQUENCE (SIZE (1..32)) OF BandClassPriorityHRPD using band_class_prio_list_hrpd_l = dyn_array; // CarrierFreqListUTRA-TDD-r10 ::= SEQUENCE (SIZE (1..6)) OF INTEGER (0..16383) using carrier_freq_list_utra_tdd_r10_l = bounded_array; // FreqPriorityEUTRA-v9e0 ::= SEQUENCE struct freq_prio_eutra_v9e0_s { bool carrier_freq_v9e0_present = false; uint32_t carrier_freq_v9e0 = 65536; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // FreqPriorityListEUTRA ::= SEQUENCE (SIZE (1..8)) OF FreqPriorityEUTRA using freq_prio_list_eutra_l = dyn_array; // FreqPriorityListEUTRA-v1310 ::= SEQUENCE (SIZE (1..8)) OF FreqPriorityEUTRA-v1310 using freq_prio_list_eutra_v1310_l = dyn_array; // FreqPriorityListExtEUTRA-r12 ::= SEQUENCE (SIZE (1..8)) OF FreqPriorityEUTRA-r12 using freq_prio_list_ext_eutra_r12_l = dyn_array; // FreqPriorityListExtEUTRA-v1310 ::= SEQUENCE (SIZE (1..8)) OF FreqPriorityEUTRA-v1310 using freq_prio_list_ext_eutra_v1310_l = dyn_array; // FreqPriorityListNR-r15 ::= SEQUENCE (SIZE (1..8)) OF FreqPriorityNR-r15 using freq_prio_list_nr_r15_l = dyn_array; // FreqPriorityListUTRA-FDD ::= SEQUENCE (SIZE (1..16)) OF FreqPriorityUTRA-FDD using freq_prio_list_utra_fdd_l = dyn_array; // FreqPriorityListUTRA-TDD ::= SEQUENCE (SIZE (1..16)) OF FreqPriorityUTRA-TDD using freq_prio_list_utra_tdd_l = dyn_array; // FreqsPriorityListGERAN ::= SEQUENCE (SIZE (1..16)) OF FreqsPriorityGERAN using freqs_prio_list_geran_l = dyn_array; // RRCConnectionReject-v1020-IEs ::= SEQUENCE struct rrc_conn_reject_v1020_ies_s { bool extended_wait_time_r10_present = false; bool non_crit_ext_present = false; uint16_t extended_wait_time_r10 = 1; rrc_conn_reject_v1130_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; }; // RRCConnectionSetup-v1610-IEs ::= SEQUENCE struct rrc_conn_setup_v1610_ies_s { bool ded_info_nas_r16_present = false; bool non_crit_ext_present = false; dyn_octstring ded_info_nas_r16; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // IdleModeMobilityControlInfo ::= SEQUENCE struct idle_mode_mob_ctrl_info_s { struct t320_opts { enum options { min5, min10, min20, min30, min60, min120, min180, spare1, nulltype } value; typedef uint8_t number_type; const char* to_string() const; uint8_t to_number() const; }; typedef enumerated t320_e_; // member variables bool ext = false; bool freq_prio_list_eutra_present = false; bool freq_prio_list_geran_present = false; bool freq_prio_list_utra_fdd_present = false; bool freq_prio_list_utra_tdd_present = false; bool band_class_prio_list_hrpd_present = false; bool band_class_prio_list1_xrtt_present = false; bool t320_present = false; freq_prio_list_eutra_l freq_prio_list_eutra; freqs_prio_list_geran_l freq_prio_list_geran; freq_prio_list_utra_fdd_l freq_prio_list_utra_fdd; freq_prio_list_utra_tdd_l freq_prio_list_utra_tdd; band_class_prio_list_hrpd_l band_class_prio_list_hrpd; band_class_prio_list1_xrtt_l band_class_prio_list1_xrtt; t320_e_ t320; // ... // group 0 copy_ptr freq_prio_list_ext_eutra_r12; // group 1 copy_ptr freq_prio_list_eutra_v1310; copy_ptr freq_prio_list_ext_eutra_v1310; // group 2 copy_ptr freq_prio_list_nr_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // IdleModeMobilityControlInfo-v9e0 ::= SEQUENCE struct idle_mode_mob_ctrl_info_v9e0_s { using freq_prio_list_eutra_v9e0_l_ = dyn_array; // member variables freq_prio_list_eutra_v9e0_l_ freq_prio_list_eutra_v9e0; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(cbit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReestablishment-v8a0-IEs ::= SEQUENCE struct rrc_conn_reest_v8a0_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; }; // RRCConnectionReestablishmentReject-v8a0-IEs ::= SEQUENCE struct rrc_conn_reest_reject_v8a0_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; }; // RRCConnectionReject-v8a0-IEs ::= SEQUENCE struct rrc_conn_reject_v8a0_ies_s { bool late_non_crit_ext_present = false; bool non_crit_ext_present = false; dyn_octstring late_non_crit_ext; rrc_conn_reject_v1020_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; }; // RRCConnectionSetup-v8a0-IEs ::= SEQUENCE struct rrc_conn_setup_v8a0_ies_s { bool late_non_crit_ext_present = false; bool non_crit_ext_present = false; dyn_octstring late_non_crit_ext; rrc_conn_setup_v1610_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; }; // RRCEarlyDataComplete-v1590-IEs ::= SEQUENCE struct rrc_early_data_complete_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; }; // RedirectedCarrierInfo-r15-IEs ::= CHOICE struct redirected_carrier_info_r15_ies_c { struct types_opts { enum options { eutra, geran, utra_fdd, cdma2000_hrpd, cdma2000_minus1x_rtt, utra_tdd, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods redirected_carrier_info_r15_ies_c() = default; redirected_carrier_info_r15_ies_c(const redirected_carrier_info_r15_ies_c& other); redirected_carrier_info_r15_ies_c& operator=(const redirected_carrier_info_r15_ies_c& other); ~redirected_carrier_info_r15_ies_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 uint32_t& eutra() { assert_choice_type(types::eutra, type_, "RedirectedCarrierInfo-r15-IEs"); return c.get(); } carrier_freqs_geran_s& geran() { assert_choice_type(types::geran, type_, "RedirectedCarrierInfo-r15-IEs"); return c.get(); } uint16_t& utra_fdd() { assert_choice_type(types::utra_fdd, type_, "RedirectedCarrierInfo-r15-IEs"); return c.get(); } carrier_freq_cdma2000_s& cdma2000_hrpd() { assert_choice_type(types::cdma2000_hrpd, type_, "RedirectedCarrierInfo-r15-IEs"); return c.get(); } carrier_freq_cdma2000_s& cdma2000_minus1x_rtt() { assert_choice_type(types::cdma2000_minus1x_rtt, type_, "RedirectedCarrierInfo-r15-IEs"); return c.get(); } carrier_freq_list_utra_tdd_r10_l& utra_tdd() { assert_choice_type(types::utra_tdd, type_, "RedirectedCarrierInfo-r15-IEs"); return c.get(); } const uint32_t& eutra() const { assert_choice_type(types::eutra, type_, "RedirectedCarrierInfo-r15-IEs"); return c.get(); } const carrier_freqs_geran_s& geran() const { assert_choice_type(types::geran, type_, "RedirectedCarrierInfo-r15-IEs"); return c.get(); } const uint16_t& utra_fdd() const { assert_choice_type(types::utra_fdd, type_, "RedirectedCarrierInfo-r15-IEs"); return c.get(); } const carrier_freq_cdma2000_s& cdma2000_hrpd() const { assert_choice_type(types::cdma2000_hrpd, type_, "RedirectedCarrierInfo-r15-IEs"); return c.get(); } const carrier_freq_cdma2000_s& cdma2000_minus1x_rtt() const { assert_choice_type(types::cdma2000_minus1x_rtt, type_, "RedirectedCarrierInfo-r15-IEs"); return c.get(); } const carrier_freq_list_utra_tdd_r10_l& utra_tdd() const { assert_choice_type(types::utra_tdd, type_, "RedirectedCarrierInfo-r15-IEs"); return c.get(); } uint32_t& set_eutra(); carrier_freqs_geran_s& set_geran(); uint16_t& set_utra_fdd(); carrier_freq_cdma2000_s& set_cdma2000_hrpd(); carrier_freq_cdma2000_s& set_cdma2000_minus1x_rtt(); carrier_freq_list_utra_tdd_r10_l& set_utra_tdd(); private: types type_; choice_buffer_t c; void destroy_(); }; // RRCConnectionReestablishment-r8-IEs ::= SEQUENCE struct rrc_conn_reest_r8_ies_s { bool non_crit_ext_present = false; rr_cfg_ded_s rr_cfg_ded; uint8_t next_hop_chaining_count = 0; rrc_conn_reest_v8a0_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; }; // RRCConnectionReestablishmentReject-r8-IEs ::= SEQUENCE struct rrc_conn_reest_reject_r8_ies_s { bool non_crit_ext_present = false; rrc_conn_reest_reject_v8a0_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; }; // RRCConnectionReject-r8-IEs ::= SEQUENCE struct rrc_conn_reject_r8_ies_s { bool non_crit_ext_present = false; uint8_t wait_time = 1; rrc_conn_reject_v8a0_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; }; // RRCConnectionSetup-r8-IEs ::= SEQUENCE struct rrc_conn_setup_r8_ies_s { bool non_crit_ext_present = false; rr_cfg_ded_s rr_cfg_ded; rrc_conn_setup_v8a0_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; }; // RRCEarlyDataComplete-r15-IEs ::= SEQUENCE struct rrc_early_data_complete_r15_ies_s { bool ded_info_nas_r15_present = false; bool extended_wait_time_r15_present = false; bool idle_mode_mob_ctrl_info_r15_present = false; bool idle_mode_mob_ctrl_info_ext_r15_present = false; bool redirected_carrier_info_r15_present = false; bool non_crit_ext_present = false; dyn_octstring ded_info_nas_r15; uint16_t extended_wait_time_r15 = 1; idle_mode_mob_ctrl_info_s idle_mode_mob_ctrl_info_r15; idle_mode_mob_ctrl_info_v9e0_s idle_mode_mob_ctrl_info_ext_r15; redirected_carrier_info_r15_ies_c redirected_carrier_info_r15; rrc_early_data_complete_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; }; // RRCConnectionReestablishment ::= SEQUENCE struct rrc_conn_reest_s { struct crit_exts_c_ { struct c1_c_ { struct types_opts { enum options { rrc_conn_reest_r8, spare7, spare6, spare5, spare4, spare3, spare2, spare1, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods c1_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_r8_ies_s& rrc_conn_reest_r8() { assert_choice_type(types::rrc_conn_reest_r8, type_, "c1"); return c; } const rrc_conn_reest_r8_ies_s& rrc_conn_reest_r8() const { assert_choice_type(types::rrc_conn_reest_r8, type_, "c1"); return c; } rrc_conn_reest_r8_ies_s& set_rrc_conn_reest_r8(); void set_spare7(); void set_spare6(); void set_spare5(); void set_spare4(); void set_spare3(); void set_spare2(); void set_spare1(); private: types type_; rrc_conn_reest_r8_ies_s c; }; using types = c1_or_crit_ext_e; // 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 c1_c_& c1() { assert_choice_type(types::c1, type_, "criticalExtensions"); return c; } const c1_c_& c1() const { assert_choice_type(types::c1, type_, "criticalExtensions"); return c; } c1_c_& set_c1(); void set_crit_exts_future(); private: types type_; c1_c_ c; }; // member variables uint8_t rrc_transaction_id = 0; 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; }; // RRCConnectionReestablishmentReject ::= SEQUENCE struct rrc_conn_reest_reject_s { struct crit_exts_c_ { struct types_opts { enum options { rrc_conn_reest_reject_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_reject_r8_ies_s& rrc_conn_reest_reject_r8() { assert_choice_type(types::rrc_conn_reest_reject_r8, type_, "criticalExtensions"); return c; } const rrc_conn_reest_reject_r8_ies_s& rrc_conn_reest_reject_r8() const { assert_choice_type(types::rrc_conn_reest_reject_r8, type_, "criticalExtensions"); return c; } rrc_conn_reest_reject_r8_ies_s& set_rrc_conn_reest_reject_r8(); void set_crit_exts_future(); private: types type_; rrc_conn_reest_reject_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; }; // RRCConnectionReject ::= SEQUENCE struct rrc_conn_reject_s { struct crit_exts_c_ { struct c1_c_ { struct types_opts { enum options { rrc_conn_reject_r8, spare3, spare2, spare1, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods c1_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_reject_r8_ies_s& rrc_conn_reject_r8() { assert_choice_type(types::rrc_conn_reject_r8, type_, "c1"); return c; } const rrc_conn_reject_r8_ies_s& rrc_conn_reject_r8() const { assert_choice_type(types::rrc_conn_reject_r8, type_, "c1"); return c; } rrc_conn_reject_r8_ies_s& set_rrc_conn_reject_r8(); void set_spare3(); void set_spare2(); void set_spare1(); private: types type_; rrc_conn_reject_r8_ies_s c; }; using types = c1_or_crit_ext_e; // 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 c1_c_& c1() { assert_choice_type(types::c1, type_, "criticalExtensions"); return c; } const c1_c_& c1() const { assert_choice_type(types::c1, type_, "criticalExtensions"); return c; } c1_c_& set_c1(); void set_crit_exts_future(); private: types type_; c1_c_ 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; }; // RRCConnectionSetup ::= SEQUENCE struct rrc_conn_setup_s { struct crit_exts_c_ { struct c1_c_ { struct types_opts { enum options { rrc_conn_setup_r8, spare7, spare6, spare5, spare4, spare3, spare2, spare1, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods c1_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_setup_r8_ies_s& rrc_conn_setup_r8() { assert_choice_type(types::rrc_conn_setup_r8, type_, "c1"); return c; } const rrc_conn_setup_r8_ies_s& rrc_conn_setup_r8() const { assert_choice_type(types::rrc_conn_setup_r8, type_, "c1"); return c; } rrc_conn_setup_r8_ies_s& set_rrc_conn_setup_r8(); void set_spare7(); void set_spare6(); void set_spare5(); void set_spare4(); void set_spare3(); void set_spare2(); void set_spare1(); private: types type_; rrc_conn_setup_r8_ies_s c; }; using types = c1_or_crit_ext_e; // 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 c1_c_& c1() { assert_choice_type(types::c1, type_, "criticalExtensions"); return c; } const c1_c_& c1() const { assert_choice_type(types::c1, type_, "criticalExtensions"); return c; } c1_c_& set_c1(); void set_crit_exts_future(); private: types type_; c1_c_ c; }; // member variables uint8_t rrc_transaction_id = 0; 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; }; // RRCEarlyDataComplete-r15 ::= SEQUENCE struct rrc_early_data_complete_r15_s { struct crit_exts_c_ { struct types_opts { enum options { rrc_early_data_complete_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_complete_r15_ies_s& rrc_early_data_complete_r15() { assert_choice_type(types::rrc_early_data_complete_r15, type_, "criticalExtensions"); return c; } const rrc_early_data_complete_r15_ies_s& rrc_early_data_complete_r15() const { assert_choice_type(types::rrc_early_data_complete_r15, type_, "criticalExtensions"); return c; } rrc_early_data_complete_r15_ies_s& set_rrc_early_data_complete_r15(); void set_crit_exts_future(); private: types type_; rrc_early_data_complete_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; }; // DL-CCCH-MessageType ::= CHOICE struct dl_ccch_msg_type_c { struct c1_c_ { struct types_opts { enum options { rrc_conn_reest, rrc_conn_reest_reject, rrc_conn_reject, rrc_conn_setup, 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_s& rrc_conn_reest() { assert_choice_type(types::rrc_conn_reest, type_, "c1"); return c.get(); } rrc_conn_reest_reject_s& rrc_conn_reest_reject() { assert_choice_type(types::rrc_conn_reest_reject, type_, "c1"); return c.get(); } rrc_conn_reject_s& rrc_conn_reject() { assert_choice_type(types::rrc_conn_reject, type_, "c1"); return c.get(); } rrc_conn_setup_s& rrc_conn_setup() { assert_choice_type(types::rrc_conn_setup, type_, "c1"); return c.get(); } const rrc_conn_reest_s& rrc_conn_reest() const { assert_choice_type(types::rrc_conn_reest, type_, "c1"); return c.get(); } const rrc_conn_reest_reject_s& rrc_conn_reest_reject() const { assert_choice_type(types::rrc_conn_reest_reject, type_, "c1"); return c.get(); } const rrc_conn_reject_s& rrc_conn_reject() const { assert_choice_type(types::rrc_conn_reject, type_, "c1"); return c.get(); } const rrc_conn_setup_s& rrc_conn_setup() const { assert_choice_type(types::rrc_conn_setup, type_, "c1"); return c.get(); } rrc_conn_reest_s& set_rrc_conn_reest(); rrc_conn_reest_reject_s& set_rrc_conn_reest_reject(); rrc_conn_reject_s& set_rrc_conn_reject(); rrc_conn_setup_s& set_rrc_conn_setup(); private: types type_; choice_buffer_t c; void destroy_(); }; struct msg_class_ext_c_ { struct c2_c_ { struct types_opts { enum options { rrc_early_data_complete_r15, spare3, spare2, spare1, nulltype } value; const char* to_string() const; }; typedef enumerated types; // choice methods c2_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_complete_r15_s& rrc_early_data_complete_r15() { assert_choice_type(types::rrc_early_data_complete_r15, type_, "c2"); return c; } const rrc_early_data_complete_r15_s& rrc_early_data_complete_r15() const { assert_choice_type(types::rrc_early_data_complete_r15, type_, "c2"); return c; } rrc_early_data_complete_r15_s& set_rrc_early_data_complete_r15(); void set_spare3(); void set_spare2(); void set_spare1(); private: types type_; rrc_early_data_complete_r15_s c; }; struct types_opts { enum options { c2, 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_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 c2_c_& c2() { assert_choice_type(types::c2, type_, "messageClassExtension"); return c; } const c2_c_& c2() const { assert_choice_type(types::c2, type_, "messageClassExtension"); return c; } c2_c_& set_c2(); void set_msg_class_ext_future_r15(); private: types type_; c2_c_ c; }; 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 dl_ccch_msg_type_c() = default; dl_ccch_msg_type_c(const dl_ccch_msg_type_c& other); dl_ccch_msg_type_c& operator=(const dl_ccch_msg_type_c& other); ~dl_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_, "DL-CCCH-MessageType"); return c.get(); } msg_class_ext_c_& msg_class_ext() { assert_choice_type(types::msg_class_ext, type_, "DL-CCCH-MessageType"); return c.get(); } const c1_c_& c1() const { assert_choice_type(types::c1, type_, "DL-CCCH-MessageType"); return c.get(); } const msg_class_ext_c_& msg_class_ext() const { assert_choice_type(types::msg_class_ext, type_, "DL-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_(); }; // DL-CCCH-Message ::= SEQUENCE struct dl_ccch_msg_s { dl_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_DLCCCH_MSG_H