/* Copyright 2013-2017 Software Radio Systems Limited This file is part of srsLTE srsASN1 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. srsASN1 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/. */ #ifndef SRSASN1_RRC_H #define SRSASN1_RRC_H #include "asn1_utils.h" #include #include namespace asn1 { namespace rrc { /******************************************************************************* /* Functions for external logging /******************************************************************************/ static log_handler_t log_handler; static void* callback_ctx = NULL; inline void rrc_log_register_handler(void* ctx, log_handler_t handler) { log_handler = handler; callback_ctx = ctx; } inline void rrc_log_print(srsasn_logger_level_t log_level, const char* format, ...) { va_list args; va_start(args, format); vlog_print(log_handler, callback_ctx, log_level, format, args); va_end(args); } inline void log_invalid_access_choice_id(uint32_t val, uint32_t choice_id) { rrc_log_print(LOG_LEVEL_ERROR, "The access choice id is invalid (%d!=%d)\n", val, choice_id); } inline void assert_choice_type(uint32_t val, uint32_t choice_id) { if (val != choice_id) { log_invalid_access_choice_id(val, choice_id); } } inline void assert_choice_type(const std::string& access_type, const std::string& current_type, const std::string& choice_type) { if (access_type != current_type) { rrc_log_print(LOG_LEVEL_ERROR, "Invalid field access for choice type \"%s\" (\"%s\"!=\"%s\")\n", choice_type.c_str(), access_type.c_str(), current_type.c_str()); } } template inline NumType get_enum_number(NumType* array, uint32_t nof_types, uint32_t enum_val, const char* enum_type) { if (enum_val >= nof_types) { rrc_log_print(LOG_LEVEL_ERROR, "The provided enum value=%d of type %s cannot be translated into a number\n", enum_val, enum_type); return 0; } return array[enum_val]; } /******************************************************************************* /* Constant Definitions /******************************************************************************/ #define ASN1_RRC_MAX_ACCESS_CAT_MINUS1_R15 63 #define ASN1_RRC_MAX_ACDC_CAT_R13 16 #define ASN1_RRC_MAX_AVAIL_NARROW_BANDS_R13 16 #define ASN1_RRC_MAX_BAND_COMB_R10 128 #define ASN1_RRC_MAX_BAND_COMB_R11 256 #define ASN1_RRC_MAX_BAND_COMB_R13 384 #define ASN1_RRC_MAX_BANDS 64 #define ASN1_RRC_MAX_BANDS_NR_R15 1024 #define ASN1_RRC_MAX_BW_CLASS_R10 16 #define ASN1_RRC_MAX_BW_COMB_SET_R10 32 #define ASN1_RRC_MAX_BARR_INFO_SET_R15 8 #define ASN1_RRC_MAX_BT_ID_REPORT_R15 32 #define ASN1_RRC_MAX_BT_NAME_R15 4 #define ASN1_RRC_MAX_CBR_LEVEL_R14 16 #define ASN1_RRC_MAX_CBR_LEVEL_MINUS1_R14 15 #define ASN1_RRC_MAX_CBR_REPORT_R14 72 #define ASN1_RRC_MAX_CDMA_BAND_CLASS 32 #define ASN1_RRC_MAX_CE_LEVEL_R13 4 #define ASN1_RRC_MAX_CELL_BLACK 16 #define ASN1_RRC_MAX_CELL_HISTORY_R12 16 #define ASN1_RRC_MAX_CELL_INFO_GERAN_R9 32 #define ASN1_RRC_MAX_CELL_INFO_UTRA_R9 16 #define ASN1_RRC_MAX_CELL_MEAS_IDLE_R15 8 #define ASN1_RRC_MAX_COMB_IDC_R11 128 #define ASN1_RRC_MAX_CSI_IM_R11 3 #define ASN1_RRC_MAX_CSI_IM_R12 4 #define ASN1_RRC_MIN_CSI_IM_R13 5 #define ASN1_RRC_MAX_CSI_IM_R13 24 #define ASN1_RRC_MAX_CSI_IM_V1310 20 #define ASN1_RRC_MAX_CSI_PROC_R11 4 #define ASN1_RRC_MAX_CSI_RS_NZP_R11 3 #define ASN1_RRC_MIN_CSI_RS_NZP_R13 4 #define ASN1_RRC_MAX_CSI_RS_NZP_R13 24 #define ASN1_RRC_MAX_CSI_RS_NZP_V1310 21 #define ASN1_RRC_MAX_CSI_RS_ZP_R11 4 #define ASN1_RRC_MAX_CQI_PROC_EXT_R11 3 #define ASN1_RRC_MAX_FREQ_UTRA_TDD_R10 6 #define ASN1_RRC_MAX_CELL_INTER 16 #define ASN1_RRC_MAX_CELL_INTRA 16 #define ASN1_RRC_MAX_CELL_LIST_GERAN 3 #define ASN1_RRC_MAX_CELL_MEAS 32 #define ASN1_RRC_MAX_CELL_REPORT 8 #define ASN1_RRC_MAX_CELL_SFTD 3 #define ASN1_RRC_MAX_CFG_SPS_R14 8 #define ASN1_RRC_MAX_CFG_SPS_R15 6 #define ASN1_RRC_MAX_CSI_RS_MEAS_R12 96 #define ASN1_RRC_MAX_DRB 11 #define ASN1_RRC_MAX_DRB_EXT_R15 4 #define ASN1_RRC_MAX_DRB_R15 15 #define ASN1_RRC_MAX_DS_DUR_R12 5 #define ASN1_RRC_MAX_DS_ZTP_CSI_RS_R12 5 #define ASN1_RRC_MAX_EARFCN 65535 #define ASN1_RRC_MAX_EARFCN_PLUS1 65536 #define ASN1_RRC_MAX_EARFCN2 262143 #define ASN1_RRC_MAX_EPDCCH_SET_R11 2 #define ASN1_RRC_MAX_FBI 64 #define ASN1_RRC_MAX_FBI_NR_R15 1024 #define ASN1_RRC_MAX_FBI_PLUS1 65 #define ASN1_RRC_MAX_FBI2 256 #define ASN1_RRC_MAX_FEATURE_SETS_R15 256 #define ASN1_RRC_MAX_PER_CC_FEATURE_SETS_R15 32 #define ASN1_RRC_MAX_FREQ 8 #define ASN1_RRC_MAX_FREQ_IDC_R11 32 #define ASN1_RRC_MAX_FREQ_IDLE_R15 8 #define ASN1_RRC_MAX_FREQ_MBMS_R11 5 #define ASN1_RRC_MAX_FREQ_NR_R15 5 #define ASN1_RRC_MAX_FREQ_V2X_R14 8 #define ASN1_RRC_MAX_FREQ_V2X_MINUS1_R14 7 #define ASN1_RRC_MAX_GERAN_SI 10 #define ASN1_RRC_MAX_GNFG 16 #define ASN1_RRC_MAX_IDLE_MEAS_CARRIERS_R15 3 #define ASN1_RRC_MAX_LCG_R13 4 #define ASN1_RRC_MAX_LOG_MEAS_REPORT_R10 520 #define ASN1_RRC_MAX_MBSFN_ALLOCS 8 #define ASN1_RRC_MAX_MBSFN_AREA 8 #define ASN1_RRC_MAX_MBSFN_AREA_MINUS1 7 #define ASN1_RRC_MAX_MBMS_SERVICE_LIST_PER_UE_R13 15 #define ASN1_RRC_MAX_MEAS_ID 32 #define ASN1_RRC_MAX_MEAS_ID_PLUS1 33 #define ASN1_RRC_MAX_MEAS_ID_R12 64 #define ASN1_RRC_MAX_MULTI_BANDS 8 #define ASN1_RRC_MAX_MULTI_BANDS_NR_R15 32 #define ASN1_RRC_MAX_NS_PMAX_R10 8 #define ASN1_RRC_MAX_NAICS_ENTRIES_R12 8 #define ASN1_RRC_MAX_NEIGH_CELL_R12 8 #define ASN1_RRC_MAX_NEIGH_CELL_SCPTM_R13 8 #define ASN1_RRC_MAX_NROF_S_NSSAI_R15 8 #define ASN1_RRC_MAX_OBJ_ID 32 #define ASN1_RRC_MAX_OBJ_ID_PLUS1_R13 33 #define ASN1_RRC_MAX_OBJ_ID_R13 64 #define ASN1_RRC_MAX_P_A_PER_NEIGH_CELL_R12 3 #define ASN1_RRC_MAX_PAGE_REC 16 #define ASN1_RRC_MAX_PCI_RANGE_R9 4 #define ASN1_RRC_MAX_PLMN_R11 6 #define ASN1_RRC_MAX_PLMN_MINUS1_R14 5 #define ASN1_RRC_MAX_PLMN_R15 8 #define ASN1_RRC_MAX_PLMN_NR_R15 12 #define ASN1_RRC_MAX_PN_OFFSET 511 #define ASN1_RRC_MAX_PMCH_PER_MBSFN 15 #define ASN1_RRC_MAX_PSSCH_TX_CFG_R14 16 #define ASN1_RRC_MAX_QUANT_SETS_NR_R15 2 #define ASN1_RRC_MAX_QCI_R13 6 #define ASN1_RRC_MAX_RAT_CAPABILITIES 8 #define ASN1_RRC_MAX_RE_MAP_QCL_R11 4 #define ASN1_RRC_MAX_REPORT_CFG_ID 32 #define ASN1_RRC_MAX_RESERV_PERIOD_R14 16 #define ASN1_RRC_MAX_RS_IDX_R15 64 #define ASN1_RRC_MAX_RS_IDX_MINUS1_R15 63 #define ASN1_RRC_MAX_RS_IDX_CELL_QUAL_R15 16 #define ASN1_RRC_MAX_RS_IDX_REPORT_R15 32 #define ASN1_RRC_MAX_RSTD_FREQ_R10 3 #define ASN1_RRC_MAX_SAI_MBMS_R11 64 #define ASN1_RRC_MAX_SCELL_R10 4 #define ASN1_RRC_MAX_SCELL_R13 31 #define ASN1_RRC_MAX_SCELL_GROUPS_R15 4 #define ASN1_RRC_MAX_SC_MTCH_R13 1023 #define ASN1_RRC_MAX_SC_MTCH_BR_R14 128 #define ASN1_RRC_MAX_SL_COMM_RX_POOL_NFREQ_R13 32 #define ASN1_RRC_MAX_SL_COMM_RX_POOL_PRECONF_V1310 12 #define ASN1_RRC_MAX_SL_TX_POOL_R12_PLUS1_R13 5 #define ASN1_RRC_MAX_SL_TX_POOL_V1310 4 #define ASN1_RRC_MAX_SL_TX_POOL_R13 8 #define ASN1_RRC_MAX_SL_COMM_TX_POOL_PRECONF_V1310 7 #define ASN1_RRC_MAX_SL_DEST_R12 16 #define ASN1_RRC_MAX_SL_DISC_CELLS_R13 16 #define ASN1_RRC_MAX_SL_DISC_PWR_CLASS_R12 3 #define ASN1_RRC_MAX_SL_DISC_RX_POOL_PRECONF_R13 16 #define ASN1_RRC_MAX_SL_DISC_SYS_INFO_REPORT_FREQ_R13 8 #define ASN1_RRC_MAX_SL_DISC_TX_POOL_PRECONF_R13 4 #define ASN1_RRC_MAX_SL_GP_R13 8 #define ASN1_RRC_MAX_SL_POOL_TO_MEASURE_R14 72 #define ASN1_RRC_MAX_SL_PRIO_R13 8 #define ASN1_RRC_MAX_SL_RX_POOL_R12 16 #define ASN1_RRC_MAX_SL_RELIABILITY_R15 8 #define ASN1_RRC_MAX_SL_SYNC_CFG_R12 16 #define ASN1_RRC_MAX_SL_TF_IDX_PAIR_R12 64 #define ASN1_RRC_MAX_SL_TX_POOL_R12 4 #define ASN1_RRC_MAX_SL_V2X_RX_POOL_R14 16 #define ASN1_RRC_MAX_SL_V2X_RX_POOL_PRECONF_R14 16 #define ASN1_RRC_MAX_SL_V2X_TX_POOL_R14 8 #define ASN1_RRC_MAX_SL_V2X_TX_POOL_PRECONF_R14 8 #define ASN1_RRC_MAX_SL_V2X_SYNC_CFG_R14 16 #define ASN1_RRC_MAX_SL_V2X_CBR_CFG_R14 4 #define ASN1_RRC_MAX_SL_V2X_CBR_CFG_MINUS1_R14 3 #define ASN1_RRC_MAX_SL_V2X_TX_CFG_R14 64 #define ASN1_RRC_MAX_SL_V2X_TX_CFG_MINUS1_R14 63 #define ASN1_RRC_MAX_SL_V2X_CBR_CFG2_R14 8 #define ASN1_RRC_MAX_SL_V2X_CBR_CFG2_MINUS1_R14 7 #define ASN1_RRC_MAX_SL_V2X_TX_CFG2_R14 128 #define ASN1_RRC_MAX_SL_V2X_TX_CFG2_MINUS1_R14 127 #define ASN1_RRC_MAX_STAG_R11 3 #define ASN1_RRC_MAX_SERV_CELL_R10 5 #define ASN1_RRC_MAX_SERV_CELL_R13 32 #define ASN1_RRC_MAX_SERV_CELL_NR_R15 16 #define ASN1_RRC_MAX_SERVICE_COUNT 16 #define ASN1_RRC_MAX_SERVICE_COUNT_MINUS1 15 #define ASN1_RRC_MAX_SESSION_PER_PMCH 29 #define ASN1_RRC_MAX_SESSION_PER_PMCH_MINUS1 28 #define ASN1_RRC_MAX_SIB 32 #define ASN1_RRC_MAX_SIB_MINUS1 31 #define ASN1_RRC_MAX_SI_MSG 32 #define ASN1_RRC_MAX_SIMUL_BANDS_R10 64 #define ASN1_RRC_MAX_SF_PATTERN_IDC_R11 8 #define ASN1_RRC_MAX_TRAFFIC_PATTERN_R14 8 #define ASN1_RRC_MAX_UTRA_FDD_CARRIER 16 #define ASN1_RRC_MAX_UTRA_TDD_CARRIER 16 #define ASN1_RRC_MAX_WAY_POINT_R15 20 #define ASN1_RRC_MAX_WLAN_ID_R12 16 #define ASN1_RRC_MAX_WLAN_BANDS_R13 8 #define ASN1_RRC_MAX_WLAN_ID_R13 32 #define ASN1_RRC_MAX_WLAN_CHS_R13 16 #define ASN1_RRC_MAX_WLAN_CARRIER_INFO_R13 8 #define ASN1_RRC_MAX_WLAN_ID_REPORT_R14 32 #define ASN1_RRC_MAX_WLAN_NAME_R15 4 #define ASN1_RRC_MAX_LOG_MEAS_R10 4060 #define ASN1_RRC_MAX_REESTAB_INFO 32 #define ASN1_RRC_MAX_NPRACH_RES_NB_R13 3 #define ASN1_RRC_MAX_NON_ANCHOR_CARRIERS_NB_R14 15 #define ASN1_RRC_MAX_DRB_NB_R13 2 #define ASN1_RRC_MAX_NEIGH_CELL_SCPTM_NB_R14 8 #define ASN1_RRC_MAX_NS_PMAX_NB_R13 4 #define ASN1_RRC_MAX_SC_MTCH_NB_R14 64 #define ASN1_RRC_MAX_SI_MSG_NB_R13 8 /******************************************************************************* /* Struct Definitions /******************************************************************************/ // PHICH-Config ::= SEQUENCE struct phich_cfg_s { struct phich_dur_e_ { enum options { normal, extended }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods phich_dur_e_() {} phich_dur_e_(options v) : value(v) {} phich_dur_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct phich_res_e_ { enum options { one_sixth, half, one, two }; typedef float number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods phich_res_e_() {} phich_res_e_(options v) : value(v) {} phich_res_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; // member variables phich_dur_e_ phich_dur; phich_res_e_ phich_res; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MasterInformationBlock ::= SEQUENCE struct mib_s { struct dl_bw_e_ { enum options { n6, n15, n25, n50, n75, n100 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods dl_bw_e_() {} dl_bw_e_(options v) : value(v) {} dl_bw_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables dl_bw_e_ dl_bw; phich_cfg_s phich_cfg; fixed_bitstring<8> sys_frame_num; uint8_t sched_info_sib1_br_r13; bool sys_info_unchanged_br_r15; fixed_bitstring<4> spare; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BCCH-BCH-MessageType ::= MasterInformationBlock typedef mib_s bcch_bch_msg_type_s; // BCCH-BCH-Message ::= SEQUENCE struct bcch_bch_msg_s { // member variables bcch_bch_msg_type_s msg; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MasterInformationBlock-MBMS-r14 ::= SEQUENCE struct mib_mbms_r14_s { struct dl_bw_mbms_r14_e_ { enum options { n6, n15, n25, n50, n75, n100 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods dl_bw_mbms_r14_e_() {} dl_bw_mbms_r14_e_(options v) : value(v) {} dl_bw_mbms_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables dl_bw_mbms_r14_e_ dl_bw_mbms_r14; fixed_bitstring<6> sys_frame_num_r14; uint8_t add_non_mbsfn_sfs_r14; fixed_bitstring<13> spare; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BCCH-BCH-MessageType-MBMS-r14 ::= MasterInformationBlock-MBMS-r14 typedef mib_mbms_r14_s bcch_bch_msg_type_mbms_r14_s; // BCCH-BCH-Message-MBMS ::= SEQUENCE struct bcch_bch_msg_mbms_s { // member variables bcch_bch_msg_type_mbms_r14_s msg; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // GNSS-ID-r15 ::= SEQUENCE struct gnss_id_r15_s { struct gnss_id_r15_e_ { enum options { gps, sbas, qzss, galileo, glonass, bds, /*...*/ }; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = true; // enumerated methods gnss_id_r15_e_() {} gnss_id_r15_e_(options v) : value(v) {} gnss_id_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool ext; gnss_id_r15_e_ gnss_id_r15; // ... // sequence methods gnss_id_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MCC ::= SEQUENCE (SIZE (3)) OF INTEGER typedef fixed_array mcc_l; // MNC ::= SEQUENCE (SIZE (2..3)) OF INTEGER typedef bounded_array mnc_l; // SBAS-ID-r15 ::= SEQUENCE struct sbas_id_r15_s { struct sbas_id_r15_e_ { enum options { waas, egnos, msas, gagan, /*...*/ }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = true; // enumerated methods sbas_id_r15_e_() {} sbas_id_r15_e_(options v) : value(v) {} sbas_id_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool ext; sbas_id_r15_e_ sbas_id_r15; // ... // sequence methods sbas_id_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PLMN-Identity ::= SEQUENCE struct plmn_id_s { // member variables bool mcc_present; mcc_l mcc; mnc_l mnc; // sequence methods plmn_id_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PosSIB-Type-r15 ::= SEQUENCE struct pos_sib_type_r15_s { struct pos_sib_type_r15_e_ { enum options { pos_sib_type1_minus1, pos_sib_type1_minus2, pos_sib_type1_minus3, pos_sib_type1_minus4, pos_sib_type1_minus5, pos_sib_type1_minus6, pos_sib_type1_minus7, pos_sib_type2_minus1, pos_sib_type2_minus2, pos_sib_type2_minus3, pos_sib_type2_minus4, pos_sib_type2_minus5, pos_sib_type2_minus6, pos_sib_type2_minus7, pos_sib_type2_minus8, pos_sib_type2_minus9, pos_sib_type2_minus10, pos_sib_type2_minus11, pos_sib_type2_minus12, pos_sib_type2_minus13, pos_sib_type2_minus14, pos_sib_type2_minus15, pos_sib_type2_minus16, pos_sib_type2_minus17, pos_sib_type2_minus18, pos_sib_type2_minus19, pos_sib_type3_minus1, // ... }; options value; static const uint32_t nof_types = 27, nof_exts = 0; static const bool has_ext = true; // enumerated methods pos_sib_type_r15_e_() {} pos_sib_type_r15_e_(options v) : value(v) {} pos_sib_type_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool ext; bool encrypted_r15_present; bool gnss_id_r15_present; bool sbas_id_r15_present; gnss_id_r15_s gnss_id_r15; sbas_id_r15_s sbas_id_r15; pos_sib_type_r15_e_ pos_sib_type_r15; // ... // sequence methods pos_sib_type_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PLMN-IdentityInfo-r15 ::= SEQUENCE struct plmn_id_info_r15_s { struct plmn_id_minus5_gc_r15_c_ { struct types { enum options { plmn_id_r15, plmn_idx_r15, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods plmn_id_minus5_gc_r15_c_() : type_(types::nulltype) {} plmn_id_minus5_gc_r15_c_(const plmn_id_minus5_gc_r15_c_& other); plmn_id_minus5_gc_r15_c_& operator=(const plmn_id_minus5_gc_r15_c_& other); ~plmn_id_minus5_gc_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(bit_ref& bref); void to_json(json_writer& j) const; // getters plmn_id_s& plmn_id_r15() { assert_choice_type("plmn-Identity-r15", type_.to_string(), "plmn-Identity-5GC-r15"); return c.get(); } uint8_t& plmn_idx_r15() { assert_choice_type("plmn-Index-r15", type_.to_string(), "plmn-Identity-5GC-r15"); return c.get(); } const plmn_id_s& plmn_id_r15() const { assert_choice_type("plmn-Identity-r15", type_.to_string(), "plmn-Identity-5GC-r15"); return c.get(); } const uint8_t& plmn_idx_r15() const { assert_choice_type("plmn-Index-r15", type_.to_string(), "plmn-Identity-5GC-r15"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct cell_reserved_for_oper_r15_e_ { enum options { reserved, not_reserved }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods cell_reserved_for_oper_r15_e_() {} cell_reserved_for_oper_r15_e_(options v) : value(v) {} cell_reserved_for_oper_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct cell_reserved_for_oper_crs_r15_e_ { enum options { reserved, not_reserved }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods cell_reserved_for_oper_crs_r15_e_() {} cell_reserved_for_oper_crs_r15_e_(options v) : value(v) {} cell_reserved_for_oper_crs_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables plmn_id_minus5_gc_r15_c_ plmn_id_minus5_gc_r15; cell_reserved_for_oper_r15_e_ cell_reserved_for_oper_r15; cell_reserved_for_oper_crs_r15_e_ cell_reserved_for_oper_crs_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PosSIB-MappingInfo-r15 ::= SEQUENCE (SIZE (1..maxSIB)) OF PosSIB-Type-r15 typedef dyn_array pos_sib_map_info_r15_l; // CellIdentity-5GC-r15 ::= CHOICE struct cell_id_minus5_gc_r15_c { struct types { enum options { cell_id_r15, cell_id_idx_r15, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods cell_id_minus5_gc_r15_c() : type_(types::nulltype) {} cell_id_minus5_gc_r15_c(const cell_id_minus5_gc_r15_c& other); cell_id_minus5_gc_r15_c& operator=(const cell_id_minus5_gc_r15_c& other); ~cell_id_minus5_gc_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(bit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<28>& cell_id_r15() { assert_choice_type("cellIdentity-r15", type_.to_string(), "CellIdentity-5GC-r15"); return c.get >(); } uint8_t& cell_id_idx_r15() { assert_choice_type("cellId-Index-r15", type_.to_string(), "CellIdentity-5GC-r15"); return c.get(); } const fixed_bitstring<28>& cell_id_r15() const { assert_choice_type("cellIdentity-r15", type_.to_string(), "CellIdentity-5GC-r15"); return c.get >(); } const uint8_t& cell_id_idx_r15() const { assert_choice_type("cellId-Index-r15", type_.to_string(), "CellIdentity-5GC-r15"); return c.get(); } private: types type_; choice_buffer_t)> c; void destroy_(); }; // PLMN-IdentityInfo-v1530 ::= SEQUENCE struct plmn_id_info_v1530_s { struct cell_reserved_for_oper_crs_r15_e_ { enum options { reserved, not_reserved }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods cell_reserved_for_oper_crs_r15_e_() {} cell_reserved_for_oper_crs_r15_e_(options v) : value(v) {} cell_reserved_for_oper_crs_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables cell_reserved_for_oper_crs_r15_e_ cell_reserved_for_oper_crs_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PLMN-IdentityList-r15 ::= SEQUENCE (SIZE (1..maxPLMN-r11)) OF PLMN-IdentityInfo-r15 typedef dyn_array plmn_id_list_r15_l; // PosSchedulingInfo-r15 ::= SEQUENCE struct pos_sched_info_r15_s { struct pos_si_periodicity_r15_e_ { enum options { rf8, rf16, rf32, rf64, rf128, rf256, rf512 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 7, nof_exts = 0; static const bool has_ext = false; // enumerated methods pos_si_periodicity_r15_e_() {} pos_si_periodicity_r15_e_(options v) : value(v) {} pos_si_periodicity_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables pos_si_periodicity_r15_e_ pos_si_periodicity_r15; pos_sib_map_info_r15_l pos_sib_map_info_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellAccessRelatedInfo-5GC-r15 ::= SEQUENCE struct cell_access_related_info_minus5_gc_r15_s { // member variables bool ran_area_code_r15_present; plmn_id_list_r15_l plmn_id_list_r15; uint8_t ran_area_code_r15; fixed_bitstring<24> tac_minus5_gc_r15; cell_id_minus5_gc_r15_c cell_id_minus5_gc_r15; // sequence methods cell_access_related_info_minus5_gc_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellSelectionInfoCE-v1530 ::= SEQUENCE struct cell_sel_info_ce_v1530_s { struct pwr_class14dbm_offset_r15_e_ { enum options { db_minus6, db_minus3, db3, db6, db9, db12 }; typedef int8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods pwr_class14dbm_offset_r15_e_() {} pwr_class14dbm_offset_r15_e_(options v) : value(v) {} pwr_class14dbm_offset_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; // member variables pwr_class14dbm_offset_r15_e_ pwr_class14dbm_offset_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MCS-PSSCH-Range-r15 ::= SEQUENCE struct mcs_pssch_range_r15_s { // member variables uint8_t min_mcs_pssch_r15; uint8_t max_mcs_pssch_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PLMN-IdentityInfo ::= SEQUENCE struct plmn_id_info_s { struct cell_reserved_for_oper_e_ { enum options { reserved, not_reserved }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods cell_reserved_for_oper_e_() {} cell_reserved_for_oper_e_(options v) : value(v) {} cell_reserved_for_oper_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables plmn_id_s plmn_id; cell_reserved_for_oper_e_ cell_reserved_for_oper; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PLMN-IdentityList-v1530 ::= SEQUENCE (SIZE (1..maxPLMN-r11)) OF PLMN-IdentityInfo-v1530 typedef dyn_array plmn_id_list_v1530_l; // PosSchedulingInfoList-r15 ::= SEQUENCE (SIZE (1..maxSI-Message)) OF PosSchedulingInfo-r15 typedef dyn_array pos_sched_info_list_r15_l; // SL-PriorityList-r13 ::= SEQUENCE (SIZE (1..maxSL-Prio-r13)) OF INTEGER typedef bounded_array sl_prio_list_r13_l; // SL-TxPower-r14 ::= CHOICE struct sl_tx_pwr_r14_c { struct types { enum options { minusinfinity_r14, tx_pwr_r14, nulltype }; typedef int8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; // choice methods sl_tx_pwr_r14_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters int8_t& tx_pwr_r14() { assert_choice_type("txPower-r14", type_.to_string(), "SL-TxPower-r14"); return c; } const int8_t& tx_pwr_r14() const { assert_choice_type("txPower-r14", type_.to_string(), "SL-TxPower-r14"); return c; } private: types type_; int8_t c; }; // Alpha-r12 ::= ENUMERATED struct alpha_r12_e { enum options { al0, al04, al05, al06, al07, al08, al09, al1 }; typedef float number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods alpha_r12_e() {} alpha_r12_e(options v) : value(v) {} alpha_r12_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; // PLMN-IdentityList ::= SEQUENCE (SIZE (1..maxPLMN-r11)) OF PLMN-IdentityInfo typedef dyn_array plmn_id_list_l; // SL-MinT2Value-r15 ::= SEQUENCE struct sl_min_t2_value_r15_s { // member variables sl_prio_list_r13_l prio_list_r15; uint8_t min_t2_value_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-PPPP-TxConfigIndex-r14 ::= SEQUENCE struct sl_pppp_tx_cfg_idx_r14_s { typedef bounded_array tx_cfg_idx_list_r14_l_; // member variables uint8_t prio_thres_r14; uint8_t default_tx_cfg_idx_r14; uint8_t cbr_cfg_idx_r14; tx_cfg_idx_list_r14_l_ tx_cfg_idx_list_r14; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-PPPP-TxConfigIndex-v1530 ::= SEQUENCE struct sl_pppp_tx_cfg_idx_v1530_s { typedef dyn_array mcs_pssch_range_list_r15_l_; // member variables bool mcs_pssch_range_list_r15_present; mcs_pssch_range_list_r15_l_ mcs_pssch_range_list_r15; // sequence methods sl_pppp_tx_cfg_idx_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-PSSCH-TxParameters-r14 ::= SEQUENCE struct sl_pssch_tx_params_r14_s { struct allowed_retx_num_pssch_r14_e_ { enum options { n0, n1, both, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods allowed_retx_num_pssch_r14_e_() {} allowed_retx_num_pssch_r14_e_(options v) : value(v) {} allowed_retx_num_pssch_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool max_tx_pwr_r14_present; uint8_t min_mcs_pssch_r14; uint8_t max_mcs_pssch_r14; uint8_t min_sub_ch_num_pssch_r14; uint8_t max_subch_num_pssch_r14; allowed_retx_num_pssch_r14_e_ allowed_retx_num_pssch_r14; sl_tx_pwr_r14_c max_tx_pwr_r14; // sequence methods sl_pssch_tx_params_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-PSSCH-TxParameters-v1530 ::= SEQUENCE struct sl_pssch_tx_params_v1530_s { // member variables uint8_t min_mcs_pssch_r15; uint8_t max_mcs_pssch_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-RestrictResourceReservationPeriod-r14 ::= ENUMERATED struct sl_restrict_res_reserv_period_r14_e { enum options { v0dot2, v0dot5, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, spare4, spare3, spare2, spare1 }; typedef float number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods sl_restrict_res_reserv_period_r14_e() {} sl_restrict_res_reserv_period_r14_e(options v) : value(v) {} sl_restrict_res_reserv_period_r14_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; // SL-TypeTxSync-r14 ::= ENUMERATED struct sl_type_tx_sync_r14_e { enum options { gnss, enb, ue }; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods sl_type_tx_sync_r14_e() {} sl_type_tx_sync_r14_e(options v) : value(v) {} sl_type_tx_sync_r14_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // SystemInformationBlockType1-v1530-IEs ::= SEQUENCE struct sib_type1_v1530_ies_s { struct crs_intf_mitig_cfg_r15_c_ { struct crs_intf_mitig_num_prbs_r15_e_ { enum options { n6, n24 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods crs_intf_mitig_num_prbs_r15_e_() {} crs_intf_mitig_num_prbs_r15_e_(options v) : value(v) {} crs_intf_mitig_num_prbs_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct types { enum options { crs_intf_mitig_enabled_minus15, crs_intf_mitig_num_prbs_r15, nulltype }; typedef int8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; // choice methods crs_intf_mitig_cfg_r15_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters crs_intf_mitig_num_prbs_r15_e_& crs_intf_mitig_num_prbs_r15() { assert_choice_type("crs-IntfMitigNumPRBs-r15", type_.to_string(), "crs-IntfMitigConfig-r15"); return c; } const crs_intf_mitig_num_prbs_r15_e_& crs_intf_mitig_num_prbs_r15() const { assert_choice_type("crs-IntfMitigNumPRBs-r15", type_.to_string(), "crs-IntfMitigConfig-r15"); return c; } private: types type_; crs_intf_mitig_num_prbs_r15_e_ c; }; struct cell_barred_crs_r15_e_ { enum options { barred, not_barred }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods cell_barred_crs_r15_e_() {} cell_barred_crs_r15_e_(options v) : value(v) {} cell_barred_crs_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct cell_access_related_info_minus5_gc_r15_s_ { struct cell_barred_minus5_gc_r15_e_ { enum options { barred, not_barred }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods cell_barred_minus5_gc_r15_e_() {} cell_barred_minus5_gc_r15_e_(options v) : value(v) {} cell_barred_minus5_gc_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct cell_barred_minus5_gc_crs_r15_e_ { enum options { barred, not_barred }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods cell_barred_minus5_gc_crs_r15_e_() {} cell_barred_minus5_gc_crs_r15_e_(options v) : value(v) {} cell_barred_minus5_gc_crs_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; typedef dyn_array cell_access_related_info_list_minus5_gc_r15_l_; // member variables cell_barred_minus5_gc_r15_e_ cell_barred_minus5_gc_r15; cell_barred_minus5_gc_crs_r15_e_ cell_barred_minus5_gc_crs_r15; cell_access_related_info_list_minus5_gc_r15_l_ cell_access_related_info_list_minus5_gc_r15; }; // member variables bool hsdn_cell_r15_present; bool cell_sel_info_ce_v1530_present; bool crs_intf_mitig_cfg_r15_present; bool plmn_id_list_v1530_present; bool pos_sched_info_list_r15_present; bool cell_access_related_info_minus5_gc_r15_present; bool ims_emergency_support5_gc_r15_present; bool e_call_over_ims_support5_gc_r15_present; bool non_crit_ext_present; cell_sel_info_ce_v1530_s cell_sel_info_ce_v1530; crs_intf_mitig_cfg_r15_c_ crs_intf_mitig_cfg_r15; cell_barred_crs_r15_e_ cell_barred_crs_r15; plmn_id_list_v1530_l plmn_id_list_v1530; pos_sched_info_list_r15_l pos_sched_info_list_r15; cell_access_related_info_minus5_gc_r15_s_ cell_access_related_info_minus5_gc_r15; // sequence methods sib_type1_v1530_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // TDD-Config-v1450 ::= SEQUENCE struct tdd_cfg_v1450_s { // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellAccessRelatedInfo-r14 ::= SEQUENCE struct cell_access_related_info_r14_s { // member variables plmn_id_list_l plmn_id_list_r14; fixed_bitstring<16> tac_r14; fixed_bitstring<28> cell_id_r14; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellSelectionInfoCE1-v1360 ::= SEQUENCE struct cell_sel_info_ce1_v1360_s { // member variables int8_t delta_rx_lev_min_ce1_v1360; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // NS-PmaxValue-v10l0 ::= SEQUENCE struct ns_pmax_value_v10l0_s { // member variables bool add_spec_emission_v10l0_present; uint16_t add_spec_emission_v10l0; // sequence methods ns_pmax_value_v10l0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-CBR-PPPP-TxConfigList-r14 ::= SEQUENCE (SIZE (1..8)) OF SL-PPPP-TxConfigIndex-r14 typedef dyn_array sl_cbr_pppp_tx_cfg_list_r14_l; // SL-CBR-PPPP-TxConfigList-v1530 ::= SEQUENCE (SIZE (1..8)) OF SL-PPPP-TxConfigIndex-v1530 typedef dyn_array sl_cbr_pppp_tx_cfg_list_v1530_l; // SL-CP-Len-r12 ::= ENUMERATED struct sl_cp_len_r12_e { enum options { normal, extended }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods sl_cp_len_r12_e() {} sl_cp_len_r12_e(options v) : value(v) {} sl_cp_len_r12_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // SL-MinT2ValueList-r15 ::= SEQUENCE (SIZE (1..maxSL-Prio-r13)) OF SL-MinT2Value-r15 typedef dyn_array sl_min_t2_value_list_r15_l; // SL-OffsetIndicator-r12 ::= CHOICE struct sl_offset_ind_r12_c { struct types { enum options { small_r12, large_r12, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods sl_offset_ind_r12_c() : type_(types::nulltype) {} sl_offset_ind_r12_c(const sl_offset_ind_r12_c& other); sl_offset_ind_r12_c& operator=(const sl_offset_ind_r12_c& other); ~sl_offset_ind_r12_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint16_t& small_r12() { assert_choice_type("small-r12", type_.to_string(), "SL-OffsetIndicator-r12"); return c.get(); } uint16_t& large_r12() { assert_choice_type("large-r12", type_.to_string(), "SL-OffsetIndicator-r12"); return c.get(); } const uint16_t& small_r12() const { assert_choice_type("small-r12", type_.to_string(), "SL-OffsetIndicator-r12"); return c.get(); } const uint16_t& large_r12() const { assert_choice_type("large-r12", type_.to_string(), "SL-OffsetIndicator-r12"); return c.get(); } private: types type_; choice_buffer_t<8> c; void destroy_(); }; // SL-P2X-ResourceSelectionConfig-r14 ::= SEQUENCE struct sl_p2_x_res_sel_cfg_r14_s { // member variables bool partial_sensing_r14_present; bool random_sel_r14_present; // sequence methods sl_p2_x_res_sel_cfg_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-PSSCH-TxConfig-r14 ::= SEQUENCE struct sl_pssch_tx_cfg_r14_s { struct thres_ue_speed_r14_e_ { enum options { kmph60, kmph80, kmph100, kmph120, kmph140, kmph160, kmph180, kmph200 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods thres_ue_speed_r14_e_() {} thres_ue_speed_r14_e_(options v) : value(v) {} thres_ue_speed_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ext; bool type_tx_sync_r14_present; sl_type_tx_sync_r14_e type_tx_sync_r14; thres_ue_speed_r14_e_ thres_ue_speed_r14; sl_pssch_tx_params_r14_s params_above_thres_r14; sl_pssch_tx_params_r14_s params_below_thres_r14; // ... // group 0 bool params_above_thres_v1530_present; bool params_below_thres_v1530_present; copy_ptr params_above_thres_v1530; copy_ptr params_below_thres_v1530; // sequence methods sl_pssch_tx_cfg_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-RestrictResourceReservationPeriodList-r14 ::= SEQUENCE (SIZE (1..maxReservationPeriod-r14)) OF // SL-RestrictResourceReservationPeriod-r14 typedef bounded_array sl_restrict_res_reserv_period_list_r14_l; // SL-SyncAllowed-r14 ::= SEQUENCE struct sl_sync_allowed_r14_s { // member variables bool gnss_sync_r14_present; bool enb_sync_r14_present; bool ue_sync_r14_present; // sequence methods sl_sync_allowed_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-TxParameters-r12 ::= SEQUENCE struct sl_tx_params_r12_s { // member variables alpha_r12_e alpha_r12; int8_t p0_r12; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SubframeBitmapSL-r12 ::= CHOICE struct sf_bitmap_sl_r12_c { struct types { enum options { bs4_r12, bs8_r12, bs12_r12, bs16_r12, bs30_r12, bs40_r12, bs42_r12, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 7, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods sf_bitmap_sl_r12_c() : type_(types::nulltype) {} sf_bitmap_sl_r12_c(const sf_bitmap_sl_r12_c& other); sf_bitmap_sl_r12_c& operator=(const sf_bitmap_sl_r12_c& other); ~sf_bitmap_sl_r12_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<4>& bs4_r12() { assert_choice_type("bs4-r12", type_.to_string(), "SubframeBitmapSL-r12"); return c.get >(); } fixed_bitstring<8>& bs8_r12() { assert_choice_type("bs8-r12", type_.to_string(), "SubframeBitmapSL-r12"); return c.get >(); } fixed_bitstring<12>& bs12_r12() { assert_choice_type("bs12-r12", type_.to_string(), "SubframeBitmapSL-r12"); return c.get >(); } fixed_bitstring<16>& bs16_r12() { assert_choice_type("bs16-r12", type_.to_string(), "SubframeBitmapSL-r12"); return c.get >(); } fixed_bitstring<30>& bs30_r12() { assert_choice_type("bs30-r12", type_.to_string(), "SubframeBitmapSL-r12"); return c.get >(); } fixed_bitstring<40>& bs40_r12() { assert_choice_type("bs40-r12", type_.to_string(), "SubframeBitmapSL-r12"); return c.get >(); } fixed_bitstring<42>& bs42_r12() { assert_choice_type("bs42-r12", type_.to_string(), "SubframeBitmapSL-r12"); return c.get >(); } const fixed_bitstring<4>& bs4_r12() const { assert_choice_type("bs4-r12", type_.to_string(), "SubframeBitmapSL-r12"); return c.get >(); } const fixed_bitstring<8>& bs8_r12() const { assert_choice_type("bs8-r12", type_.to_string(), "SubframeBitmapSL-r12"); return c.get >(); } const fixed_bitstring<12>& bs12_r12() const { assert_choice_type("bs12-r12", type_.to_string(), "SubframeBitmapSL-r12"); return c.get >(); } const fixed_bitstring<16>& bs16_r12() const { assert_choice_type("bs16-r12", type_.to_string(), "SubframeBitmapSL-r12"); return c.get >(); } const fixed_bitstring<30>& bs30_r12() const { assert_choice_type("bs30-r12", type_.to_string(), "SubframeBitmapSL-r12"); return c.get >(); } const fixed_bitstring<40>& bs40_r12() const { assert_choice_type("bs40-r12", type_.to_string(), "SubframeBitmapSL-r12"); return c.get >(); } const fixed_bitstring<42>& bs42_r12() const { assert_choice_type("bs42-r12", type_.to_string(), "SubframeBitmapSL-r12"); return c.get >(); } private: types type_; choice_buffer_t)> c; void destroy_(); }; // SubframeBitmapSL-r14 ::= CHOICE struct sf_bitmap_sl_r14_c { struct types { enum options { bs10_r14, bs16_r14, bs20_r14, bs30_r14, bs40_r14, bs50_r14, bs60_r14, bs100_r14, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods sf_bitmap_sl_r14_c() : type_(types::nulltype) {} sf_bitmap_sl_r14_c(const sf_bitmap_sl_r14_c& other); sf_bitmap_sl_r14_c& operator=(const sf_bitmap_sl_r14_c& other); ~sf_bitmap_sl_r14_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<10>& bs10_r14() { assert_choice_type("bs10-r14", type_.to_string(), "SubframeBitmapSL-r14"); return c.get >(); } fixed_bitstring<16>& bs16_r14() { assert_choice_type("bs16-r14", type_.to_string(), "SubframeBitmapSL-r14"); return c.get >(); } fixed_bitstring<20>& bs20_r14() { assert_choice_type("bs20-r14", type_.to_string(), "SubframeBitmapSL-r14"); return c.get >(); } fixed_bitstring<30>& bs30_r14() { assert_choice_type("bs30-r14", type_.to_string(), "SubframeBitmapSL-r14"); return c.get >(); } fixed_bitstring<40>& bs40_r14() { assert_choice_type("bs40-r14", type_.to_string(), "SubframeBitmapSL-r14"); return c.get >(); } fixed_bitstring<50>& bs50_r14() { assert_choice_type("bs50-r14", type_.to_string(), "SubframeBitmapSL-r14"); return c.get >(); } fixed_bitstring<60>& bs60_r14() { assert_choice_type("bs60-r14", type_.to_string(), "SubframeBitmapSL-r14"); return c.get >(); } fixed_bitstring<100>& bs100_r14() { assert_choice_type("bs100-r14", type_.to_string(), "SubframeBitmapSL-r14"); return c.get >(); } const fixed_bitstring<10>& bs10_r14() const { assert_choice_type("bs10-r14", type_.to_string(), "SubframeBitmapSL-r14"); return c.get >(); } const fixed_bitstring<16>& bs16_r14() const { assert_choice_type("bs16-r14", type_.to_string(), "SubframeBitmapSL-r14"); return c.get >(); } const fixed_bitstring<20>& bs20_r14() const { assert_choice_type("bs20-r14", type_.to_string(), "SubframeBitmapSL-r14"); return c.get >(); } const fixed_bitstring<30>& bs30_r14() const { assert_choice_type("bs30-r14", type_.to_string(), "SubframeBitmapSL-r14"); return c.get >(); } const fixed_bitstring<40>& bs40_r14() const { assert_choice_type("bs40-r14", type_.to_string(), "SubframeBitmapSL-r14"); return c.get >(); } const fixed_bitstring<50>& bs50_r14() const { assert_choice_type("bs50-r14", type_.to_string(), "SubframeBitmapSL-r14"); return c.get >(); } const fixed_bitstring<60>& bs60_r14() const { assert_choice_type("bs60-r14", type_.to_string(), "SubframeBitmapSL-r14"); return c.get >(); } const fixed_bitstring<100>& bs100_r14() const { assert_choice_type("bs100-r14", type_.to_string(), "SubframeBitmapSL-r14"); return c.get >(); } private: types type_; choice_buffer_t)> c; void destroy_(); }; // SystemInformationBlockType1-v1450-IEs ::= SEQUENCE struct sib_type1_v1450_ies_s { // member variables bool tdd_cfg_v1450_present; bool non_crit_ext_present; tdd_cfg_v1450_s tdd_cfg_v1450; sib_type1_v1530_ies_s non_crit_ext; // sequence methods sib_type1_v1450_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // TDD-Config ::= SEQUENCE struct tdd_cfg_s { struct sf_assign_e_ { enum options { sa0, sa1, sa2, sa3, sa4, sa5, sa6 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 7, nof_exts = 0; static const bool has_ext = false; // enumerated methods sf_assign_e_() {} sf_assign_e_(options v) : value(v) {} sf_assign_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct special_sf_patterns_e_ { enum options { ssp0, ssp1, ssp2, ssp3, ssp4, ssp5, ssp6, ssp7, ssp8 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 9, nof_exts = 0; static const bool has_ext = false; // enumerated methods special_sf_patterns_e_() {} special_sf_patterns_e_(options v) : value(v) {} special_sf_patterns_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables sf_assign_e_ sf_assign; special_sf_patterns_e_ special_sf_patterns; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // TDD-Config-v1430 ::= SEQUENCE struct tdd_cfg_v1430_s { // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandclassCDMA2000 ::= ENUMERATED struct bandclass_cdma2000_e { enum options { bc0, bc1, bc2, bc3, bc4, bc5, bc6, bc7, bc8, bc9, bc10, bc11, bc12, bc13, bc14, bc15, bc16, bc17, bc18_v9a0, bc19_v9a0, bc20_v9a0, bc21_v9a0, spare10, spare9, spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1, // ... }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 32, nof_exts = 0; static const bool has_ext = true; // enumerated methods bandclass_cdma2000_e() {} bandclass_cdma2000_e(options v) : value(v) {} bandclass_cdma2000_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // InterFreqCarrierFreqInfo-v1360 ::= SEQUENCE struct inter_freq_carrier_freq_info_v1360_s { // member variables bool cell_sel_info_ce1_v1360_present; cell_sel_info_ce1_v1360_s cell_sel_info_ce1_v1360; // sequence methods inter_freq_carrier_freq_info_v1360_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // NS-PmaxList-v10l0 ::= SEQUENCE (SIZE (1..maxNS-Pmax-r10)) OF NS-PmaxValue-v10l0 typedef dyn_array ns_pmax_list_v10l0_l; // NS-PmaxValue-r10 ::= SEQUENCE struct ns_pmax_value_r10_s { // member variables bool add_pmax_r10_present; int8_t add_pmax_r10; uint8_t add_spec_emission; // sequence methods ns_pmax_value_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PhysCellIdList-r13 ::= SEQUENCE (SIZE (1.. maxSL-DiscCells-r13)) OF INTEGER typedef bounded_array pci_list_r13_l; // SL-CommResourcePoolV2X-r14 ::= SEQUENCE struct sl_comm_res_pool_v2x_r14_s { struct size_subch_r14_e_ { enum options { n4, n5, n6, n8, n9, n10, n12, n15, n16, n18, n20, n25, n30, n48, n50, n72, n75, n96, n100, spare13, spare12, spare11, spare10, spare9, spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 32, nof_exts = 0; static const bool has_ext = false; // enumerated methods size_subch_r14_e_() {} size_subch_r14_e_(options v) : value(v) {} size_subch_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct num_subch_r14_e_ { enum options { n1, n3, n5, n8, n10, n15, n20, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods num_subch_r14_e_() {} num_subch_r14_e_(options v) : value(v) {} num_subch_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct rx_params_ncell_r14_s_ { // member variables bool tdd_cfg_r14_present; tdd_cfg_s tdd_cfg_r14; uint8_t sync_cfg_idx_r14; // sequence methods rx_params_ncell_r14_s_(); }; // member variables bool ext; bool sl_offset_ind_r14_present; bool start_rb_pscch_pool_r14_present; bool rx_params_ncell_r14_present; bool data_tx_params_r14_present; bool zone_id_r14_present; bool thresh_s_rssi_cbr_r14_present; bool pool_report_id_r14_present; bool cbr_pssch_tx_cfg_list_r14_present; bool res_sel_cfg_p2_x_r14_present; bool sync_allowed_r14_present; bool restrict_res_reserv_period_r14_present; sl_offset_ind_r12_c sl_offset_ind_r14; sf_bitmap_sl_r14_c sl_sf_r14; bool adjacency_pscch_pssch_r14; size_subch_r14_e_ size_subch_r14; num_subch_r14_e_ num_subch_r14; uint8_t start_rb_subch_r14; uint8_t start_rb_pscch_pool_r14; rx_params_ncell_r14_s_ rx_params_ncell_r14; sl_tx_params_r12_s data_tx_params_r14; uint8_t zone_id_r14; uint8_t thresh_s_rssi_cbr_r14; uint8_t pool_report_id_r14; sl_cbr_pppp_tx_cfg_list_r14_l cbr_pssch_tx_cfg_list_r14; sl_p2_x_res_sel_cfg_r14_s res_sel_cfg_p2_x_r14; sl_sync_allowed_r14_s sync_allowed_r14; sl_restrict_res_reserv_period_list_r14_l restrict_res_reserv_period_r14; // ... // group 0 bool sl_min_t2_value_list_r15_present; bool cbr_pssch_tx_cfg_list_v1530_present; copy_ptr sl_min_t2_value_list_r15; copy_ptr cbr_pssch_tx_cfg_list_v1530; // sequence methods sl_comm_res_pool_v2x_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-PSSCH-TxConfigList-r14 ::= SEQUENCE (SIZE (1..maxPSSCH-TxConfig-r14)) OF SL-PSSCH-TxConfig-r14 typedef dyn_array sl_pssch_tx_cfg_list_r14_l; // SL-PoolSelectionConfig-r12 ::= SEQUENCE struct sl_pool_sel_cfg_r12_s { // member variables uint8_t thresh_low_r12; uint8_t thresh_high_r12; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-SyncConfigNFreq-r13 ::= SEQUENCE struct sl_sync_cfg_nfreq_r13_s { struct async_params_r13_s_ { // member variables sl_cp_len_r12_e sync_cp_len_r13; uint8_t sync_offset_ind_r13; uint8_t slssid_r13; }; struct tx_params_r13_s_ { // member variables bool sync_info_reserved_r13_present; bool sync_tx_periodic_r13_present; sl_tx_params_r12_s sync_tx_params_r13; uint8_t sync_tx_thresh_ic_r13; fixed_bitstring<19> sync_info_reserved_r13; // sequence methods tx_params_r13_s_(); }; struct rx_params_r13_s_ { struct disc_sync_win_r13_e_ { enum options { w1, w2 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods disc_sync_win_r13_e_() {} disc_sync_win_r13_e_(options v) : value(v) {} disc_sync_win_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables disc_sync_win_r13_e_ disc_sync_win_r13; }; // member variables bool ext; bool async_params_r13_present; bool tx_params_r13_present; bool rx_params_r13_present; async_params_r13_s_ async_params_r13; tx_params_r13_s_ tx_params_r13; rx_params_r13_s_ rx_params_r13; // ... // group 0 bool sync_offset_ind_v1430_present; bool gnss_sync_r14_present; uint8_t sync_offset_ind_v1430; // group 1 bool sync_offset_ind2_r14_present; bool sync_offset_ind3_r14_present; uint8_t sync_offset_ind2_r14; uint8_t sync_offset_ind3_r14; // group 2 bool slss_tx_disabled_r15_present; // sequence methods sl_sync_cfg_nfreq_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-TF-ResourceConfig-r12 ::= SEQUENCE struct sl_tf_res_cfg_r12_s { // member variables uint8_t prb_num_r12; uint8_t prb_start_r12; uint8_t prb_end_r12; sl_offset_ind_r12_c offset_ind_r12; sf_bitmap_sl_r12_c sf_bitmap_r12; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-ThresPSSCH-RSRP-List-r14 ::= SEQUENCE (SIZE (64)) OF INTEGER typedef fixed_array sl_thres_pssch_rsrp_list_r14_l; // SystemInformationBlockType1-v1430-IEs ::= SEQUENCE struct sib_type1_v1430_ies_s { typedef dyn_array cell_access_related_info_list_r14_l_; // member variables bool e_call_over_ims_support_r14_present; bool tdd_cfg_v1430_present; bool cell_access_related_info_list_r14_present; bool non_crit_ext_present; tdd_cfg_v1430_s tdd_cfg_v1430; cell_access_related_info_list_r14_l_ cell_access_related_info_list_r14; sib_type1_v1450_ies_s non_crit_ext; // sequence methods sib_type1_v1430_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // TDD-Config-v1130 ::= SEQUENCE struct tdd_cfg_v1130_s { struct special_sf_patterns_v1130_e_ { enum options { ssp7, ssp9 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods special_sf_patterns_v1130_e_() {} special_sf_patterns_v1130_e_(options v) : value(v) {} special_sf_patterns_v1130_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables special_sf_patterns_v1130_e_ special_sf_patterns_v1130; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandClassInfoCDMA2000 ::= SEQUENCE struct band_class_info_cdma2000_s { // member variables bool ext; bool cell_resel_prio_present; bandclass_cdma2000_e band_class; uint8_t cell_resel_prio; uint8_t thresh_x_high; uint8_t thresh_x_low; // ... // sequence methods band_class_info_cdma2000_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellSelectionInfoCE1-r13 ::= SEQUENCE struct cell_sel_info_ce1_r13_s { // member variables bool q_qual_min_rsrq_ce1_r13_present; int8_t q_rx_lev_min_ce1_r13; int8_t q_qual_min_rsrq_ce1_r13; // sequence methods cell_sel_info_ce1_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // InterFreqCarrierFreqList-v13a0 ::= SEQUENCE (SIZE (1.. maxFreq)) OF InterFreqCarrierFreqInfo-v1360 typedef dyn_array inter_freq_carrier_freq_list_v13a0_l; // MultiBandInfoList-v10l0 ::= SEQUENCE (SIZE (1..maxMultiBands)) OF NS-PmaxList-v10l0 typedef dyn_array multi_band_info_list_v10l0_l; // NS-PmaxList-r10 ::= SEQUENCE (SIZE (1..maxNS-Pmax-r10)) OF NS-PmaxValue-r10 typedef dyn_array ns_pmax_list_r10_l; // NeighCellsPerBandclassCDMA2000-r11 ::= SEQUENCE struct neigh_cells_per_bandclass_cdma2000_r11_s { typedef dyn_array pci_list_r11_l_; // member variables uint16_t arfcn; pci_list_r11_l_ pci_list_r11; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PhysCellIdListCDMA2000 ::= SEQUENCE (SIZE (1..16)) OF INTEGER typedef bounded_array pci_list_cdma2000_l; // PhysCellIdListCDMA2000-v920 ::= SEQUENCE (SIZE (0..24)) OF INTEGER typedef bounded_array pci_list_cdma2000_v920_l; // SL-CommRxPoolListV2X-r14 ::= SEQUENCE (SIZE (1..maxSL-V2X-RxPool-r14)) OF SL-CommResourcePoolV2X-r14 typedef dyn_array sl_comm_rx_pool_list_v2x_r14_l; // SL-CommTxPoolListV2X-r14 ::= SEQUENCE (SIZE (1..maxSL-V2X-TxPool-r14)) OF SL-CommResourcePoolV2X-r14 typedef dyn_array sl_comm_tx_pool_list_v2x_r14_l; // SL-CommTxPoolSensingConfig-r14 ::= SEQUENCE struct sl_comm_tx_pool_sensing_cfg_r14_s { struct prob_res_keep_r14_e_ { enum options { v0, v0dot2, v0dot4, v0dot6, v0dot8, spare3, spare2, spare1 }; typedef float number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods prob_res_keep_r14_e_() {} prob_res_keep_r14_e_(options v) : value(v) {} prob_res_keep_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; struct p2x_sensing_cfg_r14_s_ { // member variables uint8_t min_num_candidate_sf_r14; fixed_bitstring<10> gap_candidate_sensing_r14; }; struct sl_reselect_after_r14_e_ { enum options { n1, n2, n3, n4, n5, n6, n7, n8, n9, spare7, spare6, spare5, spare4, spare3, spare2, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods sl_reselect_after_r14_e_() {} sl_reselect_after_r14_e_(options v) : value(v) {} sl_reselect_after_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool restrict_res_reserv_period_r14_present; bool p2x_sensing_cfg_r14_present; bool sl_reselect_after_r14_present; sl_pssch_tx_cfg_list_r14_l pssch_tx_cfg_list_r14; copy_ptr thres_pssch_rsrp_list_r14; sl_restrict_res_reserv_period_list_r14_l restrict_res_reserv_period_r14; prob_res_keep_r14_e_ prob_res_keep_r14; p2x_sensing_cfg_r14_s_ p2x_sensing_cfg_r14; sl_reselect_after_r14_e_ sl_reselect_after_r14; // sequence methods sl_comm_tx_pool_sensing_cfg_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; struct setup_e { enum options { release, setup, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods setup_e() {} setup_e(options v) : value(v) {} setup_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // SL-DiscResourcePool-r12 ::= SEQUENCE struct sl_disc_res_pool_r12_s { struct disc_period_r12_e_ { enum options { rf32, rf64, rf128, rf256, rf512, rf1024, rf16_v1310, spare }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods disc_period_r12_e_() {} disc_period_r12_e_(options v) : value(v) {} disc_period_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct tx_params_r12_s_ { struct ue_sel_res_cfg_r12_s_ { struct pool_sel_r12_c_ { struct types { enum options { rsrp_based_r12, random_r12, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods pool_sel_r12_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters sl_pool_sel_cfg_r12_s& rsrp_based_r12() { assert_choice_type("rsrpBased-r12", type_.to_string(), "poolSelection-r12"); return c; } const sl_pool_sel_cfg_r12_s& rsrp_based_r12() const { assert_choice_type("rsrpBased-r12", type_.to_string(), "poolSelection-r12"); return c; } private: types type_; sl_pool_sel_cfg_r12_s c; }; struct tx_probability_r12_e_ { enum options { p25, p50, p75, p100 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods tx_probability_r12_e_() {} tx_probability_r12_e_(options v) : value(v) {} tx_probability_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables pool_sel_r12_c_ pool_sel_r12; tx_probability_r12_e_ tx_probability_r12; }; // member variables bool ue_sel_res_cfg_r12_present; sl_tx_params_r12_s tx_params_general_r12; ue_sel_res_cfg_r12_s_ ue_sel_res_cfg_r12; // sequence methods tx_params_r12_s_(); }; struct rx_params_r12_s_ { // member variables bool tdd_cfg_r12_present; tdd_cfg_s tdd_cfg_r12; uint8_t sync_cfg_idx_r12; // sequence methods rx_params_r12_s_(); }; struct disc_period_v1310_c_ { struct setup_e_ { enum options { rf4, rf6, rf7, rf8, rf12, rf14, rf24, rf28 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods setup_e_() {} setup_e_(options v) : value(v) {} setup_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; typedef setup_e types; // choice methods disc_period_v1310_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_e_& setup() { assert_choice_type("setup", type_.to_string(), "discPeriod-v1310"); return c; } const setup_e_& setup() const { assert_choice_type("setup", type_.to_string(), "discPeriod-v1310"); return c; } private: types type_; setup_e_ c; }; struct rx_params_add_neigh_freq_r13_c_ { struct setup_s_ { // member variables pci_list_r13_l pci_r13; }; typedef setup_e types; // choice methods rx_params_add_neigh_freq_r13_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "rxParamsAddNeighFreq-r13"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "rxParamsAddNeighFreq-r13"); return c; } private: types type_; setup_s_ c; }; struct tx_params_add_neigh_freq_r13_c_ { struct setup_s_ { struct freq_info_s_ { struct ul_bw_e_ { enum options { n6, n15, n25, n50, n75, n100 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods ul_bw_e_() {} ul_bw_e_(options v) : value(v) {} ul_bw_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ul_carrier_freq_present; bool ul_bw_present; uint16_t ul_carrier_freq; ul_bw_e_ ul_bw; uint8_t add_spec_emission; // sequence methods freq_info_s_(); }; // member variables bool p_max_present; bool tdd_cfg_r13_present; bool tdd_cfg_v1130_present; bool sync_cfg_idx_r13_present; pci_list_r13_l pci_r13; int8_t p_max; tdd_cfg_s tdd_cfg_r13; tdd_cfg_v1130_s tdd_cfg_v1130; freq_info_s_ freq_info; int8_t ref_sig_pwr; uint8_t sync_cfg_idx_r13; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods tx_params_add_neigh_freq_r13_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "txParamsAddNeighFreq-r13"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "txParamsAddNeighFreq-r13"); return c; } private: types type_; setup_s_ c; }; struct tx_params_add_neigh_freq_v1370_c_ { struct setup_s_ { struct freq_info_v1370_s_ { // member variables uint16_t add_spec_emission_v1370; }; // member variables freq_info_v1370_s_ freq_info_v1370; }; typedef setup_e types; // choice methods tx_params_add_neigh_freq_v1370_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "txParamsAddNeighFreq-v1370"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "txParamsAddNeighFreq-v1370"); return c; } private: types type_; setup_s_ c; }; // member variables bool ext; bool tx_params_r12_present; bool rx_params_r12_present; sl_cp_len_r12_e cp_len_r12; disc_period_r12_e_ disc_period_r12; uint8_t num_retx_r12; uint8_t num_repeat_r12; sl_tf_res_cfg_r12_s tf_res_cfg_r12; tx_params_r12_s_ tx_params_r12; rx_params_r12_s_ rx_params_r12; // ... // group 0 bool disc_period_v1310_present; bool rx_params_add_neigh_freq_r13_present; bool tx_params_add_neigh_freq_r13_present; copy_ptr disc_period_v1310; copy_ptr rx_params_add_neigh_freq_r13; copy_ptr tx_params_add_neigh_freq_r13; // group 1 bool tx_params_add_neigh_freq_v1370_present; copy_ptr tx_params_add_neigh_freq_v1370; // sequence methods sl_disc_res_pool_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-SyncConfigListNFreqV2X-r14 ::= SEQUENCE (SIZE (1..maxSL-V2X-SyncConfig-r14)) OF SL-SyncConfigNFreq-r13 typedef dyn_array sl_sync_cfg_list_nfreq_v2x_r14_l; // SL-ZoneConfig-r14 ::= SEQUENCE struct sl_zone_cfg_r14_s { struct zone_len_r14_e_ { enum options { m5, m10, m20, m50, m100, m200, m500, spare1 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods zone_len_r14_e_() {} zone_len_r14_e_(options v) : value(v) {} zone_len_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct zone_width_r14_e_ { enum options { m5, m10, m20, m50, m100, m200, m500, spare1 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods zone_width_r14_e_() {} zone_width_r14_e_(options v) : value(v) {} zone_width_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables zone_len_r14_e_ zone_len_r14; zone_width_r14_e_ zone_width_r14; uint8_t zone_id_longi_mod_r14; uint8_t zone_id_lati_mod_r14; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType1-v1360-IEs ::= SEQUENCE struct sib_type1_v1360_ies_s { // member variables bool cell_sel_info_ce1_v1360_present; bool non_crit_ext_present; cell_sel_info_ce1_v1360_s cell_sel_info_ce1_v1360; sib_type1_v1430_ies_s non_crit_ext; // sequence methods sib_type1_v1360_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandClassListCDMA2000 ::= SEQUENCE (SIZE (1..maxCDMA-BandClass)) OF BandClassInfoCDMA2000 typedef dyn_array band_class_list_cdma2000_l; // InterFreqCarrierFreqInfo-v10l0 ::= SEQUENCE struct inter_freq_carrier_freq_info_v10l0_s { // member variables bool freq_band_info_v10l0_present; bool multi_band_info_list_v10l0_present; ns_pmax_list_v10l0_l freq_band_info_v10l0; multi_band_info_list_v10l0_l multi_band_info_list_v10l0; // sequence methods inter_freq_carrier_freq_info_v10l0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MultiBandInfo-v9e0 ::= SEQUENCE struct multi_band_info_v9e0_s { // member variables bool freq_band_ind_v9e0_present; uint16_t freq_band_ind_v9e0; // sequence methods multi_band_info_v9e0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MultiBandInfoList-v10j0 ::= SEQUENCE (SIZE (1..maxMultiBands)) OF NS-PmaxList-r10 typedef dyn_array multi_band_info_list_v10j0_l; // NeighCellCDMA2000-r11 ::= SEQUENCE struct neigh_cell_cdma2000_r11_s { typedef dyn_array neigh_freq_info_list_r11_l_; // member variables bandclass_cdma2000_e band_class; neigh_freq_info_list_r11_l_ neigh_freq_info_list_r11; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // NeighCellsPerBandclassCDMA2000 ::= SEQUENCE struct neigh_cells_per_bandclass_cdma2000_s { // member variables uint16_t arfcn; pci_list_cdma2000_l pci_list; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // NeighCellsPerBandclassCDMA2000-v920 ::= SEQUENCE struct neigh_cells_per_bandclass_cdma2000_v920_s { // member variables pci_list_cdma2000_v920_l pci_list_v920; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PhysCellIdRange ::= SEQUENCE struct pci_range_s { struct range_e_ { enum options { n4, n8, n12, n16, n24, n32, n48, n64, n84, n96, n128, n168, n252, n504, spare2, spare1 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods range_e_() {} range_e_(options v) : value(v) {} range_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool range_present; uint16_t start; range_e_ range; // sequence methods pci_range_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // Q-OffsetRange ::= ENUMERATED struct q_offset_range_e { enum options { db_minus24, db_minus22, db_minus20, db_minus18, db_minus16, db_minus14, db_minus12, db_minus10, db_minus8, db_minus6, db_minus5, db_minus4, db_minus3, db_minus2, db_minus1, db0, db1, db2, db3, db4, db5, db6, db8, db10, db12, db14, db16, db18, db20, db22, db24 }; typedef int8_t number_type; options value; static const uint32_t nof_types = 31, nof_exts = 0; static const bool has_ext = false; // enumerated methods q_offset_range_e() {} q_offset_range_e(options v) : value(v) {} q_offset_range_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; // RedistributionNeighCell-r13 ::= SEQUENCE struct redist_neigh_cell_r13_s { // member variables uint16_t pci_r13; uint8_t redist_factor_cell_r13; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-DiscTxPoolList-r12 ::= SEQUENCE (SIZE (1..maxSL-TxPool-r12)) OF SL-DiscResourcePool-r12 typedef dyn_array sl_disc_tx_pool_list_r12_l; // SL-DiscTxPowerInfo-r12 ::= SEQUENCE struct sl_disc_tx_pwr_info_r12_s { // member variables bool ext; int8_t disc_max_tx_pwr_r12; // ... // sequence methods sl_disc_tx_pwr_info_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-V2X-FreqSelectionConfig-r15 ::= SEQUENCE struct sl_v2x_freq_sel_cfg_r15_s { // member variables bool thresh_cbr_freq_resel_r15_present; bool thresh_cbr_freq_keeping_r15_present; sl_prio_list_r13_l prio_list_r15; uint8_t thresh_cbr_freq_resel_r15; uint8_t thresh_cbr_freq_keeping_r15; // sequence methods sl_v2x_freq_sel_cfg_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-V2X-InterFreqUE-Config-r14 ::= SEQUENCE struct sl_v2x_inter_freq_ue_cfg_r14_s { // member variables bool ext; bool pci_list_r14_present; bool type_tx_sync_r14_present; bool v2x_sync_cfg_r14_present; bool v2x_comm_rx_pool_r14_present; bool v2x_comm_tx_pool_normal_r14_present; bool p2x_comm_tx_pool_normal_r14_present; bool v2x_comm_tx_pool_exceptional_r14_present; bool v2x_res_sel_cfg_r14_present; bool zone_cfg_r14_present; bool offset_dfn_r14_present; pci_list_r13_l pci_list_r14; sl_type_tx_sync_r14_e type_tx_sync_r14; sl_sync_cfg_list_nfreq_v2x_r14_l v2x_sync_cfg_r14; sl_comm_rx_pool_list_v2x_r14_l v2x_comm_rx_pool_r14; sl_comm_tx_pool_list_v2x_r14_l v2x_comm_tx_pool_normal_r14; sl_comm_tx_pool_list_v2x_r14_l p2x_comm_tx_pool_normal_r14; sl_comm_res_pool_v2x_r14_s v2x_comm_tx_pool_exceptional_r14; sl_comm_tx_pool_sensing_cfg_r14_s v2x_res_sel_cfg_r14; sl_zone_cfg_r14_s zone_cfg_r14; uint16_t offset_dfn_r14; // ... // sequence methods sl_v2x_inter_freq_ue_cfg_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SchedulingInfo-BR-r13 ::= SEQUENCE struct sched_info_br_r13_s { struct si_tbs_r13_e_ { enum options { b152, b208, b256, b328, b408, b504, b600, b712, b808, b936 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 10, nof_exts = 0; static const bool has_ext = false; // enumerated methods si_tbs_r13_e_() {} si_tbs_r13_e_(options v) : value(v) {} si_tbs_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables uint8_t si_nb_r13; si_tbs_r13_e_ si_tbs_r13; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SecondaryPreRegistrationZoneIdListHRPD ::= SEQUENCE (SIZE (1..2)) OF INTEGER typedef bounded_array secondary_pre_regist_zone_id_list_hrpd_l; // SpeedStateScaleFactors ::= SEQUENCE struct speed_state_scale_factors_s { struct sf_medium_e_ { enum options { o_dot25, o_dot5, o_dot75, l_dot0 }; typedef float number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods sf_medium_e_() {} sf_medium_e_(options v) : value(v) {} sf_medium_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; struct sf_high_e_ { enum options { o_dot25, o_dot5, o_dot75, l_dot0 }; typedef float number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods sf_high_e_() {} sf_high_e_(options v) : value(v) {} sf_high_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; // member variables sf_medium_e_ sf_medium; sf_high_e_ sf_high; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType1-v1350-IEs ::= SEQUENCE struct sib_type1_v1350_ies_s { // member variables bool cell_sel_info_ce1_r13_present; bool non_crit_ext_present; cell_sel_info_ce1_r13_s cell_sel_info_ce1_r13; sib_type1_v1360_ies_s non_crit_ext; // sequence methods sib_type1_v1350_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType5-v13a0-IEs ::= SEQUENCE struct sib_type5_v13a0_ies_s { // member variables bool late_non_crit_ext_present; bool inter_freq_carrier_freq_list_v13a0_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; inter_freq_carrier_freq_list_v13a0_l inter_freq_carrier_freq_list_v13a0; // sequence methods sib_type5_v13a0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AC-BarringConfig1XRTT-r9 ::= SEQUENCE struct ac_barr_cfg1_xrtt_r9_s { // member variables uint8_t ac_barr0to9_r9; uint8_t ac_barr10_r9; uint8_t ac_barr11_r9; uint8_t ac_barr12_r9; uint8_t ac_barr13_r9; uint8_t ac_barr14_r9; uint8_t ac_barr15_r9; uint8_t ac_barr_msg_r9; uint8_t ac_barr_reg_r9; uint8_t ac_barr_emg_r9; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AllowedMeasBandwidth ::= ENUMERATED struct allowed_meas_bw_e { enum options { mbw6, mbw15, mbw25, mbw50, mbw75, mbw100 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods allowed_meas_bw_e() {} allowed_meas_bw_e(options v) : value(v) {} allowed_meas_bw_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // BandIndicatorGERAN ::= ENUMERATED struct band_ind_geran_e { enum options { dcs1800, pcs1900 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods band_ind_geran_e() {} band_ind_geran_e(options v) : value(v) {} band_ind_geran_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // BarringPerACDC-Category-r13 ::= SEQUENCE struct barr_per_acdc_category_r13_s { struct acdc_barr_cfg_r13_s_ { struct ac_barr_factor_r13_e_ { enum options { p00, p05, p10, p15, p20, p25, p30, p40, p50, p60, p70, p75, p80, p85, p90, p95 }; typedef float number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods ac_barr_factor_r13_e_() {} ac_barr_factor_r13_e_(options v) : value(v) {} ac_barr_factor_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; struct ac_barr_time_r13_e_ { enum options { s4, s8, s16, s32, s64, s128, s256, s512 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods ac_barr_time_r13_e_() {} ac_barr_time_r13_e_(options v) : value(v) {} ac_barr_time_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables ac_barr_factor_r13_e_ ac_barr_factor_r13; ac_barr_time_r13_e_ ac_barr_time_r13; }; // member variables bool acdc_barr_cfg_r13_present; uint8_t acdc_category_r13; acdc_barr_cfg_r13_s_ acdc_barr_cfg_r13; // sequence methods barr_per_acdc_category_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSFB-RegistrationParam1XRTT ::= SEQUENCE struct csfb_regist_param1_xrtt_s { // member variables fixed_bitstring<15> sid; fixed_bitstring<16> nid; bool multiple_sid; bool multiple_nid; bool home_reg; bool foreign_sid_reg; bool foreign_nid_reg; bool param_reg; bool pwr_up_reg; fixed_bitstring<7> regist_period; fixed_bitstring<12> regist_zone; fixed_bitstring<3> total_zone; fixed_bitstring<3> zone_timer; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSFB-RegistrationParam1XRTT-v920 ::= SEQUENCE struct csfb_regist_param1_xrtt_v920_s { // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellList-r15 ::= SEQUENCE (SIZE (1.. maxCellMeasIdle-r15)) OF PhysCellIdRange typedef dyn_array cell_list_r15_l; // CellReselectionParametersCDMA2000-r11 ::= SEQUENCE struct cell_resel_params_cdma2000_r11_s { typedef dyn_array neigh_cell_list_r11_l_; // member variables bool t_resel_cdma2000_sf_present; band_class_list_cdma2000_l band_class_list; neigh_cell_list_r11_l_ neigh_cell_list_r11; uint8_t t_resel_cdma2000; speed_state_scale_factors_s t_resel_cdma2000_sf; // sequence methods cell_resel_params_cdma2000_r11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellSelectionInfoCE-r13 ::= SEQUENCE struct cell_sel_info_ce_r13_s { // member variables bool q_qual_min_rsrq_ce_r13_present; int8_t q_rx_lev_min_ce_r13; int8_t q_qual_min_rsrq_ce_r13; // sequence methods cell_sel_info_ce_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellSelectionInfoNFreq-r13 ::= SEQUENCE struct cell_sel_info_nfreq_r13_s { struct q_hyst_r13_e_ { enum options { db0, db1, db2, db3, db4, db5, db6, db8, db10, db12, db14, db16, db18, db20, db22, db24 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods q_hyst_r13_e_() {} q_hyst_r13_e_(options v) : value(v) {} q_hyst_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool q_rx_lev_min_offset_present; int8_t q_rx_lev_min_r13; uint8_t q_rx_lev_min_offset; q_hyst_r13_e_ q_hyst_r13; int8_t q_rx_lev_min_resel_r13; uint8_t t_resel_eutra_r13; // sequence methods cell_sel_info_nfreq_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // ExplicitListOfARFCNs ::= SEQUENCE (SIZE (0..31)) OF INTEGER typedef bounded_array explicit_list_of_arfcns_l; // InterFreqCarrierFreqInfo-v10j0 ::= SEQUENCE struct inter_freq_carrier_freq_info_v10j0_s { // member variables bool freq_band_info_r10_present; bool multi_band_info_list_v10j0_present; ns_pmax_list_r10_l freq_band_info_r10; multi_band_info_list_v10j0_l multi_band_info_list_v10j0; // sequence methods inter_freq_carrier_freq_info_v10j0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // InterFreqNeighCellInfo ::= SEQUENCE struct inter_freq_neigh_cell_info_s { // member variables uint16_t pci; q_offset_range_e q_offset_cell; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MultiBandInfoList-v9e0 ::= SEQUENCE (SIZE (1..maxMultiBands)) OF MultiBandInfo-v9e0 typedef dyn_array multi_band_info_list_v9e0_l; // NS-PmaxValueNR-r15 ::= SEQUENCE struct ns_pmax_value_nr_r15_s { // member variables bool add_pmax_nr_r15_present; int8_t add_pmax_nr_r15; uint8_t add_spec_emission_nr_r15; // sequence methods ns_pmax_value_nr_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // NeighCellsPerBandclassListCDMA2000 ::= SEQUENCE (SIZE (1..16)) OF NeighCellsPerBandclassCDMA2000 typedef dyn_array neigh_cells_per_bandclass_list_cdma2000_l; // NeighCellsPerBandclassListCDMA2000-v920 ::= SEQUENCE (SIZE (1..16)) OF NeighCellsPerBandclassCDMA2000-v920 typedef dyn_array neigh_cells_per_bandclass_list_cdma2000_v920_l; // PLMN-IdentityInfo2-r12 ::= CHOICE struct plmn_id_info2_r12_c { struct types { enum options { plmn_idx_r12, plmn_id_r12, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods plmn_id_info2_r12_c() : type_(types::nulltype) {} plmn_id_info2_r12_c(const plmn_id_info2_r12_c& other); plmn_id_info2_r12_c& operator=(const plmn_id_info2_r12_c& other); ~plmn_id_info2_r12_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint8_t& plmn_idx_r12() { assert_choice_type("plmn-Index-r12", type_.to_string(), "PLMN-IdentityInfo2-r12"); return c.get(); } plmn_id_s& plmn_id_r12() { assert_choice_type("plmnIdentity-r12", type_.to_string(), "PLMN-IdentityInfo2-r12"); return c.get(); } const uint8_t& plmn_idx_r12() const { assert_choice_type("plmn-Index-r12", type_.to_string(), "PLMN-IdentityInfo2-r12"); return c.get(); } const plmn_id_s& plmn_id_r12() const { assert_choice_type("plmnIdentity-r12", type_.to_string(), "PLMN-IdentityInfo2-r12"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // PRACH-ParametersCE-r13 ::= SEQUENCE struct prach_params_ce_r13_s { struct prach_start_sf_r13_e_ { enum options { sf2, sf4, sf8, sf16, sf32, sf64, sf128, sf256 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods prach_start_sf_r13_e_() {} prach_start_sf_r13_e_(options v) : value(v) {} prach_start_sf_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct max_num_preamb_attempt_ce_r13_e_ { enum options { n3, n4, n5, n6, n7, n8, n10 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 7, nof_exts = 0; static const bool has_ext = false; // enumerated methods max_num_preamb_attempt_ce_r13_e_() {} max_num_preamb_attempt_ce_r13_e_(options v) : value(v) {} max_num_preamb_attempt_ce_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct num_repeat_per_preamb_attempt_r13_e_ { enum options { n1, n2, n4, n8, n16, n32, n64, n128 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods num_repeat_per_preamb_attempt_r13_e_() {} num_repeat_per_preamb_attempt_r13_e_(options v) : value(v) {} num_repeat_per_preamb_attempt_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; typedef bounded_array mpdcch_nbs_to_monitor_r13_l_; struct mpdcch_num_repeat_ra_r13_e_ { enum options { r1, r2, r4, r8, r16, r32, r64, r128, r256 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 9, nof_exts = 0; static const bool has_ext = false; // enumerated methods mpdcch_num_repeat_ra_r13_e_() {} mpdcch_num_repeat_ra_r13_e_(options v) : value(v) {} mpdcch_num_repeat_ra_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct prach_hop_cfg_r13_e_ { enum options { on, off }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods prach_hop_cfg_r13_e_() {} prach_hop_cfg_r13_e_(options v) : value(v) {} prach_hop_cfg_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool prach_start_sf_r13_present; bool max_num_preamb_attempt_ce_r13_present; uint8_t prach_cfg_idx_r13; uint8_t prach_freq_offset_r13; prach_start_sf_r13_e_ prach_start_sf_r13; max_num_preamb_attempt_ce_r13_e_ max_num_preamb_attempt_ce_r13; num_repeat_per_preamb_attempt_r13_e_ num_repeat_per_preamb_attempt_r13; mpdcch_nbs_to_monitor_r13_l_ mpdcch_nbs_to_monitor_r13; mpdcch_num_repeat_ra_r13_e_ mpdcch_num_repeat_ra_r13; prach_hop_cfg_r13_e_ prach_hop_cfg_r13; // sequence methods prach_params_ce_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PreRegistrationInfoHRPD ::= SEQUENCE struct pre_regist_info_hrpd_s { // member variables bool pre_regist_zone_id_present; bool secondary_pre_regist_zone_id_list_present; bool pre_regist_allowed; uint8_t pre_regist_zone_id; secondary_pre_regist_zone_id_list_hrpd_l secondary_pre_regist_zone_id_list; // sequence methods pre_regist_info_hrpd_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RACH-CE-LevelInfo-r13 ::= SEQUENCE struct rach_ce_level_info_r13_s { struct preamb_map_info_r13_s_ { // member variables uint8_t first_preamb_r13; uint8_t last_preamb_r13; }; struct ra_resp_win_size_r13_e_ { enum options { sf20, sf50, sf80, sf120, sf180, sf240, sf320, sf400 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods ra_resp_win_size_r13_e_() {} ra_resp_win_size_r13_e_(options v) : value(v) {} ra_resp_win_size_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct mac_contention_resolution_timer_r13_e_ { enum options { sf80, sf100, sf120, sf160, sf200, sf240, sf480, sf960 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods mac_contention_resolution_timer_r13_e_() {} mac_contention_resolution_timer_r13_e_(options v) : value(v) {} mac_contention_resolution_timer_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct rar_hop_cfg_r13_e_ { enum options { on, off }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods rar_hop_cfg_r13_e_() {} rar_hop_cfg_r13_e_(options v) : value(v) {} rar_hop_cfg_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct edt_params_r15_s_ { struct edt_tbs_r15_e_ { enum options { b328, b408, b504, b600, b712, b808, b936, b1000or456 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods edt_tbs_r15_e_() {} edt_tbs_r15_e_(options v) : value(v) {} edt_tbs_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct mac_contention_resolution_timer_r15_e_ { enum options { sf240, sf480, sf960, sf1920, sf3840, sf5760, sf7680, sf10240 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods mac_contention_resolution_timer_r15_e_() {} mac_contention_resolution_timer_r15_e_(options v) : value(v) {} mac_contention_resolution_timer_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool mac_contention_resolution_timer_r15_present; uint8_t edt_last_preamb_r15; bool edt_small_tbs_enabled_r15; edt_tbs_r15_e_ edt_tbs_r15; mac_contention_resolution_timer_r15_e_ mac_contention_resolution_timer_r15; // sequence methods edt_params_r15_s_(); }; // member variables bool ext; preamb_map_info_r13_s_ preamb_map_info_r13; ra_resp_win_size_r13_e_ ra_resp_win_size_r13; mac_contention_resolution_timer_r13_e_ mac_contention_resolution_timer_r13; rar_hop_cfg_r13_e_ rar_hop_cfg_r13; // ... // group 0 bool edt_params_r15_present; copy_ptr edt_params_r15; // sequence methods rach_ce_level_info_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RedistributionNeighCellList-r13 ::= SEQUENCE (SIZE (1..maxCellInter)) OF RedistributionNeighCell-r13 typedef dyn_array redist_neigh_cell_list_r13_l; // SL-AllowedCarrierFreqList-r15 ::= SEQUENCE struct sl_allowed_carrier_freq_list_r15_s { typedef bounded_array allowed_carrier_freq_set1_l_; typedef bounded_array allowed_carrier_freq_set2_l_; // member variables allowed_carrier_freq_set1_l_ allowed_carrier_freq_set1; allowed_carrier_freq_set2_l_ allowed_carrier_freq_set2; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-DestinationInfoList-r12 ::= SEQUENCE (SIZE (1..maxSL-Dest-r12)) OF BIT STRING typedef bounded_array, 16> sl_dest_info_list_r12_l; // SL-DiscRxPoolList-r12 ::= SEQUENCE (SIZE (1..maxSL-RxPool-r12)) OF SL-DiscResourcePool-r12 typedef dyn_array sl_disc_rx_pool_list_r12_l; // SL-DiscTxPowerInfoList-r12 ::= SEQUENCE (SIZE (maxSL-DiscPowerClass-r12)) OF SL-DiscTxPowerInfo-r12 typedef fixed_array sl_disc_tx_pwr_info_list_r12_l; // SL-DiscTxResourcesInterFreq-r13 ::= CHOICE struct sl_disc_tx_res_inter_freq_r13_c { struct types { enum options { acquire_si_from_carrier_r13, disc_tx_pool_common_r13, request_ded_r13, no_tx_on_carrier_r13, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods sl_disc_tx_res_inter_freq_r13_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters sl_disc_tx_pool_list_r12_l& disc_tx_pool_common_r13() { assert_choice_type("discTxPoolCommon-r13", type_.to_string(), "SL-DiscTxResourcesInterFreq-r13"); return c; } const sl_disc_tx_pool_list_r12_l& disc_tx_pool_common_r13() const { assert_choice_type("discTxPoolCommon-r13", type_.to_string(), "SL-DiscTxResourcesInterFreq-r13"); return c; } private: types type_; sl_disc_tx_pool_list_r12_l c; }; // SL-SyncConfigListNFreq-r13 ::= SEQUENCE (SIZE (1..maxSL-SyncConfig-r12)) OF SL-SyncConfigNFreq-r13 typedef dyn_array sl_sync_cfg_list_nfreq_r13_l; // SL-V2X-FreqSelectionConfigList-r15 ::= SEQUENCE (SIZE (1..8)) OF SL-V2X-FreqSelectionConfig-r15 typedef dyn_array sl_v2x_freq_sel_cfg_list_r15_l; // SL-V2X-UE-ConfigList-r14 ::= SEQUENCE (SIZE (1.. maxCellIntra)) OF SL-V2X-InterFreqUE-Config-r14 typedef dyn_array sl_v2x_ue_cfg_list_r14_l; // SchedulingInfoList-BR-r13 ::= SEQUENCE (SIZE (1..maxSI-Message)) OF SchedulingInfo-BR-r13 typedef dyn_array sched_info_list_br_r13_l; // SystemInfoValueTagList-r13 ::= SEQUENCE (SIZE (1..maxSI-Message)) OF INTEGER typedef bounded_array sys_info_value_tag_list_r13_l; // SystemInformationBlockType1-v1320-IEs ::= SEQUENCE struct sib_type1_v1320_ies_s { struct freq_hop_params_dl_r13_s_ { struct mpdcch_pdsch_hop_nb_r13_e_ { enum options { nb2, nb4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods mpdcch_pdsch_hop_nb_r13_e_() {} mpdcch_pdsch_hop_nb_r13_e_(options v) : value(v) {} mpdcch_pdsch_hop_nb_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct interv_dl_hop_cfg_common_mode_a_r13_c_ { struct interv_fdd_r13_e_ { enum options { int1, int2, int4, int8 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods interv_fdd_r13_e_() {} interv_fdd_r13_e_(options v) : value(v) {} interv_fdd_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct interv_tdd_r13_e_ { enum options { int1, int5, int10, int20 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods interv_tdd_r13_e_() {} interv_tdd_r13_e_(options v) : value(v) {} interv_tdd_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct types { enum options { interv_fdd_r13, interv_tdd_r13, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods interv_dl_hop_cfg_common_mode_a_r13_c_() : type_(types::nulltype) {} interv_dl_hop_cfg_common_mode_a_r13_c_(const interv_dl_hop_cfg_common_mode_a_r13_c_& other); interv_dl_hop_cfg_common_mode_a_r13_c_& operator=(const interv_dl_hop_cfg_common_mode_a_r13_c_& other); ~interv_dl_hop_cfg_common_mode_a_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(bit_ref& bref); void to_json(json_writer& j) const; // getters interv_fdd_r13_e_& interv_fdd_r13() { assert_choice_type("interval-FDD-r13", type_.to_string(), "interval-DLHoppingConfigCommonModeA-r13"); return c.get(); } interv_tdd_r13_e_& interv_tdd_r13() { assert_choice_type("interval-TDD-r13", type_.to_string(), "interval-DLHoppingConfigCommonModeA-r13"); return c.get(); } const interv_fdd_r13_e_& interv_fdd_r13() const { assert_choice_type("interval-FDD-r13", type_.to_string(), "interval-DLHoppingConfigCommonModeA-r13"); return c.get(); } const interv_tdd_r13_e_& interv_tdd_r13() const { assert_choice_type("interval-TDD-r13", type_.to_string(), "interval-DLHoppingConfigCommonModeA-r13"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct interv_dl_hop_cfg_common_mode_b_r13_c_ { struct interv_fdd_r13_e_ { enum options { int2, int4, int8, int16 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods interv_fdd_r13_e_() {} interv_fdd_r13_e_(options v) : value(v) {} interv_fdd_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct interv_tdd_r13_e_ { enum options { int5, int10, int20, int40 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods interv_tdd_r13_e_() {} interv_tdd_r13_e_(options v) : value(v) {} interv_tdd_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct types { enum options { interv_fdd_r13, interv_tdd_r13, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods interv_dl_hop_cfg_common_mode_b_r13_c_() : type_(types::nulltype) {} interv_dl_hop_cfg_common_mode_b_r13_c_(const interv_dl_hop_cfg_common_mode_b_r13_c_& other); interv_dl_hop_cfg_common_mode_b_r13_c_& operator=(const interv_dl_hop_cfg_common_mode_b_r13_c_& other); ~interv_dl_hop_cfg_common_mode_b_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(bit_ref& bref); void to_json(json_writer& j) const; // getters interv_fdd_r13_e_& interv_fdd_r13() { assert_choice_type("interval-FDD-r13", type_.to_string(), "interval-DLHoppingConfigCommonModeB-r13"); return c.get(); } interv_tdd_r13_e_& interv_tdd_r13() { assert_choice_type("interval-TDD-r13", type_.to_string(), "interval-DLHoppingConfigCommonModeB-r13"); return c.get(); } const interv_fdd_r13_e_& interv_fdd_r13() const { assert_choice_type("interval-FDD-r13", type_.to_string(), "interval-DLHoppingConfigCommonModeB-r13"); return c.get(); } const interv_tdd_r13_e_& interv_tdd_r13() const { assert_choice_type("interval-TDD-r13", type_.to_string(), "interval-DLHoppingConfigCommonModeB-r13"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables bool mpdcch_pdsch_hop_nb_r13_present; bool interv_dl_hop_cfg_common_mode_a_r13_present; bool interv_dl_hop_cfg_common_mode_b_r13_present; bool mpdcch_pdsch_hop_offset_r13_present; mpdcch_pdsch_hop_nb_r13_e_ mpdcch_pdsch_hop_nb_r13; interv_dl_hop_cfg_common_mode_a_r13_c_ interv_dl_hop_cfg_common_mode_a_r13; interv_dl_hop_cfg_common_mode_b_r13_c_ interv_dl_hop_cfg_common_mode_b_r13; uint8_t mpdcch_pdsch_hop_offset_r13; // sequence methods freq_hop_params_dl_r13_s_(); }; // member variables bool freq_hop_params_dl_r13_present; bool non_crit_ext_present; freq_hop_params_dl_r13_s_ freq_hop_params_dl_r13; sib_type1_v1350_ies_s non_crit_ext; // sequence methods sib_type1_v1320_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType2-v10m0-IEs ::= SEQUENCE struct sib_type2_v10m0_ies_s { struct freq_info_v10l0_s_ { // member variables uint16_t add_spec_emission_v10l0; }; typedef bounded_array multi_band_info_list_v10l0_l_; // member variables bool freq_info_v10l0_present; bool multi_band_info_list_v10l0_present; bool non_crit_ext_present; freq_info_v10l0_s_ freq_info_v10l0; multi_band_info_list_v10l0_l_ multi_band_info_list_v10l0; // sequence methods sib_type2_v10m0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType5-v10l0-IEs ::= SEQUENCE struct sib_type5_v10l0_ies_s { typedef dyn_array inter_freq_carrier_freq_list_v10l0_l_; // member variables bool inter_freq_carrier_freq_list_v10l0_present; bool non_crit_ext_present; inter_freq_carrier_freq_list_v10l0_l_ inter_freq_carrier_freq_list_v10l0; sib_type5_v13a0_ies_s non_crit_ext; // sequence methods sib_type5_v10l0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemTimeInfoCDMA2000 ::= SEQUENCE struct sys_time_info_cdma2000_s { struct cdma_sys_time_c_ { struct types { enum options { sync_sys_time, async_sys_time, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods cdma_sys_time_c_() : type_(types::nulltype) {} cdma_sys_time_c_(const cdma_sys_time_c_& other); cdma_sys_time_c_& operator=(const cdma_sys_time_c_& other); ~cdma_sys_time_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<39>& sync_sys_time() { assert_choice_type("synchronousSystemTime", type_.to_string(), "cdma-SystemTime"); return c.get >(); } fixed_bitstring<49>& async_sys_time() { assert_choice_type("asynchronousSystemTime", type_.to_string(), "cdma-SystemTime"); return c.get >(); } const fixed_bitstring<39>& sync_sys_time() const { assert_choice_type("synchronousSystemTime", type_.to_string(), "cdma-SystemTime"); return c.get >(); } const fixed_bitstring<49>& async_sys_time() const { assert_choice_type("asynchronousSystemTime", type_.to_string(), "cdma-SystemTime"); return c.get >(); } private: types type_; choice_buffer_t)> c; void destroy_(); }; // member variables bool cdma_eutra_synchronisation; cdma_sys_time_c_ cdma_sys_time; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UAC-BarringPerCat-r15 ::= SEQUENCE struct uac_barr_per_cat_r15_s { // member variables uint8_t access_category_r15; uint8_t uac_barr_info_set_idx_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AC-BarringConfig ::= SEQUENCE struct ac_barr_cfg_s { struct ac_barr_factor_e_ { enum options { p00, p05, p10, p15, p20, p25, p30, p40, p50, p60, p70, p75, p80, p85, p90, p95 }; typedef float number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods ac_barr_factor_e_() {} ac_barr_factor_e_(options v) : value(v) {} ac_barr_factor_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; struct ac_barr_time_e_ { enum options { s4, s8, s16, s32, s64, s128, s256, s512 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods ac_barr_time_e_() {} ac_barr_time_e_(options v) : value(v) {} ac_barr_time_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables ac_barr_factor_e_ ac_barr_factor; ac_barr_time_e_ ac_barr_time; fixed_bitstring<5> ac_barr_for_special_ac; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BarringPerACDC-CategoryList-r13 ::= SEQUENCE (SIZE (1..maxACDC-Cat-r13)) OF BarringPerACDC-Category-r13 typedef dyn_array barr_per_acdc_category_list_r13_l; // CarrierFreqsGERAN ::= SEQUENCE struct carrier_freqs_geran_s { struct following_arfcns_c_ { struct equally_spaced_arfcns_s_ { // member variables uint8_t arfcn_spacing; uint8_t nof_following_arfcns; }; struct types { enum options { explicit_list_of_arfcns, equally_spaced_arfcns, variable_bit_map_of_arfcns, nulltype }; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods following_arfcns_c_() : type_(types::nulltype) {} following_arfcns_c_(const following_arfcns_c_& other); following_arfcns_c_& operator=(const following_arfcns_c_& other); ~following_arfcns_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters explicit_list_of_arfcns_l& explicit_list_of_arfcns() { assert_choice_type("explicitListOfARFCNs", type_.to_string(), "followingARFCNs"); return c.get(); } equally_spaced_arfcns_s_& equally_spaced_arfcns() { assert_choice_type("equallySpacedARFCNs", type_.to_string(), "followingARFCNs"); return c.get(); } dyn_octstring& variable_bit_map_of_arfcns() { assert_choice_type("variableBitMapOfARFCNs", type_.to_string(), "followingARFCNs"); return c.get(); } const explicit_list_of_arfcns_l& explicit_list_of_arfcns() const { assert_choice_type("explicitListOfARFCNs", type_.to_string(), "followingARFCNs"); return c.get(); } const equally_spaced_arfcns_s_& equally_spaced_arfcns() const { assert_choice_type("equallySpacedARFCNs", type_.to_string(), "followingARFCNs"); return c.get(); } const dyn_octstring& variable_bit_map_of_arfcns() const { assert_choice_type("variableBitMapOfARFCNs", type_.to_string(), "followingARFCNs"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables uint16_t start_arfcn; band_ind_geran_e band_ind; following_arfcns_c_ following_arfcns; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellReselectionSubPriority-r13 ::= ENUMERATED struct cell_resel_sub_prio_r13_e { enum options { o_dot2, o_dot4, o_dot6, o_dot8 }; typedef float number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods cell_resel_sub_prio_r13_e() {} cell_resel_sub_prio_r13_e(options v) : value(v) {} cell_resel_sub_prio_r13_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; // CellSelectionInfo-v1250 ::= SEQUENCE struct cell_sel_info_v1250_s { // member variables int8_t q_qual_min_rsrq_on_all_symbols_r12; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DeltaFList-PUCCH ::= SEQUENCE struct delta_flist_pucch_s { struct delta_f_pucch_format1_e_ { enum options { delta_f_minus2, delta_f0, delta_f2 }; typedef int8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_f_pucch_format1_e_() {} delta_f_pucch_format1_e_(options v) : value(v) {} delta_f_pucch_format1_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; struct delta_f_pucch_format1b_e_ { enum options { delta_f1, delta_f3, delta_f5 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_f_pucch_format1b_e_() {} delta_f_pucch_format1b_e_(options v) : value(v) {} delta_f_pucch_format1b_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct delta_f_pucch_format2_e_ { enum options { delta_f_minus2, delta_f0, delta_f1, delta_f2 }; typedef int8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_f_pucch_format2_e_() {} delta_f_pucch_format2_e_(options v) : value(v) {} delta_f_pucch_format2_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; struct delta_f_pucch_format2a_e_ { enum options { delta_f_minus2, delta_f0, delta_f2 }; typedef int8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_f_pucch_format2a_e_() {} delta_f_pucch_format2a_e_(options v) : value(v) {} delta_f_pucch_format2a_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; struct delta_f_pucch_format2b_e_ { enum options { delta_f_minus2, delta_f0, delta_f2 }; typedef int8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_f_pucch_format2b_e_() {} delta_f_pucch_format2b_e_(options v) : value(v) {} delta_f_pucch_format2b_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; // member variables delta_f_pucch_format1_e_ delta_f_pucch_format1; delta_f_pucch_format1b_e_ delta_f_pucch_format1b; delta_f_pucch_format2_e_ delta_f_pucch_format2; delta_f_pucch_format2a_e_ delta_f_pucch_format2a; delta_f_pucch_format2b_e_ delta_f_pucch_format2b; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // EDT-PRACH-ParametersCE-r15 ::= SEQUENCE struct edt_prach_params_ce_r15_s { struct edt_prach_params_ce_r15_s_ { struct prach_start_sf_r15_e_ { enum options { sf2, sf4, sf8, sf16, sf32, sf64, sf128, sf256 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods prach_start_sf_r15_e_() {} prach_start_sf_r15_e_(options v) : value(v) {} prach_start_sf_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; typedef bounded_array mpdcch_nbs_to_monitor_r15_l_; // member variables bool prach_start_sf_r15_present; uint8_t prach_cfg_idx_r15; uint8_t prach_freq_offset_r15; prach_start_sf_r15_e_ prach_start_sf_r15; mpdcch_nbs_to_monitor_r15_l_ mpdcch_nbs_to_monitor_r15; // sequence methods edt_prach_params_ce_r15_s_(); }; // member variables bool edt_prach_params_ce_r15_present; edt_prach_params_ce_r15_s_ edt_prach_params_ce_r15; // sequence methods edt_prach_params_ce_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // FilterCoefficient ::= ENUMERATED struct filt_coef_e { enum options { fc0, fc1, fc2, fc3, fc4, fc5, fc6, fc7, fc8, fc9, fc11, fc13, fc15, fc17, fc19, spare1, /*...*/ }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = true; // enumerated methods filt_coef_e() {} filt_coef_e(options v) : value(v) {} filt_coef_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // InterFreqBlackCellList ::= SEQUENCE (SIZE (1..maxCellBlack)) OF PhysCellIdRange typedef dyn_array inter_freq_black_cell_list_l; // InterFreqCarrierFreqInfo-v9e0 ::= SEQUENCE struct inter_freq_carrier_freq_info_v9e0_s { // member variables bool dl_carrier_freq_v9e0_present; bool multi_band_info_list_v9e0_present; uint32_t dl_carrier_freq_v9e0; multi_band_info_list_v9e0_l multi_band_info_list_v9e0; // sequence methods inter_freq_carrier_freq_info_v9e0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // InterFreqNeighCellList ::= SEQUENCE (SIZE (1..maxCellInter)) OF InterFreqNeighCellInfo typedef dyn_array inter_freq_neigh_cell_list_l; // InterFreqNeighHSDN-CellList-r15 ::= SEQUENCE (SIZE (1..maxCellInter)) OF PhysCellIdRange typedef dyn_array inter_freq_neigh_hsdn_cell_list_r15_l; // MBMS-SAI-List-r11 ::= SEQUENCE (SIZE (1..maxSAI-MBMS-r11)) OF INTEGER typedef dyn_array mbms_sai_list_r11_l; // MTC-SSB-NR-r15 ::= SEQUENCE struct mtc_ssb_nr_r15_s { struct periodicity_and_offset_r15_c_ { struct types { enum options { sf5_r15, sf10_r15, sf20_r15, sf40_r15, sf80_r15, sf160_r15, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods periodicity_and_offset_r15_c_() : type_(types::nulltype) {} periodicity_and_offset_r15_c_(const periodicity_and_offset_r15_c_& other); periodicity_and_offset_r15_c_& operator=(const periodicity_and_offset_r15_c_& other); ~periodicity_and_offset_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(bit_ref& bref); void to_json(json_writer& j) const; // getters uint8_t& sf5_r15() { assert_choice_type("sf5-r15", type_.to_string(), "periodicityAndOffset-r15"); return c.get(); } uint8_t& sf10_r15() { assert_choice_type("sf10-r15", type_.to_string(), "periodicityAndOffset-r15"); return c.get(); } uint8_t& sf20_r15() { assert_choice_type("sf20-r15", type_.to_string(), "periodicityAndOffset-r15"); return c.get(); } uint8_t& sf40_r15() { assert_choice_type("sf40-r15", type_.to_string(), "periodicityAndOffset-r15"); return c.get(); } uint8_t& sf80_r15() { assert_choice_type("sf80-r15", type_.to_string(), "periodicityAndOffset-r15"); return c.get(); } uint8_t& sf160_r15() { assert_choice_type("sf160-r15", type_.to_string(), "periodicityAndOffset-r15"); return c.get(); } const uint8_t& sf5_r15() const { assert_choice_type("sf5-r15", type_.to_string(), "periodicityAndOffset-r15"); return c.get(); } const uint8_t& sf10_r15() const { assert_choice_type("sf10-r15", type_.to_string(), "periodicityAndOffset-r15"); return c.get(); } const uint8_t& sf20_r15() const { assert_choice_type("sf20-r15", type_.to_string(), "periodicityAndOffset-r15"); return c.get(); } const uint8_t& sf40_r15() const { assert_choice_type("sf40-r15", type_.to_string(), "periodicityAndOffset-r15"); return c.get(); } const uint8_t& sf80_r15() const { assert_choice_type("sf80-r15", type_.to_string(), "periodicityAndOffset-r15"); return c.get(); } const uint8_t& sf160_r15() const { assert_choice_type("sf160-r15", type_.to_string(), "periodicityAndOffset-r15"); return c.get(); } private: types type_; choice_buffer_t<8> c; void destroy_(); }; struct ssb_dur_r15_e_ { enum options { sf1, sf2, sf3, sf4, sf5 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 5, nof_exts = 0; static const bool has_ext = false; // enumerated methods ssb_dur_r15_e_() {} ssb_dur_r15_e_(options v) : value(v) {} ssb_dur_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables periodicity_and_offset_r15_c_ periodicity_and_offset_r15; ssb_dur_r15_e_ ssb_dur_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasIdleCarrierEUTRA-r15 ::= SEQUENCE struct meas_idle_carrier_eutra_r15_s { struct report_quantities_e_ { enum options { rsrp, rsrq, both }; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods report_quantities_e_() {} report_quantities_e_(options v) : value(v) {} report_quantities_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct quality_thres_r15_s_ { // member variables bool idle_rsrp_thres_r15_present; bool idle_rsrq_thres_r15_present; uint8_t idle_rsrp_thres_r15; int8_t idle_rsrq_thres_r15; // sequence methods quality_thres_r15_s_(); }; // member variables bool ext; bool validity_area_r15_present; bool meas_cell_list_r15_present; bool quality_thres_r15_present; uint32_t carrier_freq_r15; allowed_meas_bw_e allowed_meas_bw_r15; cell_list_r15_l validity_area_r15; cell_list_r15_l meas_cell_list_r15; report_quantities_e_ report_quantities; quality_thres_r15_s_ quality_thres_r15; // ... // sequence methods meas_idle_carrier_eutra_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MultiBandInfoList ::= SEQUENCE (SIZE (1..maxMultiBands)) OF INTEGER typedef bounded_array multi_band_info_list_l; // MultiBandInfoList-r11 ::= SEQUENCE (SIZE (1..maxMultiBands)) OF INTEGER typedef bounded_array multi_band_info_list_r11_l; // MultiFrequencyBandListNR-r15 ::= SEQUENCE (SIZE (1.. maxMultiBandsNR-r15)) OF INTEGER typedef bounded_array multi_freq_band_list_nr_r15_l; // N1PUCCH-AN-InfoList-r13 ::= SEQUENCE (SIZE(1..maxCE-Level-r13)) OF INTEGER typedef bounded_array n1_pucch_an_info_list_r13_l; // NS-PmaxListNR-r15 ::= SEQUENCE (SIZE (1..8)) OF NS-PmaxValueNR-r15 typedef dyn_array ns_pmax_list_nr_r15_l; // NeighCellCDMA2000 ::= SEQUENCE struct neigh_cell_cdma2000_s { // member variables bandclass_cdma2000_e band_class; neigh_cells_per_bandclass_list_cdma2000_l neigh_cells_per_freq_list; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // NeighCellCDMA2000-v920 ::= SEQUENCE struct neigh_cell_cdma2000_v920_s { // member variables neigh_cells_per_bandclass_list_cdma2000_v920_l neigh_cells_per_freq_list_v920; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PLMN-IdentityList4-r12 ::= SEQUENCE (SIZE (1..maxPLMN-r11)) OF PLMN-IdentityInfo2-r12 typedef dyn_array plmn_id_list4_r12_l; // PRACH-ConfigInfo ::= SEQUENCE struct prach_cfg_info_s { // member variables uint8_t prach_cfg_idx; bool high_speed_flag; uint8_t zero_correlation_zone_cfg; uint8_t prach_freq_offset; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PRACH-ParametersListCE-r13 ::= SEQUENCE (SIZE(1..maxCE-Level-r13)) OF PRACH-ParametersCE-r13 typedef dyn_array prach_params_list_ce_r13_l; // ParametersCDMA2000-r11 ::= SEQUENCE struct params_cdma2000_r11_s { struct sys_time_info_r11_c_ { struct types { enum options { explicit_value, default_value, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods sys_time_info_r11_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters sys_time_info_cdma2000_s& explicit_value() { assert_choice_type("explicitValue", type_.to_string(), "systemTimeInfo-r11"); return c; } const sys_time_info_cdma2000_s& explicit_value() const { assert_choice_type("explicitValue", type_.to_string(), "systemTimeInfo-r11"); return c; } private: types type_; sys_time_info_cdma2000_s c; }; struct params_hrpd_r11_s_ { // member variables bool cell_resel_params_hrpd_r11_present; pre_regist_info_hrpd_s pre_regist_info_hrpd_r11; cell_resel_params_cdma2000_r11_s cell_resel_params_hrpd_r11; // sequence methods params_hrpd_r11_s_(); }; struct params1_xrtt_r11_s_ { // member variables bool csfb_regist_param1_xrtt_r11_present; bool csfb_regist_param1_xrtt_ext_r11_present; bool long_code_state1_xrtt_r11_present; bool cell_resel_params1_xrtt_r11_present; bool ac_barr_cfg1_xrtt_r11_present; bool csfb_support_for_dual_rx_ues_r11_present; bool csfb_dual_rx_tx_support_r11_present; csfb_regist_param1_xrtt_s csfb_regist_param1_xrtt_r11; csfb_regist_param1_xrtt_v920_s csfb_regist_param1_xrtt_ext_r11; fixed_bitstring<42> long_code_state1_xrtt_r11; cell_resel_params_cdma2000_r11_s cell_resel_params1_xrtt_r11; ac_barr_cfg1_xrtt_r9_s ac_barr_cfg1_xrtt_r11; bool csfb_support_for_dual_rx_ues_r11; // sequence methods params1_xrtt_r11_s_(); }; // member variables bool ext; bool sys_time_info_r11_present; bool params_hrpd_r11_present; bool params1_xrtt_r11_present; sys_time_info_r11_c_ sys_time_info_r11; uint8_t search_win_size_r11; params_hrpd_r11_s_ params_hrpd_r11; params1_xrtt_r11_s_ params1_xrtt_r11; // ... // sequence methods params_cdma2000_r11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PowerRampingParameters ::= SEQUENCE struct pwr_ramp_params_s { struct pwr_ramp_step_e_ { enum options { db0, db2, db4, db6 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods pwr_ramp_step_e_() {} pwr_ramp_step_e_(options v) : value(v) {} pwr_ramp_step_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct preamb_init_rx_target_pwr_e_ { enum options { dbm_minus120, dbm_minus118, dbm_minus116, dbm_minus114, dbm_minus112, dbm_minus110, dbm_minus108, dbm_minus106, dbm_minus104, dbm_minus102, dbm_minus100, dbm_minus98, dbm_minus96, dbm_minus94, dbm_minus92, dbm_minus90 }; typedef int8_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods preamb_init_rx_target_pwr_e_() {} preamb_init_rx_target_pwr_e_(options v) : value(v) {} preamb_init_rx_target_pwr_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; // member variables pwr_ramp_step_e_ pwr_ramp_step; preamb_init_rx_target_pwr_e_ preamb_init_rx_target_pwr; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PreambleTransMax ::= ENUMERATED struct preamb_trans_max_e { enum options { n3, n4, n5, n6, n7, n8, n10, n20, n50, n100, n200 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 11, nof_exts = 0; static const bool has_ext = false; // enumerated methods preamb_trans_max_e() {} preamb_trans_max_e(options v) : value(v) {} preamb_trans_max_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // RACH-CE-LevelInfoList-r13 ::= SEQUENCE (SIZE (1..maxCE-Level-r13)) OF RACH-CE-LevelInfo-r13 typedef dyn_array rach_ce_level_info_list_r13_l; // RSRP-ThresholdsPrachInfoList-r13 ::= SEQUENCE (SIZE(1..3)) OF INTEGER typedef bounded_array rsrp_thress_prach_info_list_r13_l; // RedistributionInterFreqInfo-r13 ::= SEQUENCE struct redist_inter_freq_info_r13_s { // member variables bool redist_factor_freq_r13_present; bool redist_neigh_cell_list_r13_present; uint8_t redist_factor_freq_r13; redist_neigh_cell_list_r13_l redist_neigh_cell_list_r13; // sequence methods redist_inter_freq_info_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-CBR-Levels-Config-r14 ::= SEQUENCE (SIZE (1..maxCBR-Level-r14)) OF INTEGER typedef bounded_array sl_cbr_levels_cfg_r14_l; // SL-CBR-PSSCH-TxConfig-r14 ::= SEQUENCE struct sl_cbr_pssch_tx_cfg_r14_s { // member variables uint16_t cr_limit_r14; sl_pssch_tx_params_r14_s tx_params_r14; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-DiscConfigOtherInterFreq-r13 ::= SEQUENCE struct sl_disc_cfg_other_inter_freq_r13_s { // member variables bool tx_pwr_info_r13_present; bool ref_carrier_common_r13_present; bool disc_sync_cfg_r13_present; bool disc_cell_sel_info_r13_present; sl_disc_tx_pwr_info_list_r12_l tx_pwr_info_r13; sl_sync_cfg_list_nfreq_r13_l disc_sync_cfg_r13; cell_sel_info_nfreq_r13_s disc_cell_sel_info_r13; // sequence methods sl_disc_cfg_other_inter_freq_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-HoppingConfigComm-r12 ::= SEQUENCE struct sl_hop_cfg_comm_r12_s { struct num_subbands_r12_e_ { enum options { ns1, ns2, ns4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods num_subbands_r12_e_() {} num_subbands_r12_e_(options v) : value(v) {} num_subbands_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables uint16_t hop_param_r12; num_subbands_r12_e_ num_subbands_r12; uint8_t rb_offset_r12; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-InterFreqInfoV2X-r14 ::= SEQUENCE struct sl_inter_freq_info_v2x_r14_s { struct sl_bw_r14_e_ { enum options { n6, n15, n25, n50, n75, n100 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods sl_bw_r14_e_() {} sl_bw_r14_e_(options v) : value(v) {} sl_bw_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct add_spec_emission_v2x_r14_c_ { struct types { enum options { add_spec_emission_r14, add_spec_emission_v1440, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods add_spec_emission_v2x_r14_c_() : type_(types::nulltype) {} add_spec_emission_v2x_r14_c_(const add_spec_emission_v2x_r14_c_& other); add_spec_emission_v2x_r14_c_& operator=(const add_spec_emission_v2x_r14_c_& other); ~add_spec_emission_v2x_r14_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint8_t& add_spec_emission_r14() { assert_choice_type("additionalSpectrumEmission-r14", type_.to_string(), "additionalSpectrumEmissionV2X-r14"); return c.get(); } uint16_t& add_spec_emission_v1440() { assert_choice_type("additionalSpectrumEmission-v1440", type_.to_string(), "additionalSpectrumEmissionV2X-r14"); return c.get(); } const uint8_t& add_spec_emission_r14() const { assert_choice_type("additionalSpectrumEmission-r14", type_.to_string(), "additionalSpectrumEmissionV2X-r14"); return c.get(); } const uint16_t& add_spec_emission_v1440() const { assert_choice_type("additionalSpectrumEmission-v1440", type_.to_string(), "additionalSpectrumEmissionV2X-r14"); return c.get(); } private: types type_; choice_buffer_t<8> c; void destroy_(); }; // member variables bool ext; bool plmn_id_list_r14_present; bool sl_max_tx_pwr_r14_present; bool sl_bw_r14_present; bool v2x_sched_pool_r14_present; bool v2x_ue_cfg_list_r14_present; plmn_id_list_l plmn_id_list_r14; uint32_t v2x_comm_carrier_freq_r14; int8_t sl_max_tx_pwr_r14; sl_bw_r14_e_ sl_bw_r14; sl_comm_res_pool_v2x_r14_s v2x_sched_pool_r14; sl_v2x_ue_cfg_list_r14_l v2x_ue_cfg_list_r14; // ... // group 0 bool add_spec_emission_v2x_r14_present; copy_ptr add_spec_emission_v2x_r14; // group 1 bool v2x_freq_sel_cfg_list_r15_present; copy_ptr v2x_freq_sel_cfg_list_r15; // sequence methods sl_inter_freq_info_v2x_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-PPPR-Dest-CarrierFreq ::= SEQUENCE struct sl_pppr_dest_carrier_freq_s { // member variables bool dest_info_list_r15_present; bool allowed_carrier_freq_list_r15_present; sl_dest_info_list_r12_l dest_info_list_r15; sl_allowed_carrier_freq_list_r15_s allowed_carrier_freq_list_r15; // sequence methods sl_pppr_dest_carrier_freq_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-PeriodComm-r12 ::= ENUMERATED struct sl_period_comm_r12_e { enum options { sf40, sf60, sf70, sf80, sf120, sf140, sf160, sf240, sf280, sf320, spare6, spare5, spare4, spare3, spare2, spare }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods sl_period_comm_r12_e() {} sl_period_comm_r12_e(options v) : value(v) {} sl_period_comm_r12_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // SL-ResourcesInterFreq-r13 ::= SEQUENCE struct sl_res_inter_freq_r13_s { // member variables bool disc_rx_res_inter_freq_r13_present; bool disc_tx_res_inter_freq_r13_present; sl_disc_rx_pool_list_r12_l disc_rx_res_inter_freq_r13; sl_disc_tx_res_inter_freq_r13_c disc_tx_res_inter_freq_r13; // sequence methods sl_res_inter_freq_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-SyncConfig-r12 ::= SEQUENCE struct sl_sync_cfg_r12_s { struct tx_params_r12_s_ { // member variables bool sync_info_reserved_r12_present; sl_tx_params_r12_s sync_tx_params_r12; uint8_t sync_tx_thresh_ic_r12; fixed_bitstring<19> sync_info_reserved_r12; // sequence methods tx_params_r12_s_(); }; struct rx_params_ncell_r12_s_ { struct disc_sync_win_r12_e_ { enum options { w1, w2 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods disc_sync_win_r12_e_() {} disc_sync_win_r12_e_(options v) : value(v) {} disc_sync_win_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables uint16_t pci_r12; disc_sync_win_r12_e_ disc_sync_win_r12; }; // member variables bool ext; bool tx_params_r12_present; bool rx_params_ncell_r12_present; sl_cp_len_r12_e sync_cp_len_r12; uint8_t sync_offset_ind_r12; uint8_t slssid_r12; tx_params_r12_s_ tx_params_r12; rx_params_ncell_r12_s_ rx_params_ncell_r12; // ... // group 0 bool sync_tx_periodic_r13_present; // group 1 bool sync_offset_ind_v1430_present; bool gnss_sync_r14_present; uint8_t sync_offset_ind_v1430; // group 2 bool sync_offset_ind2_r14_present; bool sync_offset_ind3_r14_present; uint8_t sync_offset_ind2_r14; uint8_t sync_offset_ind3_r14; // group 3 bool slss_tx_disabled_r15_present; // sequence methods sl_sync_cfg_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SS-RSSI-Measurement-r15 ::= SEQUENCE struct ss_rssi_meas_r15_s { // member variables dyn_bitstring meas_slots_r15; uint8_t end_symbol_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType1-v10l0-IEs ::= SEQUENCE struct sib_type1_v10l0_ies_s { // member variables bool freq_band_info_v10l0_present; bool multi_band_info_list_v10l0_present; bool non_crit_ext_present; ns_pmax_list_v10l0_l freq_band_info_v10l0; multi_band_info_list_v10l0_l multi_band_info_list_v10l0; // sequence methods sib_type1_v10l0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType1-v1310-IEs ::= SEQUENCE struct sib_type1_v1310_ies_s { struct bw_reduced_access_related_info_r13_s_ { struct si_win_len_br_r13_e_ { enum options { ms20, ms40, ms60, ms80, ms120, ms160, ms200, spare }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods si_win_len_br_r13_e_() {} si_win_len_br_r13_e_(options v) : value(v) {} si_win_len_br_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct si_repeat_pattern_r13_e_ { enum options { every_rf, every2nd_rf, every4th_rf, every8th_rf }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods si_repeat_pattern_r13_e_() {} si_repeat_pattern_r13_e_(options v) : value(v) {} si_repeat_pattern_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct fdd_dl_or_tdd_sf_bitmap_br_r13_c_ { struct types { enum options { sf_pattern10_r13, sf_pattern40_r13, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods fdd_dl_or_tdd_sf_bitmap_br_r13_c_() : type_(types::nulltype) {} fdd_dl_or_tdd_sf_bitmap_br_r13_c_(const fdd_dl_or_tdd_sf_bitmap_br_r13_c_& other); fdd_dl_or_tdd_sf_bitmap_br_r13_c_& operator=(const fdd_dl_or_tdd_sf_bitmap_br_r13_c_& other); ~fdd_dl_or_tdd_sf_bitmap_br_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(bit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<10>& sf_pattern10_r13() { assert_choice_type("subframePattern10-r13", type_.to_string(), "fdd-DownlinkOrTddSubframeBitmapBR-r13"); return c.get >(); } fixed_bitstring<40>& sf_pattern40_r13() { assert_choice_type("subframePattern40-r13", type_.to_string(), "fdd-DownlinkOrTddSubframeBitmapBR-r13"); return c.get >(); } const fixed_bitstring<10>& sf_pattern10_r13() const { assert_choice_type("subframePattern10-r13", type_.to_string(), "fdd-DownlinkOrTddSubframeBitmapBR-r13"); return c.get >(); } const fixed_bitstring<40>& sf_pattern40_r13() const { assert_choice_type("subframePattern40-r13", type_.to_string(), "fdd-DownlinkOrTddSubframeBitmapBR-r13"); return c.get >(); } private: types type_; choice_buffer_t)> c; void destroy_(); }; struct si_hop_cfg_common_r13_e_ { enum options { on, off }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods si_hop_cfg_common_r13_e_() {} si_hop_cfg_common_r13_e_(options v) : value(v) {} si_hop_cfg_common_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool sched_info_list_br_r13_present; bool fdd_dl_or_tdd_sf_bitmap_br_r13_present; bool fdd_ul_sf_bitmap_br_r13_present; bool si_validity_time_r13_present; bool sys_info_value_tag_list_r13_present; si_win_len_br_r13_e_ si_win_len_br_r13; si_repeat_pattern_r13_e_ si_repeat_pattern_r13; sched_info_list_br_r13_l sched_info_list_br_r13; fdd_dl_or_tdd_sf_bitmap_br_r13_c_ fdd_dl_or_tdd_sf_bitmap_br_r13; fixed_bitstring<10> fdd_ul_sf_bitmap_br_r13; uint8_t start_symbol_br_r13; si_hop_cfg_common_r13_e_ si_hop_cfg_common_r13; sys_info_value_tag_list_r13_l sys_info_value_tag_list_r13; // sequence methods bw_reduced_access_related_info_r13_s_(); }; // member variables bool hyper_sfn_r13_present; bool e_drx_allowed_r13_present; bool cell_sel_info_ce_r13_present; bool bw_reduced_access_related_info_r13_present; bool non_crit_ext_present; fixed_bitstring<10> hyper_sfn_r13; cell_sel_info_ce_r13_s cell_sel_info_ce_r13; bw_reduced_access_related_info_r13_s_ bw_reduced_access_related_info_r13; sib_type1_v1320_ies_s non_crit_ext; // sequence methods sib_type1_v1310_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType2-v9i0-IEs ::= SEQUENCE struct sib_type2_v9i0_ies_s { // member variables bool non_crit_ext_present; bool dummy_present; dyn_octstring non_crit_ext; // sequence methods sib_type2_v9i0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType5-v10j0-IEs ::= SEQUENCE struct sib_type5_v10j0_ies_s { typedef dyn_array inter_freq_carrier_freq_list_v10j0_l_; // member variables bool inter_freq_carrier_freq_list_v10j0_present; bool non_crit_ext_present; inter_freq_carrier_freq_list_v10j0_l_ inter_freq_carrier_freq_list_v10j0; sib_type5_v10l0_ies_s non_crit_ext; // sequence methods sib_type5_v10j0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // ThresholdListNR-r15 ::= SEQUENCE struct thres_list_nr_r15_s { // member variables bool nr_rsrp_r15_present; bool nr_rsrq_r15_present; bool nr_sinr_r15_present; uint8_t nr_rsrp_r15; uint8_t nr_rsrq_r15; uint8_t nr_sinr_r15; // sequence methods thres_list_nr_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UAC-BarringPerCatList-r15 ::= SEQUENCE (SIZE (1..maxAccessCat-1-r15)) OF UAC-BarringPerCat-r15 typedef dyn_array uac_barr_per_cat_list_r15_l; // UDT-Restricting-r13 ::= SEQUENCE struct udt_restricting_r13_s { struct udt_restricting_time_r13_e_ { enum options { s4, s8, s16, s32, s64, s128, s256, s512 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods udt_restricting_time_r13_e_() {} udt_restricting_time_r13_e_(options v) : value(v) {} udt_restricting_time_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool udt_restricting_r13_present; bool udt_restricting_time_r13_present; udt_restricting_time_r13_e_ udt_restricting_time_r13; // sequence methods udt_restricting_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UL-ReferenceSignalsPUSCH ::= SEQUENCE struct ul_ref_sigs_pusch_s { // member variables bool group_hop_enabled; uint8_t group_assign_pusch; bool seq_hop_enabled; uint8_t cyclic_shift; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // WLAN-Identifiers-r12 ::= SEQUENCE struct wlan_ids_r12_s { // member variables bool ext; bool ssid_r12_present; bool bssid_r12_present; bool hessid_r12_present; dyn_octstring ssid_r12; fixed_octstring<6> bssid_r12; fixed_octstring<6> hessid_r12; // ... // sequence methods wlan_ids_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // WLAN-backhaulRate-r12 ::= ENUMERATED struct wlan_backhaul_rate_r12_e { enum options { r0, r4, r8, r16, r32, r64, r128, r256, r512, r1024, r2048, r4096, r8192, r16384, r32768, r65536, r131072, r262144, r524288, r1048576, r2097152, r4194304, r8388608, r16777216, r33554432, r67108864, r134217728, r268435456, r536870912, r1073741824, r2147483648, r4294967296 }; typedef uint64_t number_type; options value; static const uint32_t nof_types = 32, nof_exts = 0; static const bool has_ext = false; // enumerated methods wlan_backhaul_rate_r12_e() {} wlan_backhaul_rate_r12_e(options v) : value(v) {} wlan_backhaul_rate_r12_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint64_t to_number() const; }; // AC-BarringPerPLMN-r12 ::= SEQUENCE struct ac_barr_per_plmn_r12_s { struct ac_barr_info_r12_s_ { // member variables bool ac_barr_for_mo_sig_r12_present; bool ac_barr_for_mo_data_r12_present; bool ac_barr_for_emergency_r12; ac_barr_cfg_s ac_barr_for_mo_sig_r12; ac_barr_cfg_s ac_barr_for_mo_data_r12; // sequence methods ac_barr_info_r12_s_(); }; // member variables bool ac_barr_info_r12_present; bool ac_barr_skip_for_mmtel_voice_r12_present; bool ac_barr_skip_for_mmtel_video_r12_present; bool ac_barr_skip_for_sms_r12_present; bool ac_barr_for_csfb_r12_present; bool ssac_barr_for_mmtel_voice_r12_present; bool ssac_barr_for_mmtel_video_r12_present; uint8_t plmn_id_idx_r12; ac_barr_info_r12_s_ ac_barr_info_r12; ac_barr_cfg_s ac_barr_for_csfb_r12; ac_barr_cfg_s ssac_barr_for_mmtel_voice_r12; ac_barr_cfg_s ssac_barr_for_mmtel_video_r12; // sequence methods ac_barr_per_plmn_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // ACDC-BarringPerPLMN-r13 ::= SEQUENCE struct acdc_barr_per_plmn_r13_s { // member variables uint8_t plmn_id_idx_r13; bool acdc_only_for_hplmn_r13; barr_per_acdc_category_list_r13_l barr_per_acdc_category_list_r13; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BCCH-Config ::= SEQUENCE struct bcch_cfg_s { struct mod_period_coeff_e_ { enum options { n2, n4, n8, n16 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods mod_period_coeff_e_() {} mod_period_coeff_e_(options v) : value(v) {} mod_period_coeff_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables mod_period_coeff_e_ mod_period_coeff; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BCCH-Config-v1310 ::= SEQUENCE struct bcch_cfg_v1310_s { // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CIOT-OptimisationPLMN-r13 ::= SEQUENCE struct ciot_optim_plmn_r13_s { // member variables bool up_cio_t_eps_optim_r13_present; bool cp_cio_t_eps_optim_r13_present; bool attach_without_pdn_connect_r13_present; // sequence methods ciot_optim_plmn_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CarrierFreqInfoUTRA-FDD-v8h0 ::= SEQUENCE struct carrier_freq_info_utra_fdd_v8h0_s { typedef bounded_array multi_band_info_list_l_; // member variables bool multi_band_info_list_present; multi_band_info_list_l_ multi_band_info_list; // sequence methods carrier_freq_info_utra_fdd_v8h0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CarrierFreqNR-r15 ::= SEQUENCE struct carrier_freq_nr_r15_s { struct subcarrier_spacing_ssb_r15_e_ { enum options { k_hz15, k_hz30, k_hz120, k_hz240 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods subcarrier_spacing_ssb_r15_e_() {} subcarrier_spacing_ssb_r15_e_(options v) : value(v) {} subcarrier_spacing_ssb_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct thresh_x_q_r15_s_ { // member variables uint8_t thresh_x_high_q_r15; uint8_t thresh_x_low_q_r15; }; // member variables bool ext; bool multi_band_info_list_r15_present; bool multi_band_info_list_sul_r15_present; bool meas_timing_cfg_r15_present; bool ss_rssi_meas_r15_present; bool cell_resel_prio_r15_present; bool cell_resel_sub_prio_r15_present; bool thresh_x_q_r15_present; bool q_rx_lev_min_sul_r15_present; bool ns_pmax_list_nr_r15_present; bool q_qual_min_r15_present; bool max_rs_idx_cell_qual_r15_present; bool thresh_rs_idx_r15_present; uint32_t carrier_freq_r15; multi_freq_band_list_nr_r15_l multi_band_info_list_r15; multi_freq_band_list_nr_r15_l multi_band_info_list_sul_r15; mtc_ssb_nr_r15_s meas_timing_cfg_r15; subcarrier_spacing_ssb_r15_e_ subcarrier_spacing_ssb_r15; ss_rssi_meas_r15_s ss_rssi_meas_r15; uint8_t cell_resel_prio_r15; cell_resel_sub_prio_r13_e cell_resel_sub_prio_r15; uint8_t thresh_x_high_r15; uint8_t thresh_x_low_r15; thresh_x_q_r15_s_ thresh_x_q_r15; int8_t q_rx_lev_min_r15; int8_t q_rx_lev_min_sul_r15; int8_t p_max_nr_r15; ns_pmax_list_nr_r15_l ns_pmax_list_nr_r15; int8_t q_qual_min_r15; bool derive_ssb_idx_from_cell_r15; uint8_t max_rs_idx_cell_qual_r15; thres_list_nr_r15_s thresh_rs_idx_r15; // ... // sequence methods carrier_freq_nr_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CarrierFreqUTRA-FDD ::= SEQUENCE struct carrier_freq_utra_fdd_s { struct thresh_x_q_r9_s_ { // member variables uint8_t thresh_x_high_q_r9; uint8_t thresh_x_low_q_r9; }; // member variables bool ext; bool cell_resel_prio_present; uint16_t carrier_freq; uint8_t cell_resel_prio; uint8_t thresh_x_high; uint8_t thresh_x_low; int8_t q_rx_lev_min; int8_t p_max_utra; int8_t q_qual_min; // ... // group 0 bool thresh_x_q_r9_present; copy_ptr thresh_x_q_r9; // sequence methods carrier_freq_utra_fdd_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CarrierFreqUTRA-FDD-Ext-r12 ::= SEQUENCE struct carrier_freq_utra_fdd_ext_r12_s { struct thresh_x_q_r12_s_ { // member variables uint8_t thresh_x_high_q_r12; uint8_t thresh_x_low_q_r12; }; typedef bounded_array multi_band_info_list_r12_l_; // member variables bool ext; bool cell_resel_prio_r12_present; bool thresh_x_q_r12_present; bool multi_band_info_list_r12_present; bool reduced_meas_performance_r12_present; uint16_t carrier_freq_r12; uint8_t cell_resel_prio_r12; uint8_t thresh_x_high_r12; uint8_t thresh_x_low_r12; int8_t q_rx_lev_min_r12; int8_t p_max_utra_r12; int8_t q_qual_min_r12; thresh_x_q_r12_s_ thresh_x_q_r12; multi_band_info_list_r12_l_ multi_band_info_list_r12; // ... // sequence methods carrier_freq_utra_fdd_ext_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CarrierFreqUTRA-TDD ::= SEQUENCE struct carrier_freq_utra_tdd_s { // member variables bool ext; bool cell_resel_prio_present; uint16_t carrier_freq; uint8_t cell_resel_prio; uint8_t thresh_x_high; uint8_t thresh_x_low; int8_t q_rx_lev_min; int8_t p_max_utra; // ... // sequence methods carrier_freq_utra_tdd_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CarrierFreqUTRA-TDD-r12 ::= SEQUENCE struct carrier_freq_utra_tdd_r12_s { // member variables bool ext; bool cell_resel_prio_r12_present; bool reduced_meas_performance_r12_present; uint16_t carrier_freq_r12; uint8_t cell_resel_prio_r12; uint8_t thresh_x_high_r12; uint8_t thresh_x_low_r12; int8_t q_rx_lev_min_r12; int8_t p_max_utra_r12; // ... // sequence methods carrier_freq_utra_tdd_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CarrierFreqsInfoGERAN ::= SEQUENCE struct carrier_freqs_info_geran_s { struct common_info_s_ { // member variables bool cell_resel_prio_present; bool p_max_geran_present; uint8_t cell_resel_prio; fixed_bitstring<8> ncc_permitted; uint8_t q_rx_lev_min; uint8_t p_max_geran; uint8_t thresh_x_high; uint8_t thresh_x_low; // sequence methods common_info_s_(); }; // member variables bool ext; carrier_freqs_geran_s carrier_freqs; common_info_s_ common_info; // ... // sequence methods carrier_freqs_info_geran_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellSelectionInfo-v1130 ::= SEQUENCE struct cell_sel_info_v1130_s { // member variables int8_t q_qual_min_wb_r11; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // EAB-Config-r11 ::= SEQUENCE struct eab_cfg_r11_s { struct eab_category_r11_e_ { enum options { a, b, c }; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods eab_category_r11_e_() {} eab_category_r11_e_(options v) : value(v) {} eab_category_r11_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables eab_category_r11_e_ eab_category_r11; fixed_bitstring<10> eab_barr_bitmap_r11; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // EUTRA-CarrierList-r15 ::= SEQUENCE (SIZE (1..maxFreqIdle-r15)) OF MeasIdleCarrierEUTRA-r15 typedef dyn_array eutra_carrier_list_r15_l; // FreqHoppingParameters-r13 ::= SEQUENCE struct freq_hop_params_r13_s { struct dummy_e_ { enum options { nb2, nb4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods dummy_e_() {} dummy_e_(options v) : value(v) {} dummy_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct dummy2_c_ { struct interv_fdd_r13_e_ { enum options { int1, int2, int4, int8 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods interv_fdd_r13_e_() {} interv_fdd_r13_e_(options v) : value(v) {} interv_fdd_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct interv_tdd_r13_e_ { enum options { int1, int5, int10, int20 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods interv_tdd_r13_e_() {} interv_tdd_r13_e_(options v) : value(v) {} interv_tdd_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct types { enum options { interv_fdd_r13, interv_tdd_r13, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods dummy2_c_() : type_(types::nulltype) {} dummy2_c_(const dummy2_c_& other); dummy2_c_& operator=(const dummy2_c_& other); ~dummy2_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters interv_fdd_r13_e_& interv_fdd_r13() { assert_choice_type("interval-FDD-r13", type_.to_string(), "dummy2"); return c.get(); } interv_tdd_r13_e_& interv_tdd_r13() { assert_choice_type("interval-TDD-r13", type_.to_string(), "dummy2"); return c.get(); } const interv_fdd_r13_e_& interv_fdd_r13() const { assert_choice_type("interval-FDD-r13", type_.to_string(), "dummy2"); return c.get(); } const interv_tdd_r13_e_& interv_tdd_r13() const { assert_choice_type("interval-TDD-r13", type_.to_string(), "dummy2"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct dummy3_c_ { struct interv_fdd_r13_e_ { enum options { int2, int4, int8, int16 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods interv_fdd_r13_e_() {} interv_fdd_r13_e_(options v) : value(v) {} interv_fdd_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct interv_tdd_r13_e_ { enum options { int5, int10, int20, int40 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods interv_tdd_r13_e_() {} interv_tdd_r13_e_(options v) : value(v) {} interv_tdd_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct types { enum options { interv_fdd_r13, interv_tdd_r13, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods dummy3_c_() : type_(types::nulltype) {} dummy3_c_(const dummy3_c_& other); dummy3_c_& operator=(const dummy3_c_& other); ~dummy3_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters interv_fdd_r13_e_& interv_fdd_r13() { assert_choice_type("interval-FDD-r13", type_.to_string(), "dummy3"); return c.get(); } interv_tdd_r13_e_& interv_tdd_r13() { assert_choice_type("interval-TDD-r13", type_.to_string(), "dummy3"); return c.get(); } const interv_fdd_r13_e_& interv_fdd_r13() const { assert_choice_type("interval-FDD-r13", type_.to_string(), "dummy3"); return c.get(); } const interv_tdd_r13_e_& interv_tdd_r13() const { assert_choice_type("interval-TDD-r13", type_.to_string(), "dummy3"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct interv_ul_hop_cfg_common_mode_a_r13_c_ { struct interv_fdd_r13_e_ { enum options { int1, int2, int4, int8 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods interv_fdd_r13_e_() {} interv_fdd_r13_e_(options v) : value(v) {} interv_fdd_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct interv_tdd_r13_e_ { enum options { int1, int5, int10, int20 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods interv_tdd_r13_e_() {} interv_tdd_r13_e_(options v) : value(v) {} interv_tdd_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct types { enum options { interv_fdd_r13, interv_tdd_r13, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods interv_ul_hop_cfg_common_mode_a_r13_c_() : type_(types::nulltype) {} interv_ul_hop_cfg_common_mode_a_r13_c_(const interv_ul_hop_cfg_common_mode_a_r13_c_& other); interv_ul_hop_cfg_common_mode_a_r13_c_& operator=(const interv_ul_hop_cfg_common_mode_a_r13_c_& other); ~interv_ul_hop_cfg_common_mode_a_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(bit_ref& bref); void to_json(json_writer& j) const; // getters interv_fdd_r13_e_& interv_fdd_r13() { assert_choice_type("interval-FDD-r13", type_.to_string(), "interval-ULHoppingConfigCommonModeA-r13"); return c.get(); } interv_tdd_r13_e_& interv_tdd_r13() { assert_choice_type("interval-TDD-r13", type_.to_string(), "interval-ULHoppingConfigCommonModeA-r13"); return c.get(); } const interv_fdd_r13_e_& interv_fdd_r13() const { assert_choice_type("interval-FDD-r13", type_.to_string(), "interval-ULHoppingConfigCommonModeA-r13"); return c.get(); } const interv_tdd_r13_e_& interv_tdd_r13() const { assert_choice_type("interval-TDD-r13", type_.to_string(), "interval-ULHoppingConfigCommonModeA-r13"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct interv_ul_hop_cfg_common_mode_b_r13_c_ { struct interv_fdd_r13_e_ { enum options { int2, int4, int8, int16 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods interv_fdd_r13_e_() {} interv_fdd_r13_e_(options v) : value(v) {} interv_fdd_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct interv_tdd_r13_e_ { enum options { int5, int10, int20, int40 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods interv_tdd_r13_e_() {} interv_tdd_r13_e_(options v) : value(v) {} interv_tdd_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct types { enum options { interv_fdd_r13, interv_tdd_r13, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods interv_ul_hop_cfg_common_mode_b_r13_c_() : type_(types::nulltype) {} interv_ul_hop_cfg_common_mode_b_r13_c_(const interv_ul_hop_cfg_common_mode_b_r13_c_& other); interv_ul_hop_cfg_common_mode_b_r13_c_& operator=(const interv_ul_hop_cfg_common_mode_b_r13_c_& other); ~interv_ul_hop_cfg_common_mode_b_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(bit_ref& bref); void to_json(json_writer& j) const; // getters interv_fdd_r13_e_& interv_fdd_r13() { assert_choice_type("interval-FDD-r13", type_.to_string(), "interval-ULHoppingConfigCommonModeB-r13"); return c.get(); } interv_tdd_r13_e_& interv_tdd_r13() { assert_choice_type("interval-TDD-r13", type_.to_string(), "interval-ULHoppingConfigCommonModeB-r13"); return c.get(); } const interv_fdd_r13_e_& interv_fdd_r13() const { assert_choice_type("interval-FDD-r13", type_.to_string(), "interval-ULHoppingConfigCommonModeB-r13"); return c.get(); } const interv_tdd_r13_e_& interv_tdd_r13() const { assert_choice_type("interval-TDD-r13", type_.to_string(), "interval-ULHoppingConfigCommonModeB-r13"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables bool dummy_present; bool dummy2_present; bool dummy3_present; bool interv_ul_hop_cfg_common_mode_a_r13_present; bool interv_ul_hop_cfg_common_mode_b_r13_present; bool dummy4_present; dummy_e_ dummy; dummy2_c_ dummy2; dummy3_c_ dummy3; interv_ul_hop_cfg_common_mode_a_r13_c_ interv_ul_hop_cfg_common_mode_a_r13; interv_ul_hop_cfg_common_mode_b_r13_c_ interv_ul_hop_cfg_common_mode_b_r13; uint8_t dummy4; // sequence methods freq_hop_params_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // HighSpeedConfig-r14 ::= SEQUENCE struct high_speed_cfg_r14_s { // member variables bool high_speed_enhanced_meas_flag_r14_present; bool high_speed_enhanced_demod_flag_r14_present; // sequence methods high_speed_cfg_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // HighSpeedConfig-v1530 ::= SEQUENCE struct high_speed_cfg_v1530_s { // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // InterFreqCarrierFreqInfo ::= SEQUENCE struct inter_freq_carrier_freq_info_s { struct thresh_x_q_r9_s_ { // member variables uint8_t thresh_x_high_q_r9; uint8_t thresh_x_low_q_r9; }; // member variables bool ext; bool p_max_present; bool t_resel_eutra_sf_present; bool cell_resel_prio_present; bool q_offset_freq_present; bool inter_freq_neigh_cell_list_present; bool inter_freq_black_cell_list_present; uint16_t dl_carrier_freq; int8_t q_rx_lev_min; int8_t p_max; uint8_t t_resel_eutra; speed_state_scale_factors_s t_resel_eutra_sf; uint8_t thresh_x_high; uint8_t thresh_x_low; allowed_meas_bw_e allowed_meas_bw; bool presence_ant_port1; uint8_t cell_resel_prio; fixed_bitstring<2> neigh_cell_cfg; q_offset_range_e q_offset_freq; inter_freq_neigh_cell_list_l inter_freq_neigh_cell_list; inter_freq_black_cell_list_l inter_freq_black_cell_list; // ... // group 0 bool q_qual_min_r9_present; bool thresh_x_q_r9_present; int8_t q_qual_min_r9; copy_ptr thresh_x_q_r9; // group 1 bool q_qual_min_wb_r11_present; int8_t q_qual_min_wb_r11; // sequence methods inter_freq_carrier_freq_info_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // InterFreqCarrierFreqInfo-r12 ::= SEQUENCE struct inter_freq_carrier_freq_info_r12_s { struct thresh_x_q_r12_s_ { // member variables uint8_t thresh_x_high_q_r12; uint8_t thresh_x_low_q_r12; }; // member variables bool ext; bool p_max_r12_present; bool t_resel_eutra_sf_r12_present; bool cell_resel_prio_r12_present; bool q_offset_freq_r12_present; bool inter_freq_neigh_cell_list_r12_present; bool inter_freq_black_cell_list_r12_present; bool q_qual_min_r12_present; bool thresh_x_q_r12_present; bool q_qual_min_wb_r12_present; bool multi_band_info_list_r12_present; bool reduced_meas_performance_r12_present; bool q_qual_min_rsrq_on_all_symbols_r12_present; uint32_t dl_carrier_freq_r12; int8_t q_rx_lev_min_r12; int8_t p_max_r12; uint8_t t_resel_eutra_r12; speed_state_scale_factors_s t_resel_eutra_sf_r12; uint8_t thresh_x_high_r12; uint8_t thresh_x_low_r12; allowed_meas_bw_e allowed_meas_bw_r12; bool presence_ant_port1_r12; uint8_t cell_resel_prio_r12; fixed_bitstring<2> neigh_cell_cfg_r12; q_offset_range_e q_offset_freq_r12; inter_freq_neigh_cell_list_l inter_freq_neigh_cell_list_r12; inter_freq_black_cell_list_l inter_freq_black_cell_list_r12; int8_t q_qual_min_r12; thresh_x_q_r12_s_ thresh_x_q_r12; int8_t q_qual_min_wb_r12; multi_band_info_list_r11_l multi_band_info_list_r12; int8_t q_qual_min_rsrq_on_all_symbols_r12; // ... // sequence methods inter_freq_carrier_freq_info_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // InterFreqCarrierFreqInfo-v1250 ::= SEQUENCE struct inter_freq_carrier_freq_info_v1250_s { // member variables bool reduced_meas_performance_r12_present; bool q_qual_min_rsrq_on_all_symbols_r12_present; int8_t q_qual_min_rsrq_on_all_symbols_r12; // sequence methods inter_freq_carrier_freq_info_v1250_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // InterFreqCarrierFreqInfo-v1310 ::= SEQUENCE struct inter_freq_carrier_freq_info_v1310_s { // member variables bool cell_resel_sub_prio_r13_present; bool redist_inter_freq_info_r13_present; bool cell_sel_info_ce_r13_present; bool t_resel_eutra_ce_r13_present; cell_resel_sub_prio_r13_e cell_resel_sub_prio_r13; redist_inter_freq_info_r13_s redist_inter_freq_info_r13; cell_sel_info_ce_r13_s cell_sel_info_ce_r13; uint8_t t_resel_eutra_ce_r13; // sequence methods inter_freq_carrier_freq_info_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // InterFreqCarrierFreqInfo-v1350 ::= SEQUENCE struct inter_freq_carrier_freq_info_v1350_s { // member variables bool cell_sel_info_ce1_r13_present; cell_sel_info_ce1_r13_s cell_sel_info_ce1_r13; // sequence methods inter_freq_carrier_freq_info_v1350_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // InterFreqCarrierFreqInfo-v1530 ::= SEQUENCE struct inter_freq_carrier_freq_info_v1530_s { // member variables bool inter_freq_neigh_hsdn_cell_list_r15_present; bool cell_sel_info_ce_v1530_present; bool hsdn_ind_r15; inter_freq_neigh_hsdn_cell_list_r15_l inter_freq_neigh_hsdn_cell_list_r15; cell_sel_info_ce_v1530_s cell_sel_info_ce_v1530; // sequence methods inter_freq_carrier_freq_info_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // InterFreqCarrierFreqInfo-v8h0 ::= SEQUENCE struct inter_freq_carrier_freq_info_v8h0_s { // member variables bool multi_band_info_list_present; multi_band_info_list_l multi_band_info_list; // sequence methods inter_freq_carrier_freq_info_v8h0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // IntraFreqNeighCellInfo ::= SEQUENCE struct intra_freq_neigh_cell_info_s { // member variables bool ext; uint16_t pci; q_offset_range_e q_offset_cell; // ... // sequence methods intra_freq_neigh_cell_info_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MBMS-CarrierType-r14 ::= SEQUENCE struct mbms_carrier_type_r14_s { struct carrier_type_r14_e_ { enum options { mbms, fembms_mixed, fembms_ded }; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods carrier_type_r14_e_() {} carrier_type_r14_e_(options v) : value(v) {} carrier_type_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool frame_offset_r14_present; carrier_type_r14_e_ carrier_type_r14; uint8_t frame_offset_r14; // sequence methods mbms_carrier_type_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MBMS-SAI-InterFreq-r11 ::= SEQUENCE struct mbms_sai_inter_freq_r11_s { // member variables uint32_t dl_carrier_freq_r11; mbms_sai_list_r11_l mbms_sai_list_r11; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MBMS-SAI-InterFreq-v1140 ::= SEQUENCE struct mbms_sai_inter_freq_v1140_s { // member variables bool multi_band_info_list_r11_present; multi_band_info_list_r11_l multi_band_info_list_r11; // sequence methods mbms_sai_inter_freq_v1140_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MBSFN-AreaInfo-r9 ::= SEQUENCE struct mbsfn_area_info_r9_s { struct non_mbsfn_region_len_e_ { enum options { s1, s2 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods non_mbsfn_region_len_e_() {} non_mbsfn_region_len_e_(options v) : value(v) {} non_mbsfn_region_len_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct mcch_cfg_r9_s_ { struct mcch_repeat_period_r9_e_ { enum options { rf32, rf64, rf128, rf256 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods mcch_repeat_period_r9_e_() {} mcch_repeat_period_r9_e_(options v) : value(v) {} mcch_repeat_period_r9_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct mcch_mod_period_r9_e_ { enum options { rf512, rf1024 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods mcch_mod_period_r9_e_() {} mcch_mod_period_r9_e_(options v) : value(v) {} mcch_mod_period_r9_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct sig_mcs_r9_e_ { enum options { n2, n7, n13, n19 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods sig_mcs_r9_e_() {} sig_mcs_r9_e_(options v) : value(v) {} sig_mcs_r9_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables mcch_repeat_period_r9_e_ mcch_repeat_period_r9; uint8_t mcch_offset_r9; mcch_mod_period_r9_e_ mcch_mod_period_r9; fixed_bitstring<6> sf_alloc_info_r9; sig_mcs_r9_e_ sig_mcs_r9; }; struct mcch_cfg_r14_s_ { struct mcch_repeat_period_v1430_e_ { enum options { rf1, rf2, rf4, rf8, rf16 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 5, nof_exts = 0; static const bool has_ext = false; // enumerated methods mcch_repeat_period_v1430_e_() {} mcch_repeat_period_v1430_e_(options v) : value(v) {} mcch_repeat_period_v1430_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct mcch_mod_period_v1430_e_ { enum options { rf1, rf2, rf4, rf8, rf16, rf32, rf64, rf128, rf256, spare7 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 10, nof_exts = 0; static const bool has_ext = false; // enumerated methods mcch_mod_period_v1430_e_() {} mcch_mod_period_v1430_e_(options v) : value(v) {} mcch_mod_period_v1430_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool mcch_repeat_period_v1430_present; bool mcch_mod_period_v1430_present; mcch_repeat_period_v1430_e_ mcch_repeat_period_v1430; mcch_mod_period_v1430_e_ mcch_mod_period_v1430; // sequence methods mcch_cfg_r14_s_(); }; struct subcarrier_spacing_mbms_r14_e_ { enum options { khz_minus7dot5, khz_minus1dot25 }; typedef float number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods subcarrier_spacing_mbms_r14_e_() {} subcarrier_spacing_mbms_r14_e_(options v) : value(v) {} subcarrier_spacing_mbms_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; // member variables bool ext; uint8_t mbsfn_area_id_r9; non_mbsfn_region_len_e_ non_mbsfn_region_len; uint8_t notif_ind_r9; mcch_cfg_r9_s_ mcch_cfg_r9; // ... // group 0 bool mcch_cfg_r14_present; bool subcarrier_spacing_mbms_r14_present; copy_ptr mcch_cfg_r14; subcarrier_spacing_mbms_r14_e_ subcarrier_spacing_mbms_r14; // sequence methods mbsfn_area_info_r9_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MBSFN-SubframeConfig ::= SEQUENCE struct mbsfn_sf_cfg_s { struct radioframe_alloc_period_e_ { enum options { n1, n2, n4, n8, n16, n32 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods radioframe_alloc_period_e_() {} radioframe_alloc_period_e_(options v) : value(v) {} radioframe_alloc_period_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct sf_alloc_c_ { struct types { enum options { one_frame, four_frames, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods sf_alloc_c_() : type_(types::nulltype) {} sf_alloc_c_(const sf_alloc_c_& other); sf_alloc_c_& operator=(const sf_alloc_c_& other); ~sf_alloc_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<6>& one_frame() { assert_choice_type("oneFrame", type_.to_string(), "subframeAllocation"); return c.get >(); } fixed_bitstring<24>& four_frames() { assert_choice_type("fourFrames", type_.to_string(), "subframeAllocation"); return c.get >(); } const fixed_bitstring<6>& one_frame() const { assert_choice_type("oneFrame", type_.to_string(), "subframeAllocation"); return c.get >(); } const fixed_bitstring<24>& four_frames() const { assert_choice_type("fourFrames", type_.to_string(), "subframeAllocation"); return c.get >(); } private: types type_; choice_buffer_t)> c; void destroy_(); }; // member variables radioframe_alloc_period_e_ radioframe_alloc_period; uint8_t radioframe_alloc_offset; sf_alloc_c_ sf_alloc; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MBSFN-SubframeConfig-v1430 ::= SEQUENCE struct mbsfn_sf_cfg_v1430_s { struct sf_alloc_v1430_c_ { struct types { enum options { one_frame_v1430, four_frames_v1430, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods sf_alloc_v1430_c_() : type_(types::nulltype) {} sf_alloc_v1430_c_(const sf_alloc_v1430_c_& other); sf_alloc_v1430_c_& operator=(const sf_alloc_v1430_c_& other); ~sf_alloc_v1430_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<2>& one_frame_v1430() { assert_choice_type("oneFrame-v1430", type_.to_string(), "subframeAllocation-v1430"); return c.get >(); } fixed_bitstring<8>& four_frames_v1430() { assert_choice_type("fourFrames-v1430", type_.to_string(), "subframeAllocation-v1430"); return c.get >(); } const fixed_bitstring<2>& one_frame_v1430() const { assert_choice_type("oneFrame-v1430", type_.to_string(), "subframeAllocation-v1430"); return c.get >(); } const fixed_bitstring<8>& four_frames_v1430() const { assert_choice_type("fourFrames-v1430", type_.to_string(), "subframeAllocation-v1430"); return c.get >(); } private: types type_; choice_buffer_t)> c; void destroy_(); }; // member variables sf_alloc_v1430_c_ sf_alloc_v1430; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // NeighCellListCDMA2000 ::= SEQUENCE (SIZE (1..16)) OF NeighCellCDMA2000 typedef dyn_array neigh_cell_list_cdma2000_l; // NeighCellListCDMA2000-v920 ::= SEQUENCE (SIZE (1..16)) OF NeighCellCDMA2000-v920 typedef dyn_array neigh_cell_list_cdma2000_v920_l; // PCCH-Config ::= SEQUENCE struct pcch_cfg_s { struct default_paging_cycle_e_ { enum options { rf32, rf64, rf128, rf256 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods default_paging_cycle_e_() {} default_paging_cycle_e_(options v) : value(v) {} default_paging_cycle_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct nb_e_ { enum options { four_t, two_t, one_t, half_t, quarter_t, one_eighth_t, one_sixteenth_t, one_thirty_second_t }; typedef float number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods nb_e_() {} nb_e_(options v) : value(v) {} nb_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; // member variables default_paging_cycle_e_ default_paging_cycle; nb_e_ nb; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PCCH-Config-v1310 ::= SEQUENCE struct pcch_cfg_v1310_s { struct mpdcch_num_repeat_paging_r13_e_ { enum options { r1, r2, r4, r8, r16, r32, r64, r128, r256 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 9, nof_exts = 0; static const bool has_ext = false; // enumerated methods mpdcch_num_repeat_paging_r13_e_() {} mpdcch_num_repeat_paging_r13_e_(options v) : value(v) {} mpdcch_num_repeat_paging_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct nb_v1310_e_ { enum options { one64th_t, one128th_t, one256th_t }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods nb_v1310_e_() {} nb_v1310_e_(options v) : value(v) {} nb_v1310_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool nb_v1310_present; uint8_t paging_narrow_bands_r13; mpdcch_num_repeat_paging_r13_e_ mpdcch_num_repeat_paging_r13; nb_v1310_e_ nb_v1310; // sequence methods pcch_cfg_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PDSCH-ConfigCommon ::= SEQUENCE struct pdsch_cfg_common_s { // member variables int8_t ref_sig_pwr; uint8_t p_b; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PDSCH-ConfigCommon-v1310 ::= SEQUENCE struct pdsch_cfg_common_v1310_s { struct pdsch_max_num_repeat_cemode_a_r13_e_ { enum options { r16, r32 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods pdsch_max_num_repeat_cemode_a_r13_e_() {} pdsch_max_num_repeat_cemode_a_r13_e_(options v) : value(v) {} pdsch_max_num_repeat_cemode_a_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct pdsch_max_num_repeat_cemode_b_r13_e_ { enum options { r192, r256, r384, r512, r768, r1024, r1536, r2048 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods pdsch_max_num_repeat_cemode_b_r13_e_() {} pdsch_max_num_repeat_cemode_b_r13_e_(options v) : value(v) {} pdsch_max_num_repeat_cemode_b_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool pdsch_max_num_repeat_cemode_a_r13_present; bool pdsch_max_num_repeat_cemode_b_r13_present; pdsch_max_num_repeat_cemode_a_r13_e_ pdsch_max_num_repeat_cemode_a_r13; pdsch_max_num_repeat_cemode_b_r13_e_ pdsch_max_num_repeat_cemode_b_r13; // sequence methods pdsch_cfg_common_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PLMN-Info-r15 ::= SEQUENCE struct plmn_info_r15_s { // member variables bool upper_layer_ind_r15_present; // sequence methods plmn_info_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PRACH-Config-v1430 ::= SEQUENCE struct prach_cfg_v1430_s { // member variables uint16_t root_seq_idx_high_speed_r14; uint8_t zero_correlation_zone_cfg_high_speed_r14; uint8_t prach_cfg_idx_high_speed_r14; uint8_t prach_freq_offset_high_speed_r14; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PRACH-ConfigSIB ::= SEQUENCE struct prach_cfg_sib_s { // member variables uint16_t root_seq_idx; prach_cfg_info_s prach_cfg_info; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PRACH-ConfigSIB-v1310 ::= SEQUENCE struct prach_cfg_sib_v1310_s { struct mpdcch_start_sf_css_ra_r13_c_ { struct fdd_r13_e_ { enum options { v1, v1dot5, v2, v2dot5, v4, v5, v8, v10 }; typedef float number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods fdd_r13_e_() {} fdd_r13_e_(options v) : value(v) {} fdd_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; struct tdd_r13_e_ { enum options { v1, v2, v4, v5, v8, v10, v20, spare }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods tdd_r13_e_() {} tdd_r13_e_(options v) : value(v) {} tdd_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct types { enum options { fdd_r13, tdd_r13, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods mpdcch_start_sf_css_ra_r13_c_() : type_(types::nulltype) {} mpdcch_start_sf_css_ra_r13_c_(const mpdcch_start_sf_css_ra_r13_c_& other); mpdcch_start_sf_css_ra_r13_c_& operator=(const mpdcch_start_sf_css_ra_r13_c_& other); ~mpdcch_start_sf_css_ra_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(bit_ref& bref); void to_json(json_writer& j) const; // getters fdd_r13_e_& fdd_r13() { assert_choice_type("fdd-r13", type_.to_string(), "mpdcch-startSF-CSS-RA-r13"); return c.get(); } tdd_r13_e_& tdd_r13() { assert_choice_type("tdd-r13", type_.to_string(), "mpdcch-startSF-CSS-RA-r13"); return c.get(); } const fdd_r13_e_& fdd_r13() const { assert_choice_type("fdd-r13", type_.to_string(), "mpdcch-startSF-CSS-RA-r13"); return c.get(); } const tdd_r13_e_& tdd_r13() const { assert_choice_type("tdd-r13", type_.to_string(), "mpdcch-startSF-CSS-RA-r13"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables bool mpdcch_start_sf_css_ra_r13_present; bool prach_hop_offset_r13_present; rsrp_thress_prach_info_list_r13_l rsrp_thress_prach_info_list_r13; mpdcch_start_sf_css_ra_r13_c_ mpdcch_start_sf_css_ra_r13; uint8_t prach_hop_offset_r13; prach_params_list_ce_r13_l prach_params_list_ce_r13; // sequence methods prach_cfg_sib_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PRACH-ConfigSIB-v1530 ::= SEQUENCE struct prach_cfg_sib_v1530_s { typedef dyn_array edt_prach_params_list_ce_r15_l_; // member variables edt_prach_params_list_ce_r15_l_ edt_prach_params_list_ce_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PUCCH-ConfigCommon ::= SEQUENCE struct pucch_cfg_common_s { struct delta_pucch_shift_e_ { enum options { ds1, ds2, ds3 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_pucch_shift_e_() {} delta_pucch_shift_e_(options v) : value(v) {} delta_pucch_shift_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables delta_pucch_shift_e_ delta_pucch_shift; uint8_t n_rb_cqi; uint8_t n_cs_an; uint16_t n1_pucch_an; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PUCCH-ConfigCommon-v1310 ::= SEQUENCE struct pucch_cfg_common_v1310_s { struct pucch_num_repeat_ce_msg4_level0_r13_e_ { enum options { n1, n2, n4, n8 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods pucch_num_repeat_ce_msg4_level0_r13_e_() {} pucch_num_repeat_ce_msg4_level0_r13_e_(options v) : value(v) {} pucch_num_repeat_ce_msg4_level0_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct pucch_num_repeat_ce_msg4_level1_r13_e_ { enum options { n1, n2, n4, n8 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods pucch_num_repeat_ce_msg4_level1_r13_e_() {} pucch_num_repeat_ce_msg4_level1_r13_e_(options v) : value(v) {} pucch_num_repeat_ce_msg4_level1_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct pucch_num_repeat_ce_msg4_level2_r13_e_ { enum options { n4, n8, n16, n32 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods pucch_num_repeat_ce_msg4_level2_r13_e_() {} pucch_num_repeat_ce_msg4_level2_r13_e_(options v) : value(v) {} pucch_num_repeat_ce_msg4_level2_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct pucch_num_repeat_ce_msg4_level3_r13_e_ { enum options { n4, n8, n16, n32 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods pucch_num_repeat_ce_msg4_level3_r13_e_() {} pucch_num_repeat_ce_msg4_level3_r13_e_(options v) : value(v) {} pucch_num_repeat_ce_msg4_level3_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool n1_pucch_an_info_list_r13_present; bool pucch_num_repeat_ce_msg4_level0_r13_present; bool pucch_num_repeat_ce_msg4_level1_r13_present; bool pucch_num_repeat_ce_msg4_level2_r13_present; bool pucch_num_repeat_ce_msg4_level3_r13_present; n1_pucch_an_info_list_r13_l n1_pucch_an_info_list_r13; pucch_num_repeat_ce_msg4_level0_r13_e_ pucch_num_repeat_ce_msg4_level0_r13; pucch_num_repeat_ce_msg4_level1_r13_e_ pucch_num_repeat_ce_msg4_level1_r13; pucch_num_repeat_ce_msg4_level2_r13_e_ pucch_num_repeat_ce_msg4_level2_r13; pucch_num_repeat_ce_msg4_level3_r13_e_ pucch_num_repeat_ce_msg4_level3_r13; // sequence methods pucch_cfg_common_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PUCCH-ConfigCommon-v1430 ::= SEQUENCE struct pucch_cfg_common_v1430_s { struct pucch_num_repeat_ce_msg4_level3_r14_e_ { enum options { n64, n128 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods pucch_num_repeat_ce_msg4_level3_r14_e_() {} pucch_num_repeat_ce_msg4_level3_r14_e_(options v) : value(v) {} pucch_num_repeat_ce_msg4_level3_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool pucch_num_repeat_ce_msg4_level3_r14_present; pucch_num_repeat_ce_msg4_level3_r14_e_ pucch_num_repeat_ce_msg4_level3_r14; // sequence methods pucch_cfg_common_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PUSCH-ConfigCommon ::= SEQUENCE struct pusch_cfg_common_s { struct pusch_cfg_basic_s_ { struct hop_mode_e_ { enum options { inter_sub_frame, intra_and_inter_sub_frame }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods hop_mode_e_() {} hop_mode_e_(options v) : value(v) {} hop_mode_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables uint8_t n_sb; hop_mode_e_ hop_mode; uint8_t pusch_hop_offset; bool enable64_qam; }; // member variables pusch_cfg_basic_s_ pusch_cfg_basic; ul_ref_sigs_pusch_s ul_ref_sigs_pusch; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PUSCH-ConfigCommon-v1270 ::= SEQUENCE struct pusch_cfg_common_v1270_s { // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PUSCH-ConfigCommon-v1310 ::= SEQUENCE struct pusch_cfg_common_v1310_s { struct pusch_max_num_repeat_cemode_a_r13_e_ { enum options { r8, r16, r32 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods pusch_max_num_repeat_cemode_a_r13_e_() {} pusch_max_num_repeat_cemode_a_r13_e_(options v) : value(v) {} pusch_max_num_repeat_cemode_a_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct pusch_max_num_repeat_cemode_b_r13_e_ { enum options { r192, r256, r384, r512, r768, r1024, r1536, r2048 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods pusch_max_num_repeat_cemode_b_r13_e_() {} pusch_max_num_repeat_cemode_b_r13_e_(options v) : value(v) {} pusch_max_num_repeat_cemode_b_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool pusch_max_num_repeat_cemode_a_r13_present; bool pusch_max_num_repeat_cemode_b_r13_present; bool pusch_hop_offset_v1310_present; pusch_max_num_repeat_cemode_a_r13_e_ pusch_max_num_repeat_cemode_a_r13; pusch_max_num_repeat_cemode_b_r13_e_ pusch_max_num_repeat_cemode_b_r13; uint8_t pusch_hop_offset_v1310; // sequence methods pusch_cfg_common_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RACH-ConfigCommon ::= SEQUENCE struct rach_cfg_common_s { struct preamb_info_s_ { struct nof_ra_preambs_e_ { enum options { n4, n8, n12, n16, n20, n24, n28, n32, n36, n40, n44, n48, n52, n56, n60, n64 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods nof_ra_preambs_e_() {} nof_ra_preambs_e_(options v) : value(v) {} nof_ra_preambs_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct preambs_group_a_cfg_s_ { struct size_of_ra_preambs_group_a_e_ { enum options { n4, n8, n12, n16, n20, n24, n28, n32, n36, n40, n44, n48, n52, n56, n60 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 15, nof_exts = 0; static const bool has_ext = false; // enumerated methods size_of_ra_preambs_group_a_e_() {} size_of_ra_preambs_group_a_e_(options v) : value(v) {} size_of_ra_preambs_group_a_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct msg_size_group_a_e_ { enum options { b56, b144, b208, b256 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods msg_size_group_a_e_() {} msg_size_group_a_e_(options v) : value(v) {} msg_size_group_a_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct msg_pwr_offset_group_b_e_ { enum options { minusinfinity, db0, db5, db8, db10, db12, db15, db18 }; typedef int8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods msg_pwr_offset_group_b_e_() {} msg_pwr_offset_group_b_e_(options v) : value(v) {} msg_pwr_offset_group_b_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; // member variables bool ext; size_of_ra_preambs_group_a_e_ size_of_ra_preambs_group_a; msg_size_group_a_e_ msg_size_group_a; msg_pwr_offset_group_b_e_ msg_pwr_offset_group_b; // ... // sequence methods preambs_group_a_cfg_s_(); }; // member variables bool preambs_group_a_cfg_present; nof_ra_preambs_e_ nof_ra_preambs; preambs_group_a_cfg_s_ preambs_group_a_cfg; // sequence methods preamb_info_s_(); }; struct ra_supervision_info_s_ { struct ra_resp_win_size_e_ { enum options { sf2, sf3, sf4, sf5, sf6, sf7, sf8, sf10 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods ra_resp_win_size_e_() {} ra_resp_win_size_e_(options v) : value(v) {} ra_resp_win_size_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct mac_contention_resolution_timer_e_ { enum options { sf8, sf16, sf24, sf32, sf40, sf48, sf56, sf64 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods mac_contention_resolution_timer_e_() {} mac_contention_resolution_timer_e_(options v) : value(v) {} mac_contention_resolution_timer_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables preamb_trans_max_e preamb_trans_max; ra_resp_win_size_e_ ra_resp_win_size; mac_contention_resolution_timer_e_ mac_contention_resolution_timer; }; // member variables bool ext; preamb_info_s_ preamb_info; pwr_ramp_params_s pwr_ramp_params; ra_supervision_info_s_ ra_supervision_info; uint8_t max_harq_msg3_tx; // ... // group 0 bool preamb_trans_max_ce_r13_present; bool rach_ce_level_info_list_r13_present; preamb_trans_max_e preamb_trans_max_ce_r13; copy_ptr rach_ce_level_info_list_r13; // group 1 bool edt_small_tbs_subset_r15_present; // sequence methods rach_cfg_common_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RACH-ConfigCommon-v1250 ::= SEQUENCE struct rach_cfg_common_v1250_s { struct tx_fail_params_r12_s_ { struct conn_est_fail_count_r12_e_ { enum options { n1, n2, n3, n4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods conn_est_fail_count_r12_e_() {} conn_est_fail_count_r12_e_(options v) : value(v) {} conn_est_fail_count_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct conn_est_fail_offset_validity_r12_e_ { enum options { s30, s60, s120, s240, s300, s420, s600, s900 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods conn_est_fail_offset_validity_r12_e_() {} conn_est_fail_offset_validity_r12_e_(options v) : value(v) {} conn_est_fail_offset_validity_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool conn_est_fail_offset_r12_present; conn_est_fail_count_r12_e_ conn_est_fail_count_r12; conn_est_fail_offset_validity_r12_e_ conn_est_fail_offset_validity_r12; uint8_t conn_est_fail_offset_r12; // sequence methods tx_fail_params_r12_s_(); }; // member variables tx_fail_params_r12_s_ tx_fail_params_r12; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RSS-Config-r15 ::= SEQUENCE struct rss_cfg_r15_s { struct dur_r15_e_ { enum options { sf8, sf16, sf32, sf40 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods dur_r15_e_() {} dur_r15_e_(options v) : value(v) {} dur_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct periodicity_r15_e_ { enum options { ms160, ms320, ms640, ms1280 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods periodicity_r15_e_() {} periodicity_r15_e_(options v) : value(v) {} periodicity_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct pwr_boost_r15_e_ { enum options { db0, db3, db4dot8, db6 }; typedef float number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods pwr_boost_r15_e_() {} pwr_boost_r15_e_(options v) : value(v) {} pwr_boost_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; // member variables dur_r15_e_ dur_r15; uint8_t freq_location_r15; periodicity_r15_e_ periodicity_r15; pwr_boost_r15_e_ pwr_boost_r15; uint8_t time_offset_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // ReferenceTime-r15 ::= SEQUENCE struct ref_time_r15_s { // member variables uint32_t ref_days_r15; uint32_t ref_seconds_r15; uint16_t ref_milli_seconds_r15; uint16_t ref_quarter_micro_seconds_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // ReselectionInfoRelay-r13 ::= SEQUENCE struct resel_info_relay_r13_s { struct min_hyst_r13_e_ { enum options { db0, db3, db6, db9, db12, dbinf }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods min_hyst_r13_e_() {} min_hyst_r13_e_(options v) : value(v) {} min_hyst_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool min_hyst_r13_present; int8_t q_rx_lev_min_r13; filt_coef_e filt_coef_r13; min_hyst_r13_e_ min_hyst_r13; // sequence methods resel_info_relay_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SIB-Type ::= ENUMERATED struct sib_type_e { enum options { sib_type3, sib_type4, sib_type5, sib_type6, sib_type7, sib_type8, sib_type9, sib_type10, sib_type11, sib_type12_v920, sib_type13_v920, sib_type14_v1130, sib_type15_v1130, sib_type16_v1130, sib_type17_v1250, sib_type18_v1250, // ... sib_type19_v1250, sib_type20_v1310, sib_type21_v1430, sib_type24_v1530, sib_type25_v1530, sib_type26_v1530 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 22, nof_exts = 6; static const bool has_ext = true; // enumerated methods sib_type_e() {} sib_type_e(options v) : value(v) {} sib_type_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // SIB8-PerPLMN-r11 ::= SEQUENCE struct sib8_per_plmn_r11_s { struct params_cdma2000_r11_c_ { struct types { enum options { explicit_value, default_value, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods params_cdma2000_r11_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters params_cdma2000_r11_s& explicit_value() { assert_choice_type("explicitValue", type_.to_string(), "parametersCDMA2000-r11"); return c; } const params_cdma2000_r11_s& explicit_value() const { assert_choice_type("explicitValue", type_.to_string(), "parametersCDMA2000-r11"); return c; } private: types type_; params_cdma2000_r11_s c; }; // member variables uint8_t plmn_id_r11; params_cdma2000_r11_c_ params_cdma2000_r11; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-AnchorCarrierFreqList-V2X-r14 ::= SEQUENCE (SIZE (1..maxFreqV2X-r14)) OF INTEGER typedef bounded_array sl_anchor_carrier_freq_list_v2x_r14_l; // SL-CBR-CommonTxConfigList-r14 ::= SEQUENCE struct sl_cbr_common_tx_cfg_list_r14_s { typedef dyn_array cbr_range_common_cfg_list_r14_l_; typedef dyn_array sl_cbr_pssch_tx_cfg_list_r14_l_; // member variables cbr_range_common_cfg_list_r14_l_ cbr_range_common_cfg_list_r14; sl_cbr_pssch_tx_cfg_list_r14_l_ sl_cbr_pssch_tx_cfg_list_r14; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-CarrierFreqInfo-r12 ::= SEQUENCE struct sl_carrier_freq_info_r12_s { // member variables bool plmn_id_list_r12_present; uint32_t carrier_freq_r12; plmn_id_list4_r12_l plmn_id_list_r12; // sequence methods sl_carrier_freq_info_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-CarrierFreqInfo-v1310 ::= SEQUENCE struct sl_carrier_freq_info_v1310_s { // member variables bool ext; bool disc_res_non_ps_r13_present; bool disc_res_ps_r13_present; bool disc_cfg_other_r13_present; sl_res_inter_freq_r13_s disc_res_non_ps_r13; sl_res_inter_freq_r13_s disc_res_ps_r13; sl_disc_cfg_other_inter_freq_r13_s disc_cfg_other_r13; // ... // sequence methods sl_carrier_freq_info_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-CommResourcePool-r12 ::= SEQUENCE struct sl_comm_res_pool_r12_s { struct ue_sel_res_cfg_r12_s_ { // member variables bool trpt_subset_r12_present; sl_tf_res_cfg_r12_s data_tf_res_cfg_r12; dyn_bitstring trpt_subset_r12; // sequence methods ue_sel_res_cfg_r12_s_(); }; struct rx_params_ncell_r12_s_ { // member variables bool tdd_cfg_r12_present; tdd_cfg_s tdd_cfg_r12; uint8_t sync_cfg_idx_r12; // sequence methods rx_params_ncell_r12_s_(); }; struct tx_params_r12_s_ { // member variables sl_tx_params_r12_s sc_tx_params_r12; sl_tx_params_r12_s data_tx_params_r12; }; // member variables bool ext; bool ue_sel_res_cfg_r12_present; bool rx_params_ncell_r12_present; bool tx_params_r12_present; sl_cp_len_r12_e sc_cp_len_r12; sl_period_comm_r12_e sc_period_r12; sl_tf_res_cfg_r12_s sc_tf_res_cfg_r12; sl_cp_len_r12_e data_cp_len_r12; sl_hop_cfg_comm_r12_s data_hop_cfg_r12; ue_sel_res_cfg_r12_s_ ue_sel_res_cfg_r12; rx_params_ncell_r12_s_ rx_params_ncell_r12; tx_params_r12_s_ tx_params_r12; // ... // group 0 bool prio_list_r13_present; copy_ptr prio_list_r13; // sequence methods sl_comm_res_pool_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-InterFreqInfoListV2X-r14 ::= SEQUENCE (SIZE (0..maxFreqV2X-1-r14)) OF SL-InterFreqInfoV2X-r14 typedef dyn_array sl_inter_freq_info_list_v2x_r14_l; // SL-PPPP-TxConfigIndex-r15 ::= SEQUENCE struct sl_pppp_tx_cfg_idx_r15_s { typedef bounded_array tx_cfg_idx_list_r15_l_; typedef dyn_array mcs_pssch_range_list_r15_l_; // member variables uint8_t prio_thres_r15; uint8_t default_tx_cfg_idx_r15; uint8_t cbr_cfg_idx_r15; tx_cfg_idx_list_r15_l_ tx_cfg_idx_list_r15; mcs_pssch_range_list_r15_l_ mcs_pssch_range_list_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-PPPR-Dest-CarrierFreqList-r15 ::= SEQUENCE (SIZE (1..maxSL-Dest-r12)) OF SL-PPPR-Dest-CarrierFreq typedef dyn_array sl_pppr_dest_carrier_freq_list_r15_l; // SL-SyncConfigListV2X-r14 ::= SEQUENCE (SIZE (1.. maxSL-V2X-SyncConfig-r14)) OF SL-SyncConfig-r12 typedef dyn_array sl_sync_cfg_list_v2x_r14_l; // SoundingRS-UL-ConfigCommon ::= CHOICE struct srs_ul_cfg_common_c { struct setup_s_ { struct srs_bw_cfg_e_ { enum options { bw0, bw1, bw2, bw3, bw4, bw5, bw6, bw7 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods srs_bw_cfg_e_() {} srs_bw_cfg_e_(options v) : value(v) {} srs_bw_cfg_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct srs_sf_cfg_e_ { enum options { sc0, sc1, sc2, sc3, sc4, sc5, sc6, sc7, sc8, sc9, sc10, sc11, sc12, sc13, sc14, sc15 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods srs_sf_cfg_e_() {} srs_sf_cfg_e_(options v) : value(v) {} srs_sf_cfg_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool srs_max_up_pts_present; srs_bw_cfg_e_ srs_bw_cfg; srs_sf_cfg_e_ srs_sf_cfg; bool ack_nack_srs_simul_tx; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods srs_ul_cfg_common_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "SoundingRS-UL-ConfigCommon"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "SoundingRS-UL-ConfigCommon"); return c; } private: types type_; setup_s_ c; }; // SystemInformationBlockType1-v10j0-IEs ::= SEQUENCE struct sib_type1_v10j0_ies_s { // member variables bool freq_band_info_r10_present; bool multi_band_info_list_v10j0_present; bool non_crit_ext_present; ns_pmax_list_r10_l freq_band_info_r10; multi_band_info_list_v10j0_l multi_band_info_list_v10j0; sib_type1_v10l0_ies_s non_crit_ext; // sequence methods sib_type1_v10j0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType1-v1250-IEs ::= SEQUENCE struct sib_type1_v1250_ies_s { struct cell_access_related_info_v1250_s_ { // member variables bool category0_allowed_r12_present; // sequence methods cell_access_related_info_v1250_s_(); }; // member variables bool cell_sel_info_v1250_present; bool freq_band_ind_prio_r12_present; bool non_crit_ext_present; cell_access_related_info_v1250_s_ cell_access_related_info_v1250; cell_sel_info_v1250_s cell_sel_info_v1250; sib_type1_v1310_ies_s non_crit_ext; // sequence methods sib_type1_v1250_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType2-v9e0-IEs ::= SEQUENCE struct sib_type2_v9e0_ies_s { // member variables bool ul_carrier_freq_v9e0_present; bool non_crit_ext_present; uint32_t ul_carrier_freq_v9e0; sib_type2_v9i0_ies_s non_crit_ext; // sequence methods sib_type2_v9e0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType3-v10l0-IEs ::= SEQUENCE struct sib_type3_v10l0_ies_s { // member variables bool freq_band_info_v10l0_present; bool multi_band_info_list_v10l0_present; bool non_crit_ext_present; ns_pmax_list_v10l0_l freq_band_info_v10l0; multi_band_info_list_v10l0_l multi_band_info_list_v10l0; // sequence methods sib_type3_v10l0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType5-v9e0-IEs ::= SEQUENCE struct sib_type5_v9e0_ies_s { typedef dyn_array inter_freq_carrier_freq_list_v9e0_l_; // member variables bool inter_freq_carrier_freq_list_v9e0_present; bool non_crit_ext_present; inter_freq_carrier_freq_list_v9e0_l_ inter_freq_carrier_freq_list_v9e0; sib_type5_v10j0_ies_s non_crit_ext; // sequence methods sib_type5_v9e0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UAC-BarringInfoSet-r15 ::= SEQUENCE struct uac_barr_info_set_r15_s { struct uac_barr_factor_r15_e_ { enum options { p00, p05, p10, p15, p20, p25, p30, p40, p50, p60, p70, p75, p80, p85, p90, p95 }; typedef float number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods uac_barr_factor_r15_e_() {} uac_barr_factor_r15_e_(options v) : value(v) {} uac_barr_factor_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; struct uac_barr_time_r15_e_ { enum options { s4, s8, s16, s32, s64, s128, s256, s512 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods uac_barr_time_r15_e_() {} uac_barr_time_r15_e_(options v) : value(v) {} uac_barr_time_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables uac_barr_factor_r15_e_ uac_barr_factor_r15; uac_barr_time_r15_e_ uac_barr_time_r15; fixed_bitstring<7> uac_barr_for_access_id_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UAC-BarringPerPLMN-r15 ::= SEQUENCE struct uac_barr_per_plmn_r15_s { struct uac_ac_barr_list_type_r15_c_ { typedef fixed_array uac_implicit_ac_barr_list_r15_l_; struct types { enum options { uac_implicit_ac_barr_list_r15, uac_explicit_ac_barr_list_r15, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods uac_ac_barr_list_type_r15_c_() : type_(types::nulltype) {} uac_ac_barr_list_type_r15_c_(const uac_ac_barr_list_type_r15_c_& other); uac_ac_barr_list_type_r15_c_& operator=(const uac_ac_barr_list_type_r15_c_& other); ~uac_ac_barr_list_type_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(bit_ref& bref); void to_json(json_writer& j) const; // getters uac_implicit_ac_barr_list_r15_l_& uac_implicit_ac_barr_list_r15() { assert_choice_type("uac-ImplicitAC-BarringList-r15", type_.to_string(), "uac-AC-BarringListType-r15"); return c.get(); } uac_barr_per_cat_list_r15_l& uac_explicit_ac_barr_list_r15() { assert_choice_type("uac-ExplicitAC-BarringList-r15", type_.to_string(), "uac-AC-BarringListType-r15"); return c.get(); } const uac_implicit_ac_barr_list_r15_l_& uac_implicit_ac_barr_list_r15() const { assert_choice_type("uac-ImplicitAC-BarringList-r15", type_.to_string(), "uac-AC-BarringListType-r15"); return c.get(); } const uac_barr_per_cat_list_r15_l& uac_explicit_ac_barr_list_r15() const { assert_choice_type("uac-ExplicitAC-BarringList-r15", type_.to_string(), "uac-AC-BarringListType-r15"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables bool uac_ac_barr_list_type_r15_present; uint8_t plmn_id_idx_r15; uac_ac_barr_list_type_r15_c_ uac_ac_barr_list_type_r15; // sequence methods uac_barr_per_plmn_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UDT-RestrictingPerPLMN-r13 ::= SEQUENCE struct udt_restricting_per_plmn_r13_s { // member variables bool udt_restricting_r13_present; uint8_t plmn_id_idx_r13; udt_restricting_r13_s udt_restricting_r13; // sequence methods udt_restricting_per_plmn_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UL-CyclicPrefixLength ::= ENUMERATED struct ul_cp_len_e { enum options { len1, len2 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods ul_cp_len_e() {} ul_cp_len_e(options v) : value(v) {} ul_cp_len_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // UplinkPowerControlCommon ::= SEQUENCE struct ul_pwr_ctrl_common_s { // member variables int8_t p0_nominal_pusch; alpha_r12_e alpha; int8_t p0_nominal_pucch; delta_flist_pucch_s delta_flist_pucch; int8_t delta_preamb_msg3; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UplinkPowerControlCommon-v1020 ::= SEQUENCE struct ul_pwr_ctrl_common_v1020_s { struct delta_f_pucch_format3_r10_e_ { enum options { delta_f_minus1, delta_f0, delta_f1, delta_f2, delta_f3, delta_f4, delta_f5, delta_f6 }; typedef int8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_f_pucch_format3_r10_e_() {} delta_f_pucch_format3_r10_e_(options v) : value(v) {} delta_f_pucch_format3_r10_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; struct delta_f_pucch_format1b_cs_r10_e_ { enum options { delta_f1, delta_f2, spare2, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_f_pucch_format1b_cs_r10_e_() {} delta_f_pucch_format1b_cs_r10_e_(options v) : value(v) {} delta_f_pucch_format1b_cs_r10_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables delta_f_pucch_format3_r10_e_ delta_f_pucch_format3_r10; delta_f_pucch_format1b_cs_r10_e_ delta_f_pucch_format1b_cs_r10; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // WLAN-Id-List-r12 ::= SEQUENCE (SIZE (1..maxWLAN-Id-r12)) OF WLAN-Identifiers-r12 typedef dyn_array wlan_id_list_r12_l; // WLAN-OffloadConfig-r12 ::= SEQUENCE struct wlan_offload_cfg_r12_s { struct thres_rsrp_r12_s_ { // member variables uint8_t thres_rsrp_low_r12; uint8_t thres_rsrp_high_r12; }; struct thres_rsrq_r12_s_ { // member variables uint8_t thres_rsrq_low_r12; uint8_t thres_rsrq_high_r12; }; struct thres_rsrq_on_all_symbols_with_wb_r12_s_ { // member variables uint8_t thres_rsrq_on_all_symbols_with_wb_low_r12; uint8_t thres_rsrq_on_all_symbols_with_wb_high_r12; }; struct thres_rsrq_on_all_symbols_r12_s_ { // member variables uint8_t thres_rsrq_on_all_symbols_low_r12; uint8_t thres_rsrq_on_all_symbols_high_r12; }; struct thres_rsrq_wb_r12_s_ { // member variables uint8_t thres_rsrq_wb_low_r12; uint8_t thres_rsrq_wb_high_r12; }; struct thres_ch_utilization_r12_s_ { // member variables uint8_t thres_ch_utilization_low_r12; uint8_t thres_ch_utilization_high_r12; }; struct thres_backhaul_bw_r12_s_ { // member variables wlan_backhaul_rate_r12_e thres_backhaul_dl_bw_low_r12; wlan_backhaul_rate_r12_e thres_backhaul_dl_bw_high_r12; wlan_backhaul_rate_r12_e thres_backhaul_ul_bw_low_r12; wlan_backhaul_rate_r12_e thres_backhaul_ul_bw_high_r12; }; struct thres_wlan_rssi_r12_s_ { // member variables uint8_t thres_wlan_rssi_low_r12; uint8_t thres_wlan_rssi_high_r12; }; // member variables bool ext; bool thres_rsrp_r12_present; bool thres_rsrq_r12_present; bool thres_rsrq_on_all_symbols_with_wb_r12_present; bool thres_rsrq_on_all_symbols_r12_present; bool thres_rsrq_wb_r12_present; bool thres_ch_utilization_r12_present; bool thres_backhaul_bw_r12_present; bool thres_wlan_rssi_r12_present; bool offload_pref_ind_r12_present; bool t_steering_wlan_r12_present; thres_rsrp_r12_s_ thres_rsrp_r12; thres_rsrq_r12_s_ thres_rsrq_r12; thres_rsrq_on_all_symbols_with_wb_r12_s_ thres_rsrq_on_all_symbols_with_wb_r12; thres_rsrq_on_all_symbols_r12_s_ thres_rsrq_on_all_symbols_r12; thres_rsrq_wb_r12_s_ thres_rsrq_wb_r12; thres_ch_utilization_r12_s_ thres_ch_utilization_r12; thres_backhaul_bw_r12_s_ thres_backhaul_bw_r12; thres_wlan_rssi_r12_s_ thres_wlan_rssi_r12; fixed_bitstring<16> offload_pref_ind_r12; uint8_t t_steering_wlan_r12; // ... // sequence methods wlan_offload_cfg_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // WUS-Config-r15 ::= SEQUENCE struct wus_cfg_r15_s { struct max_dur_factor_r15_e_ { enum options { one32th, one16th, one8th, one4th }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods max_dur_factor_r15_e_() {} max_dur_factor_r15_e_(options v) : value(v) {} max_dur_factor_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct num_pos_r15_e_ { enum options { n1, n2, n4, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods num_pos_r15_e_() {} num_pos_r15_e_(options v) : value(v) {} num_pos_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct freq_location_r15_e_ { enum options { n0, n2, n4, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods freq_location_r15_e_() {} freq_location_r15_e_(options v) : value(v) {} freq_location_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct time_offset_drx_r15_e_ { enum options { ms40, ms80, ms160, ms240 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods time_offset_drx_r15_e_() {} time_offset_drx_r15_e_(options v) : value(v) {} time_offset_drx_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct time_offset_e_drx_short_r15_e_ { enum options { ms40, ms80, ms160, ms240 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods time_offset_e_drx_short_r15_e_() {} time_offset_e_drx_short_r15_e_(options v) : value(v) {} time_offset_e_drx_short_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct time_offset_e_drx_long_r15_e_ { enum options { ms1000, ms2000 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods time_offset_e_drx_long_r15_e_() {} time_offset_e_drx_long_r15_e_(options v) : value(v) {} time_offset_e_drx_long_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool num_pos_r15_present; bool time_offset_e_drx_long_r15_present; max_dur_factor_r15_e_ max_dur_factor_r15; num_pos_r15_e_ num_pos_r15; freq_location_r15_e_ freq_location_r15; time_offset_drx_r15_e_ time_offset_drx_r15; time_offset_e_drx_short_r15_e_ time_offset_e_drx_short_r15; time_offset_e_drx_long_r15_e_ time_offset_e_drx_long_r15; // sequence methods wus_cfg_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AC-BarringPerPLMN-List-r12 ::= SEQUENCE (SIZE (1.. maxPLMN-r11)) OF AC-BarringPerPLMN-r12 typedef dyn_array ac_barr_per_plmn_list_r12_l; // ACDC-BarringForCommon-r13 ::= SEQUENCE struct acdc_barr_for_common_r13_s { // member variables bool acdc_hplm_nonly_r13; barr_per_acdc_category_list_r13_l barr_per_acdc_category_list_r13; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // ACDC-BarringPerPLMN-List-r13 ::= SEQUENCE (SIZE (1.. maxPLMN-r11)) OF ACDC-BarringPerPLMN-r13 typedef dyn_array acdc_barr_per_plmn_list_r13_l; // CIOT-EPS-OptimisationInfo-r13 ::= SEQUENCE (SIZE (1.. maxPLMN-r11)) OF CIOT-OptimisationPLMN-r13 typedef dyn_array ciot_eps_optim_info_r13_l; // CarrierFreqInfoUTRA-v1250 ::= SEQUENCE struct carrier_freq_info_utra_v1250_s { // member variables bool reduced_meas_performance_r12_present; // sequence methods carrier_freq_info_utra_v1250_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CarrierFreqListNR-r15 ::= SEQUENCE (SIZE (1..maxFreq)) OF CarrierFreqNR-r15 typedef dyn_array carrier_freq_list_nr_r15_l; // CarrierFreqListUTRA-FDD ::= SEQUENCE (SIZE (1..maxUTRA-FDD-Carrier)) OF CarrierFreqUTRA-FDD typedef dyn_array carrier_freq_list_utra_fdd_l; // CarrierFreqListUTRA-FDD-Ext-r12 ::= SEQUENCE (SIZE (1..maxUTRA-FDD-Carrier)) OF CarrierFreqUTRA-FDD-Ext-r12 typedef dyn_array carrier_freq_list_utra_fdd_ext_r12_l; // CarrierFreqListUTRA-TDD ::= SEQUENCE (SIZE (1..maxUTRA-TDD-Carrier)) OF CarrierFreqUTRA-TDD typedef dyn_array carrier_freq_list_utra_tdd_l; // CarrierFreqListUTRA-TDD-Ext-r12 ::= SEQUENCE (SIZE (1..maxUTRA-TDD-Carrier)) OF CarrierFreqUTRA-TDD-r12 typedef dyn_array carrier_freq_list_utra_tdd_ext_r12_l; // CarrierFreqsInfoListGERAN ::= SEQUENCE (SIZE (1..maxGNFG)) OF CarrierFreqsInfoGERAN typedef dyn_array carrier_freqs_info_list_geran_l; // CellReselectionInfoCommon-v1460 ::= SEQUENCE struct cell_resel_info_common_v1460_s { struct s_search_delta_p_r14_e_ { enum options { db6, db9, db12, db15 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods s_search_delta_p_r14_e_() {} s_search_delta_p_r14_e_(options v) : value(v) {} s_search_delta_p_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables s_search_delta_p_r14_e_ s_search_delta_p_r14; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellReselectionInfoHSDN-r15 ::= SEQUENCE struct cell_resel_info_hsdn_r15_s { // member variables uint8_t cell_equivalent_size_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellReselectionParametersCDMA2000 ::= SEQUENCE struct cell_resel_params_cdma2000_s { // member variables bool t_resel_cdma2000_sf_present; band_class_list_cdma2000_l band_class_list; neigh_cell_list_cdma2000_l neigh_cell_list; uint8_t t_resel_cdma2000; speed_state_scale_factors_s t_resel_cdma2000_sf; // sequence methods cell_resel_params_cdma2000_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellReselectionParametersCDMA2000-v920 ::= SEQUENCE struct cell_resel_params_cdma2000_v920_s { // member variables neigh_cell_list_cdma2000_v920_l neigh_cell_list_v920; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellReselectionServingFreqInfo-v1310 ::= SEQUENCE struct cell_resel_serving_freq_info_v1310_s { // member variables cell_resel_sub_prio_r13_e cell_resel_sub_prio_r13; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellSelectionInfo-v920 ::= SEQUENCE struct cell_sel_info_v920_s { // member variables bool q_qual_min_offset_r9_present; int8_t q_qual_min_r9; uint8_t q_qual_min_offset_r9; // sequence methods cell_sel_info_v920_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // EAB-ConfigPLMN-r11 ::= SEQUENCE struct eab_cfg_plmn_r11_s { // member variables bool eab_cfg_r11_present; eab_cfg_r11_s eab_cfg_r11; // sequence methods eab_cfg_plmn_r11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // InterFreqCarrierFreqList ::= SEQUENCE (SIZE (1..maxFreq)) OF InterFreqCarrierFreqInfo typedef dyn_array inter_freq_carrier_freq_list_l; // InterFreqCarrierFreqList-v1250 ::= SEQUENCE (SIZE (1.. maxFreq)) OF InterFreqCarrierFreqInfo-v1250 typedef dyn_array inter_freq_carrier_freq_list_v1250_l; // InterFreqCarrierFreqList-v1310 ::= SEQUENCE (SIZE (1.. maxFreq)) OF InterFreqCarrierFreqInfo-v1310 typedef dyn_array inter_freq_carrier_freq_list_v1310_l; // InterFreqCarrierFreqList-v1350 ::= SEQUENCE (SIZE (1.. maxFreq)) OF InterFreqCarrierFreqInfo-v1350 typedef dyn_array inter_freq_carrier_freq_list_v1350_l; // InterFreqCarrierFreqList-v1530 ::= SEQUENCE (SIZE (1.. maxFreq)) OF InterFreqCarrierFreqInfo-v1530 typedef dyn_array inter_freq_carrier_freq_list_v1530_l; // InterFreqCarrierFreqListExt-r12 ::= SEQUENCE (SIZE (1.. maxFreq)) OF InterFreqCarrierFreqInfo-r12 typedef dyn_array inter_freq_carrier_freq_list_ext_r12_l; // InterFreqCarrierFreqListExt-v1280 ::= SEQUENCE (SIZE (1.. maxFreq)) OF InterFreqCarrierFreqInfo-v10j0 typedef dyn_array inter_freq_carrier_freq_list_ext_v1280_l; // InterFreqCarrierFreqListExt-v1310 ::= SEQUENCE (SIZE (1.. maxFreq)) OF InterFreqCarrierFreqInfo-v1310 typedef dyn_array inter_freq_carrier_freq_list_ext_v1310_l; // InterFreqCarrierFreqListExt-v1350 ::= SEQUENCE (SIZE (1.. maxFreq)) OF InterFreqCarrierFreqInfo-v1350 typedef dyn_array inter_freq_carrier_freq_list_ext_v1350_l; // InterFreqCarrierFreqListExt-v1360 ::= SEQUENCE (SIZE (1..maxFreq)) OF InterFreqCarrierFreqInfo-v1360 typedef dyn_array inter_freq_carrier_freq_list_ext_v1360_l; // InterFreqCarrierFreqListExt-v1530 ::= SEQUENCE (SIZE (1..maxFreq)) OF InterFreqCarrierFreqInfo-v1530 typedef dyn_array inter_freq_carrier_freq_list_ext_v1530_l; // IntraFreqBlackCellList ::= SEQUENCE (SIZE (1..maxCellBlack)) OF PhysCellIdRange typedef dyn_array intra_freq_black_cell_list_l; // IntraFreqNeighCellList ::= SEQUENCE (SIZE (1..maxCellIntra)) OF IntraFreqNeighCellInfo typedef dyn_array intra_freq_neigh_cell_list_l; // IntraFreqNeighHSDN-CellList-r15 ::= SEQUENCE (SIZE (1..maxCellIntra)) OF PhysCellIdRange typedef dyn_array intra_freq_neigh_hsdn_cell_list_r15_l; // MBMS-InterFreqCarrierTypeList-r14 ::= SEQUENCE (SIZE (1..maxFreq)) OF MBMS-CarrierType-r14 typedef dyn_array mbms_inter_freq_carrier_type_list_r14_l; // MBMS-NotificationConfig-r9 ::= SEQUENCE struct mbms_notif_cfg_r9_s { struct notif_repeat_coeff_r9_e_ { enum options { n2, n4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods notif_repeat_coeff_r9_e_() {} notif_repeat_coeff_r9_e_(options v) : value(v) {} notif_repeat_coeff_r9_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables notif_repeat_coeff_r9_e_ notif_repeat_coeff_r9; uint8_t notif_offset_r9; uint8_t notif_sf_idx_r9; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MBMS-NotificationConfig-v1430 ::= SEQUENCE struct mbms_notif_cfg_v1430_s { // member variables uint8_t notif_sf_idx_v1430; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MBMS-SAI-InterFreqList-r11 ::= SEQUENCE (SIZE (1..maxFreq)) OF MBMS-SAI-InterFreq-r11 typedef dyn_array mbms_sai_inter_freq_list_r11_l; // MBMS-SAI-InterFreqList-v1140 ::= SEQUENCE (SIZE (1..maxFreq)) OF MBMS-SAI-InterFreq-v1140 typedef dyn_array mbms_sai_inter_freq_list_v1140_l; // MBSFN-AreaInfoList-r9 ::= SEQUENCE (SIZE(1..maxMBSFN-Area)) OF MBSFN-AreaInfo-r9 typedef dyn_array mbsfn_area_info_list_r9_l; // MBSFN-SubframeConfigList ::= SEQUENCE (SIZE (1..maxMBSFN-Allocations)) OF MBSFN-SubframeConfig typedef dyn_array mbsfn_sf_cfg_list_l; // MBSFN-SubframeConfigList-v1430 ::= SEQUENCE (SIZE (1..maxMBSFN-Allocations)) OF MBSFN-SubframeConfig-v1430 typedef dyn_array mbsfn_sf_cfg_list_v1430_l; // MeasIdleConfigSIB-r15 ::= SEQUENCE struct meas_idle_cfg_sib_r15_s { // member variables bool ext; eutra_carrier_list_r15_l meas_idle_carrier_list_eutra_r15; // ... // sequence methods meas_idle_cfg_sib_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MobilityStateParameters ::= SEQUENCE struct mob_state_params_s { struct t_eval_e_ { enum options { s30, s60, s120, s180, s240, spare3, spare2, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods t_eval_e_() {} t_eval_e_(options v) : value(v) {} t_eval_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct t_hyst_normal_e_ { enum options { s30, s60, s120, s180, s240, spare3, spare2, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods t_hyst_normal_e_() {} t_hyst_normal_e_(options v) : value(v) {} t_hyst_normal_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables t_eval_e_ t_eval; t_hyst_normal_e_ t_hyst_normal; uint8_t n_cell_change_medium; uint8_t n_cell_change_high; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PLMN-InfoList-r15 ::= SEQUENCE (SIZE (1..maxPLMN-r11)) OF PLMN-Info-r15 typedef dyn_array plmn_info_list_r15_l; // RadioResourceConfigCommonSIB ::= SEQUENCE struct rr_cfg_common_sib_s { // member variables bool ext; rach_cfg_common_s rach_cfg_common; bcch_cfg_s bcch_cfg; pcch_cfg_s pcch_cfg; prach_cfg_sib_s prach_cfg; pdsch_cfg_common_s pdsch_cfg_common; pusch_cfg_common_s pusch_cfg_common; pucch_cfg_common_s pucch_cfg_common; srs_ul_cfg_common_c srs_ul_cfg_common; ul_pwr_ctrl_common_s ul_pwr_ctrl_common; ul_cp_len_e ul_cp_len; // ... // group 0 bool ul_pwr_ctrl_common_v1020_present; copy_ptr ul_pwr_ctrl_common_v1020; // group 1 bool rach_cfg_common_v1250_present; copy_ptr rach_cfg_common_v1250; // group 2 bool pusch_cfg_common_v1270_present; copy_ptr pusch_cfg_common_v1270; // group 3 bool bcch_cfg_v1310_present; bool pcch_cfg_v1310_present; bool freq_hop_params_r13_present; bool pdsch_cfg_common_v1310_present; bool pusch_cfg_common_v1310_present; bool prach_cfg_common_v1310_present; bool pucch_cfg_common_v1310_present; copy_ptr bcch_cfg_v1310; copy_ptr pcch_cfg_v1310; copy_ptr freq_hop_params_r13; copy_ptr pdsch_cfg_common_v1310; copy_ptr pusch_cfg_common_v1310; copy_ptr prach_cfg_common_v1310; copy_ptr pucch_cfg_common_v1310; // group 4 bool high_speed_cfg_r14_present; bool prach_cfg_v1430_present; bool pucch_cfg_common_v1430_present; copy_ptr high_speed_cfg_r14; copy_ptr prach_cfg_v1430; copy_ptr pucch_cfg_common_v1430; // group 5 bool prach_cfg_v1530_present; bool ce_rss_cfg_r15_present; bool wus_cfg_r15_present; bool high_speed_cfg_v1530_present; copy_ptr prach_cfg_v1530; copy_ptr ce_rss_cfg_r15; copy_ptr wus_cfg_r15; copy_ptr high_speed_cfg_v1530; // sequence methods rr_cfg_common_sib_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RedistributionServingInfo-r13 ::= SEQUENCE struct redist_serving_info_r13_s { struct t360_r13_e_ { enum options { min4, min8, min16, min32, infinity, spare3, spare2, spare1 }; typedef int8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods t360_r13_e_() {} t360_r13_e_(options v) : value(v) {} t360_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; // member variables bool redist_factor_cell_r13_present; bool redistr_on_paging_only_r13_present; uint8_t redist_factor_serving_r13; t360_r13_e_ t360_r13; // sequence methods redist_serving_info_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SC-MCCH-SchedulingInfo-r14 ::= SEQUENCE struct sc_mcch_sched_info_r14_s { struct on_dur_timer_scptm_r14_e_ { enum options { psf10, psf20, psf100, psf300, psf500, psf1000, psf1200, psf1600 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods on_dur_timer_scptm_r14_e_() {} on_dur_timer_scptm_r14_e_(options v) : value(v) {} on_dur_timer_scptm_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct drx_inactivity_timer_scptm_r14_e_ { enum options { psf0, psf1, psf2, psf4, psf8, psf16, psf32, psf64, psf128, psf256, ps512, psf1024, psf2048, psf4096, psf8192, psf16384 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods drx_inactivity_timer_scptm_r14_e_() {} drx_inactivity_timer_scptm_r14_e_(options v) : value(v) {} drx_inactivity_timer_scptm_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct sched_period_start_offset_scptm_r14_c_ { struct types { enum options { sf10, sf20, sf32, sf40, sf64, sf80, sf128, sf160, sf256, sf320, sf512, sf640, sf1024, sf2048, sf4096, sf8192, nulltype }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // choice methods sched_period_start_offset_scptm_r14_c_() : type_(types::nulltype) {} sched_period_start_offset_scptm_r14_c_(const sched_period_start_offset_scptm_r14_c_& other); sched_period_start_offset_scptm_r14_c_& operator=(const sched_period_start_offset_scptm_r14_c_& other); ~sched_period_start_offset_scptm_r14_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint8_t& sf10() { assert_choice_type("sf10", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint8_t& sf20() { assert_choice_type("sf20", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint8_t& sf32() { assert_choice_type("sf32", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint8_t& sf40() { assert_choice_type("sf40", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint8_t& sf64() { assert_choice_type("sf64", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint8_t& sf80() { assert_choice_type("sf80", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint8_t& sf128() { assert_choice_type("sf128", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint8_t& sf160() { assert_choice_type("sf160", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint8_t& sf256() { assert_choice_type("sf256", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint16_t& sf320() { assert_choice_type("sf320", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint16_t& sf512() { assert_choice_type("sf512", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint16_t& sf640() { assert_choice_type("sf640", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint16_t& sf1024() { assert_choice_type("sf1024", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint16_t& sf2048() { assert_choice_type("sf2048", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint16_t& sf4096() { assert_choice_type("sf4096", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint16_t& sf8192() { assert_choice_type("sf8192", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint8_t& sf10() const { assert_choice_type("sf10", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint8_t& sf20() const { assert_choice_type("sf20", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint8_t& sf32() const { assert_choice_type("sf32", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint8_t& sf40() const { assert_choice_type("sf40", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint8_t& sf64() const { assert_choice_type("sf64", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint8_t& sf80() const { assert_choice_type("sf80", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint8_t& sf128() const { assert_choice_type("sf128", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint8_t& sf160() const { assert_choice_type("sf160", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint8_t& sf256() const { assert_choice_type("sf256", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint16_t& sf320() const { assert_choice_type("sf320", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint16_t& sf512() const { assert_choice_type("sf512", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint16_t& sf640() const { assert_choice_type("sf640", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint16_t& sf1024() const { assert_choice_type("sf1024", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint16_t& sf2048() const { assert_choice_type("sf2048", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint16_t& sf4096() const { assert_choice_type("sf4096", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint16_t& sf8192() const { assert_choice_type("sf8192", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } private: types type_; choice_buffer_t<8> c; void destroy_(); }; // member variables bool ext; on_dur_timer_scptm_r14_e_ on_dur_timer_scptm_r14; drx_inactivity_timer_scptm_r14_e_ drx_inactivity_timer_scptm_r14; sched_period_start_offset_scptm_r14_c_ sched_period_start_offset_scptm_r14; // ... // sequence methods sc_mcch_sched_info_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SIB-MappingInfo ::= SEQUENCE (SIZE (0..maxSIB-1)) OF SIB-Type typedef bounded_array sib_map_info_l; // SIB8-PerPLMN-List-r11 ::= SEQUENCE (SIZE (1..maxPLMN-r11)) OF SIB8-PerPLMN-r11 typedef dyn_array sib8_per_plmn_list_r11_l; // SL-CBR-PPPP-TxConfigList-r15 ::= SEQUENCE (SIZE (1..8)) OF SL-PPPP-TxConfigIndex-r15 typedef dyn_array sl_cbr_pppp_tx_cfg_list_r15_l; // SL-CarrierFreqInfoList-r12 ::= SEQUENCE (SIZE (1..maxFreq)) OF SL-CarrierFreqInfo-r12 typedef dyn_array sl_carrier_freq_info_list_r12_l; // SL-CarrierFreqInfoList-v1310 ::= SEQUENCE (SIZE (1..maxFreq)) OF SL-CarrierFreqInfo-v1310 typedef dyn_array sl_carrier_freq_info_list_v1310_l; // SL-CommRxPoolList-r12 ::= SEQUENCE (SIZE (1..maxSL-RxPool-r12)) OF SL-CommResourcePool-r12 typedef dyn_array sl_comm_rx_pool_list_r12_l; // SL-CommTxPoolList-r12 ::= SEQUENCE (SIZE (1..maxSL-TxPool-r12)) OF SL-CommResourcePool-r12 typedef dyn_array sl_comm_tx_pool_list_r12_l; // SL-CommTxPoolListExt-r13 ::= SEQUENCE (SIZE (1..maxSL-TxPool-v1310)) OF SL-CommResourcePool-r12 typedef dyn_array sl_comm_tx_pool_list_ext_r13_l; // SL-DiscConfigRelayUE-r13 ::= SEQUENCE struct sl_disc_cfg_relay_ue_r13_s { struct hyst_max_r13_e_ { enum options { db0, db3, db6, db9, db12, dbinf }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods hyst_max_r13_e_() {} hyst_max_r13_e_(options v) : value(v) {} hyst_max_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct hyst_min_r13_e_ { enum options { db0, db3, db6, db9, db12 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 5, nof_exts = 0; static const bool has_ext = false; // enumerated methods hyst_min_r13_e_() {} hyst_min_r13_e_(options v) : value(v) {} hyst_min_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool thresh_high_r13_present; bool thresh_low_r13_present; bool hyst_max_r13_present; bool hyst_min_r13_present; uint8_t thresh_high_r13; uint8_t thresh_low_r13; hyst_max_r13_e_ hyst_max_r13; hyst_min_r13_e_ hyst_min_r13; // sequence methods sl_disc_cfg_relay_ue_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-DiscConfigRemoteUE-r13 ::= SEQUENCE struct sl_disc_cfg_remote_ue_r13_s { struct hyst_max_r13_e_ { enum options { db0, db3, db6, db9, db12 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 5, nof_exts = 0; static const bool has_ext = false; // enumerated methods hyst_max_r13_e_() {} hyst_max_r13_e_(options v) : value(v) {} hyst_max_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool thresh_high_r13_present; bool hyst_max_r13_present; uint8_t thresh_high_r13; hyst_max_r13_e_ hyst_max_r13; resel_info_relay_r13_s resel_info_ic_r13; // sequence methods sl_disc_cfg_remote_ue_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-SyncConfigList-r12 ::= SEQUENCE (SIZE (1..maxSL-SyncConfig-r12)) OF SL-SyncConfig-r12 typedef dyn_array sl_sync_cfg_list_r12_l; // SL-V2X-ConfigCommon-r14 ::= SEQUENCE struct sl_v2x_cfg_common_r14_s { // member variables bool v2x_comm_rx_pool_r14_present; bool v2x_comm_tx_pool_normal_common_r14_present; bool p2x_comm_tx_pool_normal_common_r14_present; bool v2x_comm_tx_pool_exceptional_r14_present; bool v2x_sync_cfg_r14_present; bool v2x_inter_freq_info_list_r14_present; bool v2x_res_sel_cfg_r14_present; bool zone_cfg_r14_present; bool type_tx_sync_r14_present; bool thres_sl_tx_prioritization_r14_present; bool anchor_carrier_freq_list_r14_present; bool offset_dfn_r14_present; bool cbr_common_tx_cfg_list_r14_present; sl_comm_rx_pool_list_v2x_r14_l v2x_comm_rx_pool_r14; sl_comm_tx_pool_list_v2x_r14_l v2x_comm_tx_pool_normal_common_r14; sl_comm_tx_pool_list_v2x_r14_l p2x_comm_tx_pool_normal_common_r14; sl_comm_res_pool_v2x_r14_s v2x_comm_tx_pool_exceptional_r14; sl_sync_cfg_list_v2x_r14_l v2x_sync_cfg_r14; sl_inter_freq_info_list_v2x_r14_l v2x_inter_freq_info_list_r14; sl_comm_tx_pool_sensing_cfg_r14_s v2x_res_sel_cfg_r14; sl_zone_cfg_r14_s zone_cfg_r14; sl_type_tx_sync_r14_e type_tx_sync_r14; uint8_t thres_sl_tx_prioritization_r14; sl_anchor_carrier_freq_list_v2x_r14_l anchor_carrier_freq_list_r14; uint16_t offset_dfn_r14; sl_cbr_common_tx_cfg_list_r14_s cbr_common_tx_cfg_list_r14; // sequence methods sl_v2x_cfg_common_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-V2X-PacketDuplicationConfig-r15 ::= SEQUENCE struct sl_v2x_packet_dupl_cfg_r15_s { // member variables bool ext; bool allowed_carrier_freq_cfg_r15_present; uint8_t thresh_sl_reliability_r15; sl_pppr_dest_carrier_freq_list_r15_l allowed_carrier_freq_cfg_r15; // ... // sequence methods sl_v2x_packet_dupl_cfg_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-V2X-SyncFreqList-r15 ::= SEQUENCE (SIZE (1..maxFreqV2X-r14)) OF INTEGER typedef bounded_array sl_v2x_sync_freq_list_r15_l; // SystemInformationBlockType1-v1130-IEs ::= SEQUENCE struct sib_type1_v1130_ies_s { // member variables bool tdd_cfg_v1130_present; bool cell_sel_info_v1130_present; bool non_crit_ext_present; tdd_cfg_v1130_s tdd_cfg_v1130; cell_sel_info_v1130_s cell_sel_info_v1130; sib_type1_v1250_ies_s non_crit_ext; // sequence methods sib_type1_v1130_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType1-v9e0-IEs ::= SEQUENCE struct sib_type1_v9e0_ies_s { // member variables bool freq_band_ind_v9e0_present; bool multi_band_info_list_v9e0_present; bool non_crit_ext_present; uint16_t freq_band_ind_v9e0; multi_band_info_list_v9e0_l multi_band_info_list_v9e0; sib_type1_v10j0_ies_s non_crit_ext; // sequence methods sib_type1_v9e0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType2-v8h0-IEs ::= SEQUENCE struct sib_type2_v8h0_ies_s { typedef bounded_array multi_band_info_list_l_; // member variables bool multi_band_info_list_present; bool non_crit_ext_present; multi_band_info_list_l_ multi_band_info_list; sib_type2_v9e0_ies_s non_crit_ext; // sequence methods sib_type2_v8h0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType3-v10j0-IEs ::= SEQUENCE struct sib_type3_v10j0_ies_s { // member variables bool freq_band_info_r10_present; bool multi_band_info_list_v10j0_present; bool non_crit_ext_present; ns_pmax_list_r10_l freq_band_info_r10; multi_band_info_list_v10j0_l multi_band_info_list_v10j0; sib_type3_v10l0_ies_s non_crit_ext; // sequence methods sib_type3_v10j0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType5-v8h0-IEs ::= SEQUENCE struct sib_type5_v8h0_ies_s { typedef dyn_array inter_freq_carrier_freq_list_v8h0_l_; // member variables bool inter_freq_carrier_freq_list_v8h0_present; bool non_crit_ext_present; inter_freq_carrier_freq_list_v8h0_l_ inter_freq_carrier_freq_list_v8h0; sib_type5_v9e0_ies_s non_crit_ext; // sequence methods sib_type5_v8h0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType6-v8h0-IEs ::= SEQUENCE struct sib_type6_v8h0_ies_s { typedef dyn_array carrier_freq_list_utra_fdd_v8h0_l_; // member variables bool carrier_freq_list_utra_fdd_v8h0_present; bool non_crit_ext_present; carrier_freq_list_utra_fdd_v8h0_l_ carrier_freq_list_utra_fdd_v8h0; // sequence methods sib_type6_v8h0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // TimeAlignmentTimer ::= ENUMERATED struct time_align_timer_e { enum options { sf500, sf750, sf1280, sf1920, sf2560, sf5120, sf10240, infinity }; typedef int16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods time_align_timer_e() {} time_align_timer_e(options v) : value(v) {} time_align_timer_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int16_t to_number() const; }; // TimeReferenceInfo-r15 ::= SEQUENCE struct time_ref_info_r15_s { // member variables bool uncertainty_r15_present; bool time_info_type_r15_present; bool ref_sfn_r15_present; ref_time_r15_s time_r15; uint8_t uncertainty_r15; uint16_t ref_sfn_r15; // sequence methods time_ref_info_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UAC-AC1-SelectAssistInfo-r15 ::= ENUMERATED struct uac_ac1_select_assist_info_r15_e { enum options { a, b, c }; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods uac_ac1_select_assist_info_r15_e() {} uac_ac1_select_assist_info_r15_e(options v) : value(v) {} uac_ac1_select_assist_info_r15_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // UAC-BarringInfoSetList-r15 ::= SEQUENCE (SIZE (1..maxBarringInfoSet-r15)) OF UAC-BarringInfoSet-r15 typedef dyn_array uac_barr_info_set_list_r15_l; // UAC-BarringPerPLMN-List-r15 ::= SEQUENCE (SIZE (1.. maxPLMN-r11)) OF UAC-BarringPerPLMN-r15 typedef dyn_array uac_barr_per_plmn_list_r15_l; // UDT-RestrictingPerPLMN-List-r13 ::= SEQUENCE (SIZE (1..maxPLMN-r11)) OF UDT-RestrictingPerPLMN-r13 typedef dyn_array udt_restricting_per_plmn_list_r13_l; // UE-TimersAndConstants ::= SEQUENCE struct ue_timers_and_consts_s { struct t300_e_ { enum options { ms100, ms200, ms300, ms400, ms600, ms1000, ms1500, ms2000 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods t300_e_() {} t300_e_(options v) : value(v) {} t300_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct t301_e_ { enum options { ms100, ms200, ms300, ms400, ms600, ms1000, ms1500, ms2000 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods t301_e_() {} t301_e_(options v) : value(v) {} t301_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct t310_e_ { enum options { ms0, ms50, ms100, ms200, ms500, ms1000, ms2000 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 7, nof_exts = 0; static const bool has_ext = false; // enumerated methods t310_e_() {} t310_e_(options v) : value(v) {} t310_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct n310_e_ { enum options { n1, n2, n3, n4, n6, n8, n10, n20 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods n310_e_() {} n310_e_(options v) : value(v) {} n310_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct t311_e_ { enum options { ms1000, ms3000, ms5000, ms10000, ms15000, ms20000, ms30000 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 7, nof_exts = 0; static const bool has_ext = false; // enumerated methods t311_e_() {} t311_e_(options v) : value(v) {} t311_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct n311_e_ { enum options { n1, n2, n3, n4, n5, n6, n8, n10 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods n311_e_() {} n311_e_(options v) : value(v) {} n311_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct t300_v1310_e_ { enum options { ms2500, ms3000, ms3500, ms4000, ms5000, ms6000, ms8000, ms10000 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods t300_v1310_e_() {} t300_v1310_e_(options v) : value(v) {} t300_v1310_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct t301_v1310_e_ { enum options { ms2500, ms3000, ms3500, ms4000, ms5000, ms6000, ms8000, ms10000 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods t301_v1310_e_() {} t301_v1310_e_(options v) : value(v) {} t301_v1310_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct t310_v1330_e_ { enum options { ms4000, ms6000 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods t310_v1330_e_() {} t310_v1330_e_(options v) : value(v) {} t310_v1330_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct t300_r15_e_ { enum options { ms4000, ms6000, ms8000, ms10000, ms15000, ms25000, ms40000, ms60000 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods t300_r15_e_() {} t300_r15_e_(options v) : value(v) {} t300_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool ext; t300_e_ t300; t301_e_ t301; t310_e_ t310; n310_e_ n310; t311_e_ t311; n311_e_ n311; // ... // group 0 bool t300_v1310_present; bool t301_v1310_present; t300_v1310_e_ t300_v1310; t301_v1310_e_ t301_v1310; // group 1 bool t310_v1330_present; t310_v1330_e_ t310_v1330; // group 2 bool t300_r15_present; t300_r15_e_ t300_r15; // sequence methods ue_timers_and_consts_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // WLAN-OffloadInfoPerPLMN-r12 ::= SEQUENCE struct wlan_offload_info_per_plmn_r12_s { // member variables bool ext; bool wlan_offload_cfg_common_r12_present; bool wlan_id_list_r12_present; wlan_offload_cfg_r12_s wlan_offload_cfg_common_r12; wlan_id_list_r12_l wlan_id_list_r12; // ... // sequence methods wlan_offload_info_per_plmn_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SchedulingInfo ::= SEQUENCE struct sched_info_s { struct si_periodicity_e_ { enum options { rf8, rf16, rf32, rf64, rf128, rf256, rf512 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 7, nof_exts = 0; static const bool has_ext = false; // enumerated methods si_periodicity_e_() {} si_periodicity_e_(options v) : value(v) {} si_periodicity_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables si_periodicity_e_ si_periodicity; sib_map_info_l sib_map_info; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformation-v8a0-IEs ::= SEQUENCE struct sys_info_v8a0_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; // sequence methods sys_info_v8a0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockPos-r15 ::= SEQUENCE struct sib_pos_r15_s { // member variables bool ext; bool late_non_crit_ext_present; dyn_octstring assist_data_sib_elem_r15; dyn_octstring late_non_crit_ext; // ... // sequence methods sib_pos_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType1-v8h0-IEs ::= SEQUENCE struct sib_type1_v8h0_ies_s { // member variables bool multi_band_info_list_present; bool non_crit_ext_present; multi_band_info_list_l multi_band_info_list; sib_type1_v9e0_ies_s non_crit_ext; // sequence methods sib_type1_v8h0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType1-v920-IEs ::= SEQUENCE struct sib_type1_v920_ies_s { // member variables bool ims_emergency_support_r9_present; bool cell_sel_info_v920_present; bool non_crit_ext_present; cell_sel_info_v920_s cell_sel_info_v920; sib_type1_v1130_ies_s non_crit_ext; // sequence methods sib_type1_v920_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType10 ::= SEQUENCE struct sib_type10_s { // member variables bool ext; bool dummy_present; fixed_bitstring<16> msg_id; fixed_bitstring<16> serial_num; fixed_octstring<2> warning_type; fixed_octstring<50> dummy; // ... bool late_non_crit_ext_present; dyn_octstring late_non_crit_ext; // sequence methods sib_type10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType11 ::= SEQUENCE struct sib_type11_s { struct warning_msg_segment_type_e_ { enum options { not_last_segment, last_segment }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods warning_msg_segment_type_e_() {} warning_msg_segment_type_e_(options v) : value(v) {} warning_msg_segment_type_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool ext; bool data_coding_scheme_present; fixed_bitstring<16> msg_id; fixed_bitstring<16> serial_num; warning_msg_segment_type_e_ warning_msg_segment_type; uint8_t warning_msg_segment_num; dyn_octstring warning_msg_segment; fixed_octstring<1> data_coding_scheme; // ... bool late_non_crit_ext_present; dyn_octstring late_non_crit_ext; // sequence methods sib_type11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType12-r9 ::= SEQUENCE struct sib_type12_r9_s { struct warning_msg_segment_type_r9_e_ { enum options { not_last_segment, last_segment }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods warning_msg_segment_type_r9_e_() {} warning_msg_segment_type_r9_e_(options v) : value(v) {} warning_msg_segment_type_r9_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool ext; bool data_coding_scheme_r9_present; bool late_non_crit_ext_present; fixed_bitstring<16> msg_id_r9; fixed_bitstring<16> serial_num_r9; warning_msg_segment_type_r9_e_ warning_msg_segment_type_r9; uint8_t warning_msg_segment_num_r9; dyn_octstring warning_msg_segment_r9; fixed_octstring<1> data_coding_scheme_r9; dyn_octstring late_non_crit_ext; // ... // group 0 bool warning_area_coordinates_segment_r15_present; dyn_octstring warning_area_coordinates_segment_r15; // sequence methods sib_type12_r9_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType13-r9 ::= SEQUENCE struct sib_type13_r9_s { // member variables bool ext; bool late_non_crit_ext_present; mbsfn_area_info_list_r9_l mbsfn_area_info_list_r9; mbms_notif_cfg_r9_s notif_cfg_r9; dyn_octstring late_non_crit_ext; // ... // group 0 bool notif_cfg_v1430_present; copy_ptr notif_cfg_v1430; // sequence methods sib_type13_r9_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType14-r11 ::= SEQUENCE struct sib_type14_r11_s { struct eab_param_r11_c_ { typedef dyn_array eab_per_plmn_list_r11_l_; struct types { enum options { eab_common_r11, eab_per_plmn_list_r11, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods eab_param_r11_c_() : type_(types::nulltype) {} eab_param_r11_c_(const eab_param_r11_c_& other); eab_param_r11_c_& operator=(const eab_param_r11_c_& other); ~eab_param_r11_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters eab_cfg_r11_s& eab_common_r11() { assert_choice_type("eab-Common-r11", type_.to_string(), "eab-Param-r11"); return c.get(); } eab_per_plmn_list_r11_l_& eab_per_plmn_list_r11() { assert_choice_type("eab-PerPLMN-List-r11", type_.to_string(), "eab-Param-r11"); return c.get(); } const eab_cfg_r11_s& eab_common_r11() const { assert_choice_type("eab-Common-r11", type_.to_string(), "eab-Param-r11"); return c.get(); } const eab_per_plmn_list_r11_l_& eab_per_plmn_list_r11() const { assert_choice_type("eab-PerPLMN-List-r11", type_.to_string(), "eab-Param-r11"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct eab_per_rsrp_r15_e_ { enum options { thresh0, thresh1, thresh2, thresh3 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods eab_per_rsrp_r15_e_() {} eab_per_rsrp_r15_e_(options v) : value(v) {} eab_per_rsrp_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ext; bool eab_param_r11_present; bool late_non_crit_ext_present; eab_param_r11_c_ eab_param_r11; dyn_octstring late_non_crit_ext; // ... // group 0 bool eab_per_rsrp_r15_present; eab_per_rsrp_r15_e_ eab_per_rsrp_r15; // sequence methods sib_type14_r11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType15-r11 ::= SEQUENCE struct sib_type15_r11_s { // member variables bool ext; bool mbms_sai_intra_freq_r11_present; bool mbms_sai_inter_freq_list_r11_present; bool late_non_crit_ext_present; mbms_sai_list_r11_l mbms_sai_intra_freq_r11; mbms_sai_inter_freq_list_r11_l mbms_sai_inter_freq_list_r11; dyn_octstring late_non_crit_ext; // ... // group 0 bool mbms_sai_inter_freq_list_v1140_present; copy_ptr mbms_sai_inter_freq_list_v1140; // group 1 bool mbms_intra_freq_carrier_type_r14_present; bool mbms_inter_freq_carrier_type_list_r14_present; copy_ptr mbms_intra_freq_carrier_type_r14; copy_ptr mbms_inter_freq_carrier_type_list_r14; // sequence methods sib_type15_r11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType16-r11 ::= SEQUENCE struct sib_type16_r11_s { struct time_info_r11_s_ { // member variables bool day_light_saving_time_r11_present; bool leap_seconds_r11_present; bool local_time_offset_r11_present; uint64_t time_info_utc_r11; fixed_bitstring<2> day_light_saving_time_r11; int16_t leap_seconds_r11; int8_t local_time_offset_r11; // sequence methods time_info_r11_s_(); }; // member variables bool ext; bool time_info_r11_present; bool late_non_crit_ext_present; time_info_r11_s_ time_info_r11; dyn_octstring late_non_crit_ext; // ... // group 0 bool time_ref_info_r15_present; copy_ptr time_ref_info_r15; // sequence methods sib_type16_r11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType17-r12 ::= SEQUENCE struct sib_type17_r12_s { typedef dyn_array wlan_offload_info_per_plmn_list_r12_l_; // member variables bool ext; bool wlan_offload_info_per_plmn_list_r12_present; bool late_non_crit_ext_present; wlan_offload_info_per_plmn_list_r12_l_ wlan_offload_info_per_plmn_list_r12; dyn_octstring late_non_crit_ext; // ... // sequence methods sib_type17_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType18-r12 ::= SEQUENCE struct sib_type18_r12_s { struct comm_cfg_r12_s_ { // member variables bool comm_tx_pool_normal_common_r12_present; bool comm_tx_pool_exceptional_r12_present; bool comm_sync_cfg_r12_present; sl_comm_rx_pool_list_r12_l comm_rx_pool_r12; sl_comm_tx_pool_list_r12_l comm_tx_pool_normal_common_r12; sl_comm_tx_pool_list_r12_l comm_tx_pool_exceptional_r12; sl_sync_cfg_list_r12_l comm_sync_cfg_r12; // sequence methods comm_cfg_r12_s_(); }; // member variables bool ext; bool comm_cfg_r12_present; bool late_non_crit_ext_present; comm_cfg_r12_s_ comm_cfg_r12; dyn_octstring late_non_crit_ext; // ... // group 0 bool comm_tx_pool_normal_common_ext_r13_present; bool comm_tx_res_uc_req_allowed_r13_present; bool comm_tx_allow_relay_common_r13_present; copy_ptr comm_tx_pool_normal_common_ext_r13; // sequence methods sib_type18_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType19-r12 ::= SEQUENCE struct sib_type19_r12_s { struct disc_cfg_r12_s_ { // member variables bool disc_tx_pool_common_r12_present; bool disc_tx_pwr_info_r12_present; bool disc_sync_cfg_r12_present; sl_disc_rx_pool_list_r12_l disc_rx_pool_r12; sl_disc_tx_pool_list_r12_l disc_tx_pool_common_r12; sl_disc_tx_pwr_info_list_r12_l disc_tx_pwr_info_r12; sl_sync_cfg_list_r12_l disc_sync_cfg_r12; // sequence methods disc_cfg_r12_s_(); }; struct disc_cfg_v1310_s_ { // member variables bool disc_inter_freq_list_v1310_present; bool gap_requests_allowed_common_present; sl_carrier_freq_info_list_v1310_l disc_inter_freq_list_v1310; // sequence methods disc_cfg_v1310_s_(); }; struct disc_cfg_relay_r13_s_ { // member variables sl_disc_cfg_relay_ue_r13_s relay_ue_cfg_r13; sl_disc_cfg_remote_ue_r13_s remote_ue_cfg_r13; }; struct disc_cfg_ps_minus13_s_ { // member variables bool disc_tx_pool_ps_common_r13_present; sl_disc_rx_pool_list_r12_l disc_rx_pool_ps_r13; sl_disc_tx_pool_list_r12_l disc_tx_pool_ps_common_r13; // sequence methods disc_cfg_ps_minus13_s_(); }; // member variables bool ext; bool disc_cfg_r12_present; bool disc_inter_freq_list_r12_present; bool late_non_crit_ext_present; disc_cfg_r12_s_ disc_cfg_r12; sl_carrier_freq_info_list_r12_l disc_inter_freq_list_r12; dyn_octstring late_non_crit_ext; // ... // group 0 bool disc_cfg_v1310_present; bool disc_cfg_relay_r13_present; bool disc_cfg_ps_minus13_present; copy_ptr disc_cfg_v1310; copy_ptr disc_cfg_relay_r13; copy_ptr disc_cfg_ps_minus13; // sequence methods sib_type19_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType2 ::= SEQUENCE struct sib_type2_s { struct ac_barr_info_s_ { // member variables bool ac_barr_for_mo_sig_present; bool ac_barr_for_mo_data_present; bool ac_barr_for_emergency; ac_barr_cfg_s ac_barr_for_mo_sig; ac_barr_cfg_s ac_barr_for_mo_data; // sequence methods ac_barr_info_s_(); }; struct freq_info_s_ { struct ul_bw_e_ { enum options { n6, n15, n25, n50, n75, n100 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods ul_bw_e_() {} ul_bw_e_(options v) : value(v) {} ul_bw_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ul_carrier_freq_present; bool ul_bw_present; uint16_t ul_carrier_freq; ul_bw_e_ ul_bw; uint8_t add_spec_emission; // sequence methods freq_info_s_(); }; // member variables bool ext; bool ac_barr_info_present; bool mbsfn_sf_cfg_list_present; ac_barr_info_s_ ac_barr_info; rr_cfg_common_sib_s rr_cfg_common; ue_timers_and_consts_s ue_timers_and_consts; freq_info_s_ freq_info; mbsfn_sf_cfg_list_l mbsfn_sf_cfg_list; time_align_timer_e time_align_timer_common; // ... bool late_non_crit_ext_present; dyn_octstring late_non_crit_ext; // group 0 bool ssac_barr_for_mmtel_voice_r9_present; bool ssac_barr_for_mmtel_video_r9_present; copy_ptr ssac_barr_for_mmtel_voice_r9; copy_ptr ssac_barr_for_mmtel_video_r9; // group 1 bool ac_barr_for_csfb_r10_present; copy_ptr ac_barr_for_csfb_r10; // group 2 bool ac_barr_skip_for_mmtel_voice_r12_present; bool ac_barr_skip_for_mmtel_video_r12_present; bool ac_barr_skip_for_sms_r12_present; bool ac_barr_per_plmn_list_r12_present; copy_ptr ac_barr_per_plmn_list_r12; // group 3 bool voice_service_cause_ind_r12_present; // group 4 bool acdc_barr_for_common_r13_present; bool acdc_barr_per_plmn_list_r13_present; copy_ptr acdc_barr_for_common_r13; copy_ptr acdc_barr_per_plmn_list_r13; // group 5 bool udt_restricting_for_common_r13_present; bool udt_restricting_per_plmn_list_r13_present; bool c_io_t_eps_optim_info_r13_present; bool use_full_resume_id_r13_present; copy_ptr udt_restricting_for_common_r13; copy_ptr udt_restricting_per_plmn_list_r13; copy_ptr c_io_t_eps_optim_info_r13; // group 6 bool unicast_freq_hop_ind_r13_present; // group 7 bool mbsfn_sf_cfg_list_v1430_present; bool video_service_cause_ind_r14_present; copy_ptr mbsfn_sf_cfg_list_v1430; // group 8 bool plmn_info_list_r15_present; copy_ptr plmn_info_list_r15; // group 9 bool cp_edt_r15_present; bool up_edt_r15_present; bool idle_mode_meass_r15_present; bool reduced_cp_latency_enabled_r15_present; // sequence methods sib_type2_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType20-r13 ::= SEQUENCE struct sib_type20_r13_s { struct sc_mcch_repeat_period_r13_e_ { enum options { rf2, rf4, rf8, rf16, rf32, rf64, rf128, rf256 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods sc_mcch_repeat_period_r13_e_() {} sc_mcch_repeat_period_r13_e_(options v) : value(v) {} sc_mcch_repeat_period_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct sc_mcch_mod_period_r13_e_ { enum options { rf2, rf4, rf8, rf16, rf32, rf64, rf128, rf256, rf512, rf1024, r2048, rf4096, rf8192, rf16384, rf32768, rf65536 }; typedef uint32_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods sc_mcch_mod_period_r13_e_() {} sc_mcch_mod_period_r13_e_(options v) : value(v) {} sc_mcch_mod_period_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint32_t to_number() const; }; struct br_bcch_cfg_r14_s_ { struct mpdcch_num_repeat_sc_mcch_r14_e_ { enum options { r1, r2, r4, r8, r16, r32, r64, r128, r256 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 9, nof_exts = 0; static const bool has_ext = false; // enumerated methods mpdcch_num_repeat_sc_mcch_r14_e_() {} mpdcch_num_repeat_sc_mcch_r14_e_(options v) : value(v) {} mpdcch_num_repeat_sc_mcch_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct mpdcch_start_sf_sc_mcch_r14_c_ { struct fdd_r14_e_ { enum options { v1, v1dot5, v2, v2dot5, v4, v5, v8, v10 }; typedef float number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods fdd_r14_e_() {} fdd_r14_e_(options v) : value(v) {} fdd_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; struct tdd_r14_e_ { enum options { v1, v2, v4, v5, v8, v10, v20 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 7, nof_exts = 0; static const bool has_ext = false; // enumerated methods tdd_r14_e_() {} tdd_r14_e_(options v) : value(v) {} tdd_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct types { enum options { fdd_r14, tdd_r14, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods mpdcch_start_sf_sc_mcch_r14_c_() : type_(types::nulltype) {} mpdcch_start_sf_sc_mcch_r14_c_(const mpdcch_start_sf_sc_mcch_r14_c_& other); mpdcch_start_sf_sc_mcch_r14_c_& operator=(const mpdcch_start_sf_sc_mcch_r14_c_& other); ~mpdcch_start_sf_sc_mcch_r14_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters fdd_r14_e_& fdd_r14() { assert_choice_type("fdd-r14", type_.to_string(), "mpdcch-StartSF-SC-MCCH-r14"); return c.get(); } tdd_r14_e_& tdd_r14() { assert_choice_type("tdd-r14", type_.to_string(), "mpdcch-StartSF-SC-MCCH-r14"); return c.get(); } const fdd_r14_e_& fdd_r14() const { assert_choice_type("fdd-r14", type_.to_string(), "mpdcch-StartSF-SC-MCCH-r14"); return c.get(); } const tdd_r14_e_& tdd_r14() const { assert_choice_type("tdd-r14", type_.to_string(), "mpdcch-StartSF-SC-MCCH-r14"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct mpdcch_pdsch_hop_cfg_sc_mcch_r14_e_ { enum options { off, ce_mode_a, ce_mode_b }; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods mpdcch_pdsch_hop_cfg_sc_mcch_r14_e_() {} mpdcch_pdsch_hop_cfg_sc_mcch_r14_e_(options v) : value(v) {} mpdcch_pdsch_hop_cfg_sc_mcch_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct sc_mcch_repeat_period_br_r14_e_ { enum options { rf32, rf128, rf512, rf1024, rf2048, rf4096, rf8192, rf16384 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods sc_mcch_repeat_period_br_r14_e_() {} sc_mcch_repeat_period_br_r14_e_(options v) : value(v) {} sc_mcch_repeat_period_br_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct sc_mcch_mod_period_br_r14_e_ { enum options { rf32, rf128, rf256, rf512, rf1024, rf2048, rf4096, rf8192, rf16384, rf32768, rf65536, rf131072, rf262144, rf524288, rf1048576 }; typedef uint32_t number_type; options value; static const uint32_t nof_types = 15, nof_exts = 0; static const bool has_ext = false; // enumerated methods sc_mcch_mod_period_br_r14_e_() {} sc_mcch_mod_period_br_r14_e_(options v) : value(v) {} sc_mcch_mod_period_br_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint32_t to_number() const; }; // member variables uint8_t mpdcch_nb_sc_mcch_r14; mpdcch_num_repeat_sc_mcch_r14_e_ mpdcch_num_repeat_sc_mcch_r14; mpdcch_start_sf_sc_mcch_r14_c_ mpdcch_start_sf_sc_mcch_r14; mpdcch_pdsch_hop_cfg_sc_mcch_r14_e_ mpdcch_pdsch_hop_cfg_sc_mcch_r14; uint32_t sc_mcch_carrier_freq_r14; uint8_t sc_mcch_offset_br_r14; sc_mcch_repeat_period_br_r14_e_ sc_mcch_repeat_period_br_r14; sc_mcch_mod_period_br_r14_e_ sc_mcch_mod_period_br_r14; }; struct pdsch_max_num_repeat_cemode_a_sc_mtch_r14_e_ { enum options { r16, r32 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods pdsch_max_num_repeat_cemode_a_sc_mtch_r14_e_() {} pdsch_max_num_repeat_cemode_a_sc_mtch_r14_e_(options v) : value(v) {} pdsch_max_num_repeat_cemode_a_sc_mtch_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct pdsch_max_num_repeat_cemode_b_sc_mtch_r14_e_ { enum options { r192, r256, r384, r512, r768, r1024, r1536, r2048 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods pdsch_max_num_repeat_cemode_b_sc_mtch_r14_e_() {} pdsch_max_num_repeat_cemode_b_sc_mtch_r14_e_(options v) : value(v) {} pdsch_max_num_repeat_cemode_b_sc_mtch_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool ext; bool sc_mcch_dur_r13_present; bool late_non_crit_ext_present; sc_mcch_repeat_period_r13_e_ sc_mcch_repeat_period_r13; uint8_t sc_mcch_offset_r13; uint8_t sc_mcch_first_sf_r13; uint8_t sc_mcch_dur_r13; sc_mcch_mod_period_r13_e_ sc_mcch_mod_period_r13; dyn_octstring late_non_crit_ext; // ... // group 0 bool br_bcch_cfg_r14_present; bool sc_mcch_sched_info_r14_present; bool pdsch_max_num_repeat_cemode_a_sc_mtch_r14_present; bool pdsch_max_num_repeat_cemode_b_sc_mtch_r14_present; copy_ptr br_bcch_cfg_r14; copy_ptr sc_mcch_sched_info_r14; pdsch_max_num_repeat_cemode_a_sc_mtch_r14_e_ pdsch_max_num_repeat_cemode_a_sc_mtch_r14; pdsch_max_num_repeat_cemode_b_sc_mtch_r14_e_ pdsch_max_num_repeat_cemode_b_sc_mtch_r14; // group 1 bool sc_mcch_repeat_period_v1470_present; bool sc_mcch_mod_period_v1470_present; // sequence methods sib_type20_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType21-r14 ::= SEQUENCE struct sib_type21_r14_s { // member variables bool ext; bool sl_v2x_cfg_common_r14_present; bool late_non_crit_ext_present; sl_v2x_cfg_common_r14_s sl_v2x_cfg_common_r14; dyn_octstring late_non_crit_ext; // ... // sequence methods sib_type21_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType24-r15 ::= SEQUENCE struct sib_type24_r15_s { // member variables bool ext; bool carrier_freq_list_nr_r15_present; bool t_resel_nr_sf_r15_present; bool late_non_crit_ext_present; carrier_freq_list_nr_r15_l carrier_freq_list_nr_r15; uint8_t t_resel_nr_r15; speed_state_scale_factors_s t_resel_nr_sf_r15; dyn_octstring late_non_crit_ext; // ... // sequence methods sib_type24_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType25-r15 ::= SEQUENCE struct sib_type25_r15_s { struct uac_ac1_select_assist_info_r15_c_ { typedef bounded_array individual_plmn_list_r15_l_; struct types { enum options { plmn_common_r15, individual_plmn_list_r15, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods uac_ac1_select_assist_info_r15_c_() : type_(types::nulltype) {} uac_ac1_select_assist_info_r15_c_(const uac_ac1_select_assist_info_r15_c_& other); uac_ac1_select_assist_info_r15_c_& operator=(const uac_ac1_select_assist_info_r15_c_& other); ~uac_ac1_select_assist_info_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(bit_ref& bref); void to_json(json_writer& j) const; // getters uac_ac1_select_assist_info_r15_e& plmn_common_r15() { assert_choice_type("plmnCommon-r15", type_.to_string(), "uac-AC1-SelectAssistInfo-r15"); return c.get(); } individual_plmn_list_r15_l_& individual_plmn_list_r15() { assert_choice_type("individualPLMNList-r15", type_.to_string(), "uac-AC1-SelectAssistInfo-r15"); return c.get(); } const uac_ac1_select_assist_info_r15_e& plmn_common_r15() const { assert_choice_type("plmnCommon-r15", type_.to_string(), "uac-AC1-SelectAssistInfo-r15"); return c.get(); } const individual_plmn_list_r15_l_& individual_plmn_list_r15() const { assert_choice_type("individualPLMNList-r15", type_.to_string(), "uac-AC1-SelectAssistInfo-r15"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables bool ext; bool uac_barr_for_common_r15_present; bool uac_barr_per_plmn_list_r15_present; bool uac_ac1_select_assist_info_r15_present; bool late_non_crit_ext_present; uac_barr_per_cat_list_r15_l uac_barr_for_common_r15; uac_barr_per_plmn_list_r15_l uac_barr_per_plmn_list_r15; uac_barr_info_set_list_r15_l uac_barr_info_set_list_r15; uac_ac1_select_assist_info_r15_c_ uac_ac1_select_assist_info_r15; dyn_octstring late_non_crit_ext; // ... // sequence methods sib_type25_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType26-r15 ::= SEQUENCE struct sib_type26_r15_s { // member variables bool ext; bool v2x_inter_freq_info_list_r15_present; bool cbr_pssch_tx_cfg_list_r15_present; bool v2x_packet_dupl_cfg_r15_present; bool sync_freq_list_r15_present; bool slss_tx_multi_freq_r15_present; bool v2x_freq_sel_cfg_list_r15_present; bool thresh_s_rssi_cbr_r14_present; sl_inter_freq_info_list_v2x_r14_l v2x_inter_freq_info_list_r15; sl_cbr_pppp_tx_cfg_list_r15_l cbr_pssch_tx_cfg_list_r15; sl_v2x_packet_dupl_cfg_r15_s v2x_packet_dupl_cfg_r15; sl_v2x_sync_freq_list_r15_l sync_freq_list_r15; sl_v2x_freq_sel_cfg_list_r15_l v2x_freq_sel_cfg_list_r15; uint8_t thresh_s_rssi_cbr_r14; // ... // sequence methods sib_type26_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType3 ::= SEQUENCE struct sib_type3_s { struct cell_resel_info_common_s_ { struct q_hyst_e_ { enum options { db0, db1, db2, db3, db4, db5, db6, db8, db10, db12, db14, db16, db18, db20, db22, db24 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods q_hyst_e_() {} q_hyst_e_(options v) : value(v) {} q_hyst_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct speed_state_resel_pars_s_ { struct q_hyst_sf_s_ { struct sf_medium_e_ { enum options { db_minus6, db_minus4, db_minus2, db0 }; typedef int8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods sf_medium_e_() {} sf_medium_e_(options v) : value(v) {} sf_medium_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; struct sf_high_e_ { enum options { db_minus6, db_minus4, db_minus2, db0 }; typedef int8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods sf_high_e_() {} sf_high_e_(options v) : value(v) {} sf_high_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; // member variables sf_medium_e_ sf_medium; sf_high_e_ sf_high; }; // member variables mob_state_params_s mob_state_params; q_hyst_sf_s_ q_hyst_sf; }; // member variables bool speed_state_resel_pars_present; q_hyst_e_ q_hyst; speed_state_resel_pars_s_ speed_state_resel_pars; // sequence methods cell_resel_info_common_s_(); }; struct cell_resel_serving_freq_info_s_ { // member variables bool s_non_intra_search_present; uint8_t s_non_intra_search; uint8_t thresh_serving_low; uint8_t cell_resel_prio; // sequence methods cell_resel_serving_freq_info_s_(); }; struct intra_freq_cell_resel_info_s_ { // member variables bool p_max_present; bool s_intra_search_present; bool allowed_meas_bw_present; bool t_resel_eutra_sf_present; int8_t q_rx_lev_min; int8_t p_max; uint8_t s_intra_search; allowed_meas_bw_e allowed_meas_bw; bool presence_ant_port1; fixed_bitstring<2> neigh_cell_cfg; uint8_t t_resel_eutra; speed_state_scale_factors_s t_resel_eutra_sf; // sequence methods intra_freq_cell_resel_info_s_(); }; struct s_intra_search_v920_s_ { // member variables uint8_t s_intra_search_p_r9; uint8_t s_intra_search_q_r9; }; struct s_non_intra_search_v920_s_ { // member variables uint8_t s_non_intra_search_p_r9; uint8_t s_non_intra_search_q_r9; }; // member variables bool ext; cell_resel_info_common_s_ cell_resel_info_common; cell_resel_serving_freq_info_s_ cell_resel_serving_freq_info; intra_freq_cell_resel_info_s_ intra_freq_cell_resel_info; // ... bool late_non_crit_ext_present; dyn_octstring late_non_crit_ext; // group 0 bool s_intra_search_v920_present; bool s_non_intra_search_v920_present; bool q_qual_min_r9_present; bool thresh_serving_low_q_r9_present; copy_ptr s_intra_search_v920; copy_ptr s_non_intra_search_v920; int8_t q_qual_min_r9; uint8_t thresh_serving_low_q_r9; // group 1 bool q_qual_min_wb_r11_present; int8_t q_qual_min_wb_r11; // group 2 bool q_qual_min_rsrq_on_all_symbols_r12_present; int8_t q_qual_min_rsrq_on_all_symbols_r12; // group 3 bool cell_resel_serving_freq_info_v1310_present; bool redist_serving_info_r13_present; bool cell_sel_info_ce_r13_present; bool t_resel_eutra_ce_r13_present; copy_ptr cell_resel_serving_freq_info_v1310; copy_ptr redist_serving_info_r13; copy_ptr cell_sel_info_ce_r13; uint8_t t_resel_eutra_ce_r13; // group 4 bool cell_sel_info_ce1_r13_present; copy_ptr cell_sel_info_ce1_r13; // group 5 bool cell_sel_info_ce1_v1360_present; copy_ptr cell_sel_info_ce1_v1360; // group 6 bool cell_resel_info_common_v1460_present; copy_ptr cell_resel_info_common_v1460; // group 7 bool cell_resel_info_hsdn_r15_present; bool cell_sel_info_ce_v1530_present; bool crs_intf_mitig_neigh_cells_ce_r15_present; copy_ptr cell_resel_info_hsdn_r15; copy_ptr cell_sel_info_ce_v1530; // sequence methods sib_type3_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType4 ::= SEQUENCE struct sib_type4_s { // member variables bool ext; bool intra_freq_neigh_cell_list_present; bool intra_freq_black_cell_list_present; bool csg_pci_range_present; intra_freq_neigh_cell_list_l intra_freq_neigh_cell_list; intra_freq_black_cell_list_l intra_freq_black_cell_list; pci_range_s csg_pci_range; // ... bool late_non_crit_ext_present; dyn_octstring late_non_crit_ext; // group 0 bool intra_freq_neigh_hsdn_cell_list_r15_present; copy_ptr intra_freq_neigh_hsdn_cell_list_r15; // sequence methods sib_type4_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType5 ::= SEQUENCE struct sib_type5_s { // member variables bool ext; inter_freq_carrier_freq_list_l inter_freq_carrier_freq_list; // ... bool late_non_crit_ext_present; dyn_octstring late_non_crit_ext; // group 0 bool inter_freq_carrier_freq_list_v1250_present; bool inter_freq_carrier_freq_list_ext_r12_present; copy_ptr inter_freq_carrier_freq_list_v1250; copy_ptr inter_freq_carrier_freq_list_ext_r12; // group 1 bool inter_freq_carrier_freq_list_ext_v1280_present; copy_ptr inter_freq_carrier_freq_list_ext_v1280; // group 2 bool inter_freq_carrier_freq_list_v1310_present; bool inter_freq_carrier_freq_list_ext_v1310_present; copy_ptr inter_freq_carrier_freq_list_v1310; copy_ptr inter_freq_carrier_freq_list_ext_v1310; // group 3 bool inter_freq_carrier_freq_list_v1350_present; bool inter_freq_carrier_freq_list_ext_v1350_present; copy_ptr inter_freq_carrier_freq_list_v1350; copy_ptr inter_freq_carrier_freq_list_ext_v1350; // group 4 bool inter_freq_carrier_freq_list_ext_v1360_present; copy_ptr inter_freq_carrier_freq_list_ext_v1360; // group 5 bool scptm_freq_offset_r14_present; uint8_t scptm_freq_offset_r14; // group 6 bool inter_freq_carrier_freq_list_v1530_present; bool inter_freq_carrier_freq_list_ext_v1530_present; bool meas_idle_cfg_sib_r15_present; copy_ptr inter_freq_carrier_freq_list_v1530; copy_ptr inter_freq_carrier_freq_list_ext_v1530; copy_ptr meas_idle_cfg_sib_r15; // sequence methods sib_type5_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType6 ::= SEQUENCE struct sib_type6_s { typedef dyn_array carrier_freq_list_utra_fdd_v1250_l_; typedef dyn_array carrier_freq_list_utra_tdd_v1250_l_; // member variables bool ext; bool carrier_freq_list_utra_fdd_present; bool carrier_freq_list_utra_tdd_present; bool t_resel_utra_sf_present; carrier_freq_list_utra_fdd_l carrier_freq_list_utra_fdd; carrier_freq_list_utra_tdd_l carrier_freq_list_utra_tdd; uint8_t t_resel_utra; speed_state_scale_factors_s t_resel_utra_sf; // ... bool late_non_crit_ext_present; dyn_octstring late_non_crit_ext; // group 0 bool carrier_freq_list_utra_fdd_v1250_present; bool carrier_freq_list_utra_tdd_v1250_present; bool carrier_freq_list_utra_fdd_ext_r12_present; bool carrier_freq_list_utra_tdd_ext_r12_present; copy_ptr carrier_freq_list_utra_fdd_v1250; copy_ptr carrier_freq_list_utra_tdd_v1250; copy_ptr carrier_freq_list_utra_fdd_ext_r12; copy_ptr carrier_freq_list_utra_tdd_ext_r12; // sequence methods sib_type6_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType7 ::= SEQUENCE struct sib_type7_s { // member variables bool ext; bool t_resel_geran_sf_present; bool carrier_freqs_info_list_present; uint8_t t_resel_geran; speed_state_scale_factors_s t_resel_geran_sf; carrier_freqs_info_list_geran_l carrier_freqs_info_list; // ... bool late_non_crit_ext_present; dyn_octstring late_non_crit_ext; // sequence methods sib_type7_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType8 ::= SEQUENCE struct sib_type8_s { struct params_hrpd_s_ { // member variables bool cell_resel_params_hrpd_present; pre_regist_info_hrpd_s pre_regist_info_hrpd; cell_resel_params_cdma2000_s cell_resel_params_hrpd; // sequence methods params_hrpd_s_(); }; struct params1_xrtt_s_ { // member variables bool csfb_regist_param1_xrtt_present; bool long_code_state1_xrtt_present; bool cell_resel_params1_xrtt_present; csfb_regist_param1_xrtt_s csfb_regist_param1_xrtt; fixed_bitstring<42> long_code_state1_xrtt; cell_resel_params_cdma2000_s cell_resel_params1_xrtt; // sequence methods params1_xrtt_s_(); }; // member variables bool ext; bool sys_time_info_present; bool search_win_size_present; bool params_hrpd_present; bool params1_xrtt_present; sys_time_info_cdma2000_s sys_time_info; uint8_t search_win_size; params_hrpd_s_ params_hrpd; params1_xrtt_s_ params1_xrtt; // ... bool late_non_crit_ext_present; dyn_octstring late_non_crit_ext; // group 0 bool csfb_support_for_dual_rx_ues_r9_present; bool cell_resel_params_hrpd_v920_present; bool cell_resel_params1_xrtt_v920_present; bool csfb_regist_param1_xrtt_v920_present; bool ac_barr_cfg1_xrtt_r9_present; bool csfb_support_for_dual_rx_ues_r9; copy_ptr cell_resel_params_hrpd_v920; copy_ptr cell_resel_params1_xrtt_v920; copy_ptr csfb_regist_param1_xrtt_v920; copy_ptr ac_barr_cfg1_xrtt_r9; // group 1 bool csfb_dual_rx_tx_support_r10_present; // group 2 bool sib8_per_plmn_list_r11_present; copy_ptr sib8_per_plmn_list_r11; // sequence methods sib_type8_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType9 ::= SEQUENCE struct sib_type9_s { // member variables bool ext; bool hnb_name_present; dyn_octstring hnb_name; // ... bool late_non_crit_ext_present; dyn_octstring late_non_crit_ext; // sequence methods sib_type9_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PosSystemInformation-r15-IEs ::= SEQUENCE struct pos_sys_info_r15_ies_s { struct pos_sib_type_and_info_r15_item_c_ { struct types { enum options { pos_sib1_minus1_r15, pos_sib1_minus2_r15, pos_sib1_minus3_r15, pos_sib1_minus4_r15, pos_sib1_minus5_r15, pos_sib1_minus6_r15, pos_sib1_minus7_r15, pos_sib2_minus1_r15, pos_sib2_minus2_r15, pos_sib2_minus3_r15, pos_sib2_minus4_r15, pos_sib2_minus5_r15, pos_sib2_minus6_r15, pos_sib2_minus7_r15, pos_sib2_minus8_r15, pos_sib2_minus9_r15, pos_sib2_minus10_r15, pos_sib2_minus11_r15, pos_sib2_minus12_r15, pos_sib2_minus13_r15, pos_sib2_minus14_r15, pos_sib2_minus15_r15, pos_sib2_minus16_r15, pos_sib2_minus17_r15, pos_sib2_minus18_r15, pos_sib2_minus19_r15, pos_sib3_minus1_r15, // ... nulltype }; options value; static const uint32_t nof_types = 27, nof_exts = 0; static const bool has_ext = true; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods pos_sib_type_and_info_r15_item_c_() : type_(types::nulltype) {} pos_sib_type_and_info_r15_item_c_(const pos_sib_type_and_info_r15_item_c_& other); pos_sib_type_and_info_r15_item_c_& operator=(const pos_sib_type_and_info_r15_item_c_& other); ~pos_sib_type_and_info_r15_item_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters sib_pos_r15_s& pos_sib1_minus1_r15() { assert_choice_type("posSib1-1-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } sib_pos_r15_s& pos_sib1_minus2_r15() { assert_choice_type("posSib1-2-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } sib_pos_r15_s& pos_sib1_minus3_r15() { assert_choice_type("posSib1-3-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } sib_pos_r15_s& pos_sib1_minus4_r15() { assert_choice_type("posSib1-4-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } sib_pos_r15_s& pos_sib1_minus5_r15() { assert_choice_type("posSib1-5-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } sib_pos_r15_s& pos_sib1_minus6_r15() { assert_choice_type("posSib1-6-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } sib_pos_r15_s& pos_sib1_minus7_r15() { assert_choice_type("posSib1-7-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } sib_pos_r15_s& pos_sib2_minus1_r15() { assert_choice_type("posSib2-1-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } sib_pos_r15_s& pos_sib2_minus2_r15() { assert_choice_type("posSib2-2-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } sib_pos_r15_s& pos_sib2_minus3_r15() { assert_choice_type("posSib2-3-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } sib_pos_r15_s& pos_sib2_minus4_r15() { assert_choice_type("posSib2-4-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } sib_pos_r15_s& pos_sib2_minus5_r15() { assert_choice_type("posSib2-5-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } sib_pos_r15_s& pos_sib2_minus6_r15() { assert_choice_type("posSib2-6-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } sib_pos_r15_s& pos_sib2_minus7_r15() { assert_choice_type("posSib2-7-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } sib_pos_r15_s& pos_sib2_minus8_r15() { assert_choice_type("posSib2-8-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } sib_pos_r15_s& pos_sib2_minus9_r15() { assert_choice_type("posSib2-9-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } sib_pos_r15_s& pos_sib2_minus10_r15() { assert_choice_type("posSib2-10-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } sib_pos_r15_s& pos_sib2_minus11_r15() { assert_choice_type("posSib2-11-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } sib_pos_r15_s& pos_sib2_minus12_r15() { assert_choice_type("posSib2-12-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } sib_pos_r15_s& pos_sib2_minus13_r15() { assert_choice_type("posSib2-13-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } sib_pos_r15_s& pos_sib2_minus14_r15() { assert_choice_type("posSib2-14-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } sib_pos_r15_s& pos_sib2_minus15_r15() { assert_choice_type("posSib2-15-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } sib_pos_r15_s& pos_sib2_minus16_r15() { assert_choice_type("posSib2-16-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } sib_pos_r15_s& pos_sib2_minus17_r15() { assert_choice_type("posSib2-17-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } sib_pos_r15_s& pos_sib2_minus18_r15() { assert_choice_type("posSib2-18-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } sib_pos_r15_s& pos_sib2_minus19_r15() { assert_choice_type("posSib2-19-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } sib_pos_r15_s& pos_sib3_minus1_r15() { assert_choice_type("posSib3-1-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } const sib_pos_r15_s& pos_sib1_minus1_r15() const { assert_choice_type("posSib1-1-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } const sib_pos_r15_s& pos_sib1_minus2_r15() const { assert_choice_type("posSib1-2-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } const sib_pos_r15_s& pos_sib1_minus3_r15() const { assert_choice_type("posSib1-3-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } const sib_pos_r15_s& pos_sib1_minus4_r15() const { assert_choice_type("posSib1-4-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } const sib_pos_r15_s& pos_sib1_minus5_r15() const { assert_choice_type("posSib1-5-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } const sib_pos_r15_s& pos_sib1_minus6_r15() const { assert_choice_type("posSib1-6-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } const sib_pos_r15_s& pos_sib1_minus7_r15() const { assert_choice_type("posSib1-7-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } const sib_pos_r15_s& pos_sib2_minus1_r15() const { assert_choice_type("posSib2-1-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } const sib_pos_r15_s& pos_sib2_minus2_r15() const { assert_choice_type("posSib2-2-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } const sib_pos_r15_s& pos_sib2_minus3_r15() const { assert_choice_type("posSib2-3-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } const sib_pos_r15_s& pos_sib2_minus4_r15() const { assert_choice_type("posSib2-4-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } const sib_pos_r15_s& pos_sib2_minus5_r15() const { assert_choice_type("posSib2-5-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } const sib_pos_r15_s& pos_sib2_minus6_r15() const { assert_choice_type("posSib2-6-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } const sib_pos_r15_s& pos_sib2_minus7_r15() const { assert_choice_type("posSib2-7-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } const sib_pos_r15_s& pos_sib2_minus8_r15() const { assert_choice_type("posSib2-8-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } const sib_pos_r15_s& pos_sib2_minus9_r15() const { assert_choice_type("posSib2-9-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } const sib_pos_r15_s& pos_sib2_minus10_r15() const { assert_choice_type("posSib2-10-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } const sib_pos_r15_s& pos_sib2_minus11_r15() const { assert_choice_type("posSib2-11-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } const sib_pos_r15_s& pos_sib2_minus12_r15() const { assert_choice_type("posSib2-12-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } const sib_pos_r15_s& pos_sib2_minus13_r15() const { assert_choice_type("posSib2-13-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } const sib_pos_r15_s& pos_sib2_minus14_r15() const { assert_choice_type("posSib2-14-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } const sib_pos_r15_s& pos_sib2_minus15_r15() const { assert_choice_type("posSib2-15-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } const sib_pos_r15_s& pos_sib2_minus16_r15() const { assert_choice_type("posSib2-16-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } const sib_pos_r15_s& pos_sib2_minus17_r15() const { assert_choice_type("posSib2-17-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } const sib_pos_r15_s& pos_sib2_minus18_r15() const { assert_choice_type("posSib2-18-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } const sib_pos_r15_s& pos_sib2_minus19_r15() const { assert_choice_type("posSib2-19-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } const sib_pos_r15_s& pos_sib3_minus1_r15() const { assert_choice_type("posSib3-1-r15", type_.to_string(), "posSIB-TypeAndInfo-r15-item"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; typedef dyn_array pos_sib_type_and_info_r15_l_; // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; pos_sib_type_and_info_r15_l_ pos_sib_type_and_info_r15; dyn_octstring late_non_crit_ext; // sequence methods pos_sys_info_r15_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SchedulingInfoList ::= SEQUENCE (SIZE (1..maxSI-Message)) OF SchedulingInfo typedef dyn_array sched_info_list_l; struct sib_info_item_c { struct types { enum options { sib2, sib3, sib4, sib5, sib6, sib7, sib8, sib9, sib10, sib11, // ... sib12_v920, sib13_v920, sib14_v1130, sib15_v1130, sib16_v1130, sib17_v1250, sib18_v1250, sib19_v1250, sib20_v1310, sib21_v1430, sib24_v1530, sib25_v1530, sib26_v1530, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 23, nof_exts = 13; static const bool has_ext = true; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods sib_info_item_c() : type_(types::nulltype) {} sib_info_item_c(const sib_info_item_c& other); sib_info_item_c& operator=(const sib_info_item_c& other); ~sib_info_item_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters sib_type2_s& sib2() { assert_choice_type("sib2", type_.to_string(), ""); return c.get(); } sib_type3_s& sib3() { assert_choice_type("sib3", type_.to_string(), ""); return c.get(); } sib_type4_s& sib4() { assert_choice_type("sib4", type_.to_string(), ""); return c.get(); } sib_type5_s& sib5() { assert_choice_type("sib5", type_.to_string(), ""); return c.get(); } sib_type6_s& sib6() { assert_choice_type("sib6", type_.to_string(), ""); return c.get(); } sib_type7_s& sib7() { assert_choice_type("sib7", type_.to_string(), ""); return c.get(); } sib_type8_s& sib8() { assert_choice_type("sib8", type_.to_string(), ""); return c.get(); } sib_type9_s& sib9() { assert_choice_type("sib9", type_.to_string(), ""); return c.get(); } sib_type10_s& sib10() { assert_choice_type("sib10", type_.to_string(), ""); return c.get(); } sib_type11_s& sib11() { assert_choice_type("sib11", type_.to_string(), ""); return c.get(); } sib_type12_r9_s& sib12_v920() { assert_choice_type("sib12-v920", type_.to_string(), ""); return c.get(); } sib_type13_r9_s& sib13_v920() { assert_choice_type("sib13-v920", type_.to_string(), ""); return c.get(); } sib_type14_r11_s& sib14_v1130() { assert_choice_type("sib14-v1130", type_.to_string(), ""); return c.get(); } sib_type15_r11_s& sib15_v1130() { assert_choice_type("sib15-v1130", type_.to_string(), ""); return c.get(); } sib_type16_r11_s& sib16_v1130() { assert_choice_type("sib16-v1130", type_.to_string(), ""); return c.get(); } sib_type17_r12_s& sib17_v1250() { assert_choice_type("sib17-v1250", type_.to_string(), ""); return c.get(); } sib_type18_r12_s& sib18_v1250() { assert_choice_type("sib18-v1250", type_.to_string(), ""); return c.get(); } sib_type19_r12_s& sib19_v1250() { assert_choice_type("sib19-v1250", type_.to_string(), ""); return c.get(); } sib_type20_r13_s& sib20_v1310() { assert_choice_type("sib20-v1310", type_.to_string(), ""); return c.get(); } sib_type21_r14_s& sib21_v1430() { assert_choice_type("sib21-v1430", type_.to_string(), ""); return c.get(); } sib_type24_r15_s& sib24_v1530() { assert_choice_type("sib24-v1530", type_.to_string(), ""); return c.get(); } sib_type25_r15_s& sib25_v1530() { assert_choice_type("sib25-v1530", type_.to_string(), ""); return c.get(); } sib_type26_r15_s& sib26_v1530() { assert_choice_type("sib26-v1530", type_.to_string(), ""); return c.get(); } const sib_type2_s& sib2() const { assert_choice_type("sib2", type_.to_string(), ""); return c.get(); } const sib_type3_s& sib3() const { assert_choice_type("sib3", type_.to_string(), ""); return c.get(); } const sib_type4_s& sib4() const { assert_choice_type("sib4", type_.to_string(), ""); return c.get(); } const sib_type5_s& sib5() const { assert_choice_type("sib5", type_.to_string(), ""); return c.get(); } const sib_type6_s& sib6() const { assert_choice_type("sib6", type_.to_string(), ""); return c.get(); } const sib_type7_s& sib7() const { assert_choice_type("sib7", type_.to_string(), ""); return c.get(); } const sib_type8_s& sib8() const { assert_choice_type("sib8", type_.to_string(), ""); return c.get(); } const sib_type9_s& sib9() const { assert_choice_type("sib9", type_.to_string(), ""); return c.get(); } const sib_type10_s& sib10() const { assert_choice_type("sib10", type_.to_string(), ""); return c.get(); } const sib_type11_s& sib11() const { assert_choice_type("sib11", type_.to_string(), ""); return c.get(); } const sib_type12_r9_s& sib12_v920() const { assert_choice_type("sib12-v920", type_.to_string(), ""); return c.get(); } const sib_type13_r9_s& sib13_v920() const { assert_choice_type("sib13-v920", type_.to_string(), ""); return c.get(); } const sib_type14_r11_s& sib14_v1130() const { assert_choice_type("sib14-v1130", type_.to_string(), ""); return c.get(); } const sib_type15_r11_s& sib15_v1130() const { assert_choice_type("sib15-v1130", type_.to_string(), ""); return c.get(); } const sib_type16_r11_s& sib16_v1130() const { assert_choice_type("sib16-v1130", type_.to_string(), ""); return c.get(); } const sib_type17_r12_s& sib17_v1250() const { assert_choice_type("sib17-v1250", type_.to_string(), ""); return c.get(); } const sib_type18_r12_s& sib18_v1250() const { assert_choice_type("sib18-v1250", type_.to_string(), ""); return c.get(); } const sib_type19_r12_s& sib19_v1250() const { assert_choice_type("sib19-v1250", type_.to_string(), ""); return c.get(); } const sib_type20_r13_s& sib20_v1310() const { assert_choice_type("sib20-v1310", type_.to_string(), ""); return c.get(); } const sib_type21_r14_s& sib21_v1430() const { assert_choice_type("sib21-v1430", type_.to_string(), ""); return c.get(); } const sib_type24_r15_s& sib24_v1530() const { assert_choice_type("sib24-v1530", type_.to_string(), ""); return c.get(); } const sib_type25_r15_s& sib25_v1530() const { assert_choice_type("sib25-v1530", type_.to_string(), ""); return c.get(); } const sib_type26_r15_s& sib26_v1530() const { assert_choice_type("sib26-v1530", type_.to_string(), ""); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // SystemInformation-r8-IEs ::= SEQUENCE struct sys_info_r8_ies_s { typedef sib_info_item_c sib_type_and_info_item_c_; typedef dyn_array sib_type_and_info_l_; // member variables bool non_crit_ext_present; sib_type_and_info_l_ sib_type_and_info; sys_info_v8a0_ies_s non_crit_ext; // sequence methods sys_info_r8_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType1-v890-IEs ::= SEQUENCE struct sib_type1_v890_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; sib_type1_v920_ies_s non_crit_ext; // sequence methods sib_type1_v890_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformation ::= SEQUENCE struct sys_info_s { struct crit_exts_c_ { struct crit_exts_future_r15_c_ { struct types { enum options { pos_sys_info_r15, crit_exts_future, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods crit_exts_future_r15_c_() : type_(types::nulltype) {} crit_exts_future_r15_c_(const crit_exts_future_r15_c_& other); crit_exts_future_r15_c_& operator=(const crit_exts_future_r15_c_& other); ~crit_exts_future_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(bit_ref& bref); void to_json(json_writer& j) const; // getters pos_sys_info_r15_ies_s& pos_sys_info_r15() { assert_choice_type("posSystemInformation-r15", type_.to_string(), "criticalExtensionsFuture-r15"); return c.get(); } const pos_sys_info_r15_ies_s& pos_sys_info_r15() const { assert_choice_type("posSystemInformation-r15", type_.to_string(), "criticalExtensionsFuture-r15"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct types { enum options { sys_info_r8, crit_exts_future_r15, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters sys_info_r8_ies_s& sys_info_r8() { assert_choice_type("systemInformation-r8", type_.to_string(), "criticalExtensions"); return c.get(); } crit_exts_future_r15_c_& crit_exts_future_r15() { assert_choice_type("criticalExtensionsFuture-r15", type_.to_string(), "criticalExtensions"); return c.get(); } const sys_info_r8_ies_s& sys_info_r8() const { assert_choice_type("systemInformation-r8", type_.to_string(), "criticalExtensions"); return c.get(); } const crit_exts_future_r15_c_& crit_exts_future_r15() const { assert_choice_type("criticalExtensionsFuture-r15", type_.to_string(), "criticalExtensions"); 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(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformationBlockType1 ::= SEQUENCE struct sib_type1_s { struct cell_access_related_info_s_ { struct cell_barred_e_ { enum options { barred, not_barred }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods cell_barred_e_() {} cell_barred_e_(options v) : value(v) {} cell_barred_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct intra_freq_resel_e_ { enum options { allowed, not_allowed }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods intra_freq_resel_e_() {} intra_freq_resel_e_(options v) : value(v) {} intra_freq_resel_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool csg_id_present; plmn_id_list_l plmn_id_list; fixed_bitstring<16> tac; fixed_bitstring<28> cell_id; cell_barred_e_ cell_barred; intra_freq_resel_e_ intra_freq_resel; bool csg_ind; fixed_bitstring<27> csg_id; // sequence methods cell_access_related_info_s_(); }; struct cell_sel_info_s_ { // member variables bool q_rx_lev_min_offset_present; int8_t q_rx_lev_min; uint8_t q_rx_lev_min_offset; // sequence methods cell_sel_info_s_(); }; struct si_win_len_e_ { enum options { ms1, ms2, ms5, ms10, ms15, ms20, ms40 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 7, nof_exts = 0; static const bool has_ext = false; // enumerated methods si_win_len_e_() {} si_win_len_e_(options v) : value(v) {} si_win_len_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool p_max_present; bool tdd_cfg_present; bool non_crit_ext_present; cell_access_related_info_s_ cell_access_related_info; cell_sel_info_s_ cell_sel_info; int8_t p_max; uint8_t freq_band_ind; sched_info_list_l sched_info_list; tdd_cfg_s tdd_cfg; si_win_len_e_ si_win_len; uint8_t sys_info_value_tag; sib_type1_v890_ies_s non_crit_ext; // sequence methods sib_type1_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BCCH-DL-SCH-MessageType ::= CHOICE struct bcch_dl_sch_msg_type_c { struct c1_c_ { struct types { enum options { sys_info, sib_type1, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods c1_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters sys_info_s& sys_info() { assert_choice_type("systemInformation", type_.to_string(), "c1"); return c.get(); } sib_type1_s& sib_type1() { assert_choice_type("systemInformationBlockType1", type_.to_string(), "c1"); return c.get(); } const sys_info_s& sys_info() const { assert_choice_type("systemInformation", type_.to_string(), "c1"); return c.get(); } const sib_type1_s& sib_type1() const { assert_choice_type("systemInformationBlockType1", type_.to_string(), "c1"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct types { enum options { c1, msg_class_ext, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods bcch_dl_sch_msg_type_c() : type_(types::nulltype) {} bcch_dl_sch_msg_type_c(const bcch_dl_sch_msg_type_c& other); bcch_dl_sch_msg_type_c& operator=(const bcch_dl_sch_msg_type_c& other); ~bcch_dl_sch_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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "BCCH-DL-SCH-MessageType"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "BCCH-DL-SCH-MessageType"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // BCCH-DL-SCH-Message ::= SEQUENCE struct bcch_dl_sch_msg_s { // member variables bcch_dl_sch_msg_type_c msg; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInformation-BR-r13 ::= SystemInformation typedef sys_info_s sys_info_br_r13_s; // SystemInformationBlockType1-BR-r13 ::= SystemInformationBlockType1 typedef sib_type1_s sib_type1_br_r13_s; // BCCH-DL-SCH-MessageType-BR-r13 ::= CHOICE struct bcch_dl_sch_msg_type_br_r13_c { struct c1_c_ { struct types { enum options { sys_info_br_r13, sib_type1_br_r13, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods c1_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters sys_info_br_r13_s& sys_info_br_r13() { assert_choice_type("systemInformation-BR-r13", type_.to_string(), "c1"); return c.get(); } sib_type1_br_r13_s& sib_type1_br_r13() { assert_choice_type("systemInformationBlockType1-BR-r13", type_.to_string(), "c1"); return c.get(); } const sys_info_br_r13_s& sys_info_br_r13() const { assert_choice_type("systemInformation-BR-r13", type_.to_string(), "c1"); return c.get(); } const sib_type1_br_r13_s& sib_type1_br_r13() const { assert_choice_type("systemInformationBlockType1-BR-r13", type_.to_string(), "c1"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct types { enum options { c1, msg_class_ext, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods bcch_dl_sch_msg_type_br_r13_c() : type_(types::nulltype) {} bcch_dl_sch_msg_type_br_r13_c(const bcch_dl_sch_msg_type_br_r13_c& other); bcch_dl_sch_msg_type_br_r13_c& operator=(const bcch_dl_sch_msg_type_br_r13_c& other); ~bcch_dl_sch_msg_type_br_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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "BCCH-DL-SCH-MessageType-BR-r13"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "BCCH-DL-SCH-MessageType-BR-r13"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // BCCH-DL-SCH-Message-BR ::= SEQUENCE struct bcch_dl_sch_msg_br_s { // member variables bcch_dl_sch_msg_type_br_r13_c msg; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SIB-Type-MBMS-r14 ::= ENUMERATED struct sib_type_mbms_r14_e { enum options { sib_type10, sib_type11, sib_type12_v920, sib_type13_v920, sib_type15_v1130, sib_type16_v1130, // ... }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = true; // enumerated methods sib_type_mbms_r14_e() {} sib_type_mbms_r14_e(options v) : value(v) {} sib_type_mbms_r14_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // SIB-MappingInfo-MBMS-r14 ::= SEQUENCE (SIZE (0..maxSIB-1)) OF SIB-Type-MBMS-r14 typedef bounded_array sib_map_info_mbms_r14_l; // SchedulingInfo-MBMS-r14 ::= SEQUENCE struct sched_info_mbms_r14_s { struct si_periodicity_r14_e_ { enum options { rf16, rf32, rf64, rf128, rf256, rf512 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods si_periodicity_r14_e_() {} si_periodicity_r14_e_(options v) : value(v) {} si_periodicity_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables si_periodicity_r14_e_ si_periodicity_r14; sib_map_info_mbms_r14_l sib_map_info_r14; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // NonMBSFN-SubframeConfig-r14 ::= SEQUENCE struct non_mbsfn_sf_cfg_r14_s { struct radio_frame_alloc_period_r14_e_ { enum options { rf4, rf8, rf16, rf32, rf64, rf128, rf512 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 7, nof_exts = 0; static const bool has_ext = false; // enumerated methods radio_frame_alloc_period_r14_e_() {} radio_frame_alloc_period_r14_e_(options v) : value(v) {} radio_frame_alloc_period_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables radio_frame_alloc_period_r14_e_ radio_frame_alloc_period_r14; uint8_t radio_frame_alloc_offset_r14; fixed_bitstring<9> sf_alloc_r14; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PLMN-IdentityList-MBMS-r14 ::= SEQUENCE (SIZE (1..maxPLMN-r11)) OF PLMN-Identity typedef dyn_array plmn_id_list_mbms_r14_l; // SchedulingInfoList-MBMS-r14 ::= SEQUENCE (SIZE (1..maxSI-Message)) OF SchedulingInfo-MBMS-r14 typedef dyn_array sched_info_list_mbms_r14_l; // SystemInformation-MBMS-r14 ::= SystemInformation typedef sys_info_s sys_info_mbms_r14_s; // SystemInformationBlockType1-MBMS-r14 ::= SEQUENCE struct sib_type1_mbms_r14_s { struct cell_access_related_info_r14_s_ { // member variables plmn_id_list_mbms_r14_l plmn_id_list_r14; fixed_bitstring<16> tac_r14; fixed_bitstring<28> cell_id_r14; }; struct si_win_len_r14_e_ { enum options { ms1, ms2, ms5, ms10, ms15, ms20, ms40, ms80 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods si_win_len_r14_e_() {} si_win_len_r14_e_(options v) : value(v) {} si_win_len_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; typedef dyn_array cell_access_related_info_list_r14_l_; // member variables bool multi_band_info_list_r14_present; bool non_mbsfn_sf_cfg_r14_present; bool sib_type13_r14_present; bool cell_access_related_info_list_r14_present; bool non_crit_ext_present; cell_access_related_info_r14_s_ cell_access_related_info_r14; uint16_t freq_band_ind_r14; multi_band_info_list_r11_l multi_band_info_list_r14; sched_info_list_mbms_r14_l sched_info_list_mbms_r14; si_win_len_r14_e_ si_win_len_r14; uint8_t sys_info_value_tag_r14; non_mbsfn_sf_cfg_r14_s non_mbsfn_sf_cfg_r14; pdsch_cfg_common_s pdsch_cfg_common_r14; sib_type13_r9_s sib_type13_r14; cell_access_related_info_list_r14_l_ cell_access_related_info_list_r14; // sequence methods sib_type1_mbms_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BCCH-DL-SCH-MessageType-MBMS-r14 ::= CHOICE struct bcch_dl_sch_msg_type_mbms_r14_c { struct c1_c_ { struct types { enum options { sys_info_mbms_r14, sib_type1_mbms_r14, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods c1_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters sys_info_mbms_r14_s& sys_info_mbms_r14() { assert_choice_type("systemInformation-MBMS-r14", type_.to_string(), "c1"); return c.get(); } sib_type1_mbms_r14_s& sib_type1_mbms_r14() { assert_choice_type("systemInformationBlockType1-MBMS-r14", type_.to_string(), "c1"); return c.get(); } const sys_info_mbms_r14_s& sys_info_mbms_r14() const { assert_choice_type("systemInformation-MBMS-r14", type_.to_string(), "c1"); return c.get(); } const sib_type1_mbms_r14_s& sib_type1_mbms_r14() const { assert_choice_type("systemInformationBlockType1-MBMS-r14", type_.to_string(), "c1"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct types { enum options { c1, msg_class_ext, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods bcch_dl_sch_msg_type_mbms_r14_c() : type_(types::nulltype) {} bcch_dl_sch_msg_type_mbms_r14_c(const bcch_dl_sch_msg_type_mbms_r14_c& other); bcch_dl_sch_msg_type_mbms_r14_c& operator=(const bcch_dl_sch_msg_type_mbms_r14_c& other); ~bcch_dl_sch_msg_type_mbms_r14_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "BCCH-DL-SCH-MessageType-MBMS-r14"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "BCCH-DL-SCH-MessageType-MBMS-r14"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // BCCH-DL-SCH-Message-MBMS ::= SEQUENCE struct bcch_dl_sch_msg_mbms_s { // member variables bcch_dl_sch_msg_type_mbms_r14_c msg; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // NZP-FrequencyDensity-r14 ::= ENUMERATED struct nzp_freq_density_r14_e { enum options { d1, d2, d3 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods nzp_freq_density_r14_e() {} nzp_freq_density_r14_e(options v) : value(v) {} nzp_freq_density_r14_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // P-C-AndCBSR-r13 ::= SEQUENCE struct p_c_and_cbsr_r13_s { struct cbsr_sel_r13_c_ { struct non_precoded_r13_s_ { // member variables dyn_bitstring codebook_subset_restrict1_r13; dyn_bitstring codebook_subset_restrict2_r13; }; struct beamformed_k1a_r13_s_ { // member variables dyn_bitstring codebook_subset_restrict3_r13; }; struct beamformed_kn_r13_s_ { // member variables dyn_bitstring codebook_subset_restrict_r13; }; struct types { enum options { non_precoded_r13, beamformed_k1a_r13, beamformed_kn_r13, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods cbsr_sel_r13_c_() : type_(types::nulltype) {} cbsr_sel_r13_c_(const cbsr_sel_r13_c_& other); cbsr_sel_r13_c_& operator=(const cbsr_sel_r13_c_& other); ~cbsr_sel_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(bit_ref& bref); void to_json(json_writer& j) const; // getters non_precoded_r13_s_& non_precoded_r13() { assert_choice_type("nonPrecoded-r13", type_.to_string(), "cbsr-Selection-r13"); return c.get(); } beamformed_k1a_r13_s_& beamformed_k1a_r13() { assert_choice_type("beamformedK1a-r13", type_.to_string(), "cbsr-Selection-r13"); return c.get(); } beamformed_kn_r13_s_& beamformed_kn_r13() { assert_choice_type("beamformedKN-r13", type_.to_string(), "cbsr-Selection-r13"); return c.get(); } const non_precoded_r13_s_& non_precoded_r13() const { assert_choice_type("nonPrecoded-r13", type_.to_string(), "cbsr-Selection-r13"); return c.get(); } const beamformed_k1a_r13_s_& beamformed_k1a_r13() const { assert_choice_type("beamformedK1a-r13", type_.to_string(), "cbsr-Selection-r13"); return c.get(); } const beamformed_kn_r13_s_& beamformed_kn_r13() const { assert_choice_type("beamformedKN-r13", type_.to_string(), "cbsr-Selection-r13"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables bool ext; int8_t p_c_r13; cbsr_sel_r13_c_ cbsr_sel_r13; // ... // sequence methods p_c_and_cbsr_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSI-RS-Config-NZP-v1430 ::= SEQUENCE struct csi_rs_cfg_nzp_v1430_s { // member variables bool tx_comb_r14_present; bool freq_density_r14_present; uint8_t tx_comb_r14; nzp_freq_density_r14_e freq_density_r14; // sequence methods csi_rs_cfg_nzp_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSI-RS-ConfigNZP-Activation-r14 ::= SEQUENCE struct csi_rs_cfg_nzp_activation_r14_s { struct csi_rs_nzp_mode_r14_e_ { enum options { semi_persistent, aperiodic }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods csi_rs_nzp_mode_r14_e_() {} csi_rs_nzp_mode_r14_e_(options v) : value(v) {} csi_rs_nzp_mode_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables csi_rs_nzp_mode_r14_e_ csi_rs_nzp_mode_r14; uint8_t activ_res_r14; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSI-RS-ConfigNZP-r11 ::= SEQUENCE struct csi_rs_cfg_nzp_r11_s { struct ant_ports_count_r11_e_ { enum options { an1, an2, an4, an8 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods ant_ports_count_r11_e_() {} ant_ports_count_r11_e_(options v) : value(v) {} ant_ports_count_r11_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct qcl_crs_info_r11_s_ { struct crs_ports_count_r11_e_ { enum options { n1, n2, n4, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods crs_ports_count_r11_e_() {} crs_ports_count_r11_e_(options v) : value(v) {} crs_ports_count_r11_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct mbsfn_sf_cfg_list_r11_c_ { struct setup_s_ { // member variables mbsfn_sf_cfg_list_l sf_cfg_list; }; typedef setup_e types; // choice methods mbsfn_sf_cfg_list_r11_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "mbsfn-SubframeConfigList-r11"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "mbsfn-SubframeConfigList-r11"); return c; } private: types type_; setup_s_ c; }; // member variables bool mbsfn_sf_cfg_list_r11_present; uint16_t qcl_scrambling_id_r11; crs_ports_count_r11_e_ crs_ports_count_r11; mbsfn_sf_cfg_list_r11_c_ mbsfn_sf_cfg_list_r11; // sequence methods qcl_crs_info_r11_s_(); }; struct mbsfn_sf_cfg_list_v1430_c_ { struct setup_s_ { // member variables mbsfn_sf_cfg_list_v1430_l sf_cfg_list_v1430; }; typedef setup_e types; // choice methods mbsfn_sf_cfg_list_v1430_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "mbsfn-SubframeConfigList-v1430"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "mbsfn-SubframeConfigList-v1430"); return c; } private: types type_; setup_s_ c; }; // member variables bool ext; bool qcl_crs_info_r11_present; uint8_t csi_rs_cfg_nzp_id_r11; ant_ports_count_r11_e_ ant_ports_count_r11; uint8_t res_cfg_r11; uint8_t sf_cfg_r11; uint16_t scrambling_id_r11; qcl_crs_info_r11_s_ qcl_crs_info_r11; // ... // group 0 bool csi_rs_cfg_nzp_id_v1310_present; uint8_t csi_rs_cfg_nzp_id_v1310; // group 1 bool tx_comb_r14_present; bool freq_density_r14_present; uint8_t tx_comb_r14; nzp_freq_density_r14_e freq_density_r14; // group 2 bool mbsfn_sf_cfg_list_v1430_present; copy_ptr mbsfn_sf_cfg_list_v1430; // sequence methods csi_rs_cfg_nzp_r11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // NZP-ResourceConfig-r13 ::= SEQUENCE struct nzp_res_cfg_r13_s { // member variables bool ext; uint8_t res_cfg_r13; // ... // group 0 bool tx_comb_r14_present; bool freq_density_r14_present; uint8_t tx_comb_r14; nzp_freq_density_r14_e freq_density_r14; // sequence methods nzp_res_cfg_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // P-C-AndCBSR-Pair-r13 ::= SEQUENCE (SIZE (1..2)) OF P-C-AndCBSR-r13 typedef dyn_array p_c_and_cbsr_pair_r13_l; // P-C-AndCBSR-r15 ::= SEQUENCE struct p_c_and_cbsr_r15_s { // member variables int8_t p_c_r15; dyn_bitstring codebook_subset_restrict4_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSI-RS-ConfigBeamformed-r14 ::= SEQUENCE struct csi_rs_cfg_beamformed_r14_s { typedef bounded_array csi_rs_cfg_nzp_id_list_ext_r14_l_; typedef bounded_array csi_im_cfg_id_list_r14_l_; typedef dyn_array p_c_and_cbsr_per_res_cfg_list_r14_l_; typedef bounded_array ace_for4_tx_per_res_cfg_list_r14_l_; typedef dyn_array csi_rs_cfg_nzp_ap_list_r14_l_; // member variables bool csi_rs_cfg_nzp_id_list_ext_r14_present; bool csi_im_cfg_id_list_r14_present; bool p_c_and_cbsr_per_res_cfg_list_r14_present; bool ace_for4_tx_per_res_cfg_list_r14_present; bool alternative_codebook_enabled_beamformed_r14_present; bool ch_meas_restrict_r14_present; bool csi_rs_cfg_nzp_ap_list_r14_present; bool nzp_res_cfg_original_v1430_present; bool csi_rs_nzp_activation_r14_present; csi_rs_cfg_nzp_id_list_ext_r14_l_ csi_rs_cfg_nzp_id_list_ext_r14; csi_im_cfg_id_list_r14_l_ csi_im_cfg_id_list_r14; p_c_and_cbsr_per_res_cfg_list_r14_l_ p_c_and_cbsr_per_res_cfg_list_r14; ace_for4_tx_per_res_cfg_list_r14_l_ ace_for4_tx_per_res_cfg_list_r14; csi_rs_cfg_nzp_ap_list_r14_l_ csi_rs_cfg_nzp_ap_list_r14; csi_rs_cfg_nzp_v1430_s nzp_res_cfg_original_v1430; csi_rs_cfg_nzp_activation_r14_s csi_rs_nzp_activation_r14; // sequence methods csi_rs_cfg_beamformed_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSI-RS-ConfigNZP-EMIMO-r13 ::= CHOICE struct csi_rs_cfg_nzp_emimo_r13_c { struct setup_s_ { typedef dyn_array nzp_res_cfg_list_r13_l_; struct cdm_type_r13_e_ { enum options { cdm2, cdm4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods cdm_type_r13_e_() {} cdm_type_r13_e_(options v) : value(v) {} cdm_type_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool cdm_type_r13_present; nzp_res_cfg_list_r13_l_ nzp_res_cfg_list_r13; cdm_type_r13_e_ cdm_type_r13; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods csi_rs_cfg_nzp_emimo_r13_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "CSI-RS-ConfigNZP-EMIMO-r13"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "CSI-RS-ConfigNZP-EMIMO-r13"); return c; } private: types type_; setup_s_ c; }; // CSI-RS-ConfigNZP-EMIMO-v1430 ::= SEQUENCE struct csi_rs_cfg_nzp_emimo_v1430_s { typedef dyn_array nzp_res_cfg_list_ext_r14_l_; // member variables bool cdm_type_v1430_present; nzp_res_cfg_list_ext_r14_l_ nzp_res_cfg_list_ext_r14; // sequence methods csi_rs_cfg_nzp_emimo_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // P-C-AndCBSR-Pair-r15 ::= SEQUENCE (SIZE (1..2)) OF P-C-AndCBSR-r15 typedef dyn_array p_c_and_cbsr_pair_r15_l; // CQI-ReportModeAperiodic ::= ENUMERATED struct cqi_report_mode_aperiodic_e { enum options { rm12, rm20, rm22, rm30, rm31, rm32_v1250, rm10_v1310, rm11_v1310 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods cqi_report_mode_aperiodic_e() {} cqi_report_mode_aperiodic_e(options v) : value(v) {} cqi_report_mode_aperiodic_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // CSI-RS-ConfigBeamformed-r13 ::= SEQUENCE struct csi_rs_cfg_beamformed_r13_s { typedef bounded_array csi_rs_cfg_nzp_id_list_ext_r13_l_; typedef bounded_array csi_im_cfg_id_list_r13_l_; typedef dyn_array p_c_and_cbsr_per_res_cfg_list_r13_l_; typedef bounded_array ace_for4_tx_per_res_cfg_list_r13_l_; // member variables bool csi_rs_cfg_nzp_id_list_ext_r13_present; bool csi_im_cfg_id_list_r13_present; bool p_c_and_cbsr_per_res_cfg_list_r13_present; bool ace_for4_tx_per_res_cfg_list_r13_present; bool alternative_codebook_enabled_beamformed_r13_present; bool ch_meas_restrict_r13_present; csi_rs_cfg_nzp_id_list_ext_r13_l_ csi_rs_cfg_nzp_id_list_ext_r13; csi_im_cfg_id_list_r13_l_ csi_im_cfg_id_list_r13; p_c_and_cbsr_per_res_cfg_list_r13_l_ p_c_and_cbsr_per_res_cfg_list_r13; ace_for4_tx_per_res_cfg_list_r13_l_ ace_for4_tx_per_res_cfg_list_r13; // sequence methods csi_rs_cfg_beamformed_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSI-RS-ConfigBeamformed-v1430 ::= SEQUENCE struct csi_rs_cfg_beamformed_v1430_s { typedef dyn_array csi_rs_cfg_nzp_ap_list_r14_l_; // member variables bool csi_rs_cfg_nzp_ap_list_r14_present; bool nzp_res_cfg_original_v1430_present; bool csi_rs_nzp_activation_r14_present; csi_rs_cfg_nzp_ap_list_r14_l_ csi_rs_cfg_nzp_ap_list_r14; csi_rs_cfg_nzp_v1430_s nzp_res_cfg_original_v1430; csi_rs_cfg_nzp_activation_r14_s csi_rs_nzp_activation_r14; // sequence methods csi_rs_cfg_beamformed_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSI-RS-ConfigEMIMO2-r14 ::= CHOICE struct csi_rs_cfg_emimo2_r14_c { typedef setup_e types; // choice methods csi_rs_cfg_emimo2_r14_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters csi_rs_cfg_beamformed_r14_s& setup() { assert_choice_type("setup", type_.to_string(), "CSI-RS-ConfigEMIMO2-r14"); return c; } const csi_rs_cfg_beamformed_r14_s& setup() const { assert_choice_type("setup", type_.to_string(), "CSI-RS-ConfigEMIMO2-r14"); return c; } private: types type_; csi_rs_cfg_beamformed_r14_s c; }; // CSI-RS-ConfigNonPrecoded-r13 ::= SEQUENCE struct csi_rs_cfg_non_precoded_r13_s { struct codebook_cfg_n1_r13_e_ { enum options { n1, n2, n3, n4, n8 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 5, nof_exts = 0; static const bool has_ext = false; // enumerated methods codebook_cfg_n1_r13_e_() {} codebook_cfg_n1_r13_e_(options v) : value(v) {} codebook_cfg_n1_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct codebook_cfg_n2_r13_e_ { enum options { n1, n2, n3, n4, n8 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 5, nof_exts = 0; static const bool has_ext = false; // enumerated methods codebook_cfg_n2_r13_e_() {} codebook_cfg_n2_r13_e_(options v) : value(v) {} codebook_cfg_n2_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct codebook_over_sampling_rate_cfg_o1_r13_e_ { enum options { n4, n8 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods codebook_over_sampling_rate_cfg_o1_r13_e_() {} codebook_over_sampling_rate_cfg_o1_r13_e_(options v) : value(v) {} codebook_over_sampling_rate_cfg_o1_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct codebook_over_sampling_rate_cfg_o2_r13_e_ { enum options { n4, n8 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods codebook_over_sampling_rate_cfg_o2_r13_e_() {} codebook_over_sampling_rate_cfg_o2_r13_e_(options v) : value(v) {} codebook_over_sampling_rate_cfg_o2_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; typedef bounded_array csi_im_cfg_id_list_r13_l_; // member variables bool p_c_and_cbsr_list_r13_present; bool codebook_over_sampling_rate_cfg_o1_r13_present; bool codebook_over_sampling_rate_cfg_o2_r13_present; bool csi_im_cfg_id_list_r13_present; bool csi_rs_cfg_nzp_emimo_r13_present; p_c_and_cbsr_pair_r13_l p_c_and_cbsr_list_r13; codebook_cfg_n1_r13_e_ codebook_cfg_n1_r13; codebook_cfg_n2_r13_e_ codebook_cfg_n2_r13; codebook_over_sampling_rate_cfg_o1_r13_e_ codebook_over_sampling_rate_cfg_o1_r13; codebook_over_sampling_rate_cfg_o2_r13_e_ codebook_over_sampling_rate_cfg_o2_r13; uint8_t codebook_cfg_r13; csi_im_cfg_id_list_r13_l_ csi_im_cfg_id_list_r13; csi_rs_cfg_nzp_emimo_r13_c csi_rs_cfg_nzp_emimo_r13; // sequence methods csi_rs_cfg_non_precoded_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSI-RS-ConfigNonPrecoded-v1430 ::= SEQUENCE struct csi_rs_cfg_non_precoded_v1430_s { struct codebook_cfg_n1_v1430_e_ { enum options { n5, n6, n7, n10, n12, n14, n16 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 7, nof_exts = 0; static const bool has_ext = false; // enumerated methods codebook_cfg_n1_v1430_e_() {} codebook_cfg_n1_v1430_e_(options v) : value(v) {} codebook_cfg_n1_v1430_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct codebook_cfg_n2_v1430_e_ { enum options { n5, n6, n7 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods codebook_cfg_n2_v1430_e_() {} codebook_cfg_n2_v1430_e_(options v) : value(v) {} codebook_cfg_n2_v1430_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool csi_rs_cfg_nzp_emimo_v1430_present; csi_rs_cfg_nzp_emimo_v1430_s csi_rs_cfg_nzp_emimo_v1430; codebook_cfg_n1_v1430_e_ codebook_cfg_n1_v1430; codebook_cfg_n2_v1430_e_ codebook_cfg_n2_v1430; csi_rs_cfg_nzp_v1430_s nzp_res_cfg_tm9_original_v1430; // sequence methods csi_rs_cfg_non_precoded_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSI-RS-ConfigNonPrecoded-v1480 ::= SEQUENCE struct csi_rs_cfg_non_precoded_v1480_s { struct codebook_cfg_n1_v1480_e_ { enum options { n5, n6, n7, n10, n12, n14, n16 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 7, nof_exts = 0; static const bool has_ext = false; // enumerated methods codebook_cfg_n1_v1480_e_() {} codebook_cfg_n1_v1480_e_(options v) : value(v) {} codebook_cfg_n1_v1480_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct codebook_cfg_n2_r1480_e_ { enum options { n5, n6, n7 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods codebook_cfg_n2_r1480_e_() {} codebook_cfg_n2_r1480_e_(options v) : value(v) {} codebook_cfg_n2_r1480_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool csi_rs_cfg_nzp_emimo_v1480_present; bool codebook_cfg_n1_v1480_present; bool codebook_cfg_n2_r1480_present; csi_rs_cfg_nzp_emimo_v1430_s csi_rs_cfg_nzp_emimo_v1480; codebook_cfg_n1_v1480_e_ codebook_cfg_n1_v1480; codebook_cfg_n2_r1480_e_ codebook_cfg_n2_r1480; csi_rs_cfg_nzp_v1430_s nzp_res_cfg_tm9_original_v1480; // sequence methods csi_rs_cfg_non_precoded_v1480_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSI-RS-ConfigNonPrecoded-v1530 ::= SEQUENCE struct csi_rs_cfg_non_precoded_v1530_s { // member variables bool p_c_and_cbsr_list_r15_present; p_c_and_cbsr_pair_r15_l p_c_and_cbsr_list_r15; // sequence methods csi_rs_cfg_non_precoded_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // P-C-AndCBSR-r11 ::= SEQUENCE struct p_c_and_cbsr_r11_s { // member variables int8_t p_c_r11; dyn_bitstring codebook_subset_restrict_r11; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CQI-ReportAperiodicProc-r11 ::= SEQUENCE struct cqi_report_aperiodic_proc_r11_s { // member variables cqi_report_mode_aperiodic_e cqi_report_mode_aperiodic_r11; bool trigger01_r11; bool trigger10_r11; bool trigger11_r11; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CQI-ReportAperiodicProc-v1310 ::= SEQUENCE struct cqi_report_aperiodic_proc_v1310_s { // member variables bool trigger001_r13; bool trigger010_r13; bool trigger011_r13; bool trigger100_r13; bool trigger101_r13; bool trigger110_r13; bool trigger111_r13; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CQI-ReportBothProc-r11 ::= SEQUENCE struct cqi_report_both_proc_r11_s { // member variables bool ri_ref_csi_process_id_r11_present; bool pmi_ri_report_r11_present; uint8_t ri_ref_csi_process_id_r11; // sequence methods cqi_report_both_proc_r11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CRI-ReportConfig-r13 ::= CHOICE struct cri_report_cfg_r13_c { struct setup_s_ { // member variables bool cri_cfg_idx2_r13_present; uint16_t cri_cfg_idx_r13; uint16_t cri_cfg_idx2_r13; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods cri_report_cfg_r13_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "CRI-ReportConfig-r13"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "CRI-ReportConfig-r13"); return c; } private: types type_; setup_s_ c; }; // CSI-RS-ConfigEMIMO-Hybrid-r14 ::= CHOICE struct csi_rs_cfg_emimo_hybrid_r14_c { struct setup_s_ { // member variables bool periodicity_offset_idx_r14_present; bool e_mimo_type2_r14_present; uint16_t periodicity_offset_idx_r14; csi_rs_cfg_emimo2_r14_c e_mimo_type2_r14; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods csi_rs_cfg_emimo_hybrid_r14_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "CSI-RS-ConfigEMIMO-Hybrid-r14"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "CSI-RS-ConfigEMIMO-Hybrid-r14"); return c; } private: types type_; setup_s_ c; }; // CSI-RS-ConfigEMIMO-r13 ::= CHOICE struct csi_rs_cfg_emimo_r13_c { struct setup_c_ { struct types { enum options { non_precoded_r13, beamformed_r13, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods setup_c_() : type_(types::nulltype) {} setup_c_(const setup_c_& other); setup_c_& operator=(const setup_c_& other); ~setup_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters csi_rs_cfg_non_precoded_r13_s& non_precoded_r13() { assert_choice_type("nonPrecoded-r13", type_.to_string(), "setup"); return c.get(); } csi_rs_cfg_beamformed_r13_s& beamformed_r13() { assert_choice_type("beamformed-r13", type_.to_string(), "setup"); return c.get(); } const csi_rs_cfg_non_precoded_r13_s& non_precoded_r13() const { assert_choice_type("nonPrecoded-r13", type_.to_string(), "setup"); return c.get(); } const csi_rs_cfg_beamformed_r13_s& beamformed_r13() const { assert_choice_type("beamformed-r13", type_.to_string(), "setup"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; typedef setup_e types; // choice methods csi_rs_cfg_emimo_r13_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_c_& setup() { assert_choice_type("setup", type_.to_string(), "CSI-RS-ConfigEMIMO-r13"); return c; } const setup_c_& setup() const { assert_choice_type("setup", type_.to_string(), "CSI-RS-ConfigEMIMO-r13"); return c; } private: types type_; setup_c_ c; }; // CSI-RS-ConfigEMIMO-v1430 ::= CHOICE struct csi_rs_cfg_emimo_v1430_c { struct setup_c_ { struct types { enum options { non_precoded_v1430, beamformed_v1430, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods setup_c_() : type_(types::nulltype) {} setup_c_(const setup_c_& other); setup_c_& operator=(const setup_c_& other); ~setup_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters csi_rs_cfg_non_precoded_v1430_s& non_precoded_v1430() { assert_choice_type("nonPrecoded-v1430", type_.to_string(), "setup"); return c.get(); } csi_rs_cfg_beamformed_v1430_s& beamformed_v1430() { assert_choice_type("beamformed-v1430", type_.to_string(), "setup"); return c.get(); } const csi_rs_cfg_non_precoded_v1430_s& non_precoded_v1430() const { assert_choice_type("nonPrecoded-v1430", type_.to_string(), "setup"); return c.get(); } const csi_rs_cfg_beamformed_v1430_s& beamformed_v1430() const { assert_choice_type("beamformed-v1430", type_.to_string(), "setup"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; typedef setup_e types; // choice methods csi_rs_cfg_emimo_v1430_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_c_& setup() { assert_choice_type("setup", type_.to_string(), "CSI-RS-ConfigEMIMO-v1430"); return c; } const setup_c_& setup() const { assert_choice_type("setup", type_.to_string(), "CSI-RS-ConfigEMIMO-v1430"); return c; } private: types type_; setup_c_ c; }; // CSI-RS-ConfigEMIMO-v1480 ::= CHOICE struct csi_rs_cfg_emimo_v1480_c { struct setup_c_ { struct types { enum options { non_precoded_v1480, beamformed_v1480, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods setup_c_() : type_(types::nulltype) {} setup_c_(const setup_c_& other); setup_c_& operator=(const setup_c_& other); ~setup_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters csi_rs_cfg_non_precoded_v1480_s& non_precoded_v1480() { assert_choice_type("nonPrecoded-v1480", type_.to_string(), "setup"); return c.get(); } csi_rs_cfg_beamformed_v1430_s& beamformed_v1480() { assert_choice_type("beamformed-v1480", type_.to_string(), "setup"); return c.get(); } const csi_rs_cfg_non_precoded_v1480_s& non_precoded_v1480() const { assert_choice_type("nonPrecoded-v1480", type_.to_string(), "setup"); return c.get(); } const csi_rs_cfg_beamformed_v1430_s& beamformed_v1480() const { assert_choice_type("beamformed-v1480", type_.to_string(), "setup"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; typedef setup_e types; // choice methods csi_rs_cfg_emimo_v1480_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_c_& setup() { assert_choice_type("setup", type_.to_string(), "CSI-RS-ConfigEMIMO-v1480"); return c; } const setup_c_& setup() const { assert_choice_type("setup", type_.to_string(), "CSI-RS-ConfigEMIMO-v1480"); return c; } private: types type_; setup_c_ c; }; // CSI-RS-ConfigEMIMO-v1530 ::= CHOICE struct csi_rs_cfg_emimo_v1530_c { struct setup_c_ { struct types { enum options { non_precoded_v1530, nulltype }; options value; static const uint32_t nof_types = 1, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods setup_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters csi_rs_cfg_non_precoded_v1530_s& non_precoded_v1530() { assert_choice_type("nonPrecoded-v1530", type_.to_string(), "setup"); return c; } const csi_rs_cfg_non_precoded_v1530_s& non_precoded_v1530() const { assert_choice_type("nonPrecoded-v1530", type_.to_string(), "setup"); return c; } private: types type_; csi_rs_cfg_non_precoded_v1530_s c; }; typedef setup_e types; // choice methods csi_rs_cfg_emimo_v1530_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_c_& setup() { assert_choice_type("setup", type_.to_string(), "CSI-RS-ConfigEMIMO-v1530"); return c; } const setup_c_& setup() const { assert_choice_type("setup", type_.to_string(), "CSI-RS-ConfigEMIMO-v1530"); return c; } private: types type_; setup_c_ c; }; // P-C-AndCBSR-Pair-r13a ::= SEQUENCE (SIZE (1..2)) OF P-C-AndCBSR-r11 typedef dyn_array p_c_and_cbsr_pair_r13a_l; // CQI-ReportPeriodicProcExt-r11 ::= SEQUENCE struct cqi_report_periodic_proc_ext_r11_s { struct cqi_format_ind_periodic_r11_c_ { struct wideband_cqi_r11_s_ { struct csi_report_mode_r11_e_ { enum options { submode1, submode2 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods csi_report_mode_r11_e_() {} csi_report_mode_r11_e_(options v) : value(v) {} csi_report_mode_r11_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool csi_report_mode_r11_present; csi_report_mode_r11_e_ csi_report_mode_r11; // sequence methods wideband_cqi_r11_s_(); }; struct subband_cqi_r11_s_ { struct periodicity_factor_r11_e_ { enum options { n2, n4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods periodicity_factor_r11_e_() {} periodicity_factor_r11_e_(options v) : value(v) {} periodicity_factor_r11_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables uint8_t k; periodicity_factor_r11_e_ periodicity_factor_r11; }; struct types { enum options { wideband_cqi_r11, subband_cqi_r11, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods cqi_format_ind_periodic_r11_c_() : type_(types::nulltype) {} cqi_format_ind_periodic_r11_c_(const cqi_format_ind_periodic_r11_c_& other); cqi_format_ind_periodic_r11_c_& operator=(const cqi_format_ind_periodic_r11_c_& other); ~cqi_format_ind_periodic_r11_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters wideband_cqi_r11_s_& wideband_cqi_r11() { assert_choice_type("widebandCQI-r11", type_.to_string(), "cqi-FormatIndicatorPeriodic-r11"); return c.get(); } subband_cqi_r11_s_& subband_cqi_r11() { assert_choice_type("subbandCQI-r11", type_.to_string(), "cqi-FormatIndicatorPeriodic-r11"); return c.get(); } const wideband_cqi_r11_s_& wideband_cqi_r11() const { assert_choice_type("widebandCQI-r11", type_.to_string(), "cqi-FormatIndicatorPeriodic-r11"); return c.get(); } const subband_cqi_r11_s_& subband_cqi_r11() const { assert_choice_type("subbandCQI-r11", type_.to_string(), "cqi-FormatIndicatorPeriodic-r11"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct csi_cfg_idx_r11_c_ { struct setup_s_ { // member variables bool ri_cfg_idx2_r11_present; uint16_t cqi_pmi_cfg_idx2_r11; uint16_t ri_cfg_idx2_r11; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods csi_cfg_idx_r11_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "csi-ConfigIndex-r11"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "csi-ConfigIndex-r11"); return c; } private: types type_; setup_s_ c; }; struct periodicity_factor_wb_r13_e_ { enum options { n2, n4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods periodicity_factor_wb_r13_e_() {} periodicity_factor_wb_r13_e_(options v) : value(v) {} periodicity_factor_wb_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ext; bool ri_cfg_idx_r11_present; bool csi_cfg_idx_r11_present; uint8_t cqi_report_periodic_proc_ext_id_r11; uint16_t cqi_pmi_cfg_idx_r11; cqi_format_ind_periodic_r11_c_ cqi_format_ind_periodic_r11; uint16_t ri_cfg_idx_r11; csi_cfg_idx_r11_c_ csi_cfg_idx_r11; // ... // group 0 bool cri_report_cfg_r13_present; copy_ptr cri_report_cfg_r13; // group 1 bool periodicity_factor_wb_r13_present; periodicity_factor_wb_r13_e_ periodicity_factor_wb_r13; // sequence methods cqi_report_periodic_proc_ext_r11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSI-IM-Config-r11 ::= SEQUENCE struct csi_im_cfg_r11_s { // member variables bool ext; uint8_t csi_im_cfg_id_r11; uint8_t res_cfg_r11; uint8_t sf_cfg_r11; // ... // group 0 bool interference_meas_restrict_r13_present; bool interference_meas_restrict_r13; // sequence methods csi_im_cfg_r11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSI-IM-ConfigExt-r12 ::= SEQUENCE struct csi_im_cfg_ext_r12_s { // member variables bool ext; uint8_t csi_im_cfg_id_v1250; uint8_t res_cfg_r12; uint8_t sf_cfg_r12; // ... // group 0 bool interference_meas_restrict_r13_present; bool csi_im_cfg_id_v1310_present; bool interference_meas_restrict_r13; uint8_t csi_im_cfg_id_v1310; // sequence methods csi_im_cfg_ext_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSI-Process-r11 ::= SEQUENCE struct csi_process_r11_s { struct csi_im_cfg_id_list_r12_c_ { typedef bounded_array setup_l_; typedef setup_e types; // choice methods csi_im_cfg_id_list_r12_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_l_& setup() { assert_choice_type("setup", type_.to_string(), "csi-IM-ConfigIdList-r12"); return c; } const setup_l_& setup() const { assert_choice_type("setup", type_.to_string(), "csi-IM-ConfigIdList-r12"); return c; } private: types type_; setup_l_ c; }; struct cqi_report_aperiodic_proc2_r12_c_ { typedef setup_e types; // choice methods cqi_report_aperiodic_proc2_r12_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters cqi_report_aperiodic_proc_r11_s& setup() { assert_choice_type("setup", type_.to_string(), "cqi-ReportAperiodicProc2-r12"); return c; } const cqi_report_aperiodic_proc_r11_s& setup() const { assert_choice_type("setup", type_.to_string(), "cqi-ReportAperiodicProc2-r12"); return c; } private: types type_; cqi_report_aperiodic_proc_r11_s c; }; struct cqi_report_aperiodic_proc_v1310_c_ { typedef setup_e types; // choice methods cqi_report_aperiodic_proc_v1310_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters cqi_report_aperiodic_proc_v1310_s& setup() { assert_choice_type("setup", type_.to_string(), "cqi-ReportAperiodicProc-v1310"); return c; } const cqi_report_aperiodic_proc_v1310_s& setup() const { assert_choice_type("setup", type_.to_string(), "cqi-ReportAperiodicProc-v1310"); return c; } private: types type_; cqi_report_aperiodic_proc_v1310_s c; }; struct cqi_report_aperiodic_proc2_v1310_c_ { typedef setup_e types; // choice methods cqi_report_aperiodic_proc2_v1310_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters cqi_report_aperiodic_proc_v1310_s& setup() { assert_choice_type("setup", type_.to_string(), "cqi-ReportAperiodicProc2-v1310"); return c; } const cqi_report_aperiodic_proc_v1310_s& setup() const { assert_choice_type("setup", type_.to_string(), "cqi-ReportAperiodicProc2-v1310"); return c; } private: types type_; cqi_report_aperiodic_proc_v1310_s c; }; // member variables bool ext; bool cqi_report_both_proc_r11_present; bool cqi_report_periodic_proc_id_r11_present; bool cqi_report_aperiodic_proc_r11_present; uint8_t csi_process_id_r11; uint8_t csi_rs_cfg_nzp_id_r11; uint8_t csi_im_cfg_id_r11; p_c_and_cbsr_pair_r13a_l p_c_and_cbsr_list_r11; cqi_report_both_proc_r11_s cqi_report_both_proc_r11; uint8_t cqi_report_periodic_proc_id_r11; cqi_report_aperiodic_proc_r11_s cqi_report_aperiodic_proc_r11; // ... // group 0 bool alternative_codebook_enabled_for4_tx_proc_r12_present; bool csi_im_cfg_id_list_r12_present; bool cqi_report_aperiodic_proc2_r12_present; copy_ptr csi_im_cfg_id_list_r12; copy_ptr cqi_report_aperiodic_proc2_r12; // group 1 bool cqi_report_aperiodic_proc_v1310_present; bool cqi_report_aperiodic_proc2_v1310_present; bool e_mimo_type_r13_present; copy_ptr cqi_report_aperiodic_proc_v1310; copy_ptr cqi_report_aperiodic_proc2_v1310; copy_ptr e_mimo_type_r13; // group 2 bool dummy_present; bool e_mimo_hybrid_r14_present; bool advanced_codebook_enabled_r14_present; copy_ptr dummy; copy_ptr e_mimo_hybrid_r14; bool advanced_codebook_enabled_r14; // group 3 bool e_mimo_type_v1480_present; copy_ptr e_mimo_type_v1480; // group 4 bool fe_comp_csi_enabled_v1530_present; bool e_mimo_type_v1530_present; bool fe_comp_csi_enabled_v1530; copy_ptr e_mimo_type_v1530; // sequence methods csi_process_r11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CQI-ReportPeriodicProcExtToAddModList-r11 ::= SEQUENCE (SIZE (1..maxCQI-ProcExt-r11)) OF // CQI-ReportPeriodicProcExt-r11 typedef dyn_array cqi_report_periodic_proc_ext_to_add_mod_list_r11_l; // CQI-ReportPeriodicProcExtToReleaseList-r11 ::= SEQUENCE (SIZE (1..maxCQI-ProcExt-r11)) OF INTEGER typedef bounded_array cqi_report_periodic_proc_ext_to_release_list_r11_l; // CSI-IM-ConfigToAddModList-r11 ::= SEQUENCE (SIZE (1..maxCSI-IM-r11)) OF CSI-IM-Config-r11 typedef dyn_array csi_im_cfg_to_add_mod_list_r11_l; // CSI-IM-ConfigToAddModListExt-r13 ::= SEQUENCE (SIZE (1..maxCSI-IM-v1310)) OF CSI-IM-ConfigExt-r12 typedef dyn_array csi_im_cfg_to_add_mod_list_ext_r13_l; // CSI-IM-ConfigToReleaseList-r11 ::= SEQUENCE (SIZE (1..maxCSI-IM-r11)) OF INTEGER typedef bounded_array csi_im_cfg_to_release_list_r11_l; // CSI-IM-ConfigToReleaseListExt-r13 ::= SEQUENCE (SIZE (1..maxCSI-IM-v1310)) OF INTEGER typedef bounded_array csi_im_cfg_to_release_list_ext_r13_l; // CSI-ProcessToAddModList-r11 ::= SEQUENCE (SIZE (1..maxCSI-Proc-r11)) OF CSI-Process-r11 typedef dyn_array csi_process_to_add_mod_list_r11_l; // CSI-ProcessToReleaseList-r11 ::= SEQUENCE (SIZE (1..maxCSI-Proc-r11)) OF INTEGER typedef bounded_array csi_process_to_release_list_r11_l; // DCI7-CandidatesPerAL-SPDCCH-r15 ::= SEQUENCE (SIZE(1..4)) OF INTEGER typedef bounded_array dci7_candidates_per_al_spdcch_r15_l; // N4SPUCCH-Resource-r15 ::= SEQUENCE struct n4_spucch_res_r15_s { // member variables uint8_t n4start_prb_r15; uint8_t n4nof_prb_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PollByte-r14 ::= ENUMERATED struct poll_byte_r14_e { enum options { kb1, kb2, kb5, kb8, kb10, kb15, kb3500, kb4000, kb4500, kb5000, kb5500, kb6000, kb6500, kb7000, kb7500, kb8000, kb9000, kb10000, kb11000, kb12000, kb13000, kb14000, kb15000, kb16000, kb17000, kb18000, kb19000, kb20000, kb25000, kb30000, kb35000, kb40000 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 32, nof_exts = 0; static const bool has_ext = false; // enumerated methods poll_byte_r14_e() {} poll_byte_r14_e(options v) : value(v) {} poll_byte_r14_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // PollPDU-r15 ::= ENUMERATED struct poll_pdu_r15_e { enum options { p4, p8, p16, p32, p64, p128, p256, p512, p1024, p2048_r15, p4096_r15, p6144_r15, p8192_r15, p12288_r15, p16384_r15, p_infinity }; typedef int16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods poll_pdu_r15_e() {} poll_pdu_r15_e(options v) : value(v) {} poll_pdu_r15_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int16_t to_number() const; }; // SN-FieldLength ::= ENUMERATED struct sn_field_len_e { enum options { size5, size10 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods sn_field_len_e() {} sn_field_len_e(options v) : value(v) {} sn_field_len_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // SN-FieldLength-r15 ::= ENUMERATED struct sn_field_len_r15_e { enum options { size5, size10, size16_r15 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods sn_field_len_r15_e() {} sn_field_len_r15_e(options v) : value(v) {} sn_field_len_r15_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // T-PollRetransmit ::= ENUMERATED struct t_poll_retx_e { enum options { ms5, ms10, ms15, ms20, ms25, ms30, ms35, ms40, ms45, ms50, ms55, ms60, ms65, ms70, ms75, ms80, ms85, ms90, ms95, ms100, ms105, ms110, ms115, ms120, ms125, ms130, ms135, ms140, ms145, ms150, ms155, ms160, ms165, ms170, ms175, ms180, ms185, ms190, ms195, ms200, ms205, ms210, ms215, ms220, ms225, ms230, ms235, ms240, ms245, ms250, ms300, ms350, ms400, ms450, ms500, ms800_v1310, ms1000_v1310, ms2000_v1310, ms4000_v1310, spare5, spare4, spare3, spare2, spare1 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 64, nof_exts = 0; static const bool has_ext = false; // enumerated methods t_poll_retx_e() {} t_poll_retx_e(options v) : value(v) {} t_poll_retx_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // T-Reordering ::= ENUMERATED struct t_reordering_e { enum options { ms0, ms5, ms10, ms15, ms20, ms25, ms30, ms35, ms40, ms45, ms50, ms55, ms60, ms65, ms70, ms75, ms80, ms85, ms90, ms95, ms100, ms110, ms120, ms130, ms140, ms150, ms160, ms170, ms180, ms190, ms200, ms1600_v1310 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 32, nof_exts = 0; static const bool has_ext = false; // enumerated methods t_reordering_e() {} t_reordering_e(options v) : value(v) {} t_reordering_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // T-StatusProhibit ::= ENUMERATED struct t_status_prohibit_e { enum options { ms0, ms5, ms10, ms15, ms20, ms25, ms30, ms35, ms40, ms45, ms50, ms55, ms60, ms65, ms70, ms75, ms80, ms85, ms90, ms95, ms100, ms105, ms110, ms115, ms120, ms125, ms130, ms135, ms140, ms145, ms150, ms155, ms160, ms165, ms170, ms175, ms180, ms185, ms190, ms195, ms200, ms205, ms210, ms215, ms220, ms225, ms230, ms235, ms240, ms245, ms250, ms300, ms350, ms400, ms450, ms500, ms800_v1310, ms1000_v1310, ms1200_v1310, ms1600_v1310, ms2000_v1310, ms2400_v1310, spare2, spare1 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 64, nof_exts = 0; static const bool has_ext = false; // enumerated methods t_status_prohibit_e() {} t_status_prohibit_e(options v) : value(v) {} t_status_prohibit_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // ZeroTxPowerCSI-RS-r12 ::= SEQUENCE struct zero_tx_pwr_csi_rs_r12_s { // member variables fixed_bitstring<16> zero_tx_pwr_res_cfg_list_r12; uint8_t zero_tx_pwr_sf_cfg_r12; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CQI-ReportAperiodic-r10 ::= CHOICE struct cqi_report_aperiodic_r10_c { struct setup_s_ { struct aperiodic_csi_trigger_r10_s_ { // member variables fixed_bitstring<8> trigger1_r10; fixed_bitstring<8> trigger2_r10; }; // member variables bool aperiodic_csi_trigger_r10_present; cqi_report_mode_aperiodic_e cqi_report_mode_aperiodic_r10; aperiodic_csi_trigger_r10_s_ aperiodic_csi_trigger_r10; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods cqi_report_aperiodic_r10_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "CQI-ReportAperiodic-r10"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "CQI-ReportAperiodic-r10"); return c; } private: types type_; setup_s_ c; }; // CQI-ReportAperiodic-v1250 ::= CHOICE struct cqi_report_aperiodic_v1250_c { struct setup_s_ { struct aperiodic_csi_trigger_v1250_s_ { struct trigger_sf_set_ind_r12_e_ { enum options { s1, s2 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods trigger_sf_set_ind_r12_e_() {} trigger_sf_set_ind_r12_e_(options v) : value(v) {} trigger_sf_set_ind_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables trigger_sf_set_ind_r12_e_ trigger_sf_set_ind_r12; fixed_bitstring<8> trigger1_sf_set_ind_r12; fixed_bitstring<8> trigger2_sf_set_ind_r12; }; // member variables aperiodic_csi_trigger_v1250_s_ aperiodic_csi_trigger_v1250; }; typedef setup_e types; // choice methods cqi_report_aperiodic_v1250_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "CQI-ReportAperiodic-v1250"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "CQI-ReportAperiodic-v1250"); return c; } private: types type_; setup_s_ c; }; // CQI-ReportAperiodic-v1310 ::= CHOICE struct cqi_report_aperiodic_v1310_c { struct setup_s_ { struct aperiodic_csi_trigger_v1310_s_ { // member variables fixed_bitstring<32> trigger1_r13; fixed_bitstring<32> trigger2_r13; fixed_bitstring<32> trigger3_r13; fixed_bitstring<32> trigger4_r13; fixed_bitstring<32> trigger5_r13; fixed_bitstring<32> trigger6_r13; }; struct aperiodic_csi_trigger2_r13_c_ { struct setup_s_ { // member variables fixed_bitstring<32> trigger1_sf_set_ind_r13; fixed_bitstring<32> trigger2_sf_set_ind_r13; fixed_bitstring<32> trigger3_sf_set_ind_r13; fixed_bitstring<32> trigger4_sf_set_ind_r13; fixed_bitstring<32> trigger5_sf_set_ind_r13; fixed_bitstring<32> trigger6_sf_set_ind_r13; }; typedef setup_e types; // choice methods aperiodic_csi_trigger2_r13_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "aperiodicCSI-Trigger2-r13"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "aperiodicCSI-Trigger2-r13"); return c; } private: types type_; setup_s_ c; }; // member variables bool aperiodic_csi_trigger_v1310_present; bool aperiodic_csi_trigger2_r13_present; aperiodic_csi_trigger_v1310_s_ aperiodic_csi_trigger_v1310; aperiodic_csi_trigger2_r13_c_ aperiodic_csi_trigger2_r13; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods cqi_report_aperiodic_v1310_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "CQI-ReportAperiodic-v1310"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "CQI-ReportAperiodic-v1310"); return c; } private: types type_; setup_s_ c; }; // CQI-ReportAperiodicHybrid-r14 ::= SEQUENCE struct cqi_report_aperiodic_hybrid_r14_s { struct triggers_r14_c_ { struct one_bit_r14_s_ { // member variables fixed_bitstring<8> trigger1_ind_r14; }; struct two_bit_r14_s_ { // member variables fixed_bitstring<8> trigger01_ind_r14; fixed_bitstring<8> trigger10_ind_r14; fixed_bitstring<8> trigger11_ind_r14; }; struct three_bit_r14_s_ { // member variables fixed_bitstring<32> trigger001_ind_r14; fixed_bitstring<32> trigger010_ind_r14; fixed_bitstring<32> trigger011_ind_r14; fixed_bitstring<32> trigger100_ind_r14; fixed_bitstring<32> trigger101_ind_r14; fixed_bitstring<32> trigger110_ind_r14; fixed_bitstring<32> trigger111_ind_r14; }; struct types { enum options { one_bit_r14, two_bit_r14, three_bit_r14, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods triggers_r14_c_() : type_(types::nulltype) {} triggers_r14_c_(const triggers_r14_c_& other); triggers_r14_c_& operator=(const triggers_r14_c_& other); ~triggers_r14_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters one_bit_r14_s_& one_bit_r14() { assert_choice_type("oneBit-r14", type_.to_string(), "triggers-r14"); return c.get(); } two_bit_r14_s_& two_bit_r14() { assert_choice_type("twoBit-r14", type_.to_string(), "triggers-r14"); return c.get(); } three_bit_r14_s_& three_bit_r14() { assert_choice_type("threeBit-r14", type_.to_string(), "triggers-r14"); return c.get(); } const one_bit_r14_s_& one_bit_r14() const { assert_choice_type("oneBit-r14", type_.to_string(), "triggers-r14"); return c.get(); } const two_bit_r14_s_& two_bit_r14() const { assert_choice_type("twoBit-r14", type_.to_string(), "triggers-r14"); return c.get(); } const three_bit_r14_s_& three_bit_r14() const { assert_choice_type("threeBit-r14", type_.to_string(), "triggers-r14"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables bool triggers_r14_present; triggers_r14_c_ triggers_r14; // sequence methods cqi_report_aperiodic_hybrid_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CQI-ReportBoth-r11 ::= SEQUENCE struct cqi_report_both_r11_s { // member variables bool csi_im_cfg_to_release_list_r11_present; bool csi_im_cfg_to_add_mod_list_r11_present; bool csi_process_to_release_list_r11_present; bool csi_process_to_add_mod_list_r11_present; csi_im_cfg_to_release_list_r11_l csi_im_cfg_to_release_list_r11; csi_im_cfg_to_add_mod_list_r11_l csi_im_cfg_to_add_mod_list_r11; csi_process_to_release_list_r11_l csi_process_to_release_list_r11; csi_process_to_add_mod_list_r11_l csi_process_to_add_mod_list_r11; // sequence methods cqi_report_both_r11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CQI-ReportBoth-v1250 ::= SEQUENCE struct cqi_report_both_v1250_s { // member variables bool csi_im_cfg_to_release_list_ext_r12_present; bool csi_im_cfg_to_add_mod_list_ext_r12_present; uint8_t csi_im_cfg_to_release_list_ext_r12; csi_im_cfg_ext_r12_s csi_im_cfg_to_add_mod_list_ext_r12; // sequence methods cqi_report_both_v1250_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CQI-ReportBoth-v1310 ::= SEQUENCE struct cqi_report_both_v1310_s { // member variables bool csi_im_cfg_to_release_list_ext_r13_present; bool csi_im_cfg_to_add_mod_list_ext_r13_present; csi_im_cfg_to_release_list_ext_r13_l csi_im_cfg_to_release_list_ext_r13; csi_im_cfg_to_add_mod_list_ext_r13_l csi_im_cfg_to_add_mod_list_ext_r13; // sequence methods cqi_report_both_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CQI-ReportPeriodic-r10 ::= CHOICE struct cqi_report_periodic_r10_c { struct setup_s_ { struct cqi_format_ind_periodic_r10_c_ { struct wideband_cqi_r10_s_ { struct csi_report_mode_r10_e_ { enum options { submode1, submode2 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods csi_report_mode_r10_e_() {} csi_report_mode_r10_e_(options v) : value(v) {} csi_report_mode_r10_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool csi_report_mode_r10_present; csi_report_mode_r10_e_ csi_report_mode_r10; // sequence methods wideband_cqi_r10_s_(); }; struct subband_cqi_r10_s_ { struct periodicity_factor_r10_e_ { enum options { n2, n4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods periodicity_factor_r10_e_() {} periodicity_factor_r10_e_(options v) : value(v) {} periodicity_factor_r10_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables uint8_t k; periodicity_factor_r10_e_ periodicity_factor_r10; }; struct types { enum options { wideband_cqi_r10, subband_cqi_r10, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods cqi_format_ind_periodic_r10_c_() : type_(types::nulltype) {} cqi_format_ind_periodic_r10_c_(const cqi_format_ind_periodic_r10_c_& other); cqi_format_ind_periodic_r10_c_& operator=(const cqi_format_ind_periodic_r10_c_& other); ~cqi_format_ind_periodic_r10_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters wideband_cqi_r10_s_& wideband_cqi_r10() { assert_choice_type("widebandCQI-r10", type_.to_string(), "cqi-FormatIndicatorPeriodic-r10"); return c.get(); } subband_cqi_r10_s_& subband_cqi_r10() { assert_choice_type("subbandCQI-r10", type_.to_string(), "cqi-FormatIndicatorPeriodic-r10"); return c.get(); } const wideband_cqi_r10_s_& wideband_cqi_r10() const { assert_choice_type("widebandCQI-r10", type_.to_string(), "cqi-FormatIndicatorPeriodic-r10"); return c.get(); } const subband_cqi_r10_s_& subband_cqi_r10() const { assert_choice_type("subbandCQI-r10", type_.to_string(), "cqi-FormatIndicatorPeriodic-r10"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct csi_cfg_idx_r10_c_ { struct setup_s_ { // member variables bool ri_cfg_idx2_r10_present; uint16_t cqi_pmi_cfg_idx2_r10; uint16_t ri_cfg_idx2_r10; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods csi_cfg_idx_r10_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "csi-ConfigIndex-r10"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "csi-ConfigIndex-r10"); return c; } private: types type_; setup_s_ c; }; // member variables bool cqi_pucch_res_idx_p1_r10_present; bool ri_cfg_idx_present; bool cqi_mask_r9_present; bool csi_cfg_idx_r10_present; uint16_t cqi_pucch_res_idx_r10; uint16_t cqi_pucch_res_idx_p1_r10; uint16_t cqi_pmi_cfg_idx; cqi_format_ind_periodic_r10_c_ cqi_format_ind_periodic_r10; uint16_t ri_cfg_idx; bool simul_ack_nack_and_cqi; csi_cfg_idx_r10_c_ csi_cfg_idx_r10; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods cqi_report_periodic_r10_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "CQI-ReportPeriodic-r10"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "CQI-ReportPeriodic-r10"); return c; } private: types type_; setup_s_ c; }; // CQI-ReportPeriodic-v1130 ::= SEQUENCE struct cqi_report_periodic_v1130_s { // member variables bool simul_ack_nack_and_cqi_format3_r11_present; bool cqi_report_periodic_proc_ext_to_release_list_r11_present; bool cqi_report_periodic_proc_ext_to_add_mod_list_r11_present; cqi_report_periodic_proc_ext_to_release_list_r11_l cqi_report_periodic_proc_ext_to_release_list_r11; cqi_report_periodic_proc_ext_to_add_mod_list_r11_l cqi_report_periodic_proc_ext_to_add_mod_list_r11; // sequence methods cqi_report_periodic_v1130_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CQI-ReportPeriodic-v1310 ::= SEQUENCE struct cqi_report_periodic_v1310_s { // member variables bool cri_report_cfg_r13_present; bool simul_ack_nack_and_cqi_format4_format5_r13_present; cri_report_cfg_r13_c cri_report_cfg_r13; // sequence methods cqi_report_periodic_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CQI-ReportPeriodic-v1320 ::= SEQUENCE struct cqi_report_periodic_v1320_s { struct periodicity_factor_wb_r13_e_ { enum options { n2, n4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods periodicity_factor_wb_r13_e_() {} periodicity_factor_wb_r13_e_(options v) : value(v) {} periodicity_factor_wb_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool periodicity_factor_wb_r13_present; periodicity_factor_wb_r13_e_ periodicity_factor_wb_r13; // sequence methods cqi_report_periodic_v1320_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DL-AM-RLC-r15 ::= SEQUENCE struct dl_am_rlc_r15_s { // member variables t_reordering_e t_reordering_r15; t_status_prohibit_e t_status_prohibit_r15; bool extended_rlc_li_field_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DL-UM-RLC-r15 ::= SEQUENCE struct dl_um_rlc_r15_s { // member variables sn_field_len_r15_e sn_field_len_r15; t_reordering_e t_reordering_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasSubframePattern-r10 ::= CHOICE struct meas_sf_pattern_r10_c { struct sf_pattern_tdd_r10_c_ { struct types { enum options { sf_cfg1_minus5_r10, sf_cfg0_r10, sf_cfg6_r10, /*...*/ nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = true; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods sf_pattern_tdd_r10_c_() : type_(types::nulltype) {} sf_pattern_tdd_r10_c_(const sf_pattern_tdd_r10_c_& other); sf_pattern_tdd_r10_c_& operator=(const sf_pattern_tdd_r10_c_& other); ~sf_pattern_tdd_r10_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<20>& sf_cfg1_minus5_r10() { assert_choice_type("subframeConfig1-5-r10", type_.to_string(), "subframePatternTDD-r10"); return c.get >(); } fixed_bitstring<70>& sf_cfg0_r10() { assert_choice_type("subframeConfig0-r10", type_.to_string(), "subframePatternTDD-r10"); return c.get >(); } fixed_bitstring<60>& sf_cfg6_r10() { assert_choice_type("subframeConfig6-r10", type_.to_string(), "subframePatternTDD-r10"); return c.get >(); } const fixed_bitstring<20>& sf_cfg1_minus5_r10() const { assert_choice_type("subframeConfig1-5-r10", type_.to_string(), "subframePatternTDD-r10"); return c.get >(); } const fixed_bitstring<70>& sf_cfg0_r10() const { assert_choice_type("subframeConfig0-r10", type_.to_string(), "subframePatternTDD-r10"); return c.get >(); } const fixed_bitstring<60>& sf_cfg6_r10() const { assert_choice_type("subframeConfig6-r10", type_.to_string(), "subframePatternTDD-r10"); return c.get >(); } private: types type_; choice_buffer_t)> c; void destroy_(); }; struct types { enum options { sf_pattern_fdd_r10, sf_pattern_tdd_r10, /*...*/ nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = true; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods meas_sf_pattern_r10_c() : type_(types::nulltype) {} meas_sf_pattern_r10_c(const meas_sf_pattern_r10_c& other); meas_sf_pattern_r10_c& operator=(const meas_sf_pattern_r10_c& other); ~meas_sf_pattern_r10_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<40>& sf_pattern_fdd_r10() { assert_choice_type("subframePatternFDD-r10", type_.to_string(), "MeasSubframePattern-r10"); return c.get >(); } sf_pattern_tdd_r10_c_& sf_pattern_tdd_r10() { assert_choice_type("subframePatternTDD-r10", type_.to_string(), "MeasSubframePattern-r10"); return c.get(); } const fixed_bitstring<40>& sf_pattern_fdd_r10() const { assert_choice_type("subframePatternFDD-r10", type_.to_string(), "MeasSubframePattern-r10"); return c.get >(); } const sf_pattern_tdd_r10_c_& sf_pattern_tdd_r10() const { assert_choice_type("subframePatternTDD-r10", type_.to_string(), "MeasSubframePattern-r10"); return c.get(); } private: types type_; choice_buffer_t), sizeof(sf_pattern_tdd_r10_c_))> c; void destroy_(); }; // PollByte ::= ENUMERATED struct poll_byte_e { enum options { kb25, kb50, kb75, kb100, kb125, kb250, kb375, kb500, kb750, kb1000, kb1250, kb1500, kb2000, kb3000, kbinfinity, spare1 }; typedef int16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods poll_byte_e() {} poll_byte_e(options v) : value(v) {} poll_byte_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int16_t to_number() const; }; // PollPDU ::= ENUMERATED struct poll_pdu_e { enum options { p4, p8, p16, p32, p64, p128, p256, p_infinity }; typedef int16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods poll_pdu_e() {} poll_pdu_e(options v) : value(v) {} poll_pdu_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int16_t to_number() const; }; // SPDCCH-Elements-r15 ::= CHOICE struct spdcch_elems_r15_c { struct setup_s_ { struct spdcch_set_ref_sig_r15_e_ { enum options { crs, dmrs }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods spdcch_set_ref_sig_r15_e_() {} spdcch_set_ref_sig_r15_e_(options v) : value(v) {} spdcch_set_ref_sig_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct tx_type_r15_e_ { enum options { localised, distributed }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods tx_type_r15_e_() {} tx_type_r15_e_(options v) : value(v) {} tx_type_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; typedef bounded_array dci7_candidates_per_al_pdcch_r15_l_; typedef dyn_array dci7_candidate_sets_per_al_spdcch_r15_l_; struct res_block_assign_r15_s_ { // member variables uint8_t num_rb_in_freq_domain_r15; fixed_bitstring<98> res_block_assign_r15; }; typedef bounded_array al_start_point_spdcch_r15_l_; struct sf_type_r15_e_ { enum options { mbsfn, nonmbsfn, all }; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods sf_type_r15_e_() {} sf_type_r15_e_(options v) : value(v) {} sf_type_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct rate_matching_mode_r15_e_ { enum options { m1, m2, m3, m4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods rate_matching_mode_r15_e_() {} rate_matching_mode_r15_e_(options v) : value(v) {} rate_matching_mode_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ext; bool spdcch_set_cfg_id_r15_present; bool spdcch_set_ref_sig_r15_present; bool tx_type_r15_present; bool spdcch_no_of_symbols_r15_present; bool dmrs_scrambling_seq_int_r15_present; bool dci7_candidates_per_al_pdcch_r15_present; bool dci7_candidate_sets_per_al_spdcch_r15_present; bool res_block_assign_r15_present; bool subslot_applicability_r15_present; bool al_start_point_spdcch_r15_present; bool sf_type_r15_present; bool rate_matching_mode_r15_present; uint8_t spdcch_set_cfg_id_r15; spdcch_set_ref_sig_r15_e_ spdcch_set_ref_sig_r15; tx_type_r15_e_ tx_type_r15; uint8_t spdcch_no_of_symbols_r15; uint16_t dmrs_scrambling_seq_int_r15; dci7_candidates_per_al_pdcch_r15_l_ dci7_candidates_per_al_pdcch_r15; dci7_candidate_sets_per_al_spdcch_r15_l_ dci7_candidate_sets_per_al_spdcch_r15; res_block_assign_r15_s_ res_block_assign_r15; fixed_bitstring<5> subslot_applicability_r15; al_start_point_spdcch_r15_l_ al_start_point_spdcch_r15; sf_type_r15_e_ sf_type_r15; rate_matching_mode_r15_e_ rate_matching_mode_r15; // ... // sequence methods setup_s_(); }; typedef setup_e types; // choice methods spdcch_elems_r15_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "SPDCCH-Elements-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "SPDCCH-Elements-r15"); return c; } private: types type_; setup_s_ c; }; // SPUCCH-Elements-r15 ::= CHOICE struct spucch_elems_r15_c { struct setup_s_ { typedef bounded_array n1_subslot_spucch_an_list_r15_l_; typedef dyn_array n4_spucch_slot_res_r15_l_; typedef dyn_array n4_spucch_subslot_res_r15_l_; // member variables bool n1_subslot_spucch_an_list_r15_present; bool n1_slot_spucch_fh_an_list_r15_present; bool n1_slot_spucch_no_fh_an_list_r15_present; bool n3_spucch_an_list_r15_present; bool n4_spucch_slot_res_r15_present; bool n4_spucch_subslot_res_r15_present; bool n4max_coderate_slot_pucch_r15_present; bool n4max_coderate_subslot_pucch_r15_present; bool n4max_coderate_multi_res_slot_pucch_r15_present; bool n4max_coderate_multi_res_subslot_pucch_r15_present; n1_subslot_spucch_an_list_r15_l_ n1_subslot_spucch_an_list_r15; uint16_t n1_slot_spucch_fh_an_list_r15; uint16_t n1_slot_spucch_no_fh_an_list_r15; uint16_t n3_spucch_an_list_r15; n4_spucch_slot_res_r15_l_ n4_spucch_slot_res_r15; n4_spucch_subslot_res_r15_l_ n4_spucch_subslot_res_r15; uint8_t n4max_coderate_slot_pucch_r15; uint8_t n4max_coderate_subslot_pucch_r15; uint8_t n4max_coderate_multi_res_slot_pucch_r15; uint8_t n4max_coderate_multi_res_subslot_pucch_r15; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods spucch_elems_r15_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "SPUCCH-Elements-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "SPUCCH-Elements-r15"); return c; } private: types type_; setup_s_ c; }; // TPC-Index ::= CHOICE struct tpc_idx_c { struct types { enum options { idx_of_format3, idx_of_format3_a, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods tpc_idx_c() : type_(types::nulltype) {} tpc_idx_c(const tpc_idx_c& other); tpc_idx_c& operator=(const tpc_idx_c& other); ~tpc_idx_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint8_t& idx_of_format3() { assert_choice_type("indexOfFormat3", type_.to_string(), "TPC-Index"); return c.get(); } uint8_t& idx_of_format3_a() { assert_choice_type("indexOfFormat3A", type_.to_string(), "TPC-Index"); return c.get(); } const uint8_t& idx_of_format3() const { assert_choice_type("indexOfFormat3", type_.to_string(), "TPC-Index"); return c.get(); } const uint8_t& idx_of_format3_a() const { assert_choice_type("indexOfFormat3A", type_.to_string(), "TPC-Index"); return c.get(); } private: types type_; choice_buffer_t<8> c; void destroy_(); }; // UL-AM-RLC-r15 ::= SEQUENCE struct ul_am_rlc_r15_s { struct max_retx_thres_r15_e_ { enum options { t1, t2, t3, t4, t6, t8, t16, t32 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods max_retx_thres_r15_e_() {} max_retx_thres_r15_e_(options v) : value(v) {} max_retx_thres_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables t_poll_retx_e t_poll_retx_r15; poll_pdu_r15_e poll_pdu_r15; poll_byte_r14_e poll_byte_r15; max_retx_thres_r15_e_ max_retx_thres_r15; bool extended_rlc_li_field_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UL-UM-RLC ::= SEQUENCE struct ul_um_rlc_s { // member variables sn_field_len_e sn_field_len; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // ZeroTxPowerCSI-RS-Conf-r12 ::= CHOICE struct zero_tx_pwr_csi_rs_conf_r12_c { typedef setup_e types; // choice methods zero_tx_pwr_csi_rs_conf_r12_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters zero_tx_pwr_csi_rs_r12_s& setup() { assert_choice_type("setup", type_.to_string(), "ZeroTxPowerCSI-RS-Conf-r12"); return c; } const zero_tx_pwr_csi_rs_r12_s& setup() const { assert_choice_type("setup", type_.to_string(), "ZeroTxPowerCSI-RS-Conf-r12"); return c; } private: types type_; zero_tx_pwr_csi_rs_r12_s c; }; // CQI-ReportConfig-r10 ::= SEQUENCE struct cqi_report_cfg_r10_s { struct csi_sf_pattern_cfg_r10_c_ { struct setup_s_ { // member variables meas_sf_pattern_r10_c csi_meas_sf_set1_r10; meas_sf_pattern_r10_c csi_meas_sf_set2_r10; }; typedef setup_e types; // choice methods csi_sf_pattern_cfg_r10_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "csi-SubframePatternConfig-r10"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "csi-SubframePatternConfig-r10"); return c; } private: types type_; setup_s_ c; }; // member variables bool cqi_report_aperiodic_r10_present; bool cqi_report_periodic_r10_present; bool pmi_ri_report_r9_present; bool csi_sf_pattern_cfg_r10_present; cqi_report_aperiodic_r10_c cqi_report_aperiodic_r10; int8_t nom_pdsch_rs_epre_offset; cqi_report_periodic_r10_c cqi_report_periodic_r10; csi_sf_pattern_cfg_r10_c_ csi_sf_pattern_cfg_r10; // sequence methods cqi_report_cfg_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CQI-ReportConfig-v1130 ::= SEQUENCE struct cqi_report_cfg_v1130_s { // member variables cqi_report_periodic_v1130_s cqi_report_periodic_v1130; cqi_report_both_r11_s cqi_report_both_r11; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CQI-ReportConfig-v1250 ::= SEQUENCE struct cqi_report_cfg_v1250_s { struct csi_sf_pattern_cfg_r12_c_ { struct setup_s_ { // member variables fixed_bitstring<10> csi_meas_sf_sets_r12; }; typedef setup_e types; // choice methods csi_sf_pattern_cfg_r12_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "csi-SubframePatternConfig-r12"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "csi-SubframePatternConfig-r12"); return c; } private: types type_; setup_s_ c; }; struct alt_cqi_table_r12_e_ { enum options { all_sfs, csi_sf_set1, csi_sf_set2, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods alt_cqi_table_r12_e_() {} alt_cqi_table_r12_e_(options v) : value(v) {} alt_cqi_table_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool csi_sf_pattern_cfg_r12_present; bool cqi_report_both_v1250_present; bool cqi_report_aperiodic_v1250_present; bool alt_cqi_table_r12_present; csi_sf_pattern_cfg_r12_c_ csi_sf_pattern_cfg_r12; cqi_report_both_v1250_s cqi_report_both_v1250; cqi_report_aperiodic_v1250_c cqi_report_aperiodic_v1250; alt_cqi_table_r12_e_ alt_cqi_table_r12; // sequence methods cqi_report_cfg_v1250_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CQI-ReportConfig-v1310 ::= SEQUENCE struct cqi_report_cfg_v1310_s { // member variables bool cqi_report_both_v1310_present; bool cqi_report_aperiodic_v1310_present; bool cqi_report_periodic_v1310_present; cqi_report_both_v1310_s cqi_report_both_v1310; cqi_report_aperiodic_v1310_c cqi_report_aperiodic_v1310; cqi_report_periodic_v1310_s cqi_report_periodic_v1310; // sequence methods cqi_report_cfg_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CQI-ReportConfig-v1320 ::= SEQUENCE struct cqi_report_cfg_v1320_s { // member variables bool cqi_report_periodic_v1320_present; cqi_report_periodic_v1320_s cqi_report_periodic_v1320; // sequence methods cqi_report_cfg_v1320_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CQI-ReportConfig-v1430 ::= SEQUENCE struct cqi_report_cfg_v1430_s { // member variables bool cqi_report_aperiodic_hybrid_r14_present; cqi_report_aperiodic_hybrid_r14_s cqi_report_aperiodic_hybrid_r14; // sequence methods cqi_report_cfg_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSI-RS-Config-r10 ::= SEQUENCE struct csi_rs_cfg_r10_s { struct csi_rs_r10_c_ { struct setup_s_ { struct ant_ports_count_r10_e_ { enum options { an1, an2, an4, an8 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods ant_ports_count_r10_e_() {} ant_ports_count_r10_e_(options v) : value(v) {} ant_ports_count_r10_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables ant_ports_count_r10_e_ ant_ports_count_r10; uint8_t res_cfg_r10; uint8_t sf_cfg_r10; int8_t p_c_r10; }; typedef setup_e types; // choice methods csi_rs_r10_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "csi-RS-r10"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "csi-RS-r10"); return c; } private: types type_; setup_s_ c; }; // member variables bool csi_rs_r10_present; bool zero_tx_pwr_csi_rs_r10_present; csi_rs_r10_c_ csi_rs_r10; zero_tx_pwr_csi_rs_conf_r12_c zero_tx_pwr_csi_rs_r10; // sequence methods csi_rs_cfg_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSI-RS-Config-v1250 ::= SEQUENCE struct csi_rs_cfg_v1250_s { struct ds_zero_tx_pwr_csi_rs_r12_c_ { struct setup_s_ { typedef dyn_array zero_tx_pwr_csi_rs_list_r12_l_; // member variables zero_tx_pwr_csi_rs_list_r12_l_ zero_tx_pwr_csi_rs_list_r12; }; typedef setup_e types; // choice methods ds_zero_tx_pwr_csi_rs_r12_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "ds-ZeroTxPowerCSI-RS-r12"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "ds-ZeroTxPowerCSI-RS-r12"); return c; } private: types type_; setup_s_ c; }; // member variables bool zero_tx_pwr_csi_rs2_r12_present; bool ds_zero_tx_pwr_csi_rs_r12_present; zero_tx_pwr_csi_rs_conf_r12_c zero_tx_pwr_csi_rs2_r12; ds_zero_tx_pwr_csi_rs_r12_c_ ds_zero_tx_pwr_csi_rs_r12; // sequence methods csi_rs_cfg_v1250_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSI-RS-Config-v1310 ::= SEQUENCE struct csi_rs_cfg_v1310_s { // member variables bool e_mimo_type_r13_present; csi_rs_cfg_emimo_r13_c e_mimo_type_r13; // sequence methods csi_rs_cfg_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSI-RS-Config-v1430 ::= SEQUENCE struct csi_rs_cfg_v1430_s { // member variables bool dummy_present; bool e_mimo_hybrid_r14_present; bool advanced_codebook_enabled_r14_present; csi_rs_cfg_emimo_v1430_c dummy; csi_rs_cfg_emimo_hybrid_r14_c e_mimo_hybrid_r14; bool advanced_codebook_enabled_r14; // sequence methods csi_rs_cfg_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSI-RS-ConfigZP-r11 ::= SEQUENCE struct csi_rs_cfg_zp_r11_s { // member variables bool ext; uint8_t csi_rs_cfg_zp_id_r11; fixed_bitstring<16> res_cfg_list_r11; uint8_t sf_cfg_r11; // ... // sequence methods csi_rs_cfg_zp_r11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DL-AM-RLC ::= SEQUENCE struct dl_am_rlc_s { // member variables t_reordering_e t_reordering; t_status_prohibit_e t_status_prohibit; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DL-UM-RLC ::= SEQUENCE struct dl_um_rlc_s { // member variables sn_field_len_e sn_field_len; t_reordering_e t_reordering; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DeltaTxD-OffsetListSPUCCH-r15 ::= SEQUENCE struct delta_tx_d_offset_list_spucch_r15_s { struct delta_tx_d_offset_spucch_format1_r15_e_ { enum options { db0, db_minus2 }; typedef int8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_tx_d_offset_spucch_format1_r15_e_() {} delta_tx_d_offset_spucch_format1_r15_e_(options v) : value(v) {} delta_tx_d_offset_spucch_format1_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; struct delta_tx_d_offset_spucch_format1a_r15_e_ { enum options { db0, db_minus2 }; typedef int8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_tx_d_offset_spucch_format1a_r15_e_() {} delta_tx_d_offset_spucch_format1a_r15_e_(options v) : value(v) {} delta_tx_d_offset_spucch_format1a_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; struct delta_tx_d_offset_spucch_format1b_r15_e_ { enum options { db0, db_minus2 }; typedef int8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_tx_d_offset_spucch_format1b_r15_e_() {} delta_tx_d_offset_spucch_format1b_r15_e_(options v) : value(v) {} delta_tx_d_offset_spucch_format1b_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; struct delta_tx_d_offset_spucch_format3_r15_e_ { enum options { db0, db_minus2 }; typedef int8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_tx_d_offset_spucch_format3_r15_e_() {} delta_tx_d_offset_spucch_format3_r15_e_(options v) : value(v) {} delta_tx_d_offset_spucch_format3_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; // member variables bool ext; delta_tx_d_offset_spucch_format1_r15_e_ delta_tx_d_offset_spucch_format1_r15; delta_tx_d_offset_spucch_format1a_r15_e_ delta_tx_d_offset_spucch_format1a_r15; delta_tx_d_offset_spucch_format1b_r15_e_ delta_tx_d_offset_spucch_format1b_r15; delta_tx_d_offset_spucch_format3_r15_e_ delta_tx_d_offset_spucch_format3_r15; // ... // sequence methods delta_tx_d_offset_list_spucch_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // EPDCCH-SetConfig-r11 ::= SEQUENCE struct epdcch_set_cfg_r11_s { struct tx_type_r11_e_ { enum options { localised, distributed }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods tx_type_r11_e_() {} tx_type_r11_e_(options v) : value(v) {} tx_type_r11_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct res_block_assign_r11_s_ { struct num_prb_pairs_r11_e_ { enum options { n2, n4, n8 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods num_prb_pairs_r11_e_() {} num_prb_pairs_r11_e_(options v) : value(v) {} num_prb_pairs_r11_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables num_prb_pairs_r11_e_ num_prb_pairs_r11; dyn_bitstring res_block_assign_r11; }; struct csi_rs_cfg_zp_id2_r12_c_ { typedef setup_e types; // choice methods csi_rs_cfg_zp_id2_r12_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint8_t& setup() { assert_choice_type("setup", type_.to_string(), "csi-RS-ConfigZPId2-r12"); return c; } const uint8_t& setup() const { assert_choice_type("setup", type_.to_string(), "csi-RS-ConfigZPId2-r12"); return c; } private: types type_; uint8_t c; }; struct num_prb_pairs_v1310_c_ { typedef setup_e types; // choice methods num_prb_pairs_v1310_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; private: types type_; }; struct mpdcch_cfg_r13_c_ { struct setup_s_ { struct csi_num_repeat_ce_r13_e_ { enum options { sf1, sf2, sf4, sf8, sf16, sf32 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods csi_num_repeat_ce_r13_e_() {} csi_num_repeat_ce_r13_e_(options v) : value(v) {} csi_num_repeat_ce_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct mpdcch_pdsch_hop_cfg_r13_e_ { enum options { on, off }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods mpdcch_pdsch_hop_cfg_r13_e_() {} mpdcch_pdsch_hop_cfg_r13_e_(options v) : value(v) {} mpdcch_pdsch_hop_cfg_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct mpdcch_start_sf_uess_r13_c_ { struct fdd_r13_e_ { enum options { v1, v1dot5, v2, v2dot5, v4, v5, v8, v10 }; typedef float number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods fdd_r13_e_() {} fdd_r13_e_(options v) : value(v) {} fdd_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; struct tdd_r13_e_ { enum options { v1, v2, v4, v5, v8, v10, v20, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods tdd_r13_e_() {} tdd_r13_e_(options v) : value(v) {} tdd_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct types { enum options { fdd_r13, tdd_r13, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods mpdcch_start_sf_uess_r13_c_() : type_(types::nulltype) {} mpdcch_start_sf_uess_r13_c_(const mpdcch_start_sf_uess_r13_c_& other); mpdcch_start_sf_uess_r13_c_& operator=(const mpdcch_start_sf_uess_r13_c_& other); ~mpdcch_start_sf_uess_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(bit_ref& bref); void to_json(json_writer& j) const; // getters fdd_r13_e_& fdd_r13() { assert_choice_type("fdd-r13", type_.to_string(), "mpdcch-StartSF-UESS-r13"); return c.get(); } tdd_r13_e_& tdd_r13() { assert_choice_type("tdd-r13", type_.to_string(), "mpdcch-StartSF-UESS-r13"); return c.get(); } const fdd_r13_e_& fdd_r13() const { assert_choice_type("fdd-r13", type_.to_string(), "mpdcch-StartSF-UESS-r13"); return c.get(); } const tdd_r13_e_& tdd_r13() const { assert_choice_type("tdd-r13", type_.to_string(), "mpdcch-StartSF-UESS-r13"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct mpdcch_num_repeat_r13_e_ { enum options { r1, r2, r4, r8, r16, r32, r64, r128, r256 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 9, nof_exts = 0; static const bool has_ext = false; // enumerated methods mpdcch_num_repeat_r13_e_() {} mpdcch_num_repeat_r13_e_(options v) : value(v) {} mpdcch_num_repeat_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables csi_num_repeat_ce_r13_e_ csi_num_repeat_ce_r13; mpdcch_pdsch_hop_cfg_r13_e_ mpdcch_pdsch_hop_cfg_r13; mpdcch_start_sf_uess_r13_c_ mpdcch_start_sf_uess_r13; mpdcch_num_repeat_r13_e_ mpdcch_num_repeat_r13; uint8_t mpdcch_nb_r13; }; typedef setup_e types; // choice methods mpdcch_cfg_r13_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "mpdcch-config-r13"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "mpdcch-config-r13"); return c; } private: types type_; setup_s_ c; }; // member variables bool ext; bool re_map_qcl_cfg_id_r11_present; uint8_t set_cfg_id_r11; tx_type_r11_e_ tx_type_r11; res_block_assign_r11_s_ res_block_assign_r11; uint16_t dmrs_scrambling_seq_int_r11; uint16_t pucch_res_start_offset_r11; uint8_t re_map_qcl_cfg_id_r11; // ... // group 0 bool csi_rs_cfg_zp_id2_r12_present; copy_ptr csi_rs_cfg_zp_id2_r12; // group 1 bool num_prb_pairs_v1310_present; bool mpdcch_cfg_r13_present; copy_ptr num_prb_pairs_v1310; copy_ptr mpdcch_cfg_r13; // sequence methods epdcch_set_cfg_r11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // Enable256QAM-r14 ::= CHOICE struct enable256_qam_r14_c { struct setup_c_ { struct tpc_sf_set_cfgured_r14_s_ { // member variables bool sf_set1_dci_format0_r14; bool sf_set1_dci_format4_r14; bool sf_set2_dci_format0_r14; bool sf_set2_dci_format4_r14; }; struct tpc_sf_set_not_cfgured_r14_s_ { // member variables bool dci_format0_r14; bool dci_format4_r14; }; struct types { enum options { tpc_sf_set_cfgured_r14, tpc_sf_set_not_cfgured_r14, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods setup_c_() : type_(types::nulltype) {} setup_c_(const setup_c_& other); setup_c_& operator=(const setup_c_& other); ~setup_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters tpc_sf_set_cfgured_r14_s_& tpc_sf_set_cfgured_r14() { assert_choice_type("tpc-SubframeSet-Configured-r14", type_.to_string(), "setup"); return c.get(); } tpc_sf_set_not_cfgured_r14_s_& tpc_sf_set_not_cfgured_r14() { assert_choice_type("tpc-SubframeSet-NotConfigured-r14", type_.to_string(), "setup"); return c.get(); } const tpc_sf_set_cfgured_r14_s_& tpc_sf_set_cfgured_r14() const { assert_choice_type("tpc-SubframeSet-Configured-r14", type_.to_string(), "setup"); return c.get(); } const tpc_sf_set_not_cfgured_r14_s_& tpc_sf_set_not_cfgured_r14() const { assert_choice_type("tpc-SubframeSet-NotConfigured-r14", type_.to_string(), "setup"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; typedef setup_e types; // choice methods enable256_qam_r14_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_c_& setup() { assert_choice_type("setup", type_.to_string(), "Enable256QAM-r14"); return c; } const setup_c_& setup() const { assert_choice_type("setup", type_.to_string(), "Enable256QAM-r14"); return c; } private: types type_; setup_c_ c; }; // LogicalChannelConfig ::= SEQUENCE struct lc_ch_cfg_s { struct ul_specific_params_s_ { struct prioritised_bit_rate_e_ { enum options { kbps0, kbps8, kbps16, kbps32, kbps64, kbps128, kbps256, infinity, kbps512_v1020, kbps1024_v1020, kbps2048_v1020, spare5, spare4, spare3, spare2, spare1 }; typedef int16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods prioritised_bit_rate_e_() {} prioritised_bit_rate_e_(options v) : value(v) {} prioritised_bit_rate_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int16_t to_number() const; }; struct bucket_size_dur_e_ { enum options { ms50, ms100, ms150, ms300, ms500, ms1000, spare2, spare1 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods bucket_size_dur_e_() {} bucket_size_dur_e_(options v) : value(v) {} bucket_size_dur_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool lc_ch_group_present; uint8_t prio; prioritised_bit_rate_e_ prioritised_bit_rate; bucket_size_dur_e_ bucket_size_dur; uint8_t lc_ch_group; // sequence methods ul_specific_params_s_(); }; struct bit_rate_query_prohibit_timer_r14_e_ { enum options { s0, s0dot4, s0dot8, s1dot6, s3, s6, s12, s30 }; typedef float number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods bit_rate_query_prohibit_timer_r14_e_() {} bit_rate_query_prohibit_timer_r14_e_(options v) : value(v) {} bit_rate_query_prohibit_timer_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; struct allowed_tti_lens_r15_c_ { struct setup_s_ { // member variables bool short_tti_r15; bool sf_tti_r15; }; typedef setup_e types; // choice methods allowed_tti_lens_r15_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "allowedTTI-Lengths-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "allowedTTI-Lengths-r15"); return c; } private: types type_; setup_s_ c; }; struct lc_ch_sr_restrict_r15_c_ { struct setup_e_ { enum options { spucch, pucch }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods setup_e_() {} setup_e_(options v) : value(v) {} setup_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; typedef setup_e types; // choice methods lc_ch_sr_restrict_r15_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_e_& setup() { assert_choice_type("setup", type_.to_string(), "logicalChannelSR-Restriction-r15"); return c; } const setup_e_& setup() const { assert_choice_type("setup", type_.to_string(), "logicalChannelSR-Restriction-r15"); return c; } private: types type_; setup_e_ c; }; struct chl_access_prio_r15_c_ { typedef setup_e types; // choice methods chl_access_prio_r15_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint8_t& setup() { assert_choice_type("setup", type_.to_string(), "channellAccessPriority-r15"); return c; } const uint8_t& setup() const { assert_choice_type("setup", type_.to_string(), "channellAccessPriority-r15"); return c; } private: types type_; uint8_t c; }; // member variables bool ext; bool ul_specific_params_present; ul_specific_params_s_ ul_specific_params; // ... // group 0 bool lc_ch_sr_mask_r9_present; // group 1 bool lc_ch_sr_prohibit_r12_present; bool lc_ch_sr_prohibit_r12; // group 2 bool laa_ul_allowed_r14_present; bool bit_rate_query_prohibit_timer_r14_present; bool laa_ul_allowed_r14; bit_rate_query_prohibit_timer_r14_e_ bit_rate_query_prohibit_timer_r14; // group 3 bool allowed_tti_lens_r15_present; bool lc_ch_sr_restrict_r15_present; bool chl_access_prio_r15_present; bool lch_cell_restrict_r15_present; copy_ptr allowed_tti_lens_r15; copy_ptr lc_ch_sr_restrict_r15; copy_ptr chl_access_prio_r15; fixed_bitstring<32> lch_cell_restrict_r15; // sequence methods lc_ch_cfg_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // P-a ::= ENUMERATED struct p_a_e { enum options { db_minus6, db_minus4dot77, db_minus3, db_minus1dot77, db0, db1, db2, db3 }; typedef float number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods p_a_e() {} p_a_e(options v) : value(v) {} p_a_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; // PDSCH-RE-MappingQCL-Config-r11 ::= SEQUENCE struct pdsch_re_map_qcl_cfg_r11_s { struct optional_set_of_fields_r11_s_ { struct crs_ports_count_r11_e_ { enum options { n1, n2, n4, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods crs_ports_count_r11_e_() {} crs_ports_count_r11_e_(options v) : value(v) {} crs_ports_count_r11_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct mbsfn_sf_cfg_list_r11_c_ { struct setup_s_ { // member variables mbsfn_sf_cfg_list_l sf_cfg_list; }; typedef setup_e types; // choice methods mbsfn_sf_cfg_list_r11_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "mbsfn-SubframeConfigList-r11"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "mbsfn-SubframeConfigList-r11"); return c; } private: types type_; setup_s_ c; }; struct pdsch_start_r11_e_ { enum options { reserved, n1, n2, n3, n4, assigned }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods pdsch_start_r11_e_() {} pdsch_start_r11_e_(options v) : value(v) {} pdsch_start_r11_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool mbsfn_sf_cfg_list_r11_present; crs_ports_count_r11_e_ crs_ports_count_r11; uint8_t crs_freq_shift_r11; mbsfn_sf_cfg_list_r11_c_ mbsfn_sf_cfg_list_r11; pdsch_start_r11_e_ pdsch_start_r11; // sequence methods optional_set_of_fields_r11_s_(); }; struct mbsfn_sf_cfg_list_v1430_c_ { struct setup_s_ { // member variables mbsfn_sf_cfg_list_v1430_l sf_cfg_list_v1430; }; typedef setup_e types; // choice methods mbsfn_sf_cfg_list_v1430_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "mbsfn-SubframeConfigList-v1430"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "mbsfn-SubframeConfigList-v1430"); return c; } private: types type_; setup_s_ c; }; struct codeword_one_cfg_v1530_c_ { struct setup_s_ { struct crs_ports_count_v1530_e_ { enum options { n1, n2, n4, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods crs_ports_count_v1530_e_() {} crs_ports_count_v1530_e_(options v) : value(v) {} crs_ports_count_v1530_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct pdsch_start_v1530_e_ { enum options { reserved, n1, n2, n3, n4, assigned }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods pdsch_start_v1530_e_() {} pdsch_start_v1530_e_(options v) : value(v) {} pdsch_start_v1530_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool mbsfn_sf_cfg_list_v1530_present; bool mbsfn_sf_cfg_list_ext_v1530_present; bool qcl_csi_rs_cfg_nzp_id_v1530_present; crs_ports_count_v1530_e_ crs_ports_count_v1530; uint8_t crs_freq_shift_v1530; mbsfn_sf_cfg_list_l mbsfn_sf_cfg_list_v1530; mbsfn_sf_cfg_list_v1430_l mbsfn_sf_cfg_list_ext_v1530; pdsch_start_v1530_e_ pdsch_start_v1530; uint8_t csi_rs_cfg_zp_id_v1530; uint8_t qcl_csi_rs_cfg_nzp_id_v1530; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods codeword_one_cfg_v1530_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "codewordOneConfig-v1530"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "codewordOneConfig-v1530"); return c; } private: types type_; setup_s_ c; }; // member variables bool ext; bool optional_set_of_fields_r11_present; bool qcl_csi_rs_cfg_nzp_id_r11_present; uint8_t pdsch_re_map_qcl_cfg_id_r11; optional_set_of_fields_r11_s_ optional_set_of_fields_r11; uint8_t csi_rs_cfg_zp_id_r11; uint8_t qcl_csi_rs_cfg_nzp_id_r11; // ... // group 0 bool mbsfn_sf_cfg_list_v1430_present; copy_ptr mbsfn_sf_cfg_list_v1430; // group 1 bool codeword_one_cfg_v1530_present; copy_ptr codeword_one_cfg_v1530; // sequence methods pdsch_re_map_qcl_cfg_r11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PollPDU-v1310 ::= ENUMERATED struct poll_pdu_v1310_e { enum options { p512, p1024, p2048, p4096, p6144, p8192, p12288, p16384 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods poll_pdu_v1310_e() {} poll_pdu_v1310_e(options v) : value(v) {} poll_pdu_v1310_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // RLC-Config-r15 ::= SEQUENCE struct rlc_cfg_r15_s { struct mode_r15_c_ { struct am_r15_s_ { // member variables ul_am_rlc_r15_s ul_am_rlc_r15; dl_am_rlc_r15_s dl_am_rlc_r15; }; struct um_bi_dir_r15_s_ { // member variables ul_um_rlc_s ul_um_rlc_r15; dl_um_rlc_r15_s dl_um_rlc_r15; }; struct um_uni_dir_ul_r15_s_ { // member variables ul_um_rlc_s ul_um_rlc_r15; }; struct um_uni_dir_dl_r15_s_ { // member variables dl_um_rlc_r15_s dl_um_rlc_r15; }; struct types { enum options { am_r15, um_bi_dir_r15, um_uni_dir_ul_r15, um_uni_dir_dl_r15, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods mode_r15_c_() : type_(types::nulltype) {} mode_r15_c_(const mode_r15_c_& other); mode_r15_c_& operator=(const mode_r15_c_& other); ~mode_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(bit_ref& bref); void to_json(json_writer& j) const; // getters am_r15_s_& am_r15() { assert_choice_type("am-r15", type_.to_string(), "mode-r15"); return c.get(); } um_bi_dir_r15_s_& um_bi_dir_r15() { assert_choice_type("um-Bi-Directional-r15", type_.to_string(), "mode-r15"); return c.get(); } um_uni_dir_ul_r15_s_& um_uni_dir_ul_r15() { assert_choice_type("um-Uni-Directional-UL-r15", type_.to_string(), "mode-r15"); return c.get(); } um_uni_dir_dl_r15_s_& um_uni_dir_dl_r15() { assert_choice_type("um-Uni-Directional-DL-r15", type_.to_string(), "mode-r15"); return c.get(); } const am_r15_s_& am_r15() const { assert_choice_type("am-r15", type_.to_string(), "mode-r15"); return c.get(); } const um_bi_dir_r15_s_& um_bi_dir_r15() const { assert_choice_type("um-Bi-Directional-r15", type_.to_string(), "mode-r15"); return c.get(); } const um_uni_dir_ul_r15_s_& um_uni_dir_ul_r15() const { assert_choice_type("um-Uni-Directional-UL-r15", type_.to_string(), "mode-r15"); return c.get(); } const um_uni_dir_dl_r15_s_& um_uni_dir_dl_r15() const { assert_choice_type("um-Uni-Directional-DL-r15", type_.to_string(), "mode-r15"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables bool ext; bool reestablish_rlc_r15_present; bool rlc_out_of_order_delivery_r15_present; mode_r15_c_ mode_r15; // ... // sequence methods rlc_cfg_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SPDCCH-Set-r15 ::= SEQUENCE (SIZE (1..4)) OF SPDCCH-Elements-r15 typedef dyn_array spdcch_set_r15_l; // SPUCCH-Set-r15 ::= SEQUENCE (SIZE (1..4)) OF SPUCCH-Elements-r15 typedef dyn_array spucch_set_r15_l; // SR-SubslotSPUCCH-ResourceList-r15 ::= SEQUENCE (SIZE(1..4)) OF INTEGER typedef bounded_array sr_subslot_spucch_res_list_r15_l; // SRS-AntennaPort ::= ENUMERATED struct srs_ant_port_e { enum options { an1, an2, an4, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods srs_ant_port_e() {} srs_ant_port_e(options v) : value(v) {} srs_ant_port_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // ShortTTI-Length-r15 ::= ENUMERATED struct short_tti_len_r15_e { enum options { slot, subslot }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods short_tti_len_r15_e() {} short_tti_len_r15_e(options v) : value(v) {} short_tti_len_r15_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // TPC-PDCCH-Config ::= CHOICE struct tpc_pdcch_cfg_c { struct setup_s_ { // member variables fixed_bitstring<16> tpc_rnti; tpc_idx_c tpc_idx; }; typedef setup_e types; // choice methods tpc_pdcch_cfg_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "TPC-PDCCH-Config"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "TPC-PDCCH-Config"); return c; } private: types type_; setup_s_ c; }; // UL-AM-RLC ::= SEQUENCE struct ul_am_rlc_s { struct max_retx_thres_e_ { enum options { t1, t2, t3, t4, t6, t8, t16, t32 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods max_retx_thres_e_() {} max_retx_thres_e_(options v) : value(v) {} max_retx_thres_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables t_poll_retx_e t_poll_retx; poll_pdu_e poll_pdu; poll_byte_e poll_byte; max_retx_thres_e_ max_retx_thres; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AntennaInfoDedicatedSTTI-r15 ::= CHOICE struct ant_info_ded_stti_r15_c { struct setup_s_ { struct tx_mode_dl_mbsfn_r15_e_ { enum options { tm9, tm10 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods tx_mode_dl_mbsfn_r15_e_() {} tx_mode_dl_mbsfn_r15_e_(options v) : value(v) {} tx_mode_dl_mbsfn_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct tx_mode_dl_non_mbsfn_r15_e_ { enum options { tm1, tm2, tm3, tm4, tm6, tm8, tm9, tm10 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods tx_mode_dl_non_mbsfn_r15_e_() {} tx_mode_dl_non_mbsfn_r15_e_(options v) : value(v) {} tx_mode_dl_non_mbsfn_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct codebook_subset_restrict_c_ { struct types { enum options { n2_tx_ant_tm3_r15, n4_tx_ant_tm3_r15, n2_tx_ant_tm4_r15, n4_tx_ant_tm4_r15, n2_tx_ant_tm5_r15, n4_tx_ant_tm5_r15, n2_tx_ant_tm6_r15, n4_tx_ant_tm6_r15, n2_tx_ant_tm8_r15, n4_tx_ant_tm8_r15, n2_tx_ant_tm9and10_r15, n4_tx_ant_tm9and10_r15, n8_tx_ant_tm9and10_r15, nulltype }; options value; static const uint32_t nof_types = 13, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods codebook_subset_restrict_c_() : type_(types::nulltype) {} codebook_subset_restrict_c_(const codebook_subset_restrict_c_& other); codebook_subset_restrict_c_& operator=(const codebook_subset_restrict_c_& other); ~codebook_subset_restrict_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<2>& n2_tx_ant_tm3_r15() { assert_choice_type("n2TxAntenna-tm3-r15", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } fixed_bitstring<4>& n4_tx_ant_tm3_r15() { assert_choice_type("n4TxAntenna-tm3-r15", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } fixed_bitstring<6>& n2_tx_ant_tm4_r15() { assert_choice_type("n2TxAntenna-tm4-r15", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } fixed_bitstring<64>& n4_tx_ant_tm4_r15() { assert_choice_type("n4TxAntenna-tm4-r15", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } fixed_bitstring<4>& n2_tx_ant_tm5_r15() { assert_choice_type("n2TxAntenna-tm5-r15", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } fixed_bitstring<16>& n4_tx_ant_tm5_r15() { assert_choice_type("n4TxAntenna-tm5-r15", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } fixed_bitstring<4>& n2_tx_ant_tm6_r15() { assert_choice_type("n2TxAntenna-tm6-r15", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } fixed_bitstring<16>& n4_tx_ant_tm6_r15() { assert_choice_type("n4TxAntenna-tm6-r15", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } fixed_bitstring<6>& n2_tx_ant_tm8_r15() { assert_choice_type("n2TxAntenna-tm8-r15", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } fixed_bitstring<64>& n4_tx_ant_tm8_r15() { assert_choice_type("n4TxAntenna-tm8-r15", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } fixed_bitstring<6>& n2_tx_ant_tm9and10_r15() { assert_choice_type("n2TxAntenna-tm9and10-r15", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } fixed_bitstring<96>& n4_tx_ant_tm9and10_r15() { assert_choice_type("n4TxAntenna-tm9and10-r15", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } fixed_bitstring<109>& n8_tx_ant_tm9and10_r15() { assert_choice_type("n8TxAntenna-tm9and10-r15", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } const fixed_bitstring<2>& n2_tx_ant_tm3_r15() const { assert_choice_type("n2TxAntenna-tm3-r15", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } const fixed_bitstring<4>& n4_tx_ant_tm3_r15() const { assert_choice_type("n4TxAntenna-tm3-r15", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } const fixed_bitstring<6>& n2_tx_ant_tm4_r15() const { assert_choice_type("n2TxAntenna-tm4-r15", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } const fixed_bitstring<64>& n4_tx_ant_tm4_r15() const { assert_choice_type("n4TxAntenna-tm4-r15", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } const fixed_bitstring<4>& n2_tx_ant_tm5_r15() const { assert_choice_type("n2TxAntenna-tm5-r15", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } const fixed_bitstring<16>& n4_tx_ant_tm5_r15() const { assert_choice_type("n4TxAntenna-tm5-r15", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } const fixed_bitstring<4>& n2_tx_ant_tm6_r15() const { assert_choice_type("n2TxAntenna-tm6-r15", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } const fixed_bitstring<16>& n4_tx_ant_tm6_r15() const { assert_choice_type("n4TxAntenna-tm6-r15", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } const fixed_bitstring<6>& n2_tx_ant_tm8_r15() const { assert_choice_type("n2TxAntenna-tm8-r15", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } const fixed_bitstring<64>& n4_tx_ant_tm8_r15() const { assert_choice_type("n4TxAntenna-tm8-r15", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } const fixed_bitstring<6>& n2_tx_ant_tm9and10_r15() const { assert_choice_type("n2TxAntenna-tm9and10-r15", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } const fixed_bitstring<96>& n4_tx_ant_tm9and10_r15() const { assert_choice_type("n4TxAntenna-tm9and10-r15", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } const fixed_bitstring<109>& n8_tx_ant_tm9and10_r15() const { assert_choice_type("n8TxAntenna-tm9and10-r15", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } private: types type_; choice_buffer_t)> c; void destroy_(); }; struct max_layers_mimo_stti_r15_e_ { enum options { two_layers, four_layers }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods max_layers_mimo_stti_r15_e_() {} max_layers_mimo_stti_r15_e_(options v) : value(v) {} max_layers_mimo_stti_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool tx_mode_dl_mbsfn_r15_present; bool tx_mode_dl_non_mbsfn_r15_present; bool codebook_subset_restrict_present; bool max_layers_mimo_stti_r15_present; tx_mode_dl_mbsfn_r15_e_ tx_mode_dl_mbsfn_r15; tx_mode_dl_non_mbsfn_r15_e_ tx_mode_dl_non_mbsfn_r15; codebook_subset_restrict_c_ codebook_subset_restrict; max_layers_mimo_stti_r15_e_ max_layers_mimo_stti_r15; bool slot_subslot_pdsch_tx_div_minus2_layer_r15; bool slot_subslot_pdsch_tx_div_minus4_layer_r15; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods ant_info_ded_stti_r15_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "AntennaInfoDedicatedSTTI-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "AntennaInfoDedicatedSTTI-r15"); return c; } private: types type_; setup_s_ c; }; // AntennaInfoUL-STTI-r15 ::= SEQUENCE struct ant_info_ul_stti_r15_s { struct tx_mode_ul_stti_r15_e_ { enum options { tm1, tm2 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods tx_mode_ul_stti_r15_e_() {} tx_mode_ul_stti_r15_e_(options v) : value(v) {} tx_mode_ul_stti_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool tx_mode_ul_stti_r15_present; tx_mode_ul_stti_r15_e_ tx_mode_ul_stti_r15; // sequence methods ant_info_ul_stti_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CQI-ReportConfig-r15 ::= CHOICE struct cqi_report_cfg_r15_c { struct setup_s_ { struct alt_cqi_table_minus1024_qam_r15_e_ { enum options { all_sfs, csi_sf_set1, csi_sf_set2, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods alt_cqi_table_minus1024_qam_r15_e_() {} alt_cqi_table_minus1024_qam_r15_e_(options v) : value(v) {} alt_cqi_table_minus1024_qam_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool cqi_report_cfg_r10_present; bool cqi_report_cfg_v1130_present; bool cqi_report_cfg_pcell_v1250_present; bool cqi_report_cfg_v1310_present; bool cqi_report_cfg_v1320_present; bool cqi_report_cfg_v1430_present; bool alt_cqi_table_minus1024_qam_r15_present; cqi_report_cfg_r10_s cqi_report_cfg_r10; cqi_report_cfg_v1130_s cqi_report_cfg_v1130; cqi_report_cfg_v1250_s cqi_report_cfg_pcell_v1250; cqi_report_cfg_v1310_s cqi_report_cfg_v1310; cqi_report_cfg_v1320_s cqi_report_cfg_v1320; cqi_report_cfg_v1430_s cqi_report_cfg_v1430; alt_cqi_table_minus1024_qam_r15_e_ alt_cqi_table_minus1024_qam_r15; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods cqi_report_cfg_r15_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "CQI-ReportConfig-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "CQI-ReportConfig-r15"); return c; } private: types type_; setup_s_ c; }; // CQI-ReportPeriodic ::= CHOICE struct cqi_report_periodic_c { struct setup_s_ { struct cqi_format_ind_periodic_c_ { struct subband_cqi_s_ { // member variables uint8_t k; }; struct types { enum options { wideband_cqi, subband_cqi, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods cqi_format_ind_periodic_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters subband_cqi_s_& subband_cqi() { assert_choice_type("subbandCQI", type_.to_string(), "cqi-FormatIndicatorPeriodic"); return c; } const subband_cqi_s_& subband_cqi() const { assert_choice_type("subbandCQI", type_.to_string(), "cqi-FormatIndicatorPeriodic"); return c; } private: types type_; subband_cqi_s_ c; }; // member variables bool ri_cfg_idx_present; uint16_t cqi_pucch_res_idx; uint16_t cqi_pmi_cfg_idx; cqi_format_ind_periodic_c_ cqi_format_ind_periodic; uint16_t ri_cfg_idx; bool simul_ack_nack_and_cqi; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods cqi_report_periodic_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "CQI-ReportPeriodic"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "CQI-ReportPeriodic"); return c; } private: types type_; setup_s_ c; }; // CRS-AssistanceInfo-r11 ::= SEQUENCE struct crs_assist_info_r11_s { struct ant_ports_count_r11_e_ { enum options { an1, an2, an4, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods ant_ports_count_r11_e_() {} ant_ports_count_r11_e_(options v) : value(v) {} ant_ports_count_r11_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ext; uint16_t pci_r11; ant_ports_count_r11_e_ ant_ports_count_r11; mbsfn_sf_cfg_list_l mbsfn_sf_cfg_list_r11; // ... // group 0 bool mbsfn_sf_cfg_list_v1430_present; copy_ptr mbsfn_sf_cfg_list_v1430; // sequence methods crs_assist_info_r11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CRS-AssistanceInfo-r13 ::= SEQUENCE struct crs_assist_info_r13_s { struct ant_ports_count_r13_e_ { enum options { an1, an2, an4, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods ant_ports_count_r13_e_() {} ant_ports_count_r13_e_(options v) : value(v) {} ant_ports_count_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ext; bool mbsfn_sf_cfg_list_r13_present; uint16_t pci_r13; ant_ports_count_r13_e_ ant_ports_count_r13; mbsfn_sf_cfg_list_l mbsfn_sf_cfg_list_r13; // ... // group 0 bool mbsfn_sf_cfg_list_v1430_present; copy_ptr mbsfn_sf_cfg_list_v1430; // sequence methods crs_assist_info_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CRS-AssistanceInfo-r15 ::= SEQUENCE struct crs_assist_info_r15_s { // member variables bool crs_intf_mitig_enabled_minus15_present; uint16_t pci_r15; // sequence methods crs_assist_info_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSI-RS-Config-r15 ::= CHOICE struct csi_rs_cfg_r15_c { struct setup_s_ { // member variables bool csi_rs_cfg_r10_present; bool csi_rs_cfg_v1250_present; bool csi_rs_cfg_v1310_present; bool csi_rs_cfg_v1430_present; csi_rs_cfg_r10_s csi_rs_cfg_r10; csi_rs_cfg_v1250_s csi_rs_cfg_v1250; csi_rs_cfg_v1310_s csi_rs_cfg_v1310; csi_rs_cfg_v1430_s csi_rs_cfg_v1430; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods csi_rs_cfg_r15_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "CSI-RS-Config-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "CSI-RS-Config-r15"); return c; } private: types type_; setup_s_ c; }; // CSI-RS-ConfigNZPToAddModList-r15 ::= SEQUENCE (SIZE (1..maxCSI-RS-NZP-r13)) OF CSI-RS-ConfigNZP-r11 typedef dyn_array csi_rs_cfg_nzp_to_add_mod_list_r15_l; // CSI-RS-ConfigNZPToReleaseList-r15 ::= SEQUENCE (SIZE (1..maxCSI-RS-NZP-r13)) OF INTEGER typedef bounded_array csi_rs_cfg_nzp_to_release_list_r15_l; // CSI-RS-ConfigZP-ApList-r14 ::= CHOICE struct csi_rs_cfg_zp_ap_list_r14_c { typedef dyn_array setup_l_; typedef setup_e types; // choice methods csi_rs_cfg_zp_ap_list_r14_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_l_& setup() { assert_choice_type("setup", type_.to_string(), "CSI-RS-ConfigZP-ApList-r14"); return c; } const setup_l_& setup() const { assert_choice_type("setup", type_.to_string(), "CSI-RS-ConfigZP-ApList-r14"); return c; } private: types type_; setup_l_ c; }; // CSI-RS-ConfigZPToAddModList-r11 ::= SEQUENCE (SIZE (1..maxCSI-RS-ZP-r11)) OF CSI-RS-ConfigZP-r11 typedef dyn_array csi_rs_cfg_zp_to_add_mod_list_r11_l; // CSI-RS-ConfigZPToReleaseList-r11 ::= SEQUENCE (SIZE (1..maxCSI-RS-ZP-r11)) OF INTEGER typedef bounded_array csi_rs_cfg_zp_to_release_list_r11_l; // DMRS-Config-r11 ::= CHOICE struct dmrs_cfg_r11_c { struct setup_s_ { // member variables uint16_t scrambling_id_r11; uint16_t scrambling_id2_r11; }; typedef setup_e types; // choice methods dmrs_cfg_r11_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "DMRS-Config-r11"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "DMRS-Config-r11"); return c; } private: types type_; setup_s_ c; }; // DMRS-Config-v1310 ::= SEQUENCE struct dmrs_cfg_v1310_s { // member variables bool dmrs_table_alt_r13_present; // sequence methods dmrs_cfg_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DeltaTxD-OffsetListPUCCH-r10 ::= SEQUENCE struct delta_tx_d_offset_list_pucch_r10_s { struct delta_tx_d_offset_pucch_format1_r10_e_ { enum options { db0, db_minus2 }; typedef int8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_tx_d_offset_pucch_format1_r10_e_() {} delta_tx_d_offset_pucch_format1_r10_e_(options v) : value(v) {} delta_tx_d_offset_pucch_format1_r10_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; struct delta_tx_d_offset_pucch_format1a1b_r10_e_ { enum options { db0, db_minus2 }; typedef int8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_tx_d_offset_pucch_format1a1b_r10_e_() {} delta_tx_d_offset_pucch_format1a1b_r10_e_(options v) : value(v) {} delta_tx_d_offset_pucch_format1a1b_r10_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; struct delta_tx_d_offset_pucch_format22a2b_r10_e_ { enum options { db0, db_minus2 }; typedef int8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_tx_d_offset_pucch_format22a2b_r10_e_() {} delta_tx_d_offset_pucch_format22a2b_r10_e_(options v) : value(v) {} delta_tx_d_offset_pucch_format22a2b_r10_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; struct delta_tx_d_offset_pucch_format3_r10_e_ { enum options { db0, db_minus2 }; typedef int8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_tx_d_offset_pucch_format3_r10_e_() {} delta_tx_d_offset_pucch_format3_r10_e_(options v) : value(v) {} delta_tx_d_offset_pucch_format3_r10_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; // member variables bool ext; delta_tx_d_offset_pucch_format1_r10_e_ delta_tx_d_offset_pucch_format1_r10; delta_tx_d_offset_pucch_format1a1b_r10_e_ delta_tx_d_offset_pucch_format1a1b_r10; delta_tx_d_offset_pucch_format22a2b_r10_e_ delta_tx_d_offset_pucch_format22a2b_r10; delta_tx_d_offset_pucch_format3_r10_e_ delta_tx_d_offset_pucch_format3_r10; // ... // sequence methods delta_tx_d_offset_list_pucch_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DeltaTxD-OffsetListPUCCH-v1130 ::= SEQUENCE struct delta_tx_d_offset_list_pucch_v1130_s { struct delta_tx_d_offset_pucch_format1b_cs_r11_e_ { enum options { db0, db_minus1 }; typedef int8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_tx_d_offset_pucch_format1b_cs_r11_e_() {} delta_tx_d_offset_pucch_format1b_cs_r11_e_(options v) : value(v) {} delta_tx_d_offset_pucch_format1b_cs_r11_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; // member variables delta_tx_d_offset_pucch_format1b_cs_r11_e_ delta_tx_d_offset_pucch_format1b_cs_r11; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // EIMTA-MainConfig-r12 ::= CHOICE struct eimta_main_cfg_r12_c { struct setup_s_ { struct eimta_cmd_periodicity_r12_e_ { enum options { sf10, sf20, sf40, sf80 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods eimta_cmd_periodicity_r12_e_() {} eimta_cmd_periodicity_r12_e_(options v) : value(v) {} eimta_cmd_periodicity_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables fixed_bitstring<16> eimta_rnti_r12; eimta_cmd_periodicity_r12_e_ eimta_cmd_periodicity_r12; fixed_bitstring<10> eimta_cmd_sf_set_r12; }; typedef setup_e types; // choice methods eimta_main_cfg_r12_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "EIMTA-MainConfig-r12"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "EIMTA-MainConfig-r12"); return c; } private: types type_; setup_s_ c; }; // EIMTA-MainConfigServCell-r12 ::= CHOICE struct eimta_main_cfg_serv_cell_r12_c { struct setup_s_ { struct eimta_harq_ref_cfg_r12_e_ { enum options { sa2, sa4, sa5 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods eimta_harq_ref_cfg_r12_e_() {} eimta_harq_ref_cfg_r12_e_(options v) : value(v) {} eimta_harq_ref_cfg_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct mbsfn_sf_cfg_list_v1250_c_ { struct setup_s_ { // member variables mbsfn_sf_cfg_list_l sf_cfg_list_r12; }; typedef setup_e types; // choice methods mbsfn_sf_cfg_list_v1250_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "mbsfn-SubframeConfigList-v1250"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "mbsfn-SubframeConfigList-v1250"); return c; } private: types type_; setup_s_ c; }; // member variables uint8_t eimta_ul_dl_cfg_idx_r12; eimta_harq_ref_cfg_r12_e_ eimta_harq_ref_cfg_r12; mbsfn_sf_cfg_list_v1250_c_ mbsfn_sf_cfg_list_v1250; }; typedef setup_e types; // choice methods eimta_main_cfg_serv_cell_r12_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "EIMTA-MainConfigServCell-r12"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "EIMTA-MainConfigServCell-r12"); return c; } private: types type_; setup_s_ c; }; // EPDCCH-SetConfigToAddModList-r11 ::= SEQUENCE (SIZE(1..maxEPDCCH-Set-r11)) OF EPDCCH-SetConfig-r11 typedef dyn_array epdcch_set_cfg_to_add_mod_list_r11_l; // EPDCCH-SetConfigToReleaseList-r11 ::= SEQUENCE (SIZE(1..maxEPDCCH-Set-r11)) OF INTEGER typedef bounded_array epdcch_set_cfg_to_release_list_r11_l; // Format4-resource-r13 ::= SEQUENCE struct format4_res_r13_s { // member variables uint8_t start_prb_format4_r13; uint8_t nof_prb_format4_r13; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // Format5-resource-r13 ::= SEQUENCE struct format5_res_r13_s { // member variables uint8_t start_prb_format5_r13; uint8_t cdm_idx_format5_r13; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // N1PUCCH-AN-CS-r10 ::= SEQUENCE (SIZE (1..4)) OF INTEGER typedef bounded_array n1_pucch_an_cs_r10_l; // N1PUCCH-AN-PersistentList ::= SEQUENCE (SIZE (1..4)) OF INTEGER typedef bounded_array n1_pucch_an_persistent_list_l; // NeighCellsInfo-r12 ::= SEQUENCE struct neigh_cells_info_r12_s { struct crs_ports_count_r12_e_ { enum options { n1, n2, n4, spare }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods crs_ports_count_r12_e_() {} crs_ports_count_r12_e_(options v) : value(v) {} crs_ports_count_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; typedef bounded_array p_a_list_r12_l_; // member variables bool ext; bool mbsfn_sf_cfg_r12_present; uint16_t pci_r12; uint8_t p_b_r12; crs_ports_count_r12_e_ crs_ports_count_r12; mbsfn_sf_cfg_list_l mbsfn_sf_cfg_r12; p_a_list_r12_l_ p_a_list_r12; fixed_bitstring<8> tx_mode_list_r12; uint8_t res_alloc_granularity_r12; // ... // sequence methods neigh_cells_info_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PDCCH-CandidateReductionValue-r13 ::= ENUMERATED struct pdcch_candidate_reduction_value_r13_e { enum options { n0, n33, n66, n100 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods pdcch_candidate_reduction_value_r13_e() {} pdcch_candidate_reduction_value_r13_e(options v) : value(v) {} pdcch_candidate_reduction_value_r13_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // PDCP-Config ::= SEQUENCE struct pdcp_cfg_s { struct discard_timer_e_ { enum options { ms50, ms100, ms150, ms300, ms500, ms750, ms1500, infinity }; typedef int16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods discard_timer_e_() {} discard_timer_e_(options v) : value(v) {} discard_timer_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int16_t to_number() const; }; struct rlc_am_s_ { // member variables bool status_report_required; }; struct rlc_um_s_ { struct pdcp_sn_size_e_ { enum options { len7bits, len12bits }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods pdcp_sn_size_e_() {} pdcp_sn_size_e_(options v) : value(v) {} pdcp_sn_size_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables pdcp_sn_size_e_ pdcp_sn_size; }; struct hdr_compress_c_ { struct rohc_s_ { struct profiles_s_ { // member variables bool profile0x0001; bool profile0x0002; bool profile0x0003; bool profile0x0004; bool profile0x0006; bool profile0x0101; bool profile0x0102; bool profile0x0103; bool profile0x0104; }; // member variables bool ext; bool max_cid_present; uint16_t max_cid; profiles_s_ profiles; // ... // sequence methods rohc_s_(); }; struct types { enum options { not_used, rohc, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods hdr_compress_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters rohc_s_& rohc() { assert_choice_type("rohc", type_.to_string(), "headerCompression"); return c; } const rohc_s_& rohc() const { assert_choice_type("rohc", type_.to_string(), "headerCompression"); return c; } private: types type_; rohc_s_ c; }; struct t_reordering_r12_e_ { enum options { ms0, ms20, ms40, ms60, ms80, ms100, ms120, ms140, ms160, ms180, ms200, ms220, ms240, ms260, ms280, ms300, ms500, ms750, spare14, spare13, spare12, spare11, spare10, spare9, spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 32, nof_exts = 0; static const bool has_ext = false; // enumerated methods t_reordering_r12_e_() {} t_reordering_r12_e_(options v) : value(v) {} t_reordering_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct ul_data_split_thres_r13_c_ { struct setup_e_ { enum options { b0, b100, b200, b400, b800, b1600, b3200, b6400, b12800, b25600, b51200, b102400, b204800, b409600, b819200, spare1 }; typedef uint32_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods setup_e_() {} setup_e_(options v) : value(v) {} setup_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint32_t to_number() const; }; typedef setup_e types; // choice methods ul_data_split_thres_r13_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_e_& setup() { assert_choice_type("setup", type_.to_string(), "ul-DataSplitThreshold-r13"); return c; } const setup_e_& setup() const { assert_choice_type("setup", type_.to_string(), "ul-DataSplitThreshold-r13"); return c; } private: types type_; setup_e_ c; }; struct status_feedback_r13_c_ { struct setup_s_ { struct status_pdu_type_for_polling_r13_e_ { enum options { type1, type2 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods status_pdu_type_for_polling_r13_e_() {} status_pdu_type_for_polling_r13_e_(options v) : value(v) {} status_pdu_type_for_polling_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct status_pdu_periodicity_type1_r13_e_ { enum options { ms5, ms10, ms20, ms30, ms40, ms50, ms60, ms70, ms80, ms90, ms100, ms150, ms200, ms300, ms500, ms1000, ms2000, ms5000, ms10000, ms20000, ms50000 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 21, nof_exts = 0; static const bool has_ext = false; // enumerated methods status_pdu_periodicity_type1_r13_e_() {} status_pdu_periodicity_type1_r13_e_(options v) : value(v) {} status_pdu_periodicity_type1_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct status_pdu_periodicity_type2_r13_e_ { enum options { ms5, ms10, ms20, ms30, ms40, ms50, ms60, ms70, ms80, ms90, ms100, ms150, ms200, ms300, ms500, ms1000, ms2000, ms5000, ms10000, ms20000, ms50000 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 21, nof_exts = 0; static const bool has_ext = false; // enumerated methods status_pdu_periodicity_type2_r13_e_() {} status_pdu_periodicity_type2_r13_e_(options v) : value(v) {} status_pdu_periodicity_type2_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct status_pdu_periodicity_offset_r13_e_ { enum options { ms1, ms2, ms5, ms10, ms25, ms50, ms100, ms250, ms500, ms2500, ms5000, ms25000 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 12, nof_exts = 0; static const bool has_ext = false; // enumerated methods status_pdu_periodicity_offset_r13_e_() {} status_pdu_periodicity_offset_r13_e_(options v) : value(v) {} status_pdu_periodicity_offset_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool status_pdu_type_for_polling_r13_present; bool status_pdu_periodicity_type1_r13_present; bool status_pdu_periodicity_type2_r13_present; bool status_pdu_periodicity_offset_r13_present; status_pdu_type_for_polling_r13_e_ status_pdu_type_for_polling_r13; status_pdu_periodicity_type1_r13_e_ status_pdu_periodicity_type1_r13; status_pdu_periodicity_type2_r13_e_ status_pdu_periodicity_type2_r13; status_pdu_periodicity_offset_r13_e_ status_pdu_periodicity_offset_r13; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods status_feedback_r13_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "statusFeedback-r13"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "statusFeedback-r13"); return c; } private: types type_; setup_s_ c; }; struct ul_lwa_cfg_r14_c_ { struct setup_s_ { struct ul_lwa_data_split_thres_r14_e_ { enum options { b0, b100, b200, b400, b800, b1600, b3200, b6400, b12800, b25600, b51200, b102400, b204800, b409600, b819200 }; typedef uint32_t number_type; options value; static const uint32_t nof_types = 15, nof_exts = 0; static const bool has_ext = false; // enumerated methods ul_lwa_data_split_thres_r14_e_() {} ul_lwa_data_split_thres_r14_e_(options v) : value(v) {} ul_lwa_data_split_thres_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint32_t to_number() const; }; // member variables bool ul_lwa_data_split_thres_r14_present; bool ul_lwa_drb_via_wlan_r14; ul_lwa_data_split_thres_r14_e_ ul_lwa_data_split_thres_r14; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods ul_lwa_cfg_r14_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "ul-LWA-Config-r14"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "ul-LWA-Config-r14"); return c; } private: types type_; setup_s_ c; }; struct ul_only_hdr_compress_r14_c_ { struct rohc_r14_s_ { struct profiles_r14_s_ { // member variables bool profile0x0006_r14; }; // member variables bool ext; bool max_cid_r14_present; uint16_t max_cid_r14; profiles_r14_s_ profiles_r14; // ... // sequence methods rohc_r14_s_(); }; struct types { enum options { not_used_r14, rohc_r14, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods ul_only_hdr_compress_r14_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters rohc_r14_s_& rohc_r14() { assert_choice_type("rohc-r14", type_.to_string(), "uplinkOnlyHeaderCompression-r14"); return c; } const rohc_r14_s_& rohc_r14() const { assert_choice_type("rohc-r14", type_.to_string(), "uplinkOnlyHeaderCompression-r14"); return c; } private: types type_; rohc_r14_s_ c; }; struct ul_data_compress_r15_s_ { struct buffer_size_r15_e_ { enum options { kbyte2, kbyte4, kbyte8, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods buffer_size_r15_e_() {} buffer_size_r15_e_(options v) : value(v) {} buffer_size_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct dictionary_r15_e_ { enum options { sip_sdp, operator_type }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods dictionary_r15_e_() {} dictionary_r15_e_(options v) : value(v) {} dictionary_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool ext; bool dictionary_r15_present; buffer_size_r15_e_ buffer_size_r15; dictionary_r15_e_ dictionary_r15; // ... // sequence methods ul_data_compress_r15_s_(); }; struct pdcp_dupl_cfg_r15_c_ { struct setup_s_ { struct pdcp_dupl_r15_e_ { enum options { cfgured, activ }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods pdcp_dupl_r15_e_() {} pdcp_dupl_r15_e_(options v) : value(v) {} pdcp_dupl_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables pdcp_dupl_r15_e_ pdcp_dupl_r15; }; typedef setup_e types; // choice methods pdcp_dupl_cfg_r15_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "pdcp-DuplicationConfig-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "pdcp-DuplicationConfig-r15"); return c; } private: types type_; setup_s_ c; }; // member variables bool ext; bool discard_timer_present; bool rlc_am_present; bool rlc_um_present; discard_timer_e_ discard_timer; rlc_am_s_ rlc_am; rlc_um_s_ rlc_um; hdr_compress_c_ hdr_compress; // ... // group 0 bool rn_integrity_protection_r10_present; // group 1 bool pdcp_sn_size_v1130_present; // group 2 bool ul_data_split_drb_via_scg_r12_present; bool t_reordering_r12_present; bool ul_data_split_drb_via_scg_r12; t_reordering_r12_e_ t_reordering_r12; // group 3 bool ul_data_split_thres_r13_present; bool pdcp_sn_size_v1310_present; bool status_feedback_r13_present; copy_ptr ul_data_split_thres_r13; copy_ptr status_feedback_r13; // group 4 bool ul_lwa_cfg_r14_present; bool ul_only_hdr_compress_r14_present; copy_ptr ul_lwa_cfg_r14; copy_ptr ul_only_hdr_compress_r14; // group 5 bool ul_data_compress_r15_present; bool pdcp_dupl_cfg_r15_present; copy_ptr ul_data_compress_r15; copy_ptr pdcp_dupl_cfg_r15; // sequence methods pdcp_cfg_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PUCCH-ConfigDedicated-v1530 ::= SEQUENCE struct pucch_cfg_ded_v1530_s { struct codebooksize_determination_stti_r15_e_ { enum options { dai, cc }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods codebooksize_determination_stti_r15_e_() {} codebooksize_determination_stti_r15_e_(options v) : value(v) {} codebooksize_determination_stti_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool n1_pucch_an_spt_r15_present; bool codebooksize_determination_stti_r15_present; uint16_t n1_pucch_an_spt_r15; codebooksize_determination_stti_r15_e_ codebooksize_determination_stti_r15; // sequence methods pucch_cfg_ded_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PUCCH-Format3-Conf-r13 ::= SEQUENCE struct pucch_format3_conf_r13_s { typedef bounded_array n3_pucch_an_list_r13_l_; struct two_ant_port_activ_pucch_format3_r13_c_ { struct setup_s_ { typedef bounded_array n3_pucch_an_list_p1_r13_l_; // member variables n3_pucch_an_list_p1_r13_l_ n3_pucch_an_list_p1_r13; }; typedef setup_e types; // choice methods two_ant_port_activ_pucch_format3_r13_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "twoAntennaPortActivatedPUCCH-Format3-r13"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "twoAntennaPortActivatedPUCCH-Format3-r13"); return c; } private: types type_; setup_s_ c; }; // member variables bool n3_pucch_an_list_r13_present; bool two_ant_port_activ_pucch_format3_r13_present; n3_pucch_an_list_r13_l_ n3_pucch_an_list_r13; two_ant_port_activ_pucch_format3_r13_c_ two_ant_port_activ_pucch_format3_r13; // sequence methods pucch_format3_conf_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RE-MappingQCLConfigToAddModList-r11 ::= SEQUENCE (SIZE (1..maxRE-MapQCL-r11)) OF PDSCH-RE-MappingQCL-Config-r11 typedef dyn_array re_map_qcl_cfg_to_add_mod_list_r11_l; // RE-MappingQCLConfigToReleaseList-r11 ::= SEQUENCE (SIZE (1..maxRE-MapQCL-r11)) OF INTEGER typedef bounded_array re_map_qcl_cfg_to_release_list_r11_l; // RLC-BearerConfig-r15 ::= CHOICE struct rlc_bearer_cfg_r15_c { struct setup_s_ { struct lc_ch_id_cfg_r15_c_ { struct types { enum options { lc_ch_id_r15, lc_ch_id_ext_r15, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods lc_ch_id_cfg_r15_c_() : type_(types::nulltype) {} lc_ch_id_cfg_r15_c_(const lc_ch_id_cfg_r15_c_& other); lc_ch_id_cfg_r15_c_& operator=(const lc_ch_id_cfg_r15_c_& other); ~lc_ch_id_cfg_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(bit_ref& bref); void to_json(json_writer& j) const; // getters uint8_t& lc_ch_id_r15() { assert_choice_type("logicalChannelIdentity-r15", type_.to_string(), "logicalChannelIdentityConfig-r15"); return c.get(); } uint8_t& lc_ch_id_ext_r15() { assert_choice_type("logicalChannelIdentityExt-r15", type_.to_string(), "logicalChannelIdentityConfig-r15"); return c.get(); } const uint8_t& lc_ch_id_r15() const { assert_choice_type("logicalChannelIdentity-r15", type_.to_string(), "logicalChannelIdentityConfig-r15"); return c.get(); } const uint8_t& lc_ch_id_ext_r15() const { assert_choice_type("logicalChannelIdentityExt-r15", type_.to_string(), "logicalChannelIdentityConfig-r15"); return c.get(); } private: types type_; choice_buffer_t<8> c; void destroy_(); }; // member variables bool rlc_cfg_r15_present; bool lc_ch_cfg_r15_present; rlc_cfg_r15_s rlc_cfg_r15; lc_ch_id_cfg_r15_c_ lc_ch_id_cfg_r15; lc_ch_cfg_s lc_ch_cfg_r15; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods rlc_bearer_cfg_r15_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "RLC-BearerConfig-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "RLC-BearerConfig-r15"); return c; } private: types type_; setup_s_ c; }; // RLC-Config ::= CHOICE struct rlc_cfg_c { struct am_s_ { // member variables ul_am_rlc_s ul_am_rlc; dl_am_rlc_s dl_am_rlc; }; struct um_bi_dir_s_ { // member variables ul_um_rlc_s ul_um_rlc; dl_um_rlc_s dl_um_rlc; }; struct um_uni_dir_ul_s_ { // member variables ul_um_rlc_s ul_um_rlc; }; struct um_uni_dir_dl_s_ { // member variables dl_um_rlc_s dl_um_rlc; }; struct types { enum options { am, um_bi_dir, um_uni_dir_ul, um_uni_dir_dl, /*...*/ nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = true; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods rlc_cfg_c() : type_(types::nulltype) {} rlc_cfg_c(const rlc_cfg_c& other); rlc_cfg_c& operator=(const rlc_cfg_c& other); ~rlc_cfg_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters am_s_& am() { assert_choice_type("am", type_.to_string(), "RLC-Config"); return c.get(); } um_bi_dir_s_& um_bi_dir() { assert_choice_type("um-Bi-Directional", type_.to_string(), "RLC-Config"); return c.get(); } um_uni_dir_ul_s_& um_uni_dir_ul() { assert_choice_type("um-Uni-Directional-UL", type_.to_string(), "RLC-Config"); return c.get(); } um_uni_dir_dl_s_& um_uni_dir_dl() { assert_choice_type("um-Uni-Directional-DL", type_.to_string(), "RLC-Config"); return c.get(); } const am_s_& am() const { assert_choice_type("am", type_.to_string(), "RLC-Config"); return c.get(); } const um_bi_dir_s_& um_bi_dir() const { assert_choice_type("um-Bi-Directional", type_.to_string(), "RLC-Config"); return c.get(); } const um_uni_dir_ul_s_& um_uni_dir_ul() const { assert_choice_type("um-Uni-Directional-UL", type_.to_string(), "RLC-Config"); return c.get(); } const um_uni_dir_dl_s_& um_uni_dir_dl() const { assert_choice_type("um-Uni-Directional-DL", type_.to_string(), "RLC-Config"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // RLC-Config-v1250 ::= SEQUENCE struct rlc_cfg_v1250_s { // member variables bool ul_extended_rlc_li_field_r12; bool dl_extended_rlc_li_field_r12; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RLC-Config-v1310 ::= SEQUENCE struct rlc_cfg_v1310_s { // member variables bool poll_pdu_v1310_present; bool ul_extended_rlc_am_sn_r13; bool dl_extended_rlc_am_sn_r13; poll_pdu_v1310_e poll_pdu_v1310; // sequence methods rlc_cfg_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RLC-Config-v1430 ::= CHOICE struct rlc_cfg_v1430_c { struct setup_s_ { // member variables poll_byte_r14_e poll_byte_r14; }; typedef setup_e types; // choice methods rlc_cfg_v1430_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "RLC-Config-v1430"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "RLC-Config-v1430"); return c; } private: types type_; setup_s_ c; }; // RLC-Config-v1510 ::= SEQUENCE struct rlc_cfg_v1510_s { // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RLC-Config-v1530 ::= CHOICE struct rlc_cfg_v1530_c { struct setup_s_ { }; typedef setup_e types; // choice methods rlc_cfg_v1530_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "RLC-Config-v1530"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "RLC-Config-v1530"); return c; } private: types type_; setup_s_ c; }; // RRCConnectionReject-v1320-IEs ::= SEQUENCE struct rrc_conn_reject_v1320_ies_s { // member variables bool rrc_suspend_ind_r13_present; bool non_crit_ext_present; // sequence methods rrc_conn_reject_v1320_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SPDCCH-Config-r15 ::= CHOICE struct spdcch_cfg_r15_c { struct setup_s_ { struct spdcch_l1_reuse_ind_r15_e_ { enum options { n0, n1, n2 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods spdcch_l1_reuse_ind_r15_e_() {} spdcch_l1_reuse_ind_r15_e_(options v) : value(v) {} spdcch_l1_reuse_ind_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool spdcch_l1_reuse_ind_r15_present; bool spdcch_set_cfg_r15_present; spdcch_l1_reuse_ind_r15_e_ spdcch_l1_reuse_ind_r15; spdcch_set_r15_l spdcch_set_cfg_r15; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods spdcch_cfg_r15_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "SPDCCH-Config-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "SPDCCH-Config-r15"); return c; } private: types type_; setup_s_ c; }; // SPS-ConfigSL-r14 ::= SEQUENCE struct sps_cfg_sl_r14_s { struct semi_persist_sched_interv_sl_r14_e_ { enum options { sf20, sf50, sf100, sf200, sf300, sf400, sf500, sf600, sf700, sf800, sf900, sf1000, spare4, spare3, spare2, spare1 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods semi_persist_sched_interv_sl_r14_e_() {} semi_persist_sched_interv_sl_r14_e_(options v) : value(v) {} semi_persist_sched_interv_sl_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables uint8_t sps_cfg_idx_r14; semi_persist_sched_interv_sl_r14_e_ semi_persist_sched_interv_sl_r14; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SPS-ConfigUL ::= CHOICE struct sps_cfg_ul_c { struct setup_s_ { struct semi_persist_sched_interv_ul_e_ { enum options { sf10, sf20, sf32, sf40, sf64, sf80, sf128, sf160, sf320, sf640, sf1_v1430, sf2_v1430, sf3_v1430, sf4_v1430, sf5_v1430, spare1 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods semi_persist_sched_interv_ul_e_() {} semi_persist_sched_interv_ul_e_(options v) : value(v) {} semi_persist_sched_interv_ul_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct implicit_release_after_e_ { enum options { e2, e3, e4, e8 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods implicit_release_after_e_() {} implicit_release_after_e_(options v) : value(v) {} implicit_release_after_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct p0_persistent_s_ { // member variables int8_t p0_nominal_pusch_persistent; int8_t p0_ue_pusch_persistent; }; struct p0_persistent_sf_set2_r12_c_ { struct setup_s_ { // member variables int8_t p0_nominal_pusch_persistent_sf_set2_r12; int8_t p0_ue_pusch_persistent_sf_set2_r12; }; typedef setup_e types; // choice methods p0_persistent_sf_set2_r12_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "p0-PersistentSubframeSet2-r12"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "p0-PersistentSubframeSet2-r12"); return c; } private: types type_; setup_s_ c; }; struct semi_persist_sched_interv_ul_v1430_e_ { enum options { sf50, sf100, sf200, sf300, sf400, sf500, sf600, sf700, sf800, sf900, sf1000, spare5, spare4, spare3, spare2, spare1 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods semi_persist_sched_interv_ul_v1430_e_() {} semi_persist_sched_interv_ul_v1430_e_(options v) : value(v) {} semi_persist_sched_interv_ul_v1430_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct cyclic_shift_sps_r15_e_ { enum options { cs0, cs1, cs2, cs3, cs4, cs5, cs6, cs7 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods cyclic_shift_sps_r15_e_() {} cyclic_shift_sps_r15_e_(options v) : value(v) {} cyclic_shift_sps_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct rv_sps_ul_repeats_r15_e_ { enum options { ulrvseq1, ulrvseq2, ulrvseq3 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods rv_sps_ul_repeats_r15_e_() {} rv_sps_ul_repeats_r15_e_(options v) : value(v) {} rv_sps_ul_repeats_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct total_num_pusch_sps_ul_repeats_r15_e_ { enum options { n2, n3, n4, n6 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods total_num_pusch_sps_ul_repeats_r15_e_() {} total_num_pusch_sps_ul_repeats_r15_e_(options v) : value(v) {} total_num_pusch_sps_ul_repeats_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ext; bool p0_persistent_present; bool two_intervs_cfg_present; semi_persist_sched_interv_ul_e_ semi_persist_sched_interv_ul; implicit_release_after_e_ implicit_release_after; p0_persistent_s_ p0_persistent; // ... // group 0 bool p0_persistent_sf_set2_r12_present; copy_ptr p0_persistent_sf_set2_r12; // group 1 bool nof_conf_ul_sps_processes_r13_present; uint8_t nof_conf_ul_sps_processes_r13; // group 2 bool fixed_rv_non_adaptive_r14_present; bool sps_cfg_idx_r14_present; bool semi_persist_sched_interv_ul_v1430_present; uint8_t sps_cfg_idx_r14; semi_persist_sched_interv_ul_v1430_e_ semi_persist_sched_interv_ul_v1430; // group 3 bool cyclic_shift_sps_r15_present; bool harq_proc_id_offset_r15_present; bool rv_sps_ul_repeats_r15_present; bool tpc_pdcch_cfg_pusch_sps_r15_present; bool total_num_pusch_sps_ul_repeats_r15_present; bool sps_cfg_idx_r15_present; cyclic_shift_sps_r15_e_ cyclic_shift_sps_r15; uint8_t harq_proc_id_offset_r15; rv_sps_ul_repeats_r15_e_ rv_sps_ul_repeats_r15; copy_ptr tpc_pdcch_cfg_pusch_sps_r15; total_num_pusch_sps_ul_repeats_r15_e_ total_num_pusch_sps_ul_repeats_r15; uint8_t sps_cfg_idx_r15; // sequence methods setup_s_(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; typedef setup_e types; // choice methods sps_cfg_ul_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "SPS-ConfigUL"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "SPS-ConfigUL"); return c; } private: types type_; setup_s_ c; }; // SPS-ConfigUL-STTI-r15 ::= CHOICE struct sps_cfg_ul_stti_r15_c { struct setup_s_ { struct semi_persist_sched_interv_ul_stti_r15_e_ { enum options { s_tti1, s_tti2, s_tti3, s_tti4, s_tti6, s_tti8, s_tti12, s_tti16, s_tti20, s_tti40, s_tti60, s_tti80, s_tti120, s_tti240, spare2, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods semi_persist_sched_interv_ul_stti_r15_e_() {} semi_persist_sched_interv_ul_stti_r15_e_(options v) : value(v) {} semi_persist_sched_interv_ul_stti_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct implicit_release_after_e_ { enum options { e2, e3, e4, e8 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods implicit_release_after_e_() {} implicit_release_after_e_(options v) : value(v) {} implicit_release_after_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct p0_persistent_r15_s_ { // member variables int8_t p0_nominal_spusch_persistent_r15; int8_t p0_ue_spusch_persistent_r15; }; struct p0_persistent_sf_set2_r15_c_ { struct setup_s_ { // member variables int8_t p0_nominal_spusch_persistent_sf_set2_r15; int8_t p0_ue_spusch_persistent_sf_set2_r15; }; typedef setup_e types; // choice methods p0_persistent_sf_set2_r15_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "p0-PersistentSubframeSet2-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "p0-PersistentSubframeSet2-r15"); return c; } private: types type_; setup_s_ c; }; struct cyclic_shift_sps_s_tti_r15_e_ { enum options { cs0, cs1, cs2, cs3, cs4, cs5, cs6, cs7 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods cyclic_shift_sps_s_tti_r15_e_() {} cyclic_shift_sps_s_tti_r15_e_(options v) : value(v) {} cyclic_shift_sps_s_tti_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct rv_sps_stti_ul_repeats_r15_e_ { enum options { ulrvseq1, ulrvseq2, ulrvseq3 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods rv_sps_stti_ul_repeats_r15_e_() {} rv_sps_stti_ul_repeats_r15_e_(options v) : value(v) {} rv_sps_stti_ul_repeats_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct tbs_scaling_factor_subslot_sps_ul_repeats_r15_e_ { enum options { n6, n12 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods tbs_scaling_factor_subslot_sps_ul_repeats_r15_e_() {} tbs_scaling_factor_subslot_sps_ul_repeats_r15_e_(options v) : value(v) {} tbs_scaling_factor_subslot_sps_ul_repeats_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct total_num_pusch_sps_stti_ul_repeats_r15_e_ { enum options { n2, n3, n4, n6 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods total_num_pusch_sps_stti_ul_repeats_r15_e_() {} total_num_pusch_sps_stti_ul_repeats_r15_e_(options v) : value(v) {} total_num_pusch_sps_stti_ul_repeats_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ext; bool p0_persistent_r15_present; bool two_intervs_cfg_r15_present; bool p0_persistent_sf_set2_r15_present; bool nof_conf_ul_sps_processes_stti_r15_present; bool tpc_pdcch_cfg_pusch_sps_r15_present; bool cyclic_shift_sps_s_tti_r15_present; bool ifdma_cfg_sps_r15_present; bool harq_proc_id_offset_r15_present; bool rv_sps_stti_ul_repeats_r15_present; bool sps_cfg_idx_r15_present; bool tbs_scaling_factor_subslot_sps_ul_repeats_r15_present; bool total_num_pusch_sps_stti_ul_repeats_r15_present; semi_persist_sched_interv_ul_stti_r15_e_ semi_persist_sched_interv_ul_stti_r15; implicit_release_after_e_ implicit_release_after; p0_persistent_r15_s_ p0_persistent_r15; p0_persistent_sf_set2_r15_c_ p0_persistent_sf_set2_r15; uint8_t nof_conf_ul_sps_processes_stti_r15; uint8_t s_tti_start_time_ul_r15; tpc_pdcch_cfg_c tpc_pdcch_cfg_pusch_sps_r15; cyclic_shift_sps_s_tti_r15_e_ cyclic_shift_sps_s_tti_r15; bool ifdma_cfg_sps_r15; uint8_t harq_proc_id_offset_r15; rv_sps_stti_ul_repeats_r15_e_ rv_sps_stti_ul_repeats_r15; uint8_t sps_cfg_idx_r15; tbs_scaling_factor_subslot_sps_ul_repeats_r15_e_ tbs_scaling_factor_subslot_sps_ul_repeats_r15; total_num_pusch_sps_stti_ul_repeats_r15_e_ total_num_pusch_sps_stti_ul_repeats_r15; // ... // sequence methods setup_s_(); }; typedef setup_e types; // choice methods sps_cfg_ul_stti_r15_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "SPS-ConfigUL-STTI-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "SPS-ConfigUL-STTI-r15"); return c; } private: types type_; setup_s_ c; }; // SPUCCH-Config-r15 ::= CHOICE struct spucch_cfg_r15_c { struct setup_s_ { struct two_ant_port_activ_spucch_format3_r15_s_ { typedef bounded_array n3_spucch_an_list_r15_l_; // member variables n3_spucch_an_list_r15_l_ n3_spucch_an_list_r15; }; // member variables bool spucch_set_r15_present; bool two_ant_port_activ_spucch_format1a1b_r15_present; spucch_set_r15_l spucch_set_r15; two_ant_port_activ_spucch_format3_r15_s_ two_ant_port_activ_spucch_format3_r15; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods spucch_cfg_r15_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "SPUCCH-Config-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "SPUCCH-Config-r15"); return c; } private: types type_; setup_s_ c; }; // SRS-CC-SetIndex-r14 ::= SEQUENCE struct srs_cc_set_idx_r14_s { // member variables uint8_t cc_set_idx_r14; uint8_t cc_idx_in_one_cc_set_r14; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SRS-ConfigAp-r10 ::= SEQUENCE struct srs_cfg_ap_r10_s { struct srs_bw_ap_r10_e_ { enum options { bw0, bw1, bw2, bw3 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods srs_bw_ap_r10_e_() {} srs_bw_ap_r10_e_(options v) : value(v) {} srs_bw_ap_r10_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct cyclic_shift_ap_r10_e_ { enum options { cs0, cs1, cs2, cs3, cs4, cs5, cs6, cs7 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods cyclic_shift_ap_r10_e_() {} cyclic_shift_ap_r10_e_(options v) : value(v) {} cyclic_shift_ap_r10_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables srs_ant_port_e srs_ant_port_ap_r10; srs_bw_ap_r10_e_ srs_bw_ap_r10; uint8_t freq_domain_position_ap_r10; uint8_t tx_comb_ap_r10; cyclic_shift_ap_r10_e_ cyclic_shift_ap_r10; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SRS-ConfigAp-r13 ::= SEQUENCE struct srs_cfg_ap_r13_s { struct srs_bw_ap_r13_e_ { enum options { bw0, bw1, bw2, bw3 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods srs_bw_ap_r13_e_() {} srs_bw_ap_r13_e_(options v) : value(v) {} srs_bw_ap_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct cyclic_shift_ap_r13_e_ { enum options { cs0, cs1, cs2, cs3, cs4, cs5, cs6, cs7, cs8, cs9, cs10, cs11 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 12, nof_exts = 0; static const bool has_ext = false; // enumerated methods cyclic_shift_ap_r13_e_() {} cyclic_shift_ap_r13_e_(options v) : value(v) {} cyclic_shift_ap_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct tx_comb_num_r13_e_ { enum options { n2, n4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods tx_comb_num_r13_e_() {} tx_comb_num_r13_e_(options v) : value(v) {} tx_comb_num_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables srs_ant_port_e srs_ant_port_ap_r13; srs_bw_ap_r13_e_ srs_bw_ap_r13; uint8_t freq_domain_position_ap_r13; uint8_t tx_comb_ap_r13; cyclic_shift_ap_r13_e_ cyclic_shift_ap_r13; tx_comb_num_r13_e_ tx_comb_num_r13; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SRS-ConfigAp-v1310 ::= SEQUENCE struct srs_cfg_ap_v1310_s { struct cyclic_shift_ap_v1310_e_ { enum options { cs8, cs9, cs10, cs11 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods cyclic_shift_ap_v1310_e_() {} cyclic_shift_ap_v1310_e_(options v) : value(v) {} cyclic_shift_ap_v1310_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct tx_comb_num_r13_e_ { enum options { n2, n4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods tx_comb_num_r13_e_() {} tx_comb_num_r13_e_(options v) : value(v) {} tx_comb_num_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool tx_comb_ap_v1310_present; bool cyclic_shift_ap_v1310_present; bool tx_comb_num_r13_present; uint8_t tx_comb_ap_v1310; cyclic_shift_ap_v1310_e_ cyclic_shift_ap_v1310; tx_comb_num_r13_e_ tx_comb_num_r13; // sequence methods srs_cfg_ap_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // STAG-ToAddMod-r11 ::= SEQUENCE struct stag_to_add_mod_r11_s { // member variables bool ext; uint8_t stag_id_r11; time_align_timer_e time_align_timer_stag_r11; // ... // sequence methods stag_to_add_mod_r11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SchedulingRequestConfig-v1530 ::= CHOICE struct sched_request_cfg_v1530_c { struct setup_s_ { struct dssr_trans_max_r15_e_ { enum options { n4, n8, n16, n32, n64, spare3, spare2, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods dssr_trans_max_r15_e_() {} dssr_trans_max_r15_e_(options v) : value(v) {} dssr_trans_max_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool sr_slot_spucch_idx_fh_r15_present; bool sr_slot_spucch_idx_no_fh_r15_present; bool sr_subslot_spucch_res_list_r15_present; bool sr_cfg_idx_slot_r15_present; bool sr_cfg_idx_subslot_r15_present; uint16_t sr_slot_spucch_idx_fh_r15; uint16_t sr_slot_spucch_idx_no_fh_r15; sr_subslot_spucch_res_list_r15_l sr_subslot_spucch_res_list_r15; uint8_t sr_cfg_idx_slot_r15; uint8_t sr_cfg_idx_subslot_r15; dssr_trans_max_r15_e_ dssr_trans_max_r15; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods sched_request_cfg_v1530_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "SchedulingRequestConfig-v1530"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "SchedulingRequestConfig-v1530"); return c; } private: types type_; setup_s_ c; }; // ShortTTI-r15 ::= SEQUENCE struct short_tti_r15_s { // member variables bool dl_stti_len_r15_present; bool ul_stti_len_r15_present; short_tti_len_r15_e dl_stti_len_r15; short_tti_len_r15_e ul_stti_len_r15; // sequence methods short_tti_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SlotOrSubslotPDSCH-Config-r15 ::= CHOICE struct slot_or_subslot_pdsch_cfg_r15_c { struct setup_s_ { struct alt_cqi_table_stti_r15_e_ { enum options { all_sfs, csi_sf_set1, csi_sf_set2, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods alt_cqi_table_stti_r15_e_() {} alt_cqi_table_stti_r15_e_(options v) : value(v) {} alt_cqi_table_stti_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct alt_cqi_table1024_qam_stti_r15_e_ { enum options { all_sfs, csi_sf_set1, csi_sf_set2, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods alt_cqi_table1024_qam_stti_r15_e_() {} alt_cqi_table1024_qam_stti_r15_e_(options v) : value(v) {} alt_cqi_table1024_qam_stti_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct res_alloc_r15_e_ { enum options { res_alloc_type0, res_alloc_type2 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods res_alloc_r15_e_() {} res_alloc_r15_e_(options v) : value(v) {} res_alloc_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ext; bool alt_cqi_table_stti_r15_present; bool alt_cqi_table1024_qam_stti_r15_present; bool res_alloc_r15_present; bool tbs_idx_alt_stti_r15_present; bool tbs_idx_alt2_stti_r15_present; bool tbs_idx_alt3_stti_r15_present; alt_cqi_table_stti_r15_e_ alt_cqi_table_stti_r15; alt_cqi_table1024_qam_stti_r15_e_ alt_cqi_table1024_qam_stti_r15; res_alloc_r15_e_ res_alloc_r15; // ... // sequence methods setup_s_(); }; typedef setup_e types; // choice methods slot_or_subslot_pdsch_cfg_r15_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "SlotOrSubslotPDSCH-Config-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "SlotOrSubslotPDSCH-Config-r15"); return c; } private: types type_; setup_s_ c; }; // SlotOrSubslotPUSCH-Config-r15 ::= CHOICE struct slot_or_subslot_pusch_cfg_r15_c { struct setup_s_ { typedef bounded_array beta_offset_subslot_ack_idx_r15_l_; typedef bounded_array beta_offset2_subslot_ack_idx_r15_l_; typedef bounded_array beta_offset_subslot_ri_idx_r15_l_; // member variables bool ext; bool beta_offset_slot_ack_idx_r15_present; bool beta_offset2_slot_ack_idx_r15_present; bool beta_offset_subslot_ack_idx_r15_present; bool beta_offset2_subslot_ack_idx_r15_present; bool beta_offset_slot_ri_idx_r15_present; bool beta_offset_subslot_ri_idx_r15_present; bool beta_offset_slot_cqi_idx_r15_present; bool beta_offset_subslot_cqi_idx_r15_present; bool enable256_qam_slot_or_subslot_r15_present; bool res_alloc_offset_r15_present; uint8_t beta_offset_slot_ack_idx_r15; uint8_t beta_offset2_slot_ack_idx_r15; beta_offset_subslot_ack_idx_r15_l_ beta_offset_subslot_ack_idx_r15; beta_offset2_subslot_ack_idx_r15_l_ beta_offset2_subslot_ack_idx_r15; uint8_t beta_offset_slot_ri_idx_r15; beta_offset_subslot_ri_idx_r15_l_ beta_offset_subslot_ri_idx_r15; uint8_t beta_offset_slot_cqi_idx_r15; uint8_t beta_offset_subslot_cqi_idx_r15; enable256_qam_r14_c enable256_qam_slot_or_subslot_r15; uint8_t res_alloc_offset_r15; bool ul_dmrs_ifdma_slot_or_subslot_r15; // ... // sequence methods setup_s_(); }; typedef setup_e types; // choice methods slot_or_subslot_pusch_cfg_r15_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "SlotOrSubslotPUSCH-Config-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "SlotOrSubslotPUSCH-Config-r15"); return c; } private: types type_; setup_s_ c; }; // TDD-PUSCH-UpPTS-r14 ::= CHOICE struct tdd_pusch_up_pts_r14_c { struct setup_s_ { struct sym_pusch_up_pts_r14_e_ { enum options { sym1, sym2, sym3, sym4, sym5, sym6 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods sym_pusch_up_pts_r14_e_() {} sym_pusch_up_pts_r14_e_(options v) : value(v) {} sym_pusch_up_pts_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool sym_pusch_up_pts_r14_present; bool dmrs_less_up_pts_cfg_r14_present; sym_pusch_up_pts_r14_e_ sym_pusch_up_pts_r14; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods tdd_pusch_up_pts_r14_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "TDD-PUSCH-UpPTS-r14"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "TDD-PUSCH-UpPTS-r14"); return c; } private: types type_; setup_s_ c; }; // UplinkPowerControlDedicatedSTTI-r15 ::= SEQUENCE struct ul_pwr_ctrl_ded_stti_r15_s { // member variables bool delta_tx_d_offset_list_spucch_r15_present; bool accumulation_enabled_stti_r15; delta_tx_d_offset_list_spucch_r15_s delta_tx_d_offset_list_spucch_r15; bool ul_pwr_csi_payload; // sequence methods ul_pwr_ctrl_ded_stti_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AntennaInfoDedicated ::= SEQUENCE struct ant_info_ded_s { struct tx_mode_e_ { enum options { tm1, tm2, tm3, tm4, tm5, tm6, tm7, tm8_v920 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods tx_mode_e_() {} tx_mode_e_(options v) : value(v) {} tx_mode_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct codebook_subset_restrict_c_ { struct types { enum options { n2_tx_ant_tm3, n4_tx_ant_tm3, n2_tx_ant_tm4, n4_tx_ant_tm4, n2_tx_ant_tm5, n4_tx_ant_tm5, n2_tx_ant_tm6, n4_tx_ant_tm6, nulltype }; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods codebook_subset_restrict_c_() : type_(types::nulltype) {} codebook_subset_restrict_c_(const codebook_subset_restrict_c_& other); codebook_subset_restrict_c_& operator=(const codebook_subset_restrict_c_& other); ~codebook_subset_restrict_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<2>& n2_tx_ant_tm3() { assert_choice_type("n2TxAntenna-tm3", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } fixed_bitstring<4>& n4_tx_ant_tm3() { assert_choice_type("n4TxAntenna-tm3", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } fixed_bitstring<6>& n2_tx_ant_tm4() { assert_choice_type("n2TxAntenna-tm4", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } fixed_bitstring<64>& n4_tx_ant_tm4() { assert_choice_type("n4TxAntenna-tm4", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } fixed_bitstring<4>& n2_tx_ant_tm5() { assert_choice_type("n2TxAntenna-tm5", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } fixed_bitstring<16>& n4_tx_ant_tm5() { assert_choice_type("n4TxAntenna-tm5", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } fixed_bitstring<4>& n2_tx_ant_tm6() { assert_choice_type("n2TxAntenna-tm6", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } fixed_bitstring<16>& n4_tx_ant_tm6() { assert_choice_type("n4TxAntenna-tm6", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } const fixed_bitstring<2>& n2_tx_ant_tm3() const { assert_choice_type("n2TxAntenna-tm3", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } const fixed_bitstring<4>& n4_tx_ant_tm3() const { assert_choice_type("n4TxAntenna-tm3", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } const fixed_bitstring<6>& n2_tx_ant_tm4() const { assert_choice_type("n2TxAntenna-tm4", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } const fixed_bitstring<64>& n4_tx_ant_tm4() const { assert_choice_type("n4TxAntenna-tm4", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } const fixed_bitstring<4>& n2_tx_ant_tm5() const { assert_choice_type("n2TxAntenna-tm5", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } const fixed_bitstring<16>& n4_tx_ant_tm5() const { assert_choice_type("n4TxAntenna-tm5", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } const fixed_bitstring<4>& n2_tx_ant_tm6() const { assert_choice_type("n2TxAntenna-tm6", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } const fixed_bitstring<16>& n4_tx_ant_tm6() const { assert_choice_type("n4TxAntenna-tm6", type_.to_string(), "codebookSubsetRestriction"); return c.get >(); } private: types type_; choice_buffer_t)> c; void destroy_(); }; struct ue_tx_ant_sel_c_ { struct setup_e_ { enum options { closed_loop, open_loop }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods setup_e_() {} setup_e_(options v) : value(v) {} setup_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; typedef setup_e types; // choice methods ue_tx_ant_sel_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_e_& setup() { assert_choice_type("setup", type_.to_string(), "ue-TransmitAntennaSelection"); return c; } const setup_e_& setup() const { assert_choice_type("setup", type_.to_string(), "ue-TransmitAntennaSelection"); return c; } private: types type_; setup_e_ c; }; // member variables bool codebook_subset_restrict_present; tx_mode_e_ tx_mode; codebook_subset_restrict_c_ codebook_subset_restrict; ue_tx_ant_sel_c_ ue_tx_ant_sel; // sequence methods ant_info_ded_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AntennaInfoDedicated-r10 ::= SEQUENCE struct ant_info_ded_r10_s { struct tx_mode_r10_e_ { enum options { tm1, tm2, tm3, tm4, tm5, tm6, tm7, tm8_v920, tm9_v1020, tm10_v1130, spare6, spare5, spare4, spare3, spare2, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods tx_mode_r10_e_() {} tx_mode_r10_e_(options v) : value(v) {} tx_mode_r10_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct ue_tx_ant_sel_c_ { struct setup_e_ { enum options { closed_loop, open_loop }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods setup_e_() {} setup_e_(options v) : value(v) {} setup_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; typedef setup_e types; // choice methods ue_tx_ant_sel_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_e_& setup() { assert_choice_type("setup", type_.to_string(), "ue-TransmitAntennaSelection"); return c; } const setup_e_& setup() const { assert_choice_type("setup", type_.to_string(), "ue-TransmitAntennaSelection"); return c; } private: types type_; setup_e_ c; }; // member variables bool codebook_subset_restrict_r10_present; tx_mode_r10_e_ tx_mode_r10; dyn_bitstring codebook_subset_restrict_r10; ue_tx_ant_sel_c_ ue_tx_ant_sel; // sequence methods ant_info_ded_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AntennaInfoDedicated-v1250 ::= SEQUENCE struct ant_info_ded_v1250_s { // member variables bool alternative_codebook_enabled_for4_tx_r12; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AntennaInfoDedicated-v1430 ::= SEQUENCE struct ant_info_ded_v1430_s { // member variables bool ce_ue_tx_ant_sel_cfg_r14_present; // sequence methods ant_info_ded_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AntennaInfoDedicated-v1530 ::= CHOICE struct ant_info_ded_v1530_c { struct setup_c_ { struct ue_tx_ant_sel_srs_minus2_t4_r_nr_of_pairs_r15_e_ { enum options { two, three }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods ue_tx_ant_sel_srs_minus2_t4_r_nr_of_pairs_r15_e_() {} ue_tx_ant_sel_srs_minus2_t4_r_nr_of_pairs_r15_e_(options v) : value(v) {} ue_tx_ant_sel_srs_minus2_t4_r_nr_of_pairs_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct types { enum options { ue_tx_ant_sel_srs_minus1_t4_r_cfg_r15, ue_tx_ant_sel_srs_minus2_t4_r_nr_of_pairs_r15, nulltype }; typedef int8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; // choice methods setup_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters ue_tx_ant_sel_srs_minus2_t4_r_nr_of_pairs_r15_e_& ue_tx_ant_sel_srs_minus2_t4_r_nr_of_pairs_r15() { assert_choice_type("ue-TxAntennaSelection-SRS-2T4R-NrOfPairs-r15", type_.to_string(), "setup"); return c; } const ue_tx_ant_sel_srs_minus2_t4_r_nr_of_pairs_r15_e_& ue_tx_ant_sel_srs_minus2_t4_r_nr_of_pairs_r15() const { assert_choice_type("ue-TxAntennaSelection-SRS-2T4R-NrOfPairs-r15", type_.to_string(), "setup"); return c; } private: types type_; ue_tx_ant_sel_srs_minus2_t4_r_nr_of_pairs_r15_e_ c; }; typedef setup_e types; // choice methods ant_info_ded_v1530_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_c_& setup() { assert_choice_type("setup", type_.to_string(), "AntennaInfoDedicated-v1530"); return c; } const setup_c_& setup() const { assert_choice_type("setup", type_.to_string(), "AntennaInfoDedicated-v1530"); return c; } private: types type_; setup_c_ c; }; // AntennaInfoDedicated-v920 ::= SEQUENCE struct ant_info_ded_v920_s { struct codebook_subset_restrict_v920_c_ { struct types { enum options { n2_tx_ant_tm8_r9, n4_tx_ant_tm8_r9, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods codebook_subset_restrict_v920_c_() : type_(types::nulltype) {} codebook_subset_restrict_v920_c_(const codebook_subset_restrict_v920_c_& other); codebook_subset_restrict_v920_c_& operator=(const codebook_subset_restrict_v920_c_& other); ~codebook_subset_restrict_v920_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<6>& n2_tx_ant_tm8_r9() { assert_choice_type("n2TxAntenna-tm8-r9", type_.to_string(), "codebookSubsetRestriction-v920"); return c.get >(); } fixed_bitstring<32>& n4_tx_ant_tm8_r9() { assert_choice_type("n4TxAntenna-tm8-r9", type_.to_string(), "codebookSubsetRestriction-v920"); return c.get >(); } const fixed_bitstring<6>& n2_tx_ant_tm8_r9() const { assert_choice_type("n2TxAntenna-tm8-r9", type_.to_string(), "codebookSubsetRestriction-v920"); return c.get >(); } const fixed_bitstring<32>& n4_tx_ant_tm8_r9() const { assert_choice_type("n4TxAntenna-tm8-r9", type_.to_string(), "codebookSubsetRestriction-v920"); return c.get >(); } private: types type_; choice_buffer_t)> c; void destroy_(); }; // member variables bool codebook_subset_restrict_v920_present; codebook_subset_restrict_v920_c_ codebook_subset_restrict_v920; // sequence methods ant_info_ded_v920_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AntennaInfoUL-r10 ::= SEQUENCE struct ant_info_ul_r10_s { struct tx_mode_ul_r10_e_ { enum options { tm1, tm2, spare6, spare5, spare4, spare3, spare2, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods tx_mode_ul_r10_e_() {} tx_mode_ul_r10_e_(options v) : value(v) {} tx_mode_ul_r10_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool tx_mode_ul_r10_present; bool four_ant_port_activ_r10_present; tx_mode_ul_r10_e_ tx_mode_ul_r10; // sequence methods ant_info_ul_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandClassPriority1XRTT ::= SEQUENCE struct band_class_prio1_xrtt_s { // member variables bandclass_cdma2000_e band_class; uint8_t cell_resel_prio; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandClassPriorityHRPD ::= SEQUENCE struct band_class_prio_hrpd_s { // member variables bandclass_cdma2000_e band_class; uint8_t cell_resel_prio; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CFI-Config-r15 ::= SEQUENCE struct cfi_cfg_r15_s { // member variables bool cfi_sf_non_mbsfn_r15_present; bool cfi_slot_subslot_non_mbsfn_r15_present; bool cfi_sf_mbsfn_r15_present; bool cfi_slot_subslot_mbsfn_r15_present; uint8_t cfi_sf_non_mbsfn_r15; uint8_t cfi_slot_subslot_non_mbsfn_r15; uint8_t cfi_sf_mbsfn_r15; uint8_t cfi_slot_subslot_mbsfn_r15; // sequence methods cfi_cfg_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CFI-PatternConfig-r15 ::= SEQUENCE struct cfi_pattern_cfg_r15_s { typedef fixed_array cfi_pattern_sf_r15_l_; typedef fixed_array cfi_pattern_slot_subslot_r15_l_; // member variables bool cfi_pattern_sf_r15_present; bool cfi_pattern_slot_subslot_r15_present; cfi_pattern_sf_r15_l_ cfi_pattern_sf_r15; cfi_pattern_slot_subslot_r15_l_ cfi_pattern_slot_subslot_r15; // sequence methods cfi_pattern_cfg_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CQI-ReportConfig ::= SEQUENCE struct cqi_report_cfg_s { // member variables bool cqi_report_mode_aperiodic_present; bool cqi_report_periodic_present; cqi_report_mode_aperiodic_e cqi_report_mode_aperiodic; int8_t nom_pdsch_rs_epre_offset; cqi_report_periodic_c cqi_report_periodic; // sequence methods cqi_report_cfg_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CQI-ReportConfig-v1530 ::= SEQUENCE struct cqi_report_cfg_v1530_s { struct alt_cqi_table_minus1024_qam_r15_e_ { enum options { all_sfs, csi_sf_set1, csi_sf_set2, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods alt_cqi_table_minus1024_qam_r15_e_() {} alt_cqi_table_minus1024_qam_r15_e_(options v) : value(v) {} alt_cqi_table_minus1024_qam_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool alt_cqi_table_minus1024_qam_r15_present; alt_cqi_table_minus1024_qam_r15_e_ alt_cqi_table_minus1024_qam_r15; // sequence methods cqi_report_cfg_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CQI-ReportConfig-v920 ::= SEQUENCE struct cqi_report_cfg_v920_s { // member variables bool cqi_mask_r9_present; bool pmi_ri_report_r9_present; // sequence methods cqi_report_cfg_v920_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CRS-AssistanceInfoList-r11 ::= SEQUENCE (SIZE (1..maxCellReport)) OF CRS-AssistanceInfo-r11 typedef dyn_array crs_assist_info_list_r11_l; // CRS-AssistanceInfoList-r13 ::= SEQUENCE (SIZE (1..maxCellReport)) OF CRS-AssistanceInfo-r13 typedef dyn_array crs_assist_info_list_r13_l; // CRS-AssistanceInfoList-r15 ::= SEQUENCE (SIZE (1..maxCellReport)) OF CRS-AssistanceInfo-r15 typedef dyn_array crs_assist_info_list_r15_l; // CSI-RS-Config-v1480 ::= SEQUENCE struct csi_rs_cfg_v1480_s { // member variables bool e_mimo_type_v1480_present; csi_rs_cfg_emimo_v1480_c e_mimo_type_v1480; // sequence methods csi_rs_cfg_v1480_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSI-RS-Config-v1530 ::= SEQUENCE struct csi_rs_cfg_v1530_s { // member variables bool e_mimo_type_v1530_present; csi_rs_cfg_emimo_v1530_c e_mimo_type_v1530; // sequence methods csi_rs_cfg_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSI-RS-ConfigNZPToAddModList-r11 ::= SEQUENCE (SIZE (1..maxCSI-RS-NZP-r11)) OF CSI-RS-ConfigNZP-r11 typedef dyn_array csi_rs_cfg_nzp_to_add_mod_list_r11_l; // CSI-RS-ConfigNZPToAddModListExt-r13 ::= SEQUENCE (SIZE (1..maxCSI-RS-NZP-v1310)) OF CSI-RS-ConfigNZP-r11 typedef dyn_array csi_rs_cfg_nzp_to_add_mod_list_ext_r13_l; // CSI-RS-ConfigNZPToReleaseList-r11 ::= SEQUENCE (SIZE (1..maxCSI-RS-NZP-r11)) OF INTEGER typedef bounded_array csi_rs_cfg_nzp_to_release_list_r11_l; // CSI-RS-ConfigNZPToReleaseListExt-r13 ::= SEQUENCE (SIZE (1..maxCSI-RS-NZP-v1310)) OF INTEGER typedef bounded_array csi_rs_cfg_nzp_to_release_list_ext_r13_l; // DRB-ToAddMod ::= SEQUENCE struct drb_to_add_mod_s { struct drb_type_lwip_r13_e_ { enum options { lwip, lwip_dl_only, lwip_ul_only, eutran }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods drb_type_lwip_r13_e_() {} drb_type_lwip_r13_e_(options v) : value(v) {} drb_type_lwip_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct lwa_wlan_ac_r14_e_ { enum options { ac_bk, ac_be, ac_vi, ac_vo }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods lwa_wlan_ac_r14_e_() {} lwa_wlan_ac_r14_e_(options v) : value(v) {} lwa_wlan_ac_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool ext; bool eps_bearer_id_present; bool pdcp_cfg_present; bool rlc_cfg_present; bool lc_ch_id_present; bool lc_ch_cfg_present; uint8_t eps_bearer_id; uint8_t drb_id; pdcp_cfg_s pdcp_cfg; rlc_cfg_c rlc_cfg; uint8_t lc_ch_id; lc_ch_cfg_s lc_ch_cfg; // ... // group 0 bool drb_type_change_r12_present; bool rlc_cfg_v1250_present; copy_ptr rlc_cfg_v1250; // group 1 bool rlc_cfg_v1310_present; bool drb_type_lwa_r13_present; bool drb_type_lwip_r13_present; copy_ptr rlc_cfg_v1310; bool drb_type_lwa_r13; drb_type_lwip_r13_e_ drb_type_lwip_r13; // group 2 bool rlc_cfg_v1430_present; bool lwip_ul_aggregation_r14_present; bool lwip_dl_aggregation_r14_present; bool lwa_wlan_ac_r14_present; copy_ptr rlc_cfg_v1430; bool lwip_ul_aggregation_r14; bool lwip_dl_aggregation_r14; lwa_wlan_ac_r14_e_ lwa_wlan_ac_r14; // group 3 bool rlc_cfg_v1510_present; copy_ptr rlc_cfg_v1510; // group 4 bool rlc_cfg_v1530_present; bool rlc_bearer_cfg_dupl_r15_present; bool lc_ch_id_r15_present; copy_ptr rlc_cfg_v1530; copy_ptr rlc_bearer_cfg_dupl_r15; uint8_t lc_ch_id_r15; // sequence methods drb_to_add_mod_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DRX-Config ::= CHOICE struct drx_cfg_c { struct setup_s_ { struct on_dur_timer_e_ { enum options { psf1, psf2, psf3, psf4, psf5, psf6, psf8, psf10, psf20, psf30, psf40, psf50, psf60, psf80, psf100, psf200 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods on_dur_timer_e_() {} on_dur_timer_e_(options v) : value(v) {} on_dur_timer_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct drx_inactivity_timer_e_ { enum options { psf1, psf2, psf3, psf4, psf5, psf6, psf8, psf10, psf20, psf30, psf40, psf50, psf60, psf80, psf100, psf200, psf300, psf500, psf750, psf1280, psf1920, psf2560, psf0_v1020, spare9, spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 32, nof_exts = 0; static const bool has_ext = false; // enumerated methods drx_inactivity_timer_e_() {} drx_inactivity_timer_e_(options v) : value(v) {} drx_inactivity_timer_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct drx_retx_timer_e_ { enum options { psf1, psf2, psf4, psf6, psf8, psf16, psf24, psf33 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods drx_retx_timer_e_() {} drx_retx_timer_e_(options v) : value(v) {} drx_retx_timer_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct long_drx_cycle_start_offset_c_ { struct types { enum options { sf10, sf20, sf32, sf40, sf64, sf80, sf128, sf160, sf256, sf320, sf512, sf640, sf1024, sf1280, sf2048, sf2560, nulltype }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // choice methods long_drx_cycle_start_offset_c_() : type_(types::nulltype) {} long_drx_cycle_start_offset_c_(const long_drx_cycle_start_offset_c_& other); long_drx_cycle_start_offset_c_& operator=(const long_drx_cycle_start_offset_c_& other); ~long_drx_cycle_start_offset_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint8_t& sf10() { assert_choice_type("sf10", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } uint8_t& sf20() { assert_choice_type("sf20", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } uint8_t& sf32() { assert_choice_type("sf32", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } uint8_t& sf40() { assert_choice_type("sf40", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } uint8_t& sf64() { assert_choice_type("sf64", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } uint8_t& sf80() { assert_choice_type("sf80", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } uint8_t& sf128() { assert_choice_type("sf128", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } uint8_t& sf160() { assert_choice_type("sf160", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } uint8_t& sf256() { assert_choice_type("sf256", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } uint16_t& sf320() { assert_choice_type("sf320", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } uint16_t& sf512() { assert_choice_type("sf512", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } uint16_t& sf640() { assert_choice_type("sf640", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } uint16_t& sf1024() { assert_choice_type("sf1024", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } uint16_t& sf1280() { assert_choice_type("sf1280", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } uint16_t& sf2048() { assert_choice_type("sf2048", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } uint16_t& sf2560() { assert_choice_type("sf2560", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } const uint8_t& sf10() const { assert_choice_type("sf10", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } const uint8_t& sf20() const { assert_choice_type("sf20", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } const uint8_t& sf32() const { assert_choice_type("sf32", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } const uint8_t& sf40() const { assert_choice_type("sf40", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } const uint8_t& sf64() const { assert_choice_type("sf64", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } const uint8_t& sf80() const { assert_choice_type("sf80", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } const uint8_t& sf128() const { assert_choice_type("sf128", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } const uint8_t& sf160() const { assert_choice_type("sf160", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } const uint8_t& sf256() const { assert_choice_type("sf256", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } const uint16_t& sf320() const { assert_choice_type("sf320", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } const uint16_t& sf512() const { assert_choice_type("sf512", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } const uint16_t& sf640() const { assert_choice_type("sf640", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } const uint16_t& sf1024() const { assert_choice_type("sf1024", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } const uint16_t& sf1280() const { assert_choice_type("sf1280", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } const uint16_t& sf2048() const { assert_choice_type("sf2048", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } const uint16_t& sf2560() const { assert_choice_type("sf2560", type_.to_string(), "longDRX-CycleStartOffset"); return c.get(); } private: types type_; choice_buffer_t<8> c; void destroy_(); }; struct short_drx_s_ { struct short_drx_cycle_e_ { enum options { sf2, sf5, sf8, sf10, sf16, sf20, sf32, sf40, sf64, sf80, sf128, sf160, sf256, sf320, sf512, sf640 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods short_drx_cycle_e_() {} short_drx_cycle_e_(options v) : value(v) {} short_drx_cycle_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables short_drx_cycle_e_ short_drx_cycle; uint8_t drx_short_cycle_timer; }; // member variables bool short_drx_present; on_dur_timer_e_ on_dur_timer; drx_inactivity_timer_e_ drx_inactivity_timer; drx_retx_timer_e_ drx_retx_timer; long_drx_cycle_start_offset_c_ long_drx_cycle_start_offset; short_drx_s_ short_drx; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods drx_cfg_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "DRX-Config"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "DRX-Config"); return c; } private: types type_; setup_s_ c; }; // DRX-Config-r13 ::= SEQUENCE struct drx_cfg_r13_s { struct on_dur_timer_v1310_e_ { enum options { psf300, psf400, psf500, psf600, psf800, psf1000, psf1200, psf1600 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods on_dur_timer_v1310_e_() {} on_dur_timer_v1310_e_(options v) : value(v) {} on_dur_timer_v1310_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct drx_retx_timer_v1310_e_ { enum options { psf40, psf64, psf80, psf96, psf112, psf128, psf160, psf320 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods drx_retx_timer_v1310_e_() {} drx_retx_timer_v1310_e_(options v) : value(v) {} drx_retx_timer_v1310_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct drx_ul_retx_timer_r13_e_ { enum options { psf0, psf1, psf2, psf4, psf6, psf8, psf16, psf24, psf33, psf40, psf64, psf80, psf96, psf112, psf128, psf160, psf320 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 17, nof_exts = 0; static const bool has_ext = false; // enumerated methods drx_ul_retx_timer_r13_e_() {} drx_ul_retx_timer_r13_e_(options v) : value(v) {} drx_ul_retx_timer_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool on_dur_timer_v1310_present; bool drx_retx_timer_v1310_present; bool drx_ul_retx_timer_r13_present; on_dur_timer_v1310_e_ on_dur_timer_v1310; drx_retx_timer_v1310_e_ drx_retx_timer_v1310; drx_ul_retx_timer_r13_e_ drx_ul_retx_timer_r13; // sequence methods drx_cfg_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DRX-Config-r15 ::= SEQUENCE struct drx_cfg_r15_s { struct drx_retx_timer_short_tti_r15_e_ { enum options { tti10, tti20, tti40, tti64, tti80, tti96, tti112, tti128, tti160, tti320 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 10, nof_exts = 0; static const bool has_ext = false; // enumerated methods drx_retx_timer_short_tti_r15_e_() {} drx_retx_timer_short_tti_r15_e_(options v) : value(v) {} drx_retx_timer_short_tti_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct drx_ul_retx_timer_short_tti_r15_e_ { enum options { tti0, tti1, tti2, tti4, tti6, tti8, tti16, tti24, tti33, tti40, tti64, tti80, tti96, tti112, tti128, tti160, tti320 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 17, nof_exts = 0; static const bool has_ext = false; // enumerated methods drx_ul_retx_timer_short_tti_r15_e_() {} drx_ul_retx_timer_short_tti_r15_e_(options v) : value(v) {} drx_ul_retx_timer_short_tti_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool drx_retx_timer_short_tti_r15_present; bool drx_ul_retx_timer_short_tti_r15_present; drx_retx_timer_short_tti_r15_e_ drx_retx_timer_short_tti_r15; drx_ul_retx_timer_short_tti_r15_e_ drx_ul_retx_timer_short_tti_r15; // sequence methods drx_cfg_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DRX-Config-v1130 ::= SEQUENCE struct drx_cfg_v1130_s { struct long_drx_cycle_start_offset_v1130_c_ { struct types { enum options { sf60_v1130, sf70_v1130, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods long_drx_cycle_start_offset_v1130_c_() : type_(types::nulltype) {} long_drx_cycle_start_offset_v1130_c_(const long_drx_cycle_start_offset_v1130_c_& other); long_drx_cycle_start_offset_v1130_c_& operator=(const long_drx_cycle_start_offset_v1130_c_& other); ~long_drx_cycle_start_offset_v1130_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint8_t& sf60_v1130() { assert_choice_type("sf60-v1130", type_.to_string(), "longDRX-CycleStartOffset-v1130"); return c.get(); } uint8_t& sf70_v1130() { assert_choice_type("sf70-v1130", type_.to_string(), "longDRX-CycleStartOffset-v1130"); return c.get(); } const uint8_t& sf60_v1130() const { assert_choice_type("sf60-v1130", type_.to_string(), "longDRX-CycleStartOffset-v1130"); return c.get(); } const uint8_t& sf70_v1130() const { assert_choice_type("sf70-v1130", type_.to_string(), "longDRX-CycleStartOffset-v1130"); return c.get(); } private: types type_; choice_buffer_t<8> c; void destroy_(); }; // member variables bool drx_retx_timer_v1130_present; bool long_drx_cycle_start_offset_v1130_present; bool short_drx_cycle_v1130_present; long_drx_cycle_start_offset_v1130_c_ long_drx_cycle_start_offset_v1130; // sequence methods drx_cfg_v1130_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DRX-Config-v1310 ::= SEQUENCE struct drx_cfg_v1310_s { struct long_drx_cycle_start_offset_v1310_s_ { // member variables uint8_t sf60_v1310; }; // member variables bool long_drx_cycle_start_offset_v1310_present; long_drx_cycle_start_offset_v1310_s_ long_drx_cycle_start_offset_v1310; // sequence methods drx_cfg_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DataInactivityTimer-r14 ::= ENUMERATED struct data_inactivity_timer_r14_e { enum options { s1, s2, s3, s5, s7, s10, s15, s20, s40, s50, s60, s80, s100, s120, s150, s180 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods data_inactivity_timer_r14_e() {} data_inactivity_timer_r14_e(options v) : value(v) {} data_inactivity_timer_r14_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // EPDCCH-Config-r11 ::= SEQUENCE struct epdcch_cfg_r11_s { struct cfg_r11_c_ { struct setup_s_ { struct sf_pattern_cfg_r11_c_ { struct setup_s_ { // member variables meas_sf_pattern_r10_c sf_pattern_r11; }; typedef setup_e types; // choice methods sf_pattern_cfg_r11_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "subframePatternConfig-r11"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "subframePatternConfig-r11"); return c; } private: types type_; setup_s_ c; }; // member variables bool sf_pattern_cfg_r11_present; bool start_symbol_r11_present; bool set_cfg_to_release_list_r11_present; bool set_cfg_to_add_mod_list_r11_present; sf_pattern_cfg_r11_c_ sf_pattern_cfg_r11; uint8_t start_symbol_r11; epdcch_set_cfg_to_release_list_r11_l set_cfg_to_release_list_r11; epdcch_set_cfg_to_add_mod_list_r11_l set_cfg_to_add_mod_list_r11; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods cfg_r11_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "config-r11"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "config-r11"); return c; } private: types type_; setup_s_ c; }; // member variables cfg_r11_c_ cfg_r11; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // FreqPriorityEUTRA ::= SEQUENCE struct freq_prio_eutra_s { // member variables uint16_t carrier_freq; uint8_t cell_resel_prio; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // FreqPriorityEUTRA-r12 ::= SEQUENCE struct freq_prio_eutra_r12_s { // member variables uint32_t carrier_freq_r12; uint8_t cell_resel_prio_r12; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // FreqPriorityEUTRA-v1310 ::= SEQUENCE struct freq_prio_eutra_v1310_s { // member variables bool cell_resel_sub_prio_r13_present; cell_resel_sub_prio_r13_e cell_resel_sub_prio_r13; // sequence methods freq_prio_eutra_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // FreqPriorityNR-r15 ::= SEQUENCE struct freq_prio_nr_r15_s { // member variables bool cell_resel_sub_prio_r15_present; uint32_t carrier_freq_r15; uint8_t cell_resel_prio_r15; cell_resel_sub_prio_r13_e cell_resel_sub_prio_r15; // sequence methods freq_prio_nr_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // FreqPriorityUTRA-FDD ::= SEQUENCE struct freq_prio_utra_fdd_s { // member variables uint16_t carrier_freq; uint8_t cell_resel_prio; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // FreqPriorityUTRA-TDD ::= SEQUENCE struct freq_prio_utra_tdd_s { // member variables uint16_t carrier_freq; uint8_t cell_resel_prio; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // FreqsPriorityGERAN ::= SEQUENCE struct freqs_prio_geran_s { // member variables carrier_freqs_geran_s carrier_freqs; uint8_t cell_resel_prio; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // NeighCellsToAddModList-r12 ::= SEQUENCE (SIZE (1..maxNeighCell-r12)) OF NeighCellsInfo-r12 typedef dyn_array neigh_cells_to_add_mod_list_r12_l; // NeighCellsToReleaseList-r12 ::= SEQUENCE (SIZE (1..maxNeighCell-r12)) OF INTEGER typedef bounded_array neigh_cells_to_release_list_r12_l; // PDCCH-CandidateReductions-r13 ::= CHOICE struct pdcch_candidate_reductions_r13_c { struct setup_s_ { // member variables pdcch_candidate_reduction_value_r13_e pdcch_candidate_reduction_al1_r13; pdcch_candidate_reduction_value_r13_e pdcch_candidate_reduction_al2_r13; pdcch_candidate_reduction_value_r13_e pdcch_candidate_reduction_al3_r13; pdcch_candidate_reduction_value_r13_e pdcch_candidate_reduction_al4_r13; pdcch_candidate_reduction_value_r13_e pdcch_candidate_reduction_al5_r13; }; typedef setup_e types; // choice methods pdcch_candidate_reductions_r13_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "PDCCH-CandidateReductions-r13"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "PDCCH-CandidateReductions-r13"); return c; } private: types type_; setup_s_ c; }; // PDSCH-ConfigDedicated ::= SEQUENCE struct pdsch_cfg_ded_s { struct p_a_e_ { enum options { db_minus6, db_minus4dot77, db_minus3, db_minus1dot77, db0, db1, db2, db3 }; typedef float number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods p_a_e_() {} p_a_e_(options v) : value(v) {} p_a_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; // member variables p_a_e_ p_a; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PDSCH-ConfigDedicated-v1130 ::= SEQUENCE struct pdsch_cfg_ded_v1130_s { struct qcl_operation_e_ { enum options { type_a, type_b }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods qcl_operation_e_() {} qcl_operation_e_(options v) : value(v) {} qcl_operation_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool dmrs_cfg_pdsch_r11_present; bool qcl_operation_present; bool re_map_qcl_cfg_to_release_list_r11_present; bool re_map_qcl_cfg_to_add_mod_list_r11_present; dmrs_cfg_r11_c dmrs_cfg_pdsch_r11; qcl_operation_e_ qcl_operation; re_map_qcl_cfg_to_release_list_r11_l re_map_qcl_cfg_to_release_list_r11; re_map_qcl_cfg_to_add_mod_list_r11_l re_map_qcl_cfg_to_add_mod_list_r11; // sequence methods pdsch_cfg_ded_v1130_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PDSCH-ConfigDedicated-v1280 ::= SEQUENCE struct pdsch_cfg_ded_v1280_s { struct tbs_idx_alt_r12_e_ { enum options { a26, a33 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods tbs_idx_alt_r12_e_() {} tbs_idx_alt_r12_e_(options v) : value(v) {} tbs_idx_alt_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool tbs_idx_alt_r12_present; tbs_idx_alt_r12_e_ tbs_idx_alt_r12; // sequence methods pdsch_cfg_ded_v1280_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PDSCH-ConfigDedicated-v1310 ::= SEQUENCE struct pdsch_cfg_ded_v1310_s { // member variables bool dmrs_cfg_pdsch_v1310_present; dmrs_cfg_v1310_s dmrs_cfg_pdsch_v1310; // sequence methods pdsch_cfg_ded_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PDSCH-ConfigDedicated-v1430 ::= SEQUENCE struct pdsch_cfg_ded_v1430_s { struct ce_pdsch_max_bw_r14_e_ { enum options { bw5, bw20 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods ce_pdsch_max_bw_r14_e_() {} ce_pdsch_max_bw_r14_e_(options v) : value(v) {} ce_pdsch_max_bw_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct ce_sched_enhancement_r14_e_ { enum options { range1, range2 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods ce_sched_enhancement_r14_e_() {} ce_sched_enhancement_r14_e_(options v) : value(v) {} ce_sched_enhancement_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ce_pdsch_max_bw_r14_present; bool ce_pdsch_ten_processes_r14_present; bool ce_harq_ack_bundling_r14_present; bool ce_sched_enhancement_r14_present; bool tbs_idx_alt2_r14_present; ce_pdsch_max_bw_r14_e_ ce_pdsch_max_bw_r14; ce_sched_enhancement_r14_e_ ce_sched_enhancement_r14; // sequence methods pdsch_cfg_ded_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PDSCH-ConfigDedicated-v1530 ::= SEQUENCE struct pdsch_cfg_ded_v1530_s { struct alt_mcs_table_scaling_cfg_r15_e_ { enum options { o_dot5, o_dot625, o_dot75, o_dot875 }; typedef float number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods alt_mcs_table_scaling_cfg_r15_e_() {} alt_mcs_table_scaling_cfg_r15_e_(options v) : value(v) {} alt_mcs_table_scaling_cfg_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; // member variables bool qcl_operation_v1530_present; bool tbs_idx_alt3_r15_present; bool ce_cqi_alternative_table_cfg_r15_present; bool ce_pdsch_minus64_qam_cfg_r15_present; bool ce_pdsch_flex_start_prb_alloc_cfg_r15_present; bool alt_mcs_table_scaling_cfg_r15_present; alt_mcs_table_scaling_cfg_r15_e_ alt_mcs_table_scaling_cfg_r15; // sequence methods pdsch_cfg_ded_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PUCCH-ConfigDedicated ::= SEQUENCE struct pucch_cfg_ded_s { struct ack_nack_repeat_c_ { struct setup_s_ { struct repeat_factor_e_ { enum options { n2, n4, n6, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods repeat_factor_e_() {} repeat_factor_e_(options v) : value(v) {} repeat_factor_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables repeat_factor_e_ repeat_factor; uint16_t n1_pucch_an_rep; }; typedef setup_e types; // choice methods ack_nack_repeat_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "ackNackRepetition"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "ackNackRepetition"); return c; } private: types type_; setup_s_ c; }; struct tdd_ack_nack_feedback_mode_e_ { enum options { bundling, mux }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods tdd_ack_nack_feedback_mode_e_() {} tdd_ack_nack_feedback_mode_e_(options v) : value(v) {} tdd_ack_nack_feedback_mode_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool tdd_ack_nack_feedback_mode_present; ack_nack_repeat_c_ ack_nack_repeat; tdd_ack_nack_feedback_mode_e_ tdd_ack_nack_feedback_mode; // sequence methods pucch_cfg_ded_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PUCCH-ConfigDedicated-r13 ::= SEQUENCE struct pucch_cfg_ded_r13_s { struct ack_nack_repeat_r13_c_ { struct setup_s_ { struct repeat_factor_r13_e_ { enum options { n2, n4, n6, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods repeat_factor_r13_e_() {} repeat_factor_r13_e_(options v) : value(v) {} repeat_factor_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables repeat_factor_r13_e_ repeat_factor_r13; uint16_t n1_pucch_an_rep_r13; }; typedef setup_e types; // choice methods ack_nack_repeat_r13_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "ackNackRepetition-r13"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "ackNackRepetition-r13"); return c; } private: types type_; setup_s_ c; }; struct tdd_ack_nack_feedback_mode_r13_e_ { enum options { bundling, mux }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods tdd_ack_nack_feedback_mode_r13_e_() {} tdd_ack_nack_feedback_mode_r13_e_(options v) : value(v) {} tdd_ack_nack_feedback_mode_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct pucch_format_r13_c_ { struct format3_r13_s_ { typedef bounded_array n3_pucch_an_list_r13_l_; struct two_ant_port_activ_pucch_format3_r13_c_ { struct setup_s_ { typedef bounded_array n3_pucch_an_list_p1_r13_l_; // member variables n3_pucch_an_list_p1_r13_l_ n3_pucch_an_list_p1_r13; }; typedef setup_e types; // choice methods two_ant_port_activ_pucch_format3_r13_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "twoAntennaPortActivatedPUCCH-Format3-r13"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "twoAntennaPortActivatedPUCCH-Format3-r13"); return c; } private: types type_; setup_s_ c; }; // member variables bool n3_pucch_an_list_r13_present; bool two_ant_port_activ_pucch_format3_r13_present; n3_pucch_an_list_r13_l_ n3_pucch_an_list_r13; two_ant_port_activ_pucch_format3_r13_c_ two_ant_port_activ_pucch_format3_r13; // sequence methods format3_r13_s_(); }; struct ch_sel_r13_s_ { struct n1_pucch_an_cs_r13_c_ { struct setup_s_ { typedef dyn_array n1_pucch_an_cs_list_r13_l_; typedef bounded_array n1_pucch_an_cs_list_p1_r13_l_; // member variables n1_pucch_an_cs_list_r13_l_ n1_pucch_an_cs_list_r13; n1_pucch_an_cs_list_p1_r13_l_ n1_pucch_an_cs_list_p1_r13; }; typedef setup_e types; // choice methods n1_pucch_an_cs_r13_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "n1PUCCH-AN-CS-r13"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "n1PUCCH-AN-CS-r13"); return c; } private: types type_; setup_s_ c; }; // member variables bool n1_pucch_an_cs_r13_present; n1_pucch_an_cs_r13_c_ n1_pucch_an_cs_r13; // sequence methods ch_sel_r13_s_(); }; struct format4_r13_s_ { typedef fixed_array format4_res_cfg_r13_l_; typedef dyn_array format4_multi_csi_res_cfg_r13_l_; // member variables bool format4_multi_csi_res_cfg_r13_present; format4_res_cfg_r13_l_ format4_res_cfg_r13; format4_multi_csi_res_cfg_r13_l_ format4_multi_csi_res_cfg_r13; // sequence methods format4_r13_s_(); }; struct format5_r13_s_ { typedef fixed_array format5_res_cfg_r13_l_; // member variables bool format5_multi_csi_res_cfg_r13_present; format5_res_cfg_r13_l_ format5_res_cfg_r13; format5_res_r13_s format5_multi_csi_res_cfg_r13; // sequence methods format5_r13_s_(); }; struct types { enum options { format3_r13, ch_sel_r13, format4_r13, format5_r13, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods pucch_format_r13_c_() : type_(types::nulltype) {} pucch_format_r13_c_(const pucch_format_r13_c_& other); pucch_format_r13_c_& operator=(const pucch_format_r13_c_& other); ~pucch_format_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(bit_ref& bref); void to_json(json_writer& j) const; // getters format3_r13_s_& format3_r13() { assert_choice_type("format3-r13", type_.to_string(), "pucch-Format-r13"); return c.get(); } ch_sel_r13_s_& ch_sel_r13() { assert_choice_type("channelSelection-r13", type_.to_string(), "pucch-Format-r13"); return c.get(); } format4_r13_s_& format4_r13() { assert_choice_type("format4-r13", type_.to_string(), "pucch-Format-r13"); return c.get(); } format5_r13_s_& format5_r13() { assert_choice_type("format5-r13", type_.to_string(), "pucch-Format-r13"); return c.get(); } const format3_r13_s_& format3_r13() const { assert_choice_type("format3-r13", type_.to_string(), "pucch-Format-r13"); return c.get(); } const ch_sel_r13_s_& ch_sel_r13() const { assert_choice_type("channelSelection-r13", type_.to_string(), "pucch-Format-r13"); return c.get(); } const format4_r13_s_& format4_r13() const { assert_choice_type("format4-r13", type_.to_string(), "pucch-Format-r13"); return c.get(); } const format5_r13_s_& format5_r13() const { assert_choice_type("format5-r13", type_.to_string(), "pucch-Format-r13"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct n_pucch_param_r13_c_ { struct setup_s_ { // member variables uint16_t n_pucch_id_r13; uint16_t n1_pucch_an_r13; }; typedef setup_e types; // choice methods n_pucch_param_r13_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "nPUCCH-Param-r13"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "nPUCCH-Param-r13"); return c; } private: types type_; setup_s_ c; }; struct nka_pucch_param_r13_c_ { struct setup_s_ { // member variables uint16_t nka_pucch_an_r13; }; typedef setup_e types; // choice methods nka_pucch_param_r13_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "nkaPUCCH-Param-r13"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "nkaPUCCH-Param-r13"); return c; } private: types type_; setup_s_ c; }; struct codebooksize_determination_r13_e_ { enum options { dai, cc }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods codebooksize_determination_r13_e_() {} codebooksize_determination_r13_e_(options v) : value(v) {} codebooksize_determination_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct pucch_num_repeat_ce_r13_c_ { struct setup_c_ { struct mode_a_s_ { struct pucch_num_repeat_ce_format1_r13_e_ { enum options { r1, r2, r4, r8 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods pucch_num_repeat_ce_format1_r13_e_() {} pucch_num_repeat_ce_format1_r13_e_(options v) : value(v) {} pucch_num_repeat_ce_format1_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct pucch_num_repeat_ce_format2_r13_e_ { enum options { r1, r2, r4, r8 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods pucch_num_repeat_ce_format2_r13_e_() {} pucch_num_repeat_ce_format2_r13_e_(options v) : value(v) {} pucch_num_repeat_ce_format2_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables pucch_num_repeat_ce_format1_r13_e_ pucch_num_repeat_ce_format1_r13; pucch_num_repeat_ce_format2_r13_e_ pucch_num_repeat_ce_format2_r13; }; struct mode_b_s_ { struct pucch_num_repeat_ce_format1_r13_e_ { enum options { r4, r8, r16, r32 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods pucch_num_repeat_ce_format1_r13_e_() {} pucch_num_repeat_ce_format1_r13_e_(options v) : value(v) {} pucch_num_repeat_ce_format1_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct pucch_num_repeat_ce_format2_r13_e_ { enum options { r4, r8, r16, r32 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods pucch_num_repeat_ce_format2_r13_e_() {} pucch_num_repeat_ce_format2_r13_e_(options v) : value(v) {} pucch_num_repeat_ce_format2_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables pucch_num_repeat_ce_format1_r13_e_ pucch_num_repeat_ce_format1_r13; pucch_num_repeat_ce_format2_r13_e_ pucch_num_repeat_ce_format2_r13; }; struct types { enum options { mode_a, mode_b, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods setup_c_() : type_(types::nulltype) {} setup_c_(const setup_c_& other); setup_c_& operator=(const setup_c_& other); ~setup_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters mode_a_s_& mode_a() { assert_choice_type("modeA", type_.to_string(), "setup"); return c.get(); } mode_b_s_& mode_b() { assert_choice_type("modeB", type_.to_string(), "setup"); return c.get(); } const mode_a_s_& mode_a() const { assert_choice_type("modeA", type_.to_string(), "setup"); return c.get(); } const mode_b_s_& mode_b() const { assert_choice_type("modeB", type_.to_string(), "setup"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; typedef setup_e types; // choice methods pucch_num_repeat_ce_r13_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_c_& setup() { assert_choice_type("setup", type_.to_string(), "pucch-NumRepetitionCE-r13"); return c; } const setup_c_& setup() const { assert_choice_type("setup", type_.to_string(), "pucch-NumRepetitionCE-r13"); return c; } private: types type_; setup_c_ c; }; // member variables bool tdd_ack_nack_feedback_mode_r13_present; bool pucch_format_r13_present; bool two_ant_port_activ_pucch_format1a1b_r13_present; bool simul_pucch_pusch_r13_present; bool n1_pucch_an_rep_p1_r13_present; bool n_pucch_param_r13_present; bool nka_pucch_param_r13_present; bool codebooksize_determination_r13_present; bool maximum_payload_coderate_r13_present; bool pucch_num_repeat_ce_r13_present; ack_nack_repeat_r13_c_ ack_nack_repeat_r13; tdd_ack_nack_feedback_mode_r13_e_ tdd_ack_nack_feedback_mode_r13; pucch_format_r13_c_ pucch_format_r13; uint16_t n1_pucch_an_rep_p1_r13; n_pucch_param_r13_c_ n_pucch_param_r13; nka_pucch_param_r13_c_ nka_pucch_param_r13; bool spatial_bundling_pucch_r13; bool spatial_bundling_pusch_r13; bool harq_timing_tdd_r13; codebooksize_determination_r13_e_ codebooksize_determination_r13; uint8_t maximum_payload_coderate_r13; pucch_num_repeat_ce_r13_c_ pucch_num_repeat_ce_r13; // sequence methods pucch_cfg_ded_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PUCCH-ConfigDedicated-v1020 ::= SEQUENCE struct pucch_cfg_ded_v1020_s { struct pucch_format_r10_c_ { struct ch_sel_r10_s_ { struct n1_pucch_an_cs_r10_c_ { struct setup_s_ { typedef dyn_array n1_pucch_an_cs_list_r10_l_; // member variables n1_pucch_an_cs_list_r10_l_ n1_pucch_an_cs_list_r10; }; typedef setup_e types; // choice methods n1_pucch_an_cs_r10_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "n1PUCCH-AN-CS-r10"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "n1PUCCH-AN-CS-r10"); return c; } private: types type_; setup_s_ c; }; // member variables bool n1_pucch_an_cs_r10_present; n1_pucch_an_cs_r10_c_ n1_pucch_an_cs_r10; // sequence methods ch_sel_r10_s_(); }; struct types { enum options { format3_r10, ch_sel_r10, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods pucch_format_r10_c_() : type_(types::nulltype) {} pucch_format_r10_c_(const pucch_format_r10_c_& other); pucch_format_r10_c_& operator=(const pucch_format_r10_c_& other); ~pucch_format_r10_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters pucch_format3_conf_r13_s& format3_r10() { assert_choice_type("format3-r10", type_.to_string(), "pucch-Format-r10"); return c.get(); } ch_sel_r10_s_& ch_sel_r10() { assert_choice_type("channelSelection-r10", type_.to_string(), "pucch-Format-r10"); return c.get(); } const pucch_format3_conf_r13_s& format3_r10() const { assert_choice_type("format3-r10", type_.to_string(), "pucch-Format-r10"); return c.get(); } const ch_sel_r10_s_& ch_sel_r10() const { assert_choice_type("channelSelection-r10", type_.to_string(), "pucch-Format-r10"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables bool pucch_format_r10_present; bool two_ant_port_activ_pucch_format1a1b_r10_present; bool simul_pucch_pusch_r10_present; bool n1_pucch_an_rep_p1_r10_present; pucch_format_r10_c_ pucch_format_r10; uint16_t n1_pucch_an_rep_p1_r10; // sequence methods pucch_cfg_ded_v1020_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PUCCH-ConfigDedicated-v1130 ::= SEQUENCE struct pucch_cfg_ded_v1130_s { struct n1_pucch_an_cs_v1130_c_ { struct setup_s_ { typedef bounded_array n1_pucch_an_cs_list_p1_r11_l_; // member variables n1_pucch_an_cs_list_p1_r11_l_ n1_pucch_an_cs_list_p1_r11; }; typedef setup_e types; // choice methods n1_pucch_an_cs_v1130_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "n1PUCCH-AN-CS-v1130"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "n1PUCCH-AN-CS-v1130"); return c; } private: types type_; setup_s_ c; }; struct n_pucch_param_r11_c_ { struct setup_s_ { // member variables uint16_t n_pucch_id_r11; uint16_t n1_pucch_an_r11; }; typedef setup_e types; // choice methods n_pucch_param_r11_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "nPUCCH-Param-r11"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "nPUCCH-Param-r11"); return c; } private: types type_; setup_s_ c; }; // member variables bool n1_pucch_an_cs_v1130_present; bool n_pucch_param_r11_present; n1_pucch_an_cs_v1130_c_ n1_pucch_an_cs_v1130; n_pucch_param_r11_c_ n_pucch_param_r11; // sequence methods pucch_cfg_ded_v1130_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PUCCH-ConfigDedicated-v1250 ::= SEQUENCE struct pucch_cfg_ded_v1250_s { struct nka_pucch_param_r12_c_ { struct setup_s_ { // member variables uint16_t nka_pucch_an_r12; }; typedef setup_e types; // choice methods nka_pucch_param_r12_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "nkaPUCCH-Param-r12"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "nkaPUCCH-Param-r12"); return c; } private: types type_; setup_s_ c; }; // member variables nka_pucch_param_r12_c_ nka_pucch_param_r12; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PUCCH-ConfigDedicated-v1430 ::= SEQUENCE struct pucch_cfg_ded_v1430_s { struct pucch_num_repeat_ce_format1_r14_e_ { enum options { r64, r128 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods pucch_num_repeat_ce_format1_r14_e_() {} pucch_num_repeat_ce_format1_r14_e_(options v) : value(v) {} pucch_num_repeat_ce_format1_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool pucch_num_repeat_ce_format1_r14_present; pucch_num_repeat_ce_format1_r14_e_ pucch_num_repeat_ce_format1_r14; // sequence methods pucch_cfg_ded_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PUSCH-ConfigDedicated ::= SEQUENCE struct pusch_cfg_ded_s { // member variables uint8_t beta_offset_ack_idx; uint8_t beta_offset_ri_idx; uint8_t beta_offset_cqi_idx; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PUSCH-ConfigDedicated-r13 ::= SEQUENCE struct pusch_cfg_ded_r13_s { struct beta_offset_mc_r13_s_ { // member variables bool beta_offset2_ack_idx_mc_r13_present; uint8_t beta_offset_ack_idx_mc_r13; uint8_t beta_offset2_ack_idx_mc_r13; uint8_t beta_offset_ri_idx_mc_r13; uint8_t beta_offset_cqi_idx_mc_r13; // sequence methods beta_offset_mc_r13_s_(); }; struct pusch_dmrs_r11_c_ { struct setup_s_ { // member variables uint16_t n_pusch_id_r13; uint16_t n_dmrs_csh_id_r13; }; typedef setup_e types; // choice methods pusch_dmrs_r11_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "pusch-DMRS-r11"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "pusch-DMRS-r11"); return c; } private: types type_; setup_s_ c; }; struct uci_on_pusch_c_ { struct setup_s_ { struct beta_offset_mc_r12_s_ { // member variables bool beta_offset2_ack_idx_mc_sf_set2_r13_present; uint8_t beta_offset_ack_idx_mc_sf_set2_r13; uint8_t beta_offset2_ack_idx_mc_sf_set2_r13; uint8_t beta_offset_ri_idx_mc_sf_set2_r13; uint8_t beta_offset_cqi_idx_mc_sf_set2_r13; // sequence methods beta_offset_mc_r12_s_(); }; // member variables bool beta_offset2_ack_idx_sf_set2_r13_present; bool beta_offset_mc_r12_present; uint8_t beta_offset_ack_idx_sf_set2_r13; uint8_t beta_offset2_ack_idx_sf_set2_r13; uint8_t beta_offset_ri_idx_sf_set2_r13; uint8_t beta_offset_cqi_idx_sf_set2_r13; beta_offset_mc_r12_s_ beta_offset_mc_r12; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods uci_on_pusch_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "uciOnPUSCH"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "uciOnPUSCH"); return c; } private: types type_; setup_s_ c; }; // member variables bool beta_offset2_ack_idx_r13_present; bool beta_offset_mc_r13_present; bool group_hop_disabled_r13_present; bool dmrs_with_occ_activ_r13_present; bool pusch_dmrs_r11_present; bool uci_on_pusch_present; bool pusch_hop_cfg_r13_present; uint8_t beta_offset_ack_idx_r13; uint8_t beta_offset2_ack_idx_r13; uint8_t beta_offset_ri_idx_r13; uint8_t beta_offset_cqi_idx_r13; beta_offset_mc_r13_s_ beta_offset_mc_r13; pusch_dmrs_r11_c_ pusch_dmrs_r11; uci_on_pusch_c_ uci_on_pusch; // sequence methods pusch_cfg_ded_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PUSCH-ConfigDedicated-v1020 ::= SEQUENCE struct pusch_cfg_ded_v1020_s { struct beta_offset_mc_r10_s_ { // member variables uint8_t beta_offset_ack_idx_mc_r10; uint8_t beta_offset_ri_idx_mc_r10; uint8_t beta_offset_cqi_idx_mc_r10; }; // member variables bool beta_offset_mc_r10_present; bool group_hop_disabled_r10_present; bool dmrs_with_occ_activ_r10_present; beta_offset_mc_r10_s_ beta_offset_mc_r10; // sequence methods pusch_cfg_ded_v1020_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PUSCH-ConfigDedicated-v1130 ::= SEQUENCE struct pusch_cfg_ded_v1130_s { struct pusch_dmrs_r11_c_ { struct setup_s_ { // member variables uint16_t n_pusch_id_r11; uint16_t n_dmrs_csh_id_r11; }; typedef setup_e types; // choice methods pusch_dmrs_r11_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "pusch-DMRS-r11"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "pusch-DMRS-r11"); return c; } private: types type_; setup_s_ c; }; // member variables pusch_dmrs_r11_c_ pusch_dmrs_r11; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PUSCH-ConfigDedicated-v1250 ::= SEQUENCE struct pusch_cfg_ded_v1250_s { struct uci_on_pusch_c_ { struct setup_s_ { struct beta_offset_mc_r12_s_ { // member variables uint8_t beta_offset_ack_idx_mc_sf_set2_r12; uint8_t beta_offset_ri_idx_mc_sf_set2_r12; uint8_t beta_offset_cqi_idx_mc_sf_set2_r12; }; // member variables bool beta_offset_mc_r12_present; uint8_t beta_offset_ack_idx_sf_set2_r12; uint8_t beta_offset_ri_idx_sf_set2_r12; uint8_t beta_offset_cqi_idx_sf_set2_r12; beta_offset_mc_r12_s_ beta_offset_mc_r12; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods uci_on_pusch_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "uciOnPUSCH"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "uciOnPUSCH"); return c; } private: types type_; setup_s_ c; }; // member variables uci_on_pusch_c_ uci_on_pusch; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PUSCH-ConfigDedicated-v1430 ::= SEQUENCE struct pusch_cfg_ded_v1430_s { // member variables bool ce_pusch_nb_max_tbs_r14_present; bool ce_pusch_max_bw_r14_present; bool tdd_pusch_up_pts_r14_present; bool enable256_qam_r14_present; tdd_pusch_up_pts_r14_c tdd_pusch_up_pts_r14; bool ul_dmrs_ifdma_r14; enable256_qam_r14_c enable256_qam_r14; // sequence methods pusch_cfg_ded_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PUSCH-ConfigDedicated-v1530 ::= SEQUENCE struct pusch_cfg_ded_v1530_s { struct ce_pusch_flex_start_prb_alloc_cfg_r15_c_ { struct setup_s_ { // member variables bool offset_ce_mode_b_r15_present; int8_t offset_ce_mode_b_r15; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods ce_pusch_flex_start_prb_alloc_cfg_r15_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "ce-PUSCH-FlexibleStartPRB-AllocConfig-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "ce-PUSCH-FlexibleStartPRB-AllocConfig-r15"); return c; } private: types type_; setup_s_ c; }; struct ce_pusch_sub_prb_cfg_r15_c_ { struct setup_s_ { // member variables bool location_ce_mode_b_r15_present; uint8_t location_ce_mode_b_r15; uint8_t six_tone_cyclic_shift_r15; uint8_t three_tone_cyclic_shift_r15; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods ce_pusch_sub_prb_cfg_r15_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "ce-PUSCH-SubPRB-Config-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "ce-PUSCH-SubPRB-Config-r15"); return c; } private: types type_; setup_s_ c; }; // member variables bool ce_pusch_sub_prb_cfg_r15_present; ce_pusch_flex_start_prb_alloc_cfg_r15_c_ ce_pusch_flex_start_prb_alloc_cfg_r15; ce_pusch_sub_prb_cfg_r15_c_ ce_pusch_sub_prb_cfg_r15; // sequence methods pusch_cfg_ded_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PUSCH-EnhancementsConfig-r14 ::= CHOICE struct pusch_enhance_cfg_r14_c { struct setup_s_ { struct interv_ul_hop_pusch_enh_r14_c_ { struct interv_fdd_pusch_enh_r14_e_ { enum options { int1, int2, int4, int8 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods interv_fdd_pusch_enh_r14_e_() {} interv_fdd_pusch_enh_r14_e_(options v) : value(v) {} interv_fdd_pusch_enh_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct interv_tdd_pusch_enh_r14_e_ { enum options { int1, int5, int10, int20 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods interv_tdd_pusch_enh_r14_e_() {} interv_tdd_pusch_enh_r14_e_(options v) : value(v) {} interv_tdd_pusch_enh_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct types { enum options { interv_fdd_pusch_enh_r14, interv_tdd_pusch_enh_r14, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods interv_ul_hop_pusch_enh_r14_c_() : type_(types::nulltype) {} interv_ul_hop_pusch_enh_r14_c_(const interv_ul_hop_pusch_enh_r14_c_& other); interv_ul_hop_pusch_enh_r14_c_& operator=(const interv_ul_hop_pusch_enh_r14_c_& other); ~interv_ul_hop_pusch_enh_r14_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters interv_fdd_pusch_enh_r14_e_& interv_fdd_pusch_enh_r14() { assert_choice_type("interval-FDD-PUSCH-Enh-r14", type_.to_string(), "interval-ULHoppingPUSCH-Enh-r14"); return c.get(); } interv_tdd_pusch_enh_r14_e_& interv_tdd_pusch_enh_r14() { assert_choice_type("interval-TDD-PUSCH-Enh-r14", type_.to_string(), "interval-ULHoppingPUSCH-Enh-r14"); return c.get(); } const interv_fdd_pusch_enh_r14_e_& interv_fdd_pusch_enh_r14() const { assert_choice_type("interval-FDD-PUSCH-Enh-r14", type_.to_string(), "interval-ULHoppingPUSCH-Enh-r14"); return c.get(); } const interv_tdd_pusch_enh_r14_e_& interv_tdd_pusch_enh_r14() const { assert_choice_type("interval-TDD-PUSCH-Enh-r14", type_.to_string(), "interval-ULHoppingPUSCH-Enh-r14"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables bool pusch_hop_offset_pusch_enh_r14_present; bool interv_ul_hop_pusch_enh_r14_present; uint8_t pusch_hop_offset_pusch_enh_r14; interv_ul_hop_pusch_enh_r14_c_ interv_ul_hop_pusch_enh_r14; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods pusch_enhance_cfg_r14_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "PUSCH-EnhancementsConfig-r14"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "PUSCH-EnhancementsConfig-r14"); return c; } private: types type_; setup_s_ c; }; // PeriodicBSR-Timer-r12 ::= ENUMERATED struct periodic_bsr_timer_r12_e { enum options { sf5, sf10, sf16, sf20, sf32, sf40, sf64, sf80, sf128, sf160, sf320, sf640, sf1280, sf2560, infinity, spare1 }; typedef int16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods periodic_bsr_timer_r12_e() {} periodic_bsr_timer_r12_e(options v) : value(v) {} periodic_bsr_timer_r12_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int16_t to_number() const; }; // PhysicalConfigDedicatedSTTI-r15 ::= CHOICE struct phys_cfg_ded_stti_r15_c { struct setup_s_ { // member variables bool ant_info_ded_stti_r15_present; bool ant_info_ul_stti_r15_present; bool pucch_cfg_ded_v1530_present; bool sched_request_cfg_v1530_present; bool ul_pwr_ctrl_ded_stti_r15_present; bool cqi_report_cfg_r15_present; bool csi_rs_cfg_r15_present; bool csi_rs_cfg_nzp_to_release_list_r15_present; bool csi_rs_cfg_nzp_to_add_mod_list_r15_present; bool csi_rs_cfg_zp_to_release_list_r15_present; bool csi_rs_cfg_zp_to_add_mod_list_r11_present; bool csi_rs_cfg_zp_ap_list_r15_present; bool eimta_main_cfg_r12_present; bool eimta_main_cfg_serv_cell_r15_present; bool slot_or_subslot_pdsch_cfg_r15_present; bool slot_or_subslot_pusch_cfg_r15_present; bool spdcch_cfg_r15_present; bool spucch_cfg_r15_present; bool short_tti_r15_present; ant_info_ded_stti_r15_c ant_info_ded_stti_r15; ant_info_ul_stti_r15_s ant_info_ul_stti_r15; pucch_cfg_ded_v1530_s pucch_cfg_ded_v1530; sched_request_cfg_v1530_c sched_request_cfg_v1530; ul_pwr_ctrl_ded_stti_r15_s ul_pwr_ctrl_ded_stti_r15; cqi_report_cfg_r15_c cqi_report_cfg_r15; csi_rs_cfg_r15_c csi_rs_cfg_r15; csi_rs_cfg_nzp_to_release_list_r15_l csi_rs_cfg_nzp_to_release_list_r15; csi_rs_cfg_nzp_to_add_mod_list_r15_l csi_rs_cfg_nzp_to_add_mod_list_r15; csi_rs_cfg_zp_to_release_list_r11_l csi_rs_cfg_zp_to_release_list_r15; csi_rs_cfg_zp_to_add_mod_list_r11_l csi_rs_cfg_zp_to_add_mod_list_r11; csi_rs_cfg_zp_ap_list_r14_c csi_rs_cfg_zp_ap_list_r15; eimta_main_cfg_r12_c eimta_main_cfg_r12; eimta_main_cfg_serv_cell_r12_c eimta_main_cfg_serv_cell_r15; bool semi_open_loop_stti_r15; slot_or_subslot_pdsch_cfg_r15_c slot_or_subslot_pdsch_cfg_r15; slot_or_subslot_pusch_cfg_r15_c slot_or_subslot_pusch_cfg_r15; spdcch_cfg_r15_c spdcch_cfg_r15; spucch_cfg_r15_c spucch_cfg_r15; bool srs_dci7_triggering_cfg_r15; bool short_processing_time_r15; short_tti_r15_s short_tti_r15; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods phys_cfg_ded_stti_r15_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "PhysicalConfigDedicatedSTTI-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "PhysicalConfigDedicatedSTTI-r15"); return c; } private: types type_; setup_s_ c; }; // RRCConnectionReject-v1130-IEs ::= SEQUENCE struct rrc_conn_reject_v1130_ies_s { struct depriorit_req_r11_s_ { struct depriorit_type_r11_e_ { enum options { freq, e_utra }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods depriorit_type_r11_e_() {} depriorit_type_r11_e_(options v) : value(v) {} depriorit_type_r11_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct depriorit_timer_r11_e_ { enum options { min5, min10, min15, min30 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods depriorit_timer_r11_e_() {} depriorit_timer_r11_e_(options v) : value(v) {} depriorit_timer_r11_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables depriorit_type_r11_e_ depriorit_type_r11; depriorit_timer_r11_e_ depriorit_timer_r11; }; // member variables bool depriorit_req_r11_present; bool non_crit_ext_present; depriorit_req_r11_s_ depriorit_req_r11; rrc_conn_reject_v1320_ies_s non_crit_ext; // sequence methods rrc_conn_reject_v1130_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RetxBSR-Timer-r12 ::= ENUMERATED struct retx_bsr_timer_r12_e { enum options { sf320, sf640, sf1280, sf2560, sf5120, sf10240, spare2, spare1 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods retx_bsr_timer_r12_e() {} retx_bsr_timer_r12_e(options v) : value(v) {} retx_bsr_timer_r12_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // SPS-ConfigDL ::= CHOICE struct sps_cfg_dl_c { struct setup_s_ { struct semi_persist_sched_interv_dl_e_ { enum options { sf10, sf20, sf32, sf40, sf64, sf80, sf128, sf160, sf320, sf640, spare6, spare5, spare4, spare3, spare2, spare1 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods semi_persist_sched_interv_dl_e_() {} semi_persist_sched_interv_dl_e_(options v) : value(v) {} semi_persist_sched_interv_dl_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct two_ant_port_activ_r10_c_ { struct setup_s_ { // member variables n1_pucch_an_persistent_list_l n1_pucch_an_persistent_list_p1_r10; }; typedef setup_e types; // choice methods two_ant_port_activ_r10_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "twoAntennaPortActivated-r10"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "twoAntennaPortActivated-r10"); return c; } private: types type_; setup_s_ c; }; // member variables bool ext; semi_persist_sched_interv_dl_e_ semi_persist_sched_interv_dl; uint8_t nof_conf_sps_processes; n1_pucch_an_persistent_list_l n1_pucch_an_persistent_list; // ... // group 0 bool two_ant_port_activ_r10_present; copy_ptr two_ant_port_activ_r10; // sequence methods setup_s_(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; typedef setup_e types; // choice methods sps_cfg_dl_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "SPS-ConfigDL"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "SPS-ConfigDL"); return c; } private: types type_; setup_s_ c; }; // SPS-ConfigSL-ToAddModList-r14 ::= SEQUENCE (SIZE (1..maxConfigSPS-r14)) OF SPS-ConfigSL-r14 typedef dyn_array sps_cfg_sl_to_add_mod_list_r14_l; // SPS-ConfigSL-ToReleaseList-r14 ::= SEQUENCE (SIZE (1..maxConfigSPS-r14)) OF INTEGER typedef bounded_array sps_cfg_sl_to_release_list_r14_l; // SPS-ConfigUL-STTI-ToAddModList-r15 ::= SEQUENCE (SIZE (1..maxConfigSPS-r15)) OF SPS-ConfigUL-STTI-r15 typedef dyn_array sps_cfg_ul_stti_to_add_mod_list_r15_l; // SPS-ConfigUL-STTI-ToReleaseList-r15 ::= SEQUENCE (SIZE (1..maxConfigSPS-r15)) OF INTEGER typedef bounded_array sps_cfg_ul_stti_to_release_list_r15_l; // SPS-ConfigUL-ToAddModList-r14 ::= SEQUENCE (SIZE (1..maxConfigSPS-r14)) OF SPS-ConfigUL typedef dyn_array sps_cfg_ul_to_add_mod_list_r14_l; // SPS-ConfigUL-ToAddModList-r15 ::= SEQUENCE (SIZE (1..maxConfigSPS-r15)) OF SPS-ConfigUL typedef dyn_array sps_cfg_ul_to_add_mod_list_r15_l; // SPS-ConfigUL-ToReleaseList-r14 ::= SEQUENCE (SIZE (1..maxConfigSPS-r14)) OF INTEGER typedef bounded_array sps_cfg_ul_to_release_list_r14_l; // SPS-ConfigUL-ToReleaseList-r15 ::= SEQUENCE (SIZE (1..maxConfigSPS-r15)) OF INTEGER typedef bounded_array sps_cfg_ul_to_release_list_r15_l; // SRB-ToAddMod ::= SEQUENCE struct srb_to_add_mod_s { struct rlc_cfg_c_ { struct types { enum options { explicit_value, default_value, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods rlc_cfg_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters rlc_cfg_c& explicit_value() { assert_choice_type("explicitValue", type_.to_string(), "rlc-Config"); return c; } const rlc_cfg_c& explicit_value() const { assert_choice_type("explicitValue", type_.to_string(), "rlc-Config"); return c; } private: types type_; rlc_cfg_c c; }; struct lc_ch_cfg_c_ { struct types { enum options { explicit_value, default_value, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods lc_ch_cfg_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters lc_ch_cfg_s& explicit_value() { assert_choice_type("explicitValue", type_.to_string(), "logicalChannelConfig"); return c; } const lc_ch_cfg_s& explicit_value() const { assert_choice_type("explicitValue", type_.to_string(), "logicalChannelConfig"); return c; } private: types type_; lc_ch_cfg_s c; }; // member variables bool ext; bool rlc_cfg_present; bool lc_ch_cfg_present; uint8_t srb_id; rlc_cfg_c_ rlc_cfg; lc_ch_cfg_c_ lc_ch_cfg; // ... // group 0 bool pdcp_ver_change_r15_present; bool rlc_cfg_v1530_present; bool rlc_bearer_cfg_dupl_r15_present; bool srb_id_v1530_present; copy_ptr rlc_cfg_v1530; copy_ptr rlc_bearer_cfg_dupl_r15; uint8_t srb_id_v1530; // sequence methods srb_to_add_mod_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SRS-TPC-PDCCH-Config-r14 ::= CHOICE struct srs_tpc_pdcch_cfg_r14_c { struct setup_s_ { typedef dyn_array srs_cc_set_idxlist_r14_l_; // member variables bool srs_cc_set_idxlist_r14_present; fixed_bitstring<16> srs_tpc_rnti_r14; uint8_t start_bit_of_format3_b_r14; uint8_t field_type_format3_b_r14; srs_cc_set_idxlist_r14_l_ srs_cc_set_idxlist_r14; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods srs_tpc_pdcch_cfg_r14_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "SRS-TPC-PDCCH-Config-r14"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "SRS-TPC-PDCCH-Config-r14"); return c; } private: types type_; setup_s_ c; }; // STAG-ToAddModList-r11 ::= SEQUENCE (SIZE (1..maxSTAG-r11)) OF STAG-ToAddMod-r11 typedef dyn_array stag_to_add_mod_list_r11_l; // STAG-ToReleaseList-r11 ::= SEQUENCE (SIZE (1..maxSTAG-r11)) OF INTEGER typedef bounded_array stag_to_release_list_r11_l; // SchedulingRequestConfig ::= CHOICE struct sched_request_cfg_c { struct setup_s_ { struct dsr_trans_max_e_ { enum options { n4, n8, n16, n32, n64, spare3, spare2, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods dsr_trans_max_e_() {} dsr_trans_max_e_(options v) : value(v) {} dsr_trans_max_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables uint16_t sr_pucch_res_idx; uint8_t sr_cfg_idx; dsr_trans_max_e_ dsr_trans_max; }; typedef setup_e types; // choice methods sched_request_cfg_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "SchedulingRequestConfig"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "SchedulingRequestConfig"); return c; } private: types type_; setup_s_ c; }; // SchedulingRequestConfig-v1020 ::= SEQUENCE struct sched_request_cfg_v1020_s { // member variables bool sr_pucch_res_idx_p1_r10_present; uint16_t sr_pucch_res_idx_p1_r10; // sequence methods sched_request_cfg_v1020_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SoundingRS-UL-ConfigDedicated ::= CHOICE struct srs_ul_cfg_ded_c { struct setup_s_ { struct srs_bw_e_ { enum options { bw0, bw1, bw2, bw3 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods srs_bw_e_() {} srs_bw_e_(options v) : value(v) {} srs_bw_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct srs_hop_bw_e_ { enum options { hbw0, hbw1, hbw2, hbw3 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods srs_hop_bw_e_() {} srs_hop_bw_e_(options v) : value(v) {} srs_hop_bw_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct cyclic_shift_e_ { enum options { cs0, cs1, cs2, cs3, cs4, cs5, cs6, cs7 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods cyclic_shift_e_() {} cyclic_shift_e_(options v) : value(v) {} cyclic_shift_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables srs_bw_e_ srs_bw; srs_hop_bw_e_ srs_hop_bw; uint8_t freq_domain_position; bool dur; uint16_t srs_cfg_idx; uint8_t tx_comb; cyclic_shift_e_ cyclic_shift; }; typedef setup_e types; // choice methods srs_ul_cfg_ded_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "SoundingRS-UL-ConfigDedicated"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "SoundingRS-UL-ConfigDedicated"); return c; } private: types type_; setup_s_ c; }; // SoundingRS-UL-ConfigDedicated-v1020 ::= SEQUENCE struct srs_ul_cfg_ded_v1020_s { // member variables srs_ant_port_e srs_ant_port_r10; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SoundingRS-UL-ConfigDedicated-v1310 ::= CHOICE struct srs_ul_cfg_ded_v1310_c { struct setup_s_ { struct cyclic_shift_v1310_e_ { enum options { cs8, cs9, cs10, cs11 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods cyclic_shift_v1310_e_() {} cyclic_shift_v1310_e_(options v) : value(v) {} cyclic_shift_v1310_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct tx_comb_num_r13_e_ { enum options { n2, n4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods tx_comb_num_r13_e_() {} tx_comb_num_r13_e_(options v) : value(v) {} tx_comb_num_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool tx_comb_v1310_present; bool cyclic_shift_v1310_present; bool tx_comb_num_r13_present; uint8_t tx_comb_v1310; cyclic_shift_v1310_e_ cyclic_shift_v1310; tx_comb_num_r13_e_ tx_comb_num_r13; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods srs_ul_cfg_ded_v1310_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "SoundingRS-UL-ConfigDedicated-v1310"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "SoundingRS-UL-ConfigDedicated-v1310"); return c; } private: types type_; setup_s_ c; }; // SoundingRS-UL-ConfigDedicatedAperiodic-r10 ::= CHOICE struct srs_ul_cfg_ded_aperiodic_r10_c { struct setup_s_ { typedef dyn_array srs_cfg_ap_dci_format4_r10_l_; struct srs_activ_ap_r10_c_ { struct setup_s_ { // member variables bool ext; srs_cfg_ap_r10_s srs_cfg_ap_dci_format0_r10; srs_cfg_ap_r10_s srs_cfg_ap_dci_format1a2b2c_r10; // ... // sequence methods setup_s_(); }; typedef setup_e types; // choice methods srs_activ_ap_r10_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "srs-ActivateAp-r10"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "srs-ActivateAp-r10"); return c; } private: types type_; setup_s_ c; }; // member variables bool srs_cfg_ap_dci_format4_r10_present; bool srs_activ_ap_r10_present; uint8_t srs_cfg_idx_ap_r10; srs_cfg_ap_dci_format4_r10_l_ srs_cfg_ap_dci_format4_r10; srs_activ_ap_r10_c_ srs_activ_ap_r10; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods srs_ul_cfg_ded_aperiodic_r10_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "SoundingRS-UL-ConfigDedicatedAperiodic-r10"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "SoundingRS-UL-ConfigDedicatedAperiodic-r10"); return c; } private: types type_; setup_s_ c; }; // SoundingRS-UL-ConfigDedicatedAperiodic-v1310 ::= CHOICE struct srs_ul_cfg_ded_aperiodic_v1310_c { struct setup_s_ { typedef dyn_array srs_cfg_ap_dci_format4_v1310_l_; struct srs_activ_ap_v1310_c_ { struct setup_s_ { // member variables bool srs_cfg_ap_dci_format0_v1310_present; bool srs_cfg_ap_dci_format1a2b2c_v1310_present; srs_cfg_ap_v1310_s srs_cfg_ap_dci_format0_v1310; srs_cfg_ap_v1310_s srs_cfg_ap_dci_format1a2b2c_v1310; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods srs_activ_ap_v1310_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "srs-ActivateAp-v1310"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "srs-ActivateAp-v1310"); return c; } private: types type_; setup_s_ c; }; // member variables bool srs_cfg_ap_dci_format4_v1310_present; bool srs_activ_ap_v1310_present; srs_cfg_ap_dci_format4_v1310_l_ srs_cfg_ap_dci_format4_v1310; srs_activ_ap_v1310_c_ srs_activ_ap_v1310; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods srs_ul_cfg_ded_aperiodic_v1310_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "SoundingRS-UL-ConfigDedicatedAperiodic-v1310"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "SoundingRS-UL-ConfigDedicatedAperiodic-v1310"); return c; } private: types type_; setup_s_ c; }; // SoundingRS-UL-ConfigDedicatedAperiodicUpPTsExt-r13 ::= CHOICE struct srs_ul_cfg_ded_aperiodic_up_pts_ext_r13_c { struct setup_s_ { struct srs_up_pts_add_r13_e_ { enum options { sym2, sym4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods srs_up_pts_add_r13_e_() {} srs_up_pts_add_r13_e_(options v) : value(v) {} srs_up_pts_add_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; typedef dyn_array srs_cfg_ap_dci_format4_r13_l_; struct srs_activ_ap_r13_c_ { struct setup_s_ { // member variables srs_cfg_ap_r13_s srs_cfg_ap_dci_format0_r13; srs_cfg_ap_r13_s srs_cfg_ap_dci_format1a2b2c_r13; }; typedef setup_e types; // choice methods srs_activ_ap_r13_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "srs-ActivateAp-r13"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "srs-ActivateAp-r13"); return c; } private: types type_; setup_s_ c; }; // member variables bool srs_cfg_ap_dci_format4_r13_present; bool srs_activ_ap_r13_present; srs_up_pts_add_r13_e_ srs_up_pts_add_r13; uint8_t srs_cfg_idx_ap_r13; srs_cfg_ap_dci_format4_r13_l_ srs_cfg_ap_dci_format4_r13; srs_activ_ap_r13_c_ srs_activ_ap_r13; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods srs_ul_cfg_ded_aperiodic_up_pts_ext_r13_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "SoundingRS-UL-ConfigDedicatedAperiodicUpPTsExt-r13"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "SoundingRS-UL-ConfigDedicatedAperiodicUpPTsExt-r13"); return c; } private: types type_; setup_s_ c; }; // SoundingRS-UL-ConfigDedicatedUpPTsExt-r13 ::= CHOICE struct srs_ul_cfg_ded_up_pts_ext_r13_c { struct setup_s_ { struct srs_up_pts_add_r13_e_ { enum options { sym2, sym4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods srs_up_pts_add_r13_e_() {} srs_up_pts_add_r13_e_(options v) : value(v) {} srs_up_pts_add_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct srs_bw_r13_e_ { enum options { bw0, bw1, bw2, bw3 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods srs_bw_r13_e_() {} srs_bw_r13_e_(options v) : value(v) {} srs_bw_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct srs_hop_bw_r13_e_ { enum options { hbw0, hbw1, hbw2, hbw3 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods srs_hop_bw_r13_e_() {} srs_hop_bw_r13_e_(options v) : value(v) {} srs_hop_bw_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct cyclic_shift_r13_e_ { enum options { cs0, cs1, cs2, cs3, cs4, cs5, cs6, cs7, cs8, cs9, cs10, cs11 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 12, nof_exts = 0; static const bool has_ext = false; // enumerated methods cyclic_shift_r13_e_() {} cyclic_shift_r13_e_(options v) : value(v) {} cyclic_shift_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct tx_comb_num_r13_e_ { enum options { n2, n4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods tx_comb_num_r13_e_() {} tx_comb_num_r13_e_(options v) : value(v) {} tx_comb_num_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables srs_up_pts_add_r13_e_ srs_up_pts_add_r13; srs_bw_r13_e_ srs_bw_r13; srs_hop_bw_r13_e_ srs_hop_bw_r13; uint8_t freq_domain_position_r13; bool dur_r13; uint16_t srs_cfg_idx_r13; uint8_t tx_comb_r13; cyclic_shift_r13_e_ cyclic_shift_r13; srs_ant_port_e srs_ant_port_r13; tx_comb_num_r13_e_ tx_comb_num_r13; }; typedef setup_e types; // choice methods srs_ul_cfg_ded_up_pts_ext_r13_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "SoundingRS-UL-ConfigDedicatedUpPTsExt-r13"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "SoundingRS-UL-ConfigDedicatedUpPTsExt-r13"); return c; } private: types type_; setup_s_ c; }; // UplinkPowerControlDedicated ::= SEQUENCE struct ul_pwr_ctrl_ded_s { struct delta_mcs_enabled_e_ { enum options { en0, en1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_mcs_enabled_e_() {} delta_mcs_enabled_e_(options v) : value(v) {} delta_mcs_enabled_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool filt_coef_present; int8_t p0_ue_pusch; delta_mcs_enabled_e_ delta_mcs_enabled; bool accumulation_enabled; int8_t p0_ue_pucch; uint8_t p_srs_offset; filt_coef_e filt_coef; // sequence methods ul_pwr_ctrl_ded_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UplinkPowerControlDedicated-v1020 ::= SEQUENCE struct ul_pwr_ctrl_ded_v1020_s { // member variables bool delta_tx_d_offset_list_pucch_r10_present; bool p_srs_offset_ap_r10_present; delta_tx_d_offset_list_pucch_r10_s delta_tx_d_offset_list_pucch_r10; uint8_t p_srs_offset_ap_r10; // sequence methods ul_pwr_ctrl_ded_v1020_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UplinkPowerControlDedicated-v1130 ::= SEQUENCE struct ul_pwr_ctrl_ded_v1130_s { // member variables bool p_srs_offset_v1130_present; bool p_srs_offset_ap_v1130_present; bool delta_tx_d_offset_list_pucch_v1130_present; uint8_t p_srs_offset_v1130; uint8_t p_srs_offset_ap_v1130; delta_tx_d_offset_list_pucch_v1130_s delta_tx_d_offset_list_pucch_v1130; // sequence methods ul_pwr_ctrl_ded_v1130_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UplinkPowerControlDedicated-v1250 ::= SEQUENCE struct ul_pwr_ctrl_ded_v1250_s { struct set2_pwr_ctrl_param_c_ { struct setup_s_ { // member variables fixed_bitstring<10> tpc_sf_set_r12; int8_t p0_nominal_pusch_sf_set2_r12; alpha_r12_e alpha_sf_set2_r12; int8_t p0_ue_pusch_sf_set2_r12; }; typedef setup_e types; // choice methods set2_pwr_ctrl_param_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "set2PowerControlParameter"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "set2PowerControlParameter"); return c; } private: types type_; setup_s_ c; }; // member variables set2_pwr_ctrl_param_c_ set2_pwr_ctrl_param; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UplinkPowerControlDedicated-v1530 ::= SEQUENCE struct ul_pwr_ctrl_ded_v1530_s { // member variables bool alpha_ue_r15_present; bool p0_ue_pusch_r15_present; alpha_r12_e alpha_ue_r15; int8_t p0_ue_pusch_r15; // sequence methods ul_pwr_ctrl_ded_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandClassPriorityList1XRTT ::= SEQUENCE (SIZE (1..maxCDMA-BandClass)) OF BandClassPriority1XRTT typedef dyn_array band_class_prio_list1_xrtt_l; // BandClassPriorityListHRPD ::= SEQUENCE (SIZE (1..maxCDMA-BandClass)) OF BandClassPriorityHRPD typedef dyn_array band_class_prio_list_hrpd_l; // CarrierFreqCDMA2000 ::= SEQUENCE struct carrier_freq_cdma2000_s { // member variables bandclass_cdma2000_e band_class; uint16_t arfcn; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CarrierFreqListUTRA-TDD-r10 ::= SEQUENCE (SIZE (1..maxFreqUTRA-TDD-r10)) OF INTEGER typedef bounded_array carrier_freq_list_utra_tdd_r10_l; // DRB-ToAddModList ::= SEQUENCE (SIZE (1..maxDRB)) OF DRB-ToAddMod typedef dyn_array drb_to_add_mod_list_l; // DRB-ToAddModList-r15 ::= SEQUENCE (SIZE (1..maxDRB-r15)) OF DRB-ToAddMod typedef dyn_array drb_to_add_mod_list_r15_l; // DRB-ToReleaseList ::= SEQUENCE (SIZE (1..maxDRB)) OF INTEGER typedef bounded_array drb_to_release_list_l; // DRB-ToReleaseList-r15 ::= SEQUENCE (SIZE (1..maxDRB-r15)) OF INTEGER typedef bounded_array drb_to_release_list_r15_l; // FreqPriorityEUTRA-v9e0 ::= SEQUENCE struct freq_prio_eutra_v9e0_s { // member variables bool carrier_freq_v9e0_present; uint32_t carrier_freq_v9e0; // sequence methods freq_prio_eutra_v9e0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // FreqPriorityListEUTRA ::= SEQUENCE (SIZE (1..maxFreq)) OF FreqPriorityEUTRA typedef dyn_array freq_prio_list_eutra_l; // FreqPriorityListEUTRA-v1310 ::= SEQUENCE (SIZE (1..maxFreq)) OF FreqPriorityEUTRA-v1310 typedef dyn_array freq_prio_list_eutra_v1310_l; // FreqPriorityListExtEUTRA-r12 ::= SEQUENCE (SIZE (1..maxFreq)) OF FreqPriorityEUTRA-r12 typedef dyn_array freq_prio_list_ext_eutra_r12_l; // FreqPriorityListExtEUTRA-v1310 ::= SEQUENCE (SIZE (1..maxFreq)) OF FreqPriorityEUTRA-v1310 typedef dyn_array freq_prio_list_ext_eutra_v1310_l; // FreqPriorityListNR-r15 ::= SEQUENCE (SIZE (1..maxFreq)) OF FreqPriorityNR-r15 typedef dyn_array freq_prio_list_nr_r15_l; // FreqPriorityListUTRA-FDD ::= SEQUENCE (SIZE (1..maxUTRA-FDD-Carrier)) OF FreqPriorityUTRA-FDD typedef dyn_array freq_prio_list_utra_fdd_l; // FreqPriorityListUTRA-TDD ::= SEQUENCE (SIZE (1..maxUTRA-TDD-Carrier)) OF FreqPriorityUTRA-TDD typedef dyn_array freq_prio_list_utra_tdd_l; // FreqsPriorityListGERAN ::= SEQUENCE (SIZE (1..maxGNFG)) OF FreqsPriorityGERAN typedef dyn_array freqs_prio_list_geran_l; // MAC-MainConfig ::= SEQUENCE struct mac_main_cfg_s { struct ul_sch_cfg_s_ { struct max_harq_tx_e_ { enum options { n1, n2, n3, n4, n5, n6, n7, n8, n10, n12, n16, n20, n24, n28, spare2, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods max_harq_tx_e_() {} max_harq_tx_e_(options v) : value(v) {} max_harq_tx_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool max_harq_tx_present; bool periodic_bsr_timer_present; max_harq_tx_e_ max_harq_tx; periodic_bsr_timer_r12_e periodic_bsr_timer; retx_bsr_timer_r12_e retx_bsr_timer; bool tti_bundling; // sequence methods ul_sch_cfg_s_(); }; struct phr_cfg_c_ { struct setup_s_ { struct periodic_phr_timer_e_ { enum options { sf10, sf20, sf50, sf100, sf200, sf500, sf1000, infinity }; typedef int16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods periodic_phr_timer_e_() {} periodic_phr_timer_e_(options v) : value(v) {} periodic_phr_timer_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int16_t to_number() const; }; struct prohibit_phr_timer_e_ { enum options { sf0, sf10, sf20, sf50, sf100, sf200, sf500, sf1000 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods prohibit_phr_timer_e_() {} prohibit_phr_timer_e_(options v) : value(v) {} prohibit_phr_timer_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct dl_pathloss_change_e_ { enum options { db1, db3, db6, infinity }; typedef int8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods dl_pathloss_change_e_() {} dl_pathloss_change_e_(options v) : value(v) {} dl_pathloss_change_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; // member variables periodic_phr_timer_e_ periodic_phr_timer; prohibit_phr_timer_e_ prohibit_phr_timer; dl_pathloss_change_e_ dl_pathloss_change; }; typedef setup_e types; // choice methods phr_cfg_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "phr-Config"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "phr-Config"); return c; } private: types type_; setup_s_ c; }; struct mac_main_cfg_v1020_s_ { struct s_cell_deactivation_timer_r10_e_ { enum options { rf2, rf4, rf8, rf16, rf32, rf64, rf128, spare }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods s_cell_deactivation_timer_r10_e_() {} s_cell_deactivation_timer_r10_e_(options v) : value(v) {} s_cell_deactivation_timer_r10_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool s_cell_deactivation_timer_r10_present; bool extended_bsr_sizes_r10_present; bool extended_phr_r10_present; s_cell_deactivation_timer_r10_e_ s_cell_deactivation_timer_r10; // sequence methods mac_main_cfg_v1020_s_(); }; struct dual_connect_phr_c_ { struct setup_s_ { struct phr_mode_other_cg_r12_e_ { enum options { real, virtual_type }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods phr_mode_other_cg_r12_e_() {} phr_mode_other_cg_r12_e_(options v) : value(v) {} phr_mode_other_cg_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables phr_mode_other_cg_r12_e_ phr_mode_other_cg_r12; }; typedef setup_e types; // choice methods dual_connect_phr_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "dualConnectivityPHR"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "dualConnectivityPHR"); return c; } private: types type_; setup_s_ c; }; struct lc_ch_sr_cfg_r12_c_ { struct setup_s_ { struct lc_ch_sr_prohibit_timer_r12_e_ { enum options { sf20, sf40, sf64, sf128, sf512, sf1024, sf2560, spare1 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods lc_ch_sr_prohibit_timer_r12_e_() {} lc_ch_sr_prohibit_timer_r12_e_(options v) : value(v) {} lc_ch_sr_prohibit_timer_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables lc_ch_sr_prohibit_timer_r12_e_ lc_ch_sr_prohibit_timer_r12; }; typedef setup_e types; // choice methods lc_ch_sr_cfg_r12_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "logicalChannelSR-Config-r12"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "logicalChannelSR-Config-r12"); return c; } private: types type_; setup_s_ c; }; struct e_drx_cfg_cycle_start_offset_r13_c_ { struct setup_c_ { struct types { enum options { sf5120, sf10240, nulltype }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // choice methods setup_c_() : type_(types::nulltype) {} setup_c_(const setup_c_& other); setup_c_& operator=(const setup_c_& other); ~setup_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint8_t& sf5120() { assert_choice_type("sf5120", type_.to_string(), "setup"); return c.get(); } uint8_t& sf10240() { assert_choice_type("sf10240", type_.to_string(), "setup"); return c.get(); } const uint8_t& sf5120() const { assert_choice_type("sf5120", type_.to_string(), "setup"); return c.get(); } const uint8_t& sf10240() const { assert_choice_type("sf10240", type_.to_string(), "setup"); return c.get(); } private: types type_; choice_buffer_t<8> c; void destroy_(); }; typedef setup_e types; // choice methods e_drx_cfg_cycle_start_offset_r13_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_c_& setup() { assert_choice_type("setup", type_.to_string(), "eDRX-Config-CycleStartOffset-r13"); return c; } const setup_c_& setup() const { assert_choice_type("setup", type_.to_string(), "eDRX-Config-CycleStartOffset-r13"); return c; } private: types type_; setup_c_ c; }; struct drx_cfg_r13_c_ { typedef setup_e types; // choice methods drx_cfg_r13_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters drx_cfg_r13_s& setup() { assert_choice_type("setup", type_.to_string(), "drx-Config-r13"); return c; } const drx_cfg_r13_s& setup() const { assert_choice_type("setup", type_.to_string(), "drx-Config-r13"); return c; } private: types type_; drx_cfg_r13_s c; }; struct skip_ul_tx_r14_c_ { struct setup_s_ { // member variables bool skip_ul_tx_sps_r14_present; bool skip_ul_tx_dynamic_r14_present; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods skip_ul_tx_r14_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "skipUplinkTx-r14"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "skipUplinkTx-r14"); return c; } private: types type_; setup_s_ c; }; struct data_inactivity_timer_cfg_r14_c_ { struct setup_s_ { // member variables data_inactivity_timer_r14_e data_inactivity_timer_r14; }; typedef setup_e types; // choice methods data_inactivity_timer_cfg_r14_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "dataInactivityTimerConfig-r14"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "dataInactivityTimerConfig-r14"); return c; } private: types type_; setup_s_ c; }; struct short_tti_and_spt_r15_c_ { struct setup_s_ { struct periodic_bsr_timer_r15_e_ { enum options { sf1, sf5, sf10, sf16, sf20, sf32, sf40, sf64, sf80, sf128, sf160, sf320, sf640, sf1280, sf2560, infinity }; typedef int16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods periodic_bsr_timer_r15_e_() {} periodic_bsr_timer_r15_e_(options v) : value(v) {} periodic_bsr_timer_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int16_t to_number() const; }; struct proc_timeline_r15_e_ { enum options { nplus4set1, nplus6set1, nplus6set2, nplus8set2 }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods proc_timeline_r15_e_() {} proc_timeline_r15_e_(options v) : value(v) {} proc_timeline_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool drx_cfg_r15_present; bool periodic_bsr_timer_r15_present; bool proc_timeline_r15_present; bool ssr_prohibit_timer_r15_present; drx_cfg_r15_s drx_cfg_r15; periodic_bsr_timer_r15_e_ periodic_bsr_timer_r15; proc_timeline_r15_e_ proc_timeline_r15; uint8_t ssr_prohibit_timer_r15; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods short_tti_and_spt_r15_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "shortTTI-AndSPT-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "shortTTI-AndSPT-r15"); return c; } private: types type_; setup_s_ c; }; struct dormant_state_timers_r15_c_ { struct setup_s_ { struct s_cell_hibernation_timer_r15_e_ { enum options { rf2, rf4, rf8, rf16, rf32, rf64, rf128, spare }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods s_cell_hibernation_timer_r15_e_() {} s_cell_hibernation_timer_r15_e_(options v) : value(v) {} s_cell_hibernation_timer_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct dormant_scell_deactivation_timer_r15_e_ { enum options { rf2, rf4, rf8, rf16, rf32, rf64, rf128, rf320, rf640, rf1280, rf2560, rf5120, rf10240, spare3, spare2, spare1 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods dormant_scell_deactivation_timer_r15_e_() {} dormant_scell_deactivation_timer_r15_e_(options v) : value(v) {} dormant_scell_deactivation_timer_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool s_cell_hibernation_timer_r15_present; bool dormant_scell_deactivation_timer_r15_present; s_cell_hibernation_timer_r15_e_ s_cell_hibernation_timer_r15; dormant_scell_deactivation_timer_r15_e_ dormant_scell_deactivation_timer_r15; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods dormant_state_timers_r15_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "dormantStateTimers-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "dormantStateTimers-r15"); return c; } private: types type_; setup_s_ c; }; // member variables bool ext; bool ul_sch_cfg_present; bool drx_cfg_present; bool phr_cfg_present; ul_sch_cfg_s_ ul_sch_cfg; drx_cfg_c drx_cfg; time_align_timer_e time_align_timer_ded; phr_cfg_c_ phr_cfg; // ... // group 0 bool sr_prohibit_timer_r9_present; uint8_t sr_prohibit_timer_r9; // group 1 bool mac_main_cfg_v1020_present; copy_ptr mac_main_cfg_v1020; // group 2 bool stag_to_release_list_r11_present; bool stag_to_add_mod_list_r11_present; bool drx_cfg_v1130_present; copy_ptr stag_to_release_list_r11; copy_ptr stag_to_add_mod_list_r11; copy_ptr drx_cfg_v1130; // group 3 bool e_harq_pattern_r12_present; bool dual_connect_phr_present; bool lc_ch_sr_cfg_r12_present; bool e_harq_pattern_r12; copy_ptr dual_connect_phr; copy_ptr lc_ch_sr_cfg_r12; // group 4 bool drx_cfg_v1310_present; bool extended_phr2_r13_present; bool e_drx_cfg_cycle_start_offset_r13_present; copy_ptr drx_cfg_v1310; bool extended_phr2_r13; copy_ptr e_drx_cfg_cycle_start_offset_r13; // group 5 bool drx_cfg_r13_present; copy_ptr drx_cfg_r13; // group 6 bool skip_ul_tx_r14_present; bool data_inactivity_timer_cfg_r14_present; copy_ptr skip_ul_tx_r14; copy_ptr data_inactivity_timer_cfg_r14; // group 7 bool rai_activation_r14_present; // group 8 bool short_tti_and_spt_r15_present; bool mpdcch_ul_harq_ack_feedback_cfg_r15_present; bool dormant_state_timers_r15_present; copy_ptr short_tti_and_spt_r15; bool mpdcch_ul_harq_ack_feedback_cfg_r15; copy_ptr dormant_state_timers_r15; // sequence methods mac_main_cfg_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasSubframePatternPCell-r10 ::= CHOICE struct meas_sf_pattern_pcell_r10_c { typedef setup_e types; // choice methods meas_sf_pattern_pcell_r10_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters meas_sf_pattern_r10_c& setup() { assert_choice_type("setup", type_.to_string(), "MeasSubframePatternPCell-r10"); return c; } const meas_sf_pattern_r10_c& setup() const { assert_choice_type("setup", type_.to_string(), "MeasSubframePatternPCell-r10"); return c; } private: types type_; meas_sf_pattern_r10_c c; }; // NAICS-AssistanceInfo-r12 ::= CHOICE struct naics_assist_info_r12_c { struct setup_s_ { // member variables bool neigh_cells_to_release_list_r12_present; bool neigh_cells_to_add_mod_list_r12_present; bool serv_cellp_a_r12_present; neigh_cells_to_release_list_r12_l neigh_cells_to_release_list_r12; neigh_cells_to_add_mod_list_r12_l neigh_cells_to_add_mod_list_r12; p_a_e serv_cellp_a_r12; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods naics_assist_info_r12_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "NAICS-AssistanceInfo-r12"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "NAICS-AssistanceInfo-r12"); return c; } private: types type_; setup_s_ c; }; // NeighCellsCRS-Info-r11 ::= CHOICE struct neigh_cells_crs_info_r11_c { typedef setup_e types; // choice methods neigh_cells_crs_info_r11_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters crs_assist_info_list_r11_l& setup() { assert_choice_type("setup", type_.to_string(), "NeighCellsCRS-Info-r11"); return c; } const crs_assist_info_list_r11_l& setup() const { assert_choice_type("setup", type_.to_string(), "NeighCellsCRS-Info-r11"); return c; } private: types type_; crs_assist_info_list_r11_l c; }; // NeighCellsCRS-Info-r13 ::= CHOICE struct neigh_cells_crs_info_r13_c { typedef setup_e types; // choice methods neigh_cells_crs_info_r13_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters crs_assist_info_list_r13_l& setup() { assert_choice_type("setup", type_.to_string(), "NeighCellsCRS-Info-r13"); return c; } const crs_assist_info_list_r13_l& setup() const { assert_choice_type("setup", type_.to_string(), "NeighCellsCRS-Info-r13"); return c; } private: types type_; crs_assist_info_list_r13_l c; }; // NeighCellsCRS-Info-r15 ::= CHOICE struct neigh_cells_crs_info_r15_c { typedef setup_e types; // choice methods neigh_cells_crs_info_r15_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters crs_assist_info_list_r15_l& setup() { assert_choice_type("setup", type_.to_string(), "NeighCellsCRS-Info-r15"); return c; } const crs_assist_info_list_r15_l& setup() const { assert_choice_type("setup", type_.to_string(), "NeighCellsCRS-Info-r15"); return c; } private: types type_; crs_assist_info_list_r15_l c; }; // PhysicalConfigDedicated ::= SEQUENCE struct phys_cfg_ded_s { struct ant_info_c_ { struct types { enum options { explicit_value, default_value, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods ant_info_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters ant_info_ded_s& explicit_value() { assert_choice_type("explicitValue", type_.to_string(), "antennaInfo"); return c; } const ant_info_ded_s& explicit_value() const { assert_choice_type("explicitValue", type_.to_string(), "antennaInfo"); return c; } private: types type_; ant_info_ded_s c; }; struct ant_info_r10_c_ { struct types { enum options { explicit_value_r10, default_value, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods ant_info_r10_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters ant_info_ded_r10_s& explicit_value_r10() { assert_choice_type("explicitValue-r10", type_.to_string(), "antennaInfo-r10"); return c; } const ant_info_ded_r10_s& explicit_value_r10() const { assert_choice_type("explicitValue-r10", type_.to_string(), "antennaInfo-r10"); return c; } private: types type_; ant_info_ded_r10_s c; }; struct add_spec_emission_ca_r10_c_ { struct setup_s_ { // member variables uint8_t add_spec_emission_pcell_r10; }; typedef setup_e types; // choice methods add_spec_emission_ca_r10_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "additionalSpectrumEmissionCA-r10"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "additionalSpectrumEmissionCA-r10"); return c; } private: types type_; setup_s_ c; }; struct ce_mode_r13_c_ { struct setup_e_ { enum options { ce_mode_a, ce_mode_b }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods setup_e_() {} setup_e_(options v) : value(v) {} setup_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; typedef setup_e types; // choice methods ce_mode_r13_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_e_& setup() { assert_choice_type("setup", type_.to_string(), "ce-Mode-r13"); return c; } const setup_e_& setup() const { assert_choice_type("setup", type_.to_string(), "ce-Mode-r13"); return c; } private: types type_; setup_e_ c; }; struct type_a_srs_tpc_pdcch_group_r14_c_ { typedef dyn_array setup_l_; typedef setup_e types; // choice methods type_a_srs_tpc_pdcch_group_r14_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_l_& setup() { assert_choice_type("setup", type_.to_string(), "typeA-SRS-TPC-PDCCH-Group-r14"); return c; } const setup_l_& setup() const { assert_choice_type("setup", type_.to_string(), "typeA-SRS-TPC-PDCCH-Group-r14"); return c; } private: types type_; setup_l_ c; }; struct must_cfg_r14_c_ { struct setup_s_ { struct k_max_r14_e_ { enum options { l1, l3 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods k_max_r14_e_() {} k_max_r14_e_(options v) : value(v) {} k_max_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct p_a_must_r14_e_ { enum options { db_minus6, db_minus4dot77, db_minus3, db_minus1dot77, db0, db1, db2, db3 }; typedef float number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods p_a_must_r14_e_() {} p_a_must_r14_e_(options v) : value(v) {} p_a_must_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; // member variables bool p_a_must_r14_present; k_max_r14_e_ k_max_r14; p_a_must_r14_e_ p_a_must_r14; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods must_cfg_r14_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "must-Config-r14"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "must-Config-r14"); return c; } private: types type_; setup_s_ c; }; typedef dyn_array srs_ul_periodic_cfg_ded_list_r14_l_; typedef dyn_array srs_ul_periodic_cfg_ded_up_pts_ext_list_r14_l_; typedef dyn_array srs_ul_aperiodic_cfg_ded_list_r14_l_; typedef dyn_array srs_ul_cfg_ded_ap_up_pts_ext_list_r14_l_; struct semi_static_cfi_cfg_r15_c_ { struct setup_c_ { struct types { enum options { cfi_cfg_r15, cfi_pattern_cfg_r15, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods setup_c_() : type_(types::nulltype) {} setup_c_(const setup_c_& other); setup_c_& operator=(const setup_c_& other); ~setup_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters cfi_cfg_r15_s& cfi_cfg_r15() { assert_choice_type("cfi-Config-r15", type_.to_string(), "setup"); return c.get(); } cfi_pattern_cfg_r15_s& cfi_pattern_cfg_r15() { assert_choice_type("cfi-PatternConfig-r15", type_.to_string(), "setup"); return c.get(); } const cfi_cfg_r15_s& cfi_cfg_r15() const { assert_choice_type("cfi-Config-r15", type_.to_string(), "setup"); return c.get(); } const cfi_pattern_cfg_r15_s& cfi_pattern_cfg_r15() const { assert_choice_type("cfi-PatternConfig-r15", type_.to_string(), "setup"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; typedef setup_e types; // choice methods semi_static_cfi_cfg_r15_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_c_& setup() { assert_choice_type("setup", type_.to_string(), "semiStaticCFI-Config-r15"); return c; } const setup_c_& setup() const { assert_choice_type("setup", type_.to_string(), "semiStaticCFI-Config-r15"); return c; } private: types type_; setup_c_ c; }; struct blind_pdsch_repeat_cfg_r15_c_ { struct setup_s_ { struct max_num_sf_pdsch_repeats_r15_e_ { enum options { n4, n6 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods max_num_sf_pdsch_repeats_r15_e_() {} max_num_sf_pdsch_repeats_r15_e_(options v) : value(v) {} max_num_sf_pdsch_repeats_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct max_num_slot_subslot_pdsch_repeats_r15_e_ { enum options { n4, n6 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods max_num_slot_subslot_pdsch_repeats_r15_e_() {} max_num_slot_subslot_pdsch_repeats_r15_e_(options v) : value(v) {} max_num_slot_subslot_pdsch_repeats_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct rv_sf_pdsch_repeats_r15_e_ { enum options { dlrvseq1, dlrvseq2 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods rv_sf_pdsch_repeats_r15_e_() {} rv_sf_pdsch_repeats_r15_e_(options v) : value(v) {} rv_sf_pdsch_repeats_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct rv_slotsublot_pdsch_repeats_r15_e_ { enum options { dlrvseq1, dlrvseq2 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods rv_slotsublot_pdsch_repeats_r15_e_() {} rv_slotsublot_pdsch_repeats_r15_e_(options v) : value(v) {} rv_slotsublot_pdsch_repeats_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct mcs_restrict_sf_pdsch_repeats_r15_e_ { enum options { n0, n1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods mcs_restrict_sf_pdsch_repeats_r15_e_() {} mcs_restrict_sf_pdsch_repeats_r15_e_(options v) : value(v) {} mcs_restrict_sf_pdsch_repeats_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct mcs_restrict_slot_subslot_pdsch_repeats_r15_e_ { enum options { n0, n1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods mcs_restrict_slot_subslot_pdsch_repeats_r15_e_() {} mcs_restrict_slot_subslot_pdsch_repeats_r15_e_(options v) : value(v) {} mcs_restrict_slot_subslot_pdsch_repeats_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool max_num_sf_pdsch_repeats_r15_present; bool max_num_slot_subslot_pdsch_repeats_r15_present; bool rv_sf_pdsch_repeats_r15_present; bool rv_slotsublot_pdsch_repeats_r15_present; bool nof_processes_sf_pdsch_repeats_r15_present; bool nof_processes_slot_subslot_pdsch_repeats_r15_present; bool mcs_restrict_sf_pdsch_repeats_r15_present; bool mcs_restrict_slot_subslot_pdsch_repeats_r15_present; bool blind_sf_pdsch_repeats_r15; bool blind_slot_subslot_pdsch_repeats_r15; max_num_sf_pdsch_repeats_r15_e_ max_num_sf_pdsch_repeats_r15; max_num_slot_subslot_pdsch_repeats_r15_e_ max_num_slot_subslot_pdsch_repeats_r15; rv_sf_pdsch_repeats_r15_e_ rv_sf_pdsch_repeats_r15; rv_slotsublot_pdsch_repeats_r15_e_ rv_slotsublot_pdsch_repeats_r15; uint8_t nof_processes_sf_pdsch_repeats_r15; uint8_t nof_processes_slot_subslot_pdsch_repeats_r15; mcs_restrict_sf_pdsch_repeats_r15_e_ mcs_restrict_sf_pdsch_repeats_r15; mcs_restrict_slot_subslot_pdsch_repeats_r15_e_ mcs_restrict_slot_subslot_pdsch_repeats_r15; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods blind_pdsch_repeat_cfg_r15_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "blindPDSCH-Repetition-Config-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "blindPDSCH-Repetition-Config-r15"); return c; } private: types type_; setup_s_ c; }; // member variables bool ext; bool pdsch_cfg_ded_present; bool pucch_cfg_ded_present; bool pusch_cfg_ded_present; bool ul_pwr_ctrl_ded_present; bool tpc_pdcch_cfg_pucch_present; bool tpc_pdcch_cfg_pusch_present; bool cqi_report_cfg_present; bool srs_ul_cfg_ded_present; bool ant_info_present; bool sched_request_cfg_present; pdsch_cfg_ded_s pdsch_cfg_ded; pucch_cfg_ded_s pucch_cfg_ded; pusch_cfg_ded_s pusch_cfg_ded; ul_pwr_ctrl_ded_s ul_pwr_ctrl_ded; tpc_pdcch_cfg_c tpc_pdcch_cfg_pucch; tpc_pdcch_cfg_c tpc_pdcch_cfg_pusch; cqi_report_cfg_s cqi_report_cfg; srs_ul_cfg_ded_c srs_ul_cfg_ded; ant_info_c_ ant_info; sched_request_cfg_c sched_request_cfg; // ... // group 0 bool cqi_report_cfg_v920_present; bool ant_info_v920_present; copy_ptr cqi_report_cfg_v920; copy_ptr ant_info_v920; // group 1 bool ant_info_r10_present; bool ant_info_ul_r10_present; bool cif_presence_r10_present; bool cqi_report_cfg_r10_present; bool csi_rs_cfg_r10_present; bool pucch_cfg_ded_v1020_present; bool pusch_cfg_ded_v1020_present; bool sched_request_cfg_v1020_present; bool srs_ul_cfg_ded_v1020_present; bool srs_ul_cfg_ded_aperiodic_r10_present; bool ul_pwr_ctrl_ded_v1020_present; copy_ptr ant_info_r10; copy_ptr ant_info_ul_r10; bool cif_presence_r10; copy_ptr cqi_report_cfg_r10; copy_ptr csi_rs_cfg_r10; copy_ptr pucch_cfg_ded_v1020; copy_ptr pusch_cfg_ded_v1020; copy_ptr sched_request_cfg_v1020; copy_ptr srs_ul_cfg_ded_v1020; copy_ptr srs_ul_cfg_ded_aperiodic_r10; copy_ptr ul_pwr_ctrl_ded_v1020; // group 2 bool add_spec_emission_ca_r10_present; copy_ptr add_spec_emission_ca_r10; // group 3 bool csi_rs_cfg_nzp_to_release_list_r11_present; bool csi_rs_cfg_nzp_to_add_mod_list_r11_present; bool csi_rs_cfg_zp_to_release_list_r11_present; bool csi_rs_cfg_zp_to_add_mod_list_r11_present; bool epdcch_cfg_r11_present; bool pdsch_cfg_ded_v1130_present; bool cqi_report_cfg_v1130_present; bool pucch_cfg_ded_v1130_present; bool pusch_cfg_ded_v1130_present; bool ul_pwr_ctrl_ded_v1130_present; copy_ptr csi_rs_cfg_nzp_to_release_list_r11; copy_ptr csi_rs_cfg_nzp_to_add_mod_list_r11; copy_ptr csi_rs_cfg_zp_to_release_list_r11; copy_ptr csi_rs_cfg_zp_to_add_mod_list_r11; copy_ptr epdcch_cfg_r11; copy_ptr pdsch_cfg_ded_v1130; copy_ptr cqi_report_cfg_v1130; copy_ptr pucch_cfg_ded_v1130; copy_ptr pusch_cfg_ded_v1130; copy_ptr ul_pwr_ctrl_ded_v1130; // group 4 bool ant_info_v1250_present; bool eimta_main_cfg_r12_present; bool eimta_main_cfg_pcell_r12_present; bool pucch_cfg_ded_v1250_present; bool cqi_report_cfg_pcell_v1250_present; bool ul_pwr_ctrl_ded_v1250_present; bool pusch_cfg_ded_v1250_present; bool csi_rs_cfg_v1250_present; copy_ptr ant_info_v1250; copy_ptr eimta_main_cfg_r12; copy_ptr eimta_main_cfg_pcell_r12; copy_ptr pucch_cfg_ded_v1250; copy_ptr cqi_report_cfg_pcell_v1250; copy_ptr ul_pwr_ctrl_ded_v1250; copy_ptr pusch_cfg_ded_v1250; copy_ptr csi_rs_cfg_v1250; // group 5 bool pdsch_cfg_ded_v1280_present; copy_ptr pdsch_cfg_ded_v1280; // group 6 bool pdsch_cfg_ded_v1310_present; bool pucch_cfg_ded_r13_present; bool pusch_cfg_ded_r13_present; bool pdcch_candidate_reductions_r13_present; bool cqi_report_cfg_v1310_present; bool srs_ul_cfg_ded_v1310_present; bool srs_ul_cfg_ded_up_pts_ext_r13_present; bool srs_ul_cfg_ded_aperiodic_v1310_present; bool srs_ul_cfg_ded_aperiodic_up_pts_ext_r13_present; bool csi_rs_cfg_v1310_present; bool ce_mode_r13_present; bool csi_rs_cfg_nzp_to_add_mod_list_ext_r13_present; bool csi_rs_cfg_nzp_to_release_list_ext_r13_present; copy_ptr pdsch_cfg_ded_v1310; copy_ptr pucch_cfg_ded_r13; copy_ptr pusch_cfg_ded_r13; copy_ptr pdcch_candidate_reductions_r13; copy_ptr cqi_report_cfg_v1310; copy_ptr srs_ul_cfg_ded_v1310; copy_ptr srs_ul_cfg_ded_up_pts_ext_r13; copy_ptr srs_ul_cfg_ded_aperiodic_v1310; copy_ptr srs_ul_cfg_ded_aperiodic_up_pts_ext_r13; copy_ptr csi_rs_cfg_v1310; copy_ptr ce_mode_r13; copy_ptr csi_rs_cfg_nzp_to_add_mod_list_ext_r13; copy_ptr csi_rs_cfg_nzp_to_release_list_ext_r13; // group 7 bool cqi_report_cfg_v1320_present; copy_ptr cqi_report_cfg_v1320; // group 8 bool type_a_srs_tpc_pdcch_group_r14_present; bool must_cfg_r14_present; bool pusch_enhance_cfg_r14_present; bool ce_pdsch_pusch_enhancement_cfg_r14_present; bool ant_info_v1430_present; bool pucch_cfg_ded_v1430_present; bool pdsch_cfg_ded_v1430_present; bool pusch_cfg_ded_v1430_present; bool srs_ul_periodic_cfg_ded_list_r14_present; bool srs_ul_periodic_cfg_ded_up_pts_ext_list_r14_present; bool srs_ul_aperiodic_cfg_ded_list_r14_present; bool srs_ul_cfg_ded_ap_up_pts_ext_list_r14_present; bool csi_rs_cfg_v1430_present; bool csi_rs_cfg_zp_ap_list_r14_present; bool cqi_report_cfg_v1430_present; bool semi_open_loop_r14_present; copy_ptr type_a_srs_tpc_pdcch_group_r14; copy_ptr must_cfg_r14; copy_ptr pusch_enhance_cfg_r14; copy_ptr ant_info_v1430; copy_ptr pucch_cfg_ded_v1430; copy_ptr pdsch_cfg_ded_v1430; copy_ptr pusch_cfg_ded_v1430; copy_ptr srs_ul_periodic_cfg_ded_list_r14; copy_ptr srs_ul_periodic_cfg_ded_up_pts_ext_list_r14; copy_ptr srs_ul_aperiodic_cfg_ded_list_r14; copy_ptr srs_ul_cfg_ded_ap_up_pts_ext_list_r14; copy_ptr csi_rs_cfg_v1430; copy_ptr csi_rs_cfg_zp_ap_list_r14; copy_ptr cqi_report_cfg_v1430; bool semi_open_loop_r14; // group 9 bool csi_rs_cfg_v1480_present; copy_ptr csi_rs_cfg_v1480; // group 10 bool phys_cfg_ded_stti_r15_present; bool pdsch_cfg_ded_v1530_present; bool pusch_cfg_ded_v1530_present; bool cqi_report_cfg_v1530_present; bool ant_info_v1530_present; bool csi_rs_cfg_v1530_present; bool ul_pwr_ctrl_ded_v1530_present; bool semi_static_cfi_cfg_r15_present; bool blind_pdsch_repeat_cfg_r15_present; copy_ptr phys_cfg_ded_stti_r15; copy_ptr pdsch_cfg_ded_v1530; copy_ptr pusch_cfg_ded_v1530; copy_ptr cqi_report_cfg_v1530; copy_ptr ant_info_v1530; copy_ptr csi_rs_cfg_v1530; copy_ptr ul_pwr_ctrl_ded_v1530; copy_ptr semi_static_cfi_cfg_r15; copy_ptr blind_pdsch_repeat_cfg_r15; // sequence methods phys_cfg_ded_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RLF-TimersAndConstants-r13 ::= CHOICE struct rlf_timers_and_consts_r13_c { struct setup_s_ { struct t301_v1310_e_ { enum options { ms2500, ms3000, ms3500, ms4000, ms5000, ms6000, ms8000, ms10000 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods t301_v1310_e_() {} t301_v1310_e_(options v) : value(v) {} t301_v1310_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct t310_v1330_e_ { enum options { ms4000, ms6000 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods t310_v1330_e_() {} t310_v1330_e_(options v) : value(v) {} t310_v1330_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool ext; t301_v1310_e_ t301_v1310; // ... // group 0 bool t310_v1330_present; t310_v1330_e_ t310_v1330; // sequence methods setup_s_(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; typedef setup_e types; // choice methods rlf_timers_and_consts_r13_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "RLF-TimersAndConstants-r13"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "RLF-TimersAndConstants-r13"); return c; } private: types type_; setup_s_ c; }; // RLF-TimersAndConstants-r9 ::= CHOICE struct rlf_timers_and_consts_r9_c { struct setup_s_ { struct t301_r9_e_ { enum options { ms100, ms200, ms300, ms400, ms600, ms1000, ms1500, ms2000 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods t301_r9_e_() {} t301_r9_e_(options v) : value(v) {} t301_r9_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct t310_r9_e_ { enum options { ms0, ms50, ms100, ms200, ms500, ms1000, ms2000 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 7, nof_exts = 0; static const bool has_ext = false; // enumerated methods t310_r9_e_() {} t310_r9_e_(options v) : value(v) {} t310_r9_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct n310_r9_e_ { enum options { n1, n2, n3, n4, n6, n8, n10, n20 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods n310_r9_e_() {} n310_r9_e_(options v) : value(v) {} n310_r9_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct t311_r9_e_ { enum options { ms1000, ms3000, ms5000, ms10000, ms15000, ms20000, ms30000 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 7, nof_exts = 0; static const bool has_ext = false; // enumerated methods t311_r9_e_() {} t311_r9_e_(options v) : value(v) {} t311_r9_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct n311_r9_e_ { enum options { n1, n2, n3, n4, n5, n6, n8, n10 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods n311_r9_e_() {} n311_r9_e_(options v) : value(v) {} n311_r9_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ext; t301_r9_e_ t301_r9; t310_r9_e_ t310_r9; n310_r9_e_ n310_r9; t311_r9_e_ t311_r9; n311_r9_e_ n311_r9; // ... // sequence methods setup_s_(); }; typedef setup_e types; // choice methods rlf_timers_and_consts_r9_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "RLF-TimersAndConstants-r9"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "RLF-TimersAndConstants-r9"); return c; } private: types type_; setup_s_ c; }; // RRCConnectionReject-v1020-IEs ::= SEQUENCE struct rrc_conn_reject_v1020_ies_s { // member variables bool extended_wait_time_r10_present; bool non_crit_ext_present; uint16_t extended_wait_time_r10; rrc_conn_reject_v1130_ies_s non_crit_ext; // sequence methods rrc_conn_reject_v1020_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SPS-Config ::= SEQUENCE struct sps_cfg_s { // member variables bool semi_persist_sched_c_rnti_present; bool sps_cfg_dl_present; bool sps_cfg_ul_present; fixed_bitstring<16> semi_persist_sched_c_rnti; sps_cfg_dl_c sps_cfg_dl; sps_cfg_ul_c sps_cfg_ul; // sequence methods sps_cfg_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SPS-Config-v1430 ::= SEQUENCE struct sps_cfg_v1430_s { // member variables bool ul_sps_v_rnti_r14_present; bool sl_sps_v_rnti_r14_present; bool sps_cfg_ul_to_add_mod_list_r14_present; bool sps_cfg_ul_to_release_list_r14_present; bool sps_cfg_sl_to_add_mod_list_r14_present; bool sps_cfg_sl_to_release_list_r14_present; fixed_bitstring<16> ul_sps_v_rnti_r14; fixed_bitstring<16> sl_sps_v_rnti_r14; sps_cfg_ul_to_add_mod_list_r14_l sps_cfg_ul_to_add_mod_list_r14; sps_cfg_ul_to_release_list_r14_l sps_cfg_ul_to_release_list_r14; sps_cfg_sl_to_add_mod_list_r14_l sps_cfg_sl_to_add_mod_list_r14; sps_cfg_sl_to_release_list_r14_l sps_cfg_sl_to_release_list_r14; // sequence methods sps_cfg_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SPS-Config-v1530 ::= SEQUENCE struct sps_cfg_v1530_s { // member variables bool semi_persist_sched_c_rnti_r15_present; bool sps_cfg_dl_present; bool sps_cfg_ul_stti_to_add_mod_list_r15_present; bool sps_cfg_ul_stti_to_release_list_r15_present; bool sps_cfg_ul_to_add_mod_list_r15_present; bool sps_cfg_ul_to_release_list_r15_present; fixed_bitstring<16> semi_persist_sched_c_rnti_r15; sps_cfg_dl_c sps_cfg_dl; sps_cfg_ul_stti_to_add_mod_list_r15_l sps_cfg_ul_stti_to_add_mod_list_r15; sps_cfg_ul_stti_to_release_list_r15_l sps_cfg_ul_stti_to_release_list_r15; sps_cfg_ul_to_add_mod_list_r15_l sps_cfg_ul_to_add_mod_list_r15; sps_cfg_ul_to_release_list_r15_l sps_cfg_ul_to_release_list_r15; // sequence methods sps_cfg_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SRB-ToAddModExtList-r15 ::= SEQUENCE (SIZE (1)) OF SRB-ToAddMod typedef fixed_array srb_to_add_mod_ext_list_r15_l; // SRB-ToAddModList ::= SEQUENCE (SIZE (1..2)) OF SRB-ToAddMod typedef dyn_array srb_to_add_mod_list_l; // SRB-ToReleaseListDupl-r15 ::= SEQUENCE (SIZE (1..2)) OF INTEGER typedef bounded_array srb_to_release_list_dupl_r15_l; // IdleModeMobilityControlInfo ::= SEQUENCE struct idle_mode_mob_ctrl_info_s { struct t320_e_ { enum options { min5, min10, min20, min30, min60, min120, min180, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods t320_e_() {} t320_e_(options v) : value(v) {} t320_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ext; bool freq_prio_list_eutra_present; bool freq_prio_list_geran_present; bool freq_prio_list_utra_fdd_present; bool freq_prio_list_utra_tdd_present; bool band_class_prio_list_hrpd_present; bool band_class_prio_list1_xrtt_present; bool t320_present; 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 bool freq_prio_list_ext_eutra_r12_present; copy_ptr freq_prio_list_ext_eutra_r12; // group 1 bool freq_prio_list_eutra_v1310_present; bool freq_prio_list_ext_eutra_v1310_present; copy_ptr freq_prio_list_eutra_v1310; copy_ptr freq_prio_list_ext_eutra_v1310; // group 2 bool freq_prio_list_nr_r15_present; copy_ptr freq_prio_list_nr_r15; // sequence methods idle_mode_mob_ctrl_info_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // IdleModeMobilityControlInfo-v9e0 ::= SEQUENCE struct idle_mode_mob_ctrl_info_v9e0_s { typedef dyn_array freq_prio_list_eutra_v9e0_l_; // 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(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReestablishment-v8a0-IEs ::= SEQUENCE struct rrc_conn_reest_v8a0_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; // sequence methods rrc_conn_reest_v8a0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReestablishmentReject-v8a0-IEs ::= SEQUENCE struct rrc_conn_reest_reject_v8a0_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; // sequence methods rrc_conn_reest_reject_v8a0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReject-v8a0-IEs ::= SEQUENCE struct rrc_conn_reject_v8a0_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; rrc_conn_reject_v1020_ies_s non_crit_ext; // sequence methods rrc_conn_reject_v8a0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionSetup-v8a0-IEs ::= SEQUENCE struct rrc_conn_setup_v8a0_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; // sequence methods rrc_conn_setup_v8a0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RadioResourceConfigDedicated ::= SEQUENCE struct rr_cfg_ded_s { struct mac_main_cfg_c_ { struct types { enum options { explicit_value, default_value, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods mac_main_cfg_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters mac_main_cfg_s& explicit_value() { assert_choice_type("explicitValue", type_.to_string(), "mac-MainConfig"); return c; } const mac_main_cfg_s& explicit_value() const { assert_choice_type("explicitValue", type_.to_string(), "mac-MainConfig"); return c; } private: types type_; mac_main_cfg_s c; }; struct crs_intf_mitig_cfg_r15_c_ { struct setup_c_ { struct crs_intf_mitig_num_prbs_r15_e_ { enum options { n6, n24 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods crs_intf_mitig_num_prbs_r15_e_() {} crs_intf_mitig_num_prbs_r15_e_(options v) : value(v) {} crs_intf_mitig_num_prbs_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct types { enum options { crs_intf_mitig_enabled_minus15, crs_intf_mitig_num_prbs_r15, nulltype }; typedef int8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; // choice methods setup_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters crs_intf_mitig_num_prbs_r15_e_& crs_intf_mitig_num_prbs_r15() { assert_choice_type("crs-IntfMitigNumPRBs-r15", type_.to_string(), "setup"); return c; } const crs_intf_mitig_num_prbs_r15_e_& crs_intf_mitig_num_prbs_r15() const { assert_choice_type("crs-IntfMitigNumPRBs-r15", type_.to_string(), "setup"); return c; } private: types type_; crs_intf_mitig_num_prbs_r15_e_ c; }; typedef setup_e types; // choice methods crs_intf_mitig_cfg_r15_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_c_& setup() { assert_choice_type("setup", type_.to_string(), "crs-IntfMitigConfig-r15"); return c; } const setup_c_& setup() const { assert_choice_type("setup", type_.to_string(), "crs-IntfMitigConfig-r15"); return c; } private: types type_; setup_c_ c; }; // member variables bool ext; bool srb_to_add_mod_list_present; bool drb_to_add_mod_list_present; bool drb_to_release_list_present; bool mac_main_cfg_present; bool sps_cfg_present; bool phys_cfg_ded_present; srb_to_add_mod_list_l srb_to_add_mod_list; drb_to_add_mod_list_l drb_to_add_mod_list; drb_to_release_list_l drb_to_release_list; mac_main_cfg_c_ mac_main_cfg; sps_cfg_s sps_cfg; phys_cfg_ded_s phys_cfg_ded; // ... // group 0 bool rlf_timers_and_consts_r9_present; copy_ptr rlf_timers_and_consts_r9; // group 1 bool meas_sf_pattern_pcell_r10_present; copy_ptr meas_sf_pattern_pcell_r10; // group 2 bool neigh_cells_crs_info_r11_present; copy_ptr neigh_cells_crs_info_r11; // group 3 bool naics_info_r12_present; copy_ptr naics_info_r12; // group 4 bool neigh_cells_crs_info_r13_present; bool rlf_timers_and_consts_r13_present; copy_ptr neigh_cells_crs_info_r13; copy_ptr rlf_timers_and_consts_r13; // group 5 bool sps_cfg_v1430_present; copy_ptr sps_cfg_v1430; // group 6 bool srb_to_add_mod_ext_list_r15_present; bool srb_to_release_ext_list_r15_present; bool sps_cfg_v1530_present; bool crs_intf_mitig_cfg_r15_present; bool neigh_cells_crs_info_r15_present; bool drb_to_add_mod_list_r15_present; bool drb_to_release_list_r15_present; bool srb_to_release_list_dupl_r15_present; copy_ptr srb_to_add_mod_ext_list_r15; uint8_t srb_to_release_ext_list_r15; copy_ptr sps_cfg_v1530; copy_ptr crs_intf_mitig_cfg_r15; copy_ptr neigh_cells_crs_info_r15; copy_ptr drb_to_add_mod_list_r15; copy_ptr drb_to_release_list_r15; copy_ptr srb_to_release_list_dupl_r15; // sequence methods rr_cfg_ded_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RedirectedCarrierInfo-r15-IEs ::= CHOICE struct redirected_carrier_info_r15_ies_c { struct types { enum options { eutra_r15, geran_r15, utra_fdd_r15, cdma2000_hrpd_r15, cdma2000_minus1x_rtt_r15, utra_tdd_r15, nulltype }; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods redirected_carrier_info_r15_ies_c() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters uint32_t& eutra_r15() { assert_choice_type("eutra-r15", type_.to_string(), "RedirectedCarrierInfo-r15-IEs"); return c.get(); } carrier_freqs_geran_s& geran_r15() { assert_choice_type("geran-r15", type_.to_string(), "RedirectedCarrierInfo-r15-IEs"); return c.get(); } uint16_t& utra_fdd_r15() { assert_choice_type("utra-FDD-r15", type_.to_string(), "RedirectedCarrierInfo-r15-IEs"); return c.get(); } carrier_freq_cdma2000_s& cdma2000_hrpd_r15() { assert_choice_type("cdma2000-HRPD-r15", type_.to_string(), "RedirectedCarrierInfo-r15-IEs"); return c.get(); } carrier_freq_cdma2000_s& cdma2000_minus1x_rtt_r15() { assert_choice_type("cdma2000-1xRTT-r15", type_.to_string(), "RedirectedCarrierInfo-r15-IEs"); return c.get(); } carrier_freq_list_utra_tdd_r10_l& utra_tdd_r15() { assert_choice_type("utra-TDD-r15", type_.to_string(), "RedirectedCarrierInfo-r15-IEs"); return c.get(); } const uint32_t& eutra_r15() const { assert_choice_type("eutra-r15", type_.to_string(), "RedirectedCarrierInfo-r15-IEs"); return c.get(); } const carrier_freqs_geran_s& geran_r15() const { assert_choice_type("geran-r15", type_.to_string(), "RedirectedCarrierInfo-r15-IEs"); return c.get(); } const uint16_t& utra_fdd_r15() const { assert_choice_type("utra-FDD-r15", type_.to_string(), "RedirectedCarrierInfo-r15-IEs"); return c.get(); } const carrier_freq_cdma2000_s& cdma2000_hrpd_r15() const { assert_choice_type("cdma2000-HRPD-r15", type_.to_string(), "RedirectedCarrierInfo-r15-IEs"); return c.get(); } const carrier_freq_cdma2000_s& cdma2000_minus1x_rtt_r15() const { assert_choice_type("cdma2000-1xRTT-r15", type_.to_string(), "RedirectedCarrierInfo-r15-IEs"); return c.get(); } const carrier_freq_list_utra_tdd_r10_l& utra_tdd_r15() const { assert_choice_type("utra-TDD-r15", type_.to_string(), "RedirectedCarrierInfo-r15-IEs"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // RRCConnectionReestablishment-r8-IEs ::= SEQUENCE struct rrc_conn_reest_r8_ies_s { // member variables bool non_crit_ext_present; rr_cfg_ded_s rr_cfg_ded; uint8_t next_hop_chaining_count; rrc_conn_reest_v8a0_ies_s non_crit_ext; // sequence methods rrc_conn_reest_r8_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReestablishmentReject-r8-IEs ::= SEQUENCE struct rrc_conn_reest_reject_r8_ies_s { // member variables bool non_crit_ext_present; rrc_conn_reest_reject_v8a0_ies_s non_crit_ext; // sequence methods rrc_conn_reest_reject_r8_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReject-r8-IEs ::= SEQUENCE struct rrc_conn_reject_r8_ies_s { // member variables bool non_crit_ext_present; uint8_t wait_time; rrc_conn_reject_v8a0_ies_s non_crit_ext; // sequence methods rrc_conn_reject_r8_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionSetup-r8-IEs ::= SEQUENCE struct rrc_conn_setup_r8_ies_s { // member variables bool non_crit_ext_present; rr_cfg_ded_s rr_cfg_ded; rrc_conn_setup_v8a0_ies_s non_crit_ext; // sequence methods rrc_conn_setup_r8_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCEarlyDataComplete-r15-IEs ::= SEQUENCE struct rrc_early_data_complete_r15_ies_s { // member variables bool ded_info_nas_r15_present; bool extended_wait_time_r15_present; bool idle_mode_mob_ctrl_info_r15_present; bool idle_mode_mob_ctrl_info_ext_r15_present; bool redirected_carrier_info_r15_present; bool non_crit_ext_present; dyn_octstring ded_info_nas_r15; uint16_t extended_wait_time_r15; 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; // sequence methods rrc_early_data_complete_r15_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; struct c1_or_crit_ext_e { enum options { c1, crit_exts_future, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods c1_or_crit_ext_e() {} c1_or_crit_ext_e(options v) : value(v) {} c1_or_crit_ext_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // RRCConnectionReestablishment ::= SEQUENCE struct rrc_conn_reest_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { rrc_conn_reest_r8, spare7, spare6, spare5, spare4, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters rrc_conn_reest_r8_ies_s& rrc_conn_reest_r8() { assert_choice_type("rrcConnectionReestablishment-r8", type_.to_string(), "c1"); return c; } const rrc_conn_reest_r8_ies_s& rrc_conn_reest_r8() const { assert_choice_type("rrcConnectionReestablishment-r8", type_.to_string(), "c1"); return c; } private: types type_; rrc_conn_reest_r8_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables uint8_t rrc_transaction_id; crit_exts_c_ crit_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReestablishmentReject ::= SEQUENCE struct rrc_conn_reest_reject_s { struct crit_exts_c_ { struct types { enum options { rrc_conn_reest_reject_r8, crit_exts_future, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_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("rrcConnectionReestablishmentReject-r8", type_.to_string(), "criticalExtensions"); return c.get(); } const rrc_conn_reest_reject_r8_ies_s& rrc_conn_reest_reject_r8() const { assert_choice_type("rrcConnectionReestablishmentReject-r8", type_.to_string(), "criticalExtensions"); 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(bit_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 { enum options { rrc_conn_reject_r8, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters rrc_conn_reject_r8_ies_s& rrc_conn_reject_r8() { assert_choice_type("rrcConnectionReject-r8", type_.to_string(), "c1"); return c; } const rrc_conn_reject_r8_ies_s& rrc_conn_reject_r8() const { assert_choice_type("rrcConnectionReject-r8", type_.to_string(), "c1"); return c; } private: types type_; rrc_conn_reject_r8_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); 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(bit_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 { enum options { rrc_conn_setup_r8, spare7, spare6, spare5, spare4, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters rrc_conn_setup_r8_ies_s& rrc_conn_setup_r8() { assert_choice_type("rrcConnectionSetup-r8", type_.to_string(), "c1"); return c; } const rrc_conn_setup_r8_ies_s& rrc_conn_setup_r8() const { assert_choice_type("rrcConnectionSetup-r8", type_.to_string(), "c1"); return c; } private: types type_; rrc_conn_setup_r8_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables uint8_t rrc_transaction_id; crit_exts_c_ crit_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_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 { enum options { rrc_early_data_complete_r15, crit_exts_future, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_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("rrcEarlyDataComplete-r15", type_.to_string(), "criticalExtensions"); return c.get(); } const rrc_early_data_complete_r15_ies_s& rrc_early_data_complete_r15() const { assert_choice_type("rrcEarlyDataComplete-r15", type_.to_string(), "criticalExtensions"); 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(bit_ref& bref); void to_json(json_writer& j) const; }; // DL-CCCH-MessageType ::= CHOICE struct dl_ccch_msg_type_c { struct c1_c_ { struct types { enum options { rrc_conn_reest, rrc_conn_reest_reject, rrc_conn_reject, rrc_conn_setup, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters rrc_conn_reest_s& rrc_conn_reest() { assert_choice_type("rrcConnectionReestablishment", type_.to_string(), "c1"); return c.get(); } rrc_conn_reest_reject_s& rrc_conn_reest_reject() { assert_choice_type("rrcConnectionReestablishmentReject", type_.to_string(), "c1"); return c.get(); } rrc_conn_reject_s& rrc_conn_reject() { assert_choice_type("rrcConnectionReject", type_.to_string(), "c1"); return c.get(); } rrc_conn_setup_s& rrc_conn_setup() { assert_choice_type("rrcConnectionSetup", type_.to_string(), "c1"); return c.get(); } const rrc_conn_reest_s& rrc_conn_reest() const { assert_choice_type("rrcConnectionReestablishment", type_.to_string(), "c1"); return c.get(); } const rrc_conn_reest_reject_s& rrc_conn_reest_reject() const { assert_choice_type("rrcConnectionReestablishmentReject", type_.to_string(), "c1"); return c.get(); } const rrc_conn_reject_s& rrc_conn_reject() const { assert_choice_type("rrcConnectionReject", type_.to_string(), "c1"); return c.get(); } const rrc_conn_setup_s& rrc_conn_setup() const { assert_choice_type("rrcConnectionSetup", type_.to_string(), "c1"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct msg_class_ext_c_ { struct c2_c_ { struct types { enum options { rrc_early_data_complete_r15, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c2_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters rrc_early_data_complete_r15_s& rrc_early_data_complete_r15() { assert_choice_type("rrcEarlyDataComplete-r15", type_.to_string(), "c2"); return c; } const rrc_early_data_complete_r15_s& rrc_early_data_complete_r15() const { assert_choice_type("rrcEarlyDataComplete-r15", type_.to_string(), "c2"); return c; } private: types type_; rrc_early_data_complete_r15_s c; }; struct types { enum options { c2, msg_class_ext_future_r15, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods msg_class_ext_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c2_c_& c2() { assert_choice_type("c2", type_.to_string(), "messageClassExtension"); return c.get(); } const c2_c_& c2() const { assert_choice_type("c2", type_.to_string(), "messageClassExtension"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct types { enum options { c1, msg_class_ext, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods dl_ccch_msg_type_c() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "DL-CCCH-MessageType"); return c.get(); } msg_class_ext_c_& msg_class_ext() { assert_choice_type("messageClassExtension", type_.to_string(), "DL-CCCH-MessageType"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "DL-CCCH-MessageType"); return c.get(); } const msg_class_ext_c_& msg_class_ext() const { assert_choice_type("messageClassExtension", type_.to_string(), "DL-CCCH-MessageType"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // DL-CCCH-Message ::= SEQUENCE struct dl_ccch_msg_s { // member variables dl_ccch_msg_type_c msg; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PDCCH-CandidateReductionValue-r14 ::= ENUMERATED struct pdcch_candidate_reduction_value_r14_e { enum options { n0, n50, n100, n150 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods pdcch_candidate_reduction_value_r14_e() {} pdcch_candidate_reduction_value_r14_e(options v) : value(v) {} pdcch_candidate_reduction_value_r14_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // PDCCH-CandidateReductionsLAA-UL-r14 ::= CHOICE struct pdcch_candidate_reductions_laa_ul_r14_c { struct setup_s_ { // member variables pdcch_candidate_reduction_value_r13_e pdcch_candidate_reduction_al1_r14; pdcch_candidate_reduction_value_r13_e pdcch_candidate_reduction_al2_r14; pdcch_candidate_reduction_value_r14_e pdcch_candidate_reduction_al3_r14; pdcch_candidate_reduction_value_r14_e pdcch_candidate_reduction_al4_r14; pdcch_candidate_reduction_value_r14_e pdcch_candidate_reduction_al5_r14; }; typedef setup_e types; // choice methods pdcch_candidate_reductions_laa_ul_r14_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "PDCCH-CandidateReductionsLAA-UL-r14"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "PDCCH-CandidateReductionsLAA-UL-r14"); return c; } private: types type_; setup_s_ c; }; // AUL-Config-r15 ::= CHOICE struct aul_cfg_r15_c { struct setup_s_ { struct tx_mode_ul_aul_r15_e_ { enum options { tm1, tm2 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods tx_mode_ul_aul_r15_e_() {} tx_mode_ul_aul_r15_e_(options v) : value(v) {} tx_mode_ul_aul_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct aul_start_partial_bw_inside_mcot_r15_e_ { enum options { o34, o43, o52, o61, o_os1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 5, nof_exts = 0; static const bool has_ext = false; // enumerated methods aul_start_partial_bw_inside_mcot_r15_e_() {} aul_start_partial_bw_inside_mcot_r15_e_(options v) : value(v) {} aul_start_partial_bw_inside_mcot_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct aul_start_partial_bw_outside_mcot_r15_e_ { enum options { o16, o25, o34, o43, o52, o61, o_os1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 7, nof_exts = 0; static const bool has_ext = false; // enumerated methods aul_start_partial_bw_outside_mcot_r15_e_() {} aul_start_partial_bw_outside_mcot_r15_e_(options v) : value(v) {} aul_start_partial_bw_outside_mcot_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct aul_retx_timer_r15_e_ { enum options { psf4, psf5, psf6, psf8, psf10, psf12, psf20, psf28, psf37, psf44, psf68, psf84, psf100, psf116, psf132, psf164, psf324 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 17, nof_exts = 0; static const bool has_ext = false; // enumerated methods aul_retx_timer_r15_e_() {} aul_retx_timer_r15_e_(options v) : value(v) {} aul_retx_timer_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct contention_win_size_timer_r15_e_ { enum options { n0, n5, n10 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods contention_win_size_timer_r15_e_() {} contention_win_size_timer_r15_e_(options v) : value(v) {} contention_win_size_timer_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables fixed_bitstring<16> aul_crnti_r15; fixed_bitstring<40> aul_sfs_r15; uint8_t aul_harq_processes_r15; tx_mode_ul_aul_r15_e_ tx_mode_ul_aul_r15; fixed_bitstring<5> aul_start_full_bw_inside_mcot_r15; fixed_bitstring<7> aul_start_full_bw_outside_mcot_r15; aul_start_partial_bw_inside_mcot_r15_e_ aul_start_partial_bw_inside_mcot_r15; aul_start_partial_bw_outside_mcot_r15_e_ aul_start_partial_bw_outside_mcot_r15; aul_retx_timer_r15_e_ aul_retx_timer_r15; uint8_t ending_symbol_aul_r15; uint8_t sf_offset_cot_sharing_r15; contention_win_size_timer_r15_e_ contention_win_size_timer_r15; }; typedef setup_e types; // choice methods aul_cfg_r15_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "AUL-Config-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "AUL-Config-r15"); return c; } private: types type_; setup_s_ c; }; // CQI-ReportPeriodicSCell-r15 ::= CHOICE struct cqi_report_periodic_scell_r15_c { struct setup_s_ { struct csi_sf_pattern_dormant_r15_c_ { struct setup_s_ { // member variables meas_sf_pattern_r10_c csi_meas_sf_set1_r15; meas_sf_pattern_r10_c csi_meas_sf_set2_r15; }; typedef setup_e types; // choice methods csi_sf_pattern_dormant_r15_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "csi-SubframePatternDormant-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "csi-SubframePatternDormant-r15"); return c; } private: types type_; setup_s_ c; }; struct cqi_format_ind_dormant_r15_c_ { struct wideband_cqi_r15_s_ { struct csi_report_mode_r15_e_ { enum options { submode1, submode2 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods csi_report_mode_r15_e_() {} csi_report_mode_r15_e_(options v) : value(v) {} csi_report_mode_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool csi_report_mode_r15_present; csi_report_mode_r15_e_ csi_report_mode_r15; // sequence methods wideband_cqi_r15_s_(); }; struct subband_cqi_r15_s_ { struct periodicity_factor_r15_e_ { enum options { n2, n4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods periodicity_factor_r15_e_() {} periodicity_factor_r15_e_(options v) : value(v) {} periodicity_factor_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables uint8_t k_r15; periodicity_factor_r15_e_ periodicity_factor_r15; }; struct types { enum options { wideband_cqi_r15, subband_cqi_r15, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods cqi_format_ind_dormant_r15_c_() : type_(types::nulltype) {} cqi_format_ind_dormant_r15_c_(const cqi_format_ind_dormant_r15_c_& other); cqi_format_ind_dormant_r15_c_& operator=(const cqi_format_ind_dormant_r15_c_& other); ~cqi_format_ind_dormant_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(bit_ref& bref); void to_json(json_writer& j) const; // getters wideband_cqi_r15_s_& wideband_cqi_r15() { assert_choice_type("widebandCQI-r15", type_.to_string(), "cqi-FormatIndicatorDormant-r15"); return c.get(); } subband_cqi_r15_s_& subband_cqi_r15() { assert_choice_type("subbandCQI-r15", type_.to_string(), "cqi-FormatIndicatorDormant-r15"); return c.get(); } const wideband_cqi_r15_s_& wideband_cqi_r15() const { assert_choice_type("widebandCQI-r15", type_.to_string(), "cqi-FormatIndicatorDormant-r15"); return c.get(); } const subband_cqi_r15_s_& subband_cqi_r15() const { assert_choice_type("subbandCQI-r15", type_.to_string(), "cqi-FormatIndicatorDormant-r15"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables bool ri_cfg_idx_dormant_r15_present; bool csi_sf_pattern_dormant_r15_present; bool cqi_format_ind_dormant_r15_present; uint16_t cqi_pmi_cfg_idx_dormant_r15; uint16_t ri_cfg_idx_dormant_r15; csi_sf_pattern_dormant_r15_c_ csi_sf_pattern_dormant_r15; cqi_format_ind_dormant_r15_c_ cqi_format_ind_dormant_r15; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods cqi_report_periodic_scell_r15_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "CQI-ReportPeriodicSCell-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "CQI-ReportPeriodicSCell-r15"); return c; } private: types type_; setup_s_ c; }; // CrossCarrierSchedulingConfigLAA-UL-r14 ::= SEQUENCE struct cross_carrier_sched_cfg_laa_ul_r14_s { // member variables uint8_t sched_cell_id_r14; uint8_t cif_in_sched_cell_r14; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // LBT-Config-r14 ::= CHOICE struct lbt_cfg_r14_c { struct types { enum options { max_energy_detection_thres_r14, energy_detection_thres_offset_r14, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods lbt_cfg_r14_c() : type_(types::nulltype) {} lbt_cfg_r14_c(const lbt_cfg_r14_c& other); lbt_cfg_r14_c& operator=(const lbt_cfg_r14_c& other); ~lbt_cfg_r14_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters int8_t& max_energy_detection_thres_r14() { assert_choice_type("maxEnergyDetectionThreshold-r14", type_.to_string(), "LBT-Config-r14"); return c.get(); } int8_t& energy_detection_thres_offset_r14() { assert_choice_type("energyDetectionThresholdOffset-r14", type_.to_string(), "LBT-Config-r14"); return c.get(); } const int8_t& max_energy_detection_thres_r14() const { assert_choice_type("maxEnergyDetectionThreshold-r14", type_.to_string(), "LBT-Config-r14"); return c.get(); } const int8_t& energy_detection_thres_offset_r14() const { assert_choice_type("energyDetectionThresholdOffset-r14", type_.to_string(), "LBT-Config-r14"); return c.get(); } private: types type_; choice_buffer_t<8> c; void destroy_(); }; // PDCCH-ConfigLAA-r14 ::= SEQUENCE struct pdcch_cfg_laa_r14_s { struct max_nof_sched_sfs_format0_b_r14_e_ { enum options { sf2, sf3, sf4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods max_nof_sched_sfs_format0_b_r14_e_() {} max_nof_sched_sfs_format0_b_r14_e_(options v) : value(v) {} max_nof_sched_sfs_format0_b_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct max_nof_sched_sfs_format4_b_r14_e_ { enum options { sf2, sf3, sf4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods max_nof_sched_sfs_format4_b_r14_e_() {} max_nof_sched_sfs_format4_b_r14_e_(options v) : value(v) {} max_nof_sched_sfs_format4_b_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool max_nof_sched_sfs_format0_b_r14_present; bool max_nof_sched_sfs_format4_b_r14_present; bool skip_monitoring_dci_format0_a_r14_present; bool skip_monitoring_dci_format4_a_r14_present; bool pdcch_candidate_reductions_format0_a_r14_present; bool pdcch_candidate_reductions_format4_a_r14_present; bool pdcch_candidate_reductions_format0_b_r14_present; bool pdcch_candidate_reductions_format4_b_r14_present; max_nof_sched_sfs_format0_b_r14_e_ max_nof_sched_sfs_format0_b_r14; max_nof_sched_sfs_format4_b_r14_e_ max_nof_sched_sfs_format4_b_r14; pdcch_candidate_reductions_r13_c pdcch_candidate_reductions_format0_a_r14; pdcch_candidate_reductions_laa_ul_r14_c pdcch_candidate_reductions_format4_a_r14; pdcch_candidate_reductions_laa_ul_r14_c pdcch_candidate_reductions_format0_b_r14; pdcch_candidate_reductions_laa_ul_r14_c pdcch_candidate_reductions_format4_b_r14; // sequence methods pdcch_cfg_laa_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PUSCH-ModeConfigLAA-r15 ::= SEQUENCE struct pusch_mode_cfg_laa_r15_s { // member variables bool laa_pusch_mode1; bool laa_pusch_mode2; bool laa_pusch_mode3; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SoundingRS-UL-ConfigDedicatedAperiodic-v1430 ::= CHOICE struct srs_ul_cfg_ded_aperiodic_v1430_c { struct setup_s_ { // member variables bool srs_sf_ind_r14_present; uint8_t srs_sf_ind_r14; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods srs_ul_cfg_ded_aperiodic_v1430_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "SoundingRS-UL-ConfigDedicatedAperiodic-v1430"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "SoundingRS-UL-ConfigDedicatedAperiodic-v1430"); return c; } private: types type_; setup_s_ c; }; // CQI-ReportConfigSCell-r10 ::= SEQUENCE struct cqi_report_cfg_scell_r10_s { // member variables bool cqi_report_mode_aperiodic_r10_present; bool cqi_report_periodic_scell_r10_present; bool pmi_ri_report_r10_present; cqi_report_mode_aperiodic_e cqi_report_mode_aperiodic_r10; int8_t nom_pdsch_rs_epre_offset_r10; cqi_report_periodic_r10_c cqi_report_periodic_scell_r10; // sequence methods cqi_report_cfg_scell_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CQI-ReportConfigSCell-r15 ::= SEQUENCE struct cqi_report_cfg_scell_r15_s { struct alt_cqi_table_minus1024_qam_r15_e_ { enum options { all_sfs, csi_sf_set1, csi_sf_set2, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods alt_cqi_table_minus1024_qam_r15_e_() {} alt_cqi_table_minus1024_qam_r15_e_(options v) : value(v) {} alt_cqi_table_minus1024_qam_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool cqi_report_periodic_scell_r15_present; bool alt_cqi_table_minus1024_qam_r15_present; cqi_report_periodic_scell_r15_c cqi_report_periodic_scell_r15; alt_cqi_table_minus1024_qam_r15_e_ alt_cqi_table_minus1024_qam_r15; // sequence methods cqi_report_cfg_scell_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CQI-ShortConfigSCell-r15 ::= CHOICE struct cqi_short_cfg_scell_r15_c { struct setup_s_ { struct cqi_format_ind_short_r15_c_ { struct wideband_cqi_short_r15_s_ { struct csi_report_mode_short_r15_e_ { enum options { submode1, submode2 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods csi_report_mode_short_r15_e_() {} csi_report_mode_short_r15_e_(options v) : value(v) {} csi_report_mode_short_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool csi_report_mode_short_r15_present; csi_report_mode_short_r15_e_ csi_report_mode_short_r15; // sequence methods wideband_cqi_short_r15_s_(); }; struct subband_cqi_short_r15_s_ { struct periodicity_factor_r15_e_ { enum options { n2, n4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods periodicity_factor_r15_e_() {} periodicity_factor_r15_e_(options v) : value(v) {} periodicity_factor_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables uint8_t k_r15; periodicity_factor_r15_e_ periodicity_factor_r15; }; struct types { enum options { wideband_cqi_short_r15, subband_cqi_short_r15, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods cqi_format_ind_short_r15_c_() : type_(types::nulltype) {} cqi_format_ind_short_r15_c_(const cqi_format_ind_short_r15_c_& other); cqi_format_ind_short_r15_c_& operator=(const cqi_format_ind_short_r15_c_& other); ~cqi_format_ind_short_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(bit_ref& bref); void to_json(json_writer& j) const; // getters wideband_cqi_short_r15_s_& wideband_cqi_short_r15() { assert_choice_type("widebandCQI-Short-r15", type_.to_string(), "cqi-FormatIndicatorShort-r15"); return c.get(); } subband_cqi_short_r15_s_& subband_cqi_short_r15() { assert_choice_type("subbandCQI-Short-r15", type_.to_string(), "cqi-FormatIndicatorShort-r15"); return c.get(); } const wideband_cqi_short_r15_s_& wideband_cqi_short_r15() const { assert_choice_type("widebandCQI-Short-r15", type_.to_string(), "cqi-FormatIndicatorShort-r15"); return c.get(); } const subband_cqi_short_r15_s_& subband_cqi_short_r15() const { assert_choice_type("subbandCQI-Short-r15", type_.to_string(), "cqi-FormatIndicatorShort-r15"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables bool ri_cfg_idx_short_r15_present; bool cqi_format_ind_short_r15_present; uint16_t cqi_pmi_cfg_idx_short_r15; uint16_t ri_cfg_idx_short_r15; cqi_format_ind_short_r15_c_ cqi_format_ind_short_r15; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods cqi_short_cfg_scell_r15_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "CQI-ShortConfigSCell-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "CQI-ShortConfigSCell-r15"); return c; } private: types type_; setup_s_ c; }; // CrossCarrierSchedulingConfig-r10 ::= SEQUENCE struct cross_carrier_sched_cfg_r10_s { struct sched_cell_info_r10_c_ { struct own_r10_s_ { // member variables bool cif_presence_r10; }; struct other_r10_s_ { // member variables uint8_t sched_cell_id_r10; uint8_t pdsch_start_r10; }; struct types { enum options { own_r10, other_r10, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods sched_cell_info_r10_c_() : type_(types::nulltype) {} sched_cell_info_r10_c_(const sched_cell_info_r10_c_& other); sched_cell_info_r10_c_& operator=(const sched_cell_info_r10_c_& other); ~sched_cell_info_r10_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters own_r10_s_& own_r10() { assert_choice_type("own-r10", type_.to_string(), "schedulingCellInfo-r10"); return c.get(); } other_r10_s_& other_r10() { assert_choice_type("other-r10", type_.to_string(), "schedulingCellInfo-r10"); return c.get(); } const own_r10_s_& own_r10() const { assert_choice_type("own-r10", type_.to_string(), "schedulingCellInfo-r10"); return c.get(); } const other_r10_s_& other_r10() const { assert_choice_type("other-r10", type_.to_string(), "schedulingCellInfo-r10"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables sched_cell_info_r10_c_ sched_cell_info_r10; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CrossCarrierSchedulingConfig-r13 ::= SEQUENCE struct cross_carrier_sched_cfg_r13_s { struct sched_cell_info_r13_c_ { struct own_r13_s_ { // member variables bool cif_presence_r13; }; struct other_r13_s_ { // member variables uint8_t sched_cell_id_r13; uint8_t pdsch_start_r13; uint8_t cif_in_sched_cell_r13; }; struct types { enum options { own_r13, other_r13, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods sched_cell_info_r13_c_() : type_(types::nulltype) {} sched_cell_info_r13_c_(const sched_cell_info_r13_c_& other); sched_cell_info_r13_c_& operator=(const sched_cell_info_r13_c_& other); ~sched_cell_info_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(bit_ref& bref); void to_json(json_writer& j) const; // getters own_r13_s_& own_r13() { assert_choice_type("own-r13", type_.to_string(), "schedulingCellInfo-r13"); return c.get(); } other_r13_s_& other_r13() { assert_choice_type("other-r13", type_.to_string(), "schedulingCellInfo-r13"); return c.get(); } const own_r13_s_& own_r13() const { assert_choice_type("own-r13", type_.to_string(), "schedulingCellInfo-r13"); return c.get(); } const other_r13_s_& other_r13() const { assert_choice_type("other-r13", type_.to_string(), "schedulingCellInfo-r13"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables sched_cell_info_r13_c_ sched_cell_info_r13; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DeltaFList-SPUCCH-r15 ::= CHOICE struct delta_flist_spucch_r15_c { struct setup_s_ { struct delta_f_slot_spucch_format1_r15_e_ { enum options { delta_f_minus1, delta_f0, delta_f1, delta_f2, delta_f3, delta_f4, delta_f5, delta_f6 }; typedef int8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_f_slot_spucch_format1_r15_e_() {} delta_f_slot_spucch_format1_r15_e_(options v) : value(v) {} delta_f_slot_spucch_format1_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; struct delta_f_slot_spucch_format1a_r15_e_ { enum options { delta_f1, delta_f2, delta_f3, delta_f4, delta_f5, delta_f6, delta_f7, delta_f8 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_f_slot_spucch_format1a_r15_e_() {} delta_f_slot_spucch_format1a_r15_e_(options v) : value(v) {} delta_f_slot_spucch_format1a_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct delta_f_slot_spucch_format1b_r15_e_ { enum options { delta_f3, delta_f4, delta_f5, delta_f6, delta_f7, delta_f8, delta_f9, delta_f10 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_f_slot_spucch_format1b_r15_e_() {} delta_f_slot_spucch_format1b_r15_e_(options v) : value(v) {} delta_f_slot_spucch_format1b_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct delta_f_slot_spucch_format3_r15_e_ { enum options { delta_f4, delta_f5, delta_f6, delta_f7, delta_f8, delta_f9, delta_f10, delta_f11 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_f_slot_spucch_format3_r15_e_() {} delta_f_slot_spucch_format3_r15_e_(options v) : value(v) {} delta_f_slot_spucch_format3_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct delta_f_slot_spucch_rm_format4_r15_e_ { enum options { delta_f13, delta_f14, delta_f15, delta_f16, delta_f17, delta_f18, delta_f19, delta_f20 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_f_slot_spucch_rm_format4_r15_e_() {} delta_f_slot_spucch_rm_format4_r15_e_(options v) : value(v) {} delta_f_slot_spucch_rm_format4_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct delta_f_slot_spucch_tbcc_format4_r15_e_ { enum options { delta_f10, delta_f11, delta_f12, delta_f13, delta_f14, delta_f15, delta_f16, delta_f17 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_f_slot_spucch_tbcc_format4_r15_e_() {} delta_f_slot_spucch_tbcc_format4_r15_e_(options v) : value(v) {} delta_f_slot_spucch_tbcc_format4_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct delta_f_subslot_spucch_format1and1a_r15_e_ { enum options { delta_f5, delta_f6, delta_f7, delta_f8, delta_f9, delta_f10, delta_f11, delta_f12 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_f_subslot_spucch_format1and1a_r15_e_() {} delta_f_subslot_spucch_format1and1a_r15_e_(options v) : value(v) {} delta_f_subslot_spucch_format1and1a_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct delta_f_subslot_spucch_format1b_r15_e_ { enum options { delta_f6, delta_f7, delta_f8, delta_f9, delta_f10, delta_f11, delta_f12, delta_f13 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_f_subslot_spucch_format1b_r15_e_() {} delta_f_subslot_spucch_format1b_r15_e_(options v) : value(v) {} delta_f_subslot_spucch_format1b_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct delta_f_subslot_spucch_rm_format4_r15_e_ { enum options { delta_f15, delta_f16, delta_f17, delta_f18, delta_f19, delta_f20, delta_f21, delta_f22 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_f_subslot_spucch_rm_format4_r15_e_() {} delta_f_subslot_spucch_rm_format4_r15_e_(options v) : value(v) {} delta_f_subslot_spucch_rm_format4_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct delta_f_subslot_spucch_tbcc_format4_r15_e_ { enum options { delta_f10, delta_f11, delta_f12, delta_f13, delta_f14, delta_f15, delta_f16, delta_f17 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_f_subslot_spucch_tbcc_format4_r15_e_() {} delta_f_subslot_spucch_tbcc_format4_r15_e_(options v) : value(v) {} delta_f_subslot_spucch_tbcc_format4_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ext; bool delta_f_slot_spucch_format1_r15_present; bool delta_f_slot_spucch_format1a_r15_present; bool delta_f_slot_spucch_format1b_r15_present; bool delta_f_slot_spucch_format3_r15_present; bool delta_f_slot_spucch_rm_format4_r15_present; bool delta_f_slot_spucch_tbcc_format4_r15_present; bool delta_f_subslot_spucch_format1and1a_r15_present; bool delta_f_subslot_spucch_format1b_r15_present; bool delta_f_subslot_spucch_rm_format4_r15_present; bool delta_f_subslot_spucch_tbcc_format4_r15_present; delta_f_slot_spucch_format1_r15_e_ delta_f_slot_spucch_format1_r15; delta_f_slot_spucch_format1a_r15_e_ delta_f_slot_spucch_format1a_r15; delta_f_slot_spucch_format1b_r15_e_ delta_f_slot_spucch_format1b_r15; delta_f_slot_spucch_format3_r15_e_ delta_f_slot_spucch_format3_r15; delta_f_slot_spucch_rm_format4_r15_e_ delta_f_slot_spucch_rm_format4_r15; delta_f_slot_spucch_tbcc_format4_r15_e_ delta_f_slot_spucch_tbcc_format4_r15; delta_f_subslot_spucch_format1and1a_r15_e_ delta_f_subslot_spucch_format1and1a_r15; delta_f_subslot_spucch_format1b_r15_e_ delta_f_subslot_spucch_format1b_r15; delta_f_subslot_spucch_rm_format4_r15_e_ delta_f_subslot_spucch_rm_format4_r15; delta_f_subslot_spucch_tbcc_format4_r15_e_ delta_f_subslot_spucch_tbcc_format4_r15; // ... // sequence methods setup_s_(); }; typedef setup_e types; // choice methods delta_flist_spucch_r15_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "DeltaFList-SPUCCH-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "DeltaFList-SPUCCH-r15"); return c; } private: types type_; setup_s_ c; }; // LAA-SCellConfiguration-r13 ::= SEQUENCE struct laa_scell_cfg_r13_s { struct sf_start_position_r13_e_ { enum options { s0, s07 }; typedef float number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods sf_start_position_r13_e_() {} sf_start_position_r13_e_(options v) : value(v) {} sf_start_position_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; // member variables sf_start_position_r13_e_ sf_start_position_r13; fixed_bitstring<8> laa_scell_sf_cfg_r13; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // LAA-SCellConfiguration-v1430 ::= SEQUENCE struct laa_scell_cfg_v1430_s { struct cross_carrier_sched_cfg_ul_r14_c_ { struct setup_s_ { // member variables cross_carrier_sched_cfg_laa_ul_r14_s cross_carrier_sched_cfg_laa_ul_r14; }; typedef setup_e types; // choice methods cross_carrier_sched_cfg_ul_r14_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "crossCarrierSchedulingConfig-UL-r14"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "crossCarrierSchedulingConfig-UL-r14"); return c; } private: types type_; setup_s_ c; }; // member variables bool cross_carrier_sched_cfg_ul_r14_present; bool lbt_cfg_r14_present; bool pdcch_cfg_laa_r14_present; bool absence_of_any_other_technology_r14_present; bool srs_ul_cfg_ded_aperiodic_v1430_present; cross_carrier_sched_cfg_ul_r14_c_ cross_carrier_sched_cfg_ul_r14; lbt_cfg_r14_c lbt_cfg_r14; pdcch_cfg_laa_r14_s pdcch_cfg_laa_r14; srs_ul_cfg_ded_aperiodic_v1430_c srs_ul_cfg_ded_aperiodic_v1430; // sequence methods laa_scell_cfg_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // LAA-SCellConfiguration-v1530 ::= SEQUENCE struct laa_scell_cfg_v1530_s { // member variables bool aul_cfg_r15_present; bool pusch_mode_cfg_laa_r15_present; aul_cfg_r15_c aul_cfg_r15; pusch_mode_cfg_laa_r15_s pusch_mode_cfg_laa_r15; // sequence methods laa_scell_cfg_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PDCCH-ConfigSCell-r13 ::= SEQUENCE struct pdcch_cfg_scell_r13_s { // member variables bool skip_monitoring_dci_format0_minus1_a_r13_present; // sequence methods pdcch_cfg_scell_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PDSCH-ConfigDedicatedSCell-v1430 ::= SEQUENCE struct pdsch_cfg_ded_scell_v1430_s { // member variables bool tbs_idx_alt2_r14_present; // sequence methods pdsch_cfg_ded_scell_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PUCCH-ConfigDedicated-v1370 ::= SEQUENCE struct pucch_cfg_ded_v1370_s { struct pucch_format_v1370_c_ { typedef setup_e types; // choice methods pucch_format_v1370_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters pucch_format3_conf_r13_s& setup() { assert_choice_type("setup", type_.to_string(), "pucch-Format-v1370"); return c; } const pucch_format3_conf_r13_s& setup() const { assert_choice_type("setup", type_.to_string(), "pucch-Format-v1370"); return c; } private: types type_; pucch_format3_conf_r13_s c; }; // member variables pucch_format_v1370_c_ pucch_format_v1370; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PUSCH-ConfigDedicatedSCell-r10 ::= SEQUENCE struct pusch_cfg_ded_scell_r10_s { // member variables bool group_hop_disabled_r10_present; bool dmrs_with_occ_activ_r10_present; // sequence methods pusch_cfg_ded_scell_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PUSCH-ConfigDedicatedSCell-v1430 ::= SEQUENCE struct pusch_cfg_ded_scell_v1430_s { // member variables bool enable256_qam_r14_present; enable256_qam_r14_c enable256_qam_r14; // sequence methods pusch_cfg_ded_scell_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PUSCH-ConfigDedicatedScell-v1530 ::= SEQUENCE struct pusch_cfg_ded_scell_v1530_s { struct uci_on_pusch_r15_c_ { struct setup_s_ { // member variables uint8_t beta_offset_aul_r15; }; typedef setup_e types; // choice methods uci_on_pusch_r15_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "uci-OnPUSCH-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "uci-OnPUSCH-r15"); return c; } private: types type_; setup_s_ c; }; // member variables uci_on_pusch_r15_c_ uci_on_pusch_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SchedulingRequestConfigSCell-r13 ::= CHOICE struct sched_request_cfg_scell_r13_c { struct setup_s_ { struct dsr_trans_max_r13_e_ { enum options { n4, n8, n16, n32, n64, spare3, spare2, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods dsr_trans_max_r13_e_() {} dsr_trans_max_r13_e_(options v) : value(v) {} dsr_trans_max_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool sr_pucch_res_idx_p1_r13_present; uint16_t sr_pucch_res_idx_r13; uint16_t sr_pucch_res_idx_p1_r13; uint8_t sr_cfg_idx_r13; dsr_trans_max_r13_e_ dsr_trans_max_r13; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods sched_request_cfg_scell_r13_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "SchedulingRequestConfigSCell-r13"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "SchedulingRequestConfigSCell-r13"); return c; } private: types type_; setup_s_ c; }; // SoundingRS-AperiodicSet-r14 ::= SEQUENCE struct srs_aperiodic_set_r14_s { typedef dyn_array srs_cc_set_idx_list_r14_l_; // member variables bool srs_cc_set_idx_list_r14_present; srs_cc_set_idx_list_r14_l_ srs_cc_set_idx_list_r14; srs_ul_cfg_ded_aperiodic_r10_c srs_ul_cfg_ded_aperiodic_r14; // sequence methods srs_aperiodic_set_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SoundingRS-AperiodicSetUpPTsExt-r14 ::= SEQUENCE struct srs_aperiodic_set_up_pts_ext_r14_s { typedef dyn_array srs_cc_set_idx_list_r14_l_; // member variables bool srs_cc_set_idx_list_r14_present; srs_cc_set_idx_list_r14_l_ srs_cc_set_idx_list_r14; srs_ul_cfg_ded_aperiodic_up_pts_ext_r13_c srs_ul_cfg_ded_aperiodic_up_pts_ext_r14; // sequence methods srs_aperiodic_set_up_pts_ext_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // TPC-PDCCH-ConfigSCell-r13 ::= CHOICE struct tpc_pdcch_cfg_scell_r13_c { struct setup_s_ { // member variables tpc_idx_c tpc_idx_pucch_scell_r13; }; typedef setup_e types; // choice methods tpc_pdcch_cfg_scell_r13_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "TPC-PDCCH-ConfigSCell-r13"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "TPC-PDCCH-ConfigSCell-r13"); return c; } private: types type_; setup_s_ c; }; // UplinkPUSCH-LessPowerControlDedicated-v1430 ::= SEQUENCE struct ul_pusch_less_pwr_ctrl_ded_v1430_s { // member variables bool p0_ue_periodic_srs_r14_present; bool p0_ue_aperiodic_srs_r14_present; int8_t p0_ue_periodic_srs_r14; int8_t p0_ue_aperiodic_srs_r14; bool accumulation_enabled_r14; // sequence methods ul_pusch_less_pwr_ctrl_ded_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UplinkPowerControlDedicatedSCell-r10 ::= SEQUENCE struct ul_pwr_ctrl_ded_scell_r10_s { struct delta_mcs_enabled_r10_e_ { enum options { en0, en1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_mcs_enabled_r10_e_() {} delta_mcs_enabled_r10_e_(options v) : value(v) {} delta_mcs_enabled_r10_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct pathloss_ref_linking_r10_e_ { enum options { p_cell, s_cell }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods pathloss_ref_linking_r10_e_() {} pathloss_ref_linking_r10_e_(options v) : value(v) {} pathloss_ref_linking_r10_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool p_srs_offset_ap_r10_present; bool filt_coef_r10_present; int8_t p0_ue_pusch_r10; delta_mcs_enabled_r10_e_ delta_mcs_enabled_r10; bool accumulation_enabled_r10; uint8_t p_srs_offset_r10; uint8_t p_srs_offset_ap_r10; filt_coef_e filt_coef_r10; pathloss_ref_linking_r10_e_ pathloss_ref_linking_r10; // sequence methods ul_pwr_ctrl_ded_scell_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UplinkPowerControlDedicatedSCell-v1310 ::= SEQUENCE struct ul_pwr_ctrl_ded_scell_v1310_s { // member variables bool delta_tx_d_offset_list_pucch_r10_present; int8_t p0_ue_pucch; delta_tx_d_offset_list_pucch_r10_s delta_tx_d_offset_list_pucch_r10; // sequence methods ul_pwr_ctrl_ded_scell_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AntennaInfoCommon ::= SEQUENCE struct ant_info_common_s { struct ant_ports_count_e_ { enum options { an1, an2, an4, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods ant_ports_count_e_() {} ant_ports_count_e_(options v) : value(v) {} ant_ports_count_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables ant_ports_count_e_ ant_ports_count; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // HighSpeedConfigSCell-r14 ::= SEQUENCE struct high_speed_cfg_scell_r14_s { // member variables bool high_speed_enhanced_demod_flag_r14_present; // sequence methods high_speed_cfg_scell_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MAC-MainConfigSCell-r11 ::= SEQUENCE struct mac_main_cfg_scell_r11_s { // member variables bool ext; bool stag_id_r11_present; uint8_t stag_id_r11; // ... // sequence methods mac_main_cfg_scell_r11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PRACH-Config ::= SEQUENCE struct prach_cfg_s { // member variables bool prach_cfg_info_present; uint16_t root_seq_idx; prach_cfg_info_s prach_cfg_info; // sequence methods prach_cfg_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PRACH-ConfigSCell-r10 ::= SEQUENCE struct prach_cfg_scell_r10_s { // member variables uint8_t prach_cfg_idx_r10; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PhysicalConfigDedicatedSCell-r10 ::= SEQUENCE struct phys_cfg_ded_scell_r10_s { struct non_ul_cfg_r10_s_ { // member variables bool ant_info_r10_present; bool cross_carrier_sched_cfg_r10_present; bool csi_rs_cfg_r10_present; bool pdsch_cfg_ded_r10_present; ant_info_ded_r10_s ant_info_r10; cross_carrier_sched_cfg_r10_s cross_carrier_sched_cfg_r10; csi_rs_cfg_r10_s csi_rs_cfg_r10; pdsch_cfg_ded_s pdsch_cfg_ded_r10; // sequence methods non_ul_cfg_r10_s_(); }; struct ul_cfg_r10_s_ { // member variables bool ant_info_ul_r10_present; bool pusch_cfg_ded_scell_r10_present; bool ul_pwr_ctrl_ded_scell_r10_present; bool cqi_report_cfg_scell_r10_present; bool srs_ul_cfg_ded_r10_present; bool srs_ul_cfg_ded_v1020_present; bool srs_ul_cfg_ded_aperiodic_r10_present; ant_info_ul_r10_s ant_info_ul_r10; pusch_cfg_ded_scell_r10_s pusch_cfg_ded_scell_r10; ul_pwr_ctrl_ded_scell_r10_s ul_pwr_ctrl_ded_scell_r10; cqi_report_cfg_scell_r10_s cqi_report_cfg_scell_r10; srs_ul_cfg_ded_c srs_ul_cfg_ded_r10; srs_ul_cfg_ded_v1020_s srs_ul_cfg_ded_v1020; srs_ul_cfg_ded_aperiodic_r10_c srs_ul_cfg_ded_aperiodic_r10; // sequence methods ul_cfg_r10_s_(); }; struct pucch_scell_c_ { struct setup_s_ { // member variables bool pucch_cfg_ded_r13_present; bool sched_request_cfg_r13_present; bool tpc_pdcch_cfg_pucch_scell_r13_present; bool pusch_cfg_ded_r13_present; bool ul_pwr_ctrl_ded_r13_present; pucch_cfg_ded_r13_s pucch_cfg_ded_r13; sched_request_cfg_scell_r13_c sched_request_cfg_r13; tpc_pdcch_cfg_scell_r13_c tpc_pdcch_cfg_pucch_scell_r13; pusch_cfg_ded_r13_s pusch_cfg_ded_r13; ul_pwr_ctrl_ded_scell_v1310_s ul_pwr_ctrl_ded_r13; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods pucch_scell_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "pucch-SCell"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "pucch-SCell"); return c; } private: types type_; setup_s_ c; }; typedef dyn_array srs_ul_periodic_cfg_ded_list_r14_l_; typedef dyn_array srs_ul_periodic_cfg_ded_up_pts_ext_list_r14_l_; typedef dyn_array srs_ul_aperiodic_cfg_ded_list_r14_l_; typedef dyn_array srs_ul_cfg_ded_ap_up_pts_ext_list_r14_l_; struct must_cfg_r14_c_ { struct setup_s_ { struct k_max_r14_e_ { enum options { l1, l3 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods k_max_r14_e_() {} k_max_r14_e_(options v) : value(v) {} k_max_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct p_a_must_r14_e_ { enum options { db_minus6, db_minus4dot77, db_minus3, db_minus1dot77, db0, db1, db2, db3 }; typedef float number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods p_a_must_r14_e_() {} p_a_must_r14_e_(options v) : value(v) {} p_a_must_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; // member variables bool p_a_must_r14_present; k_max_r14_e_ k_max_r14; p_a_must_r14_e_ p_a_must_r14; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods must_cfg_r14_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "must-Config-r14"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "must-Config-r14"); return c; } private: types type_; setup_s_ c; }; struct semi_static_cfi_cfg_r15_c_ { struct setup_c_ { struct types { enum options { cfi_cfg_r15, cfi_pattern_cfg_r15, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods setup_c_() : type_(types::nulltype) {} setup_c_(const setup_c_& other); setup_c_& operator=(const setup_c_& other); ~setup_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters cfi_cfg_r15_s& cfi_cfg_r15() { assert_choice_type("cfi-Config-r15", type_.to_string(), "setup"); return c.get(); } cfi_pattern_cfg_r15_s& cfi_pattern_cfg_r15() { assert_choice_type("cfi-PatternConfig-r15", type_.to_string(), "setup"); return c.get(); } const cfi_cfg_r15_s& cfi_cfg_r15() const { assert_choice_type("cfi-Config-r15", type_.to_string(), "setup"); return c.get(); } const cfi_pattern_cfg_r15_s& cfi_pattern_cfg_r15() const { assert_choice_type("cfi-PatternConfig-r15", type_.to_string(), "setup"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; typedef setup_e types; // choice methods semi_static_cfi_cfg_r15_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_c_& setup() { assert_choice_type("setup", type_.to_string(), "semiStaticCFI-Config-r15"); return c; } const setup_c_& setup() const { assert_choice_type("setup", type_.to_string(), "semiStaticCFI-Config-r15"); return c; } private: types type_; setup_c_ c; }; struct blind_pdsch_repeat_cfg_r15_c_ { struct setup_s_ { struct max_num_sf_pdsch_repeats_r15_e_ { enum options { n4, n6 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods max_num_sf_pdsch_repeats_r15_e_() {} max_num_sf_pdsch_repeats_r15_e_(options v) : value(v) {} max_num_sf_pdsch_repeats_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct max_num_slot_subslot_pdsch_repeats_r15_e_ { enum options { n4, n6 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods max_num_slot_subslot_pdsch_repeats_r15_e_() {} max_num_slot_subslot_pdsch_repeats_r15_e_(options v) : value(v) {} max_num_slot_subslot_pdsch_repeats_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct rv_sf_pdsch_repeats_r15_e_ { enum options { dlrvseq1, dlrvseq2 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods rv_sf_pdsch_repeats_r15_e_() {} rv_sf_pdsch_repeats_r15_e_(options v) : value(v) {} rv_sf_pdsch_repeats_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct rv_slotsublot_pdsch_repeats_r15_e_ { enum options { dlrvseq1, dlrvseq2 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods rv_slotsublot_pdsch_repeats_r15_e_() {} rv_slotsublot_pdsch_repeats_r15_e_(options v) : value(v) {} rv_slotsublot_pdsch_repeats_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct mcs_restrict_sf_pdsch_repeats_r15_e_ { enum options { n0, n1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods mcs_restrict_sf_pdsch_repeats_r15_e_() {} mcs_restrict_sf_pdsch_repeats_r15_e_(options v) : value(v) {} mcs_restrict_sf_pdsch_repeats_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct mcs_restrict_slot_subslot_pdsch_repeats_r15_e_ { enum options { n0, n1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods mcs_restrict_slot_subslot_pdsch_repeats_r15_e_() {} mcs_restrict_slot_subslot_pdsch_repeats_r15_e_(options v) : value(v) {} mcs_restrict_slot_subslot_pdsch_repeats_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool max_num_sf_pdsch_repeats_r15_present; bool max_num_slot_subslot_pdsch_repeats_r15_present; bool rv_sf_pdsch_repeats_r15_present; bool rv_slotsublot_pdsch_repeats_r15_present; bool nof_processes_sf_pdsch_repeats_r15_present; bool nof_processes_slot_subslot_pdsch_repeats_r15_present; bool mcs_restrict_sf_pdsch_repeats_r15_present; bool mcs_restrict_slot_subslot_pdsch_repeats_r15_present; bool blind_sf_pdsch_repeats_r15; bool blind_slot_subslot_pdsch_repeats_r15; max_num_sf_pdsch_repeats_r15_e_ max_num_sf_pdsch_repeats_r15; max_num_slot_subslot_pdsch_repeats_r15_e_ max_num_slot_subslot_pdsch_repeats_r15; rv_sf_pdsch_repeats_r15_e_ rv_sf_pdsch_repeats_r15; rv_slotsublot_pdsch_repeats_r15_e_ rv_slotsublot_pdsch_repeats_r15; uint8_t nof_processes_sf_pdsch_repeats_r15; uint8_t nof_processes_slot_subslot_pdsch_repeats_r15; mcs_restrict_sf_pdsch_repeats_r15_e_ mcs_restrict_sf_pdsch_repeats_r15; mcs_restrict_slot_subslot_pdsch_repeats_r15_e_ mcs_restrict_slot_subslot_pdsch_repeats_r15; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods blind_pdsch_repeat_cfg_r15_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "blindPDSCH-Repetition-Config-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "blindPDSCH-Repetition-Config-r15"); return c; } private: types type_; setup_s_ c; }; // member variables bool ext; bool non_ul_cfg_r10_present; bool ul_cfg_r10_present; non_ul_cfg_r10_s_ non_ul_cfg_r10; ul_cfg_r10_s_ ul_cfg_r10; // ... // group 0 bool csi_rs_cfg_nzp_to_release_list_r11_present; bool csi_rs_cfg_nzp_to_add_mod_list_r11_present; bool csi_rs_cfg_zp_to_release_list_r11_present; bool csi_rs_cfg_zp_to_add_mod_list_r11_present; bool epdcch_cfg_r11_present; bool pdsch_cfg_ded_v1130_present; bool cqi_report_cfg_v1130_present; bool pusch_cfg_ded_v1130_present; bool ul_pwr_ctrl_ded_scell_v1130_present; copy_ptr csi_rs_cfg_nzp_to_release_list_r11; copy_ptr csi_rs_cfg_nzp_to_add_mod_list_r11; copy_ptr csi_rs_cfg_zp_to_release_list_r11; copy_ptr csi_rs_cfg_zp_to_add_mod_list_r11; copy_ptr epdcch_cfg_r11; copy_ptr pdsch_cfg_ded_v1130; copy_ptr cqi_report_cfg_v1130; copy_ptr pusch_cfg_ded_v1130; copy_ptr ul_pwr_ctrl_ded_scell_v1130; // group 1 bool ant_info_v1250_present; bool eimta_main_cfg_scell_r12_present; bool cqi_report_cfg_scell_v1250_present; bool ul_pwr_ctrl_ded_scell_v1250_present; bool csi_rs_cfg_v1250_present; copy_ptr ant_info_v1250; copy_ptr eimta_main_cfg_scell_r12; copy_ptr cqi_report_cfg_scell_v1250; copy_ptr ul_pwr_ctrl_ded_scell_v1250; copy_ptr csi_rs_cfg_v1250; // group 2 bool pdsch_cfg_ded_v1280_present; copy_ptr pdsch_cfg_ded_v1280; // group 3 bool pucch_cell_r13_present; bool pucch_scell_present; bool cross_carrier_sched_cfg_r13_present; bool pdcch_cfg_scell_r13_present; bool cqi_report_cfg_v1310_present; bool pdsch_cfg_ded_v1310_present; bool srs_ul_cfg_ded_v1310_present; bool srs_ul_cfg_ded_up_pts_ext_r13_present; bool srs_ul_cfg_ded_aperiodic_v1310_present; bool srs_ul_cfg_ded_aperiodic_up_pts_ext_r13_present; bool csi_rs_cfg_v1310_present; bool laa_scell_cfg_r13_present; bool csi_rs_cfg_nzp_to_add_mod_list_ext_r13_present; bool csi_rs_cfg_nzp_to_release_list_ext_r13_present; copy_ptr pucch_scell; copy_ptr cross_carrier_sched_cfg_r13; copy_ptr pdcch_cfg_scell_r13; copy_ptr cqi_report_cfg_v1310; copy_ptr pdsch_cfg_ded_v1310; copy_ptr srs_ul_cfg_ded_v1310; copy_ptr srs_ul_cfg_ded_up_pts_ext_r13; copy_ptr srs_ul_cfg_ded_aperiodic_v1310; copy_ptr srs_ul_cfg_ded_aperiodic_up_pts_ext_r13; copy_ptr csi_rs_cfg_v1310; copy_ptr laa_scell_cfg_r13; copy_ptr csi_rs_cfg_nzp_to_add_mod_list_ext_r13; copy_ptr csi_rs_cfg_nzp_to_release_list_ext_r13; // group 4 bool cqi_report_cfg_v1320_present; copy_ptr cqi_report_cfg_v1320; // group 5 bool laa_scell_cfg_v1430_present; bool type_b_srs_tpc_pdcch_cfg_r14_present; bool ul_pusch_less_pwr_ctrl_ded_v1430_present; bool srs_ul_periodic_cfg_ded_list_r14_present; bool srs_ul_periodic_cfg_ded_up_pts_ext_list_r14_present; bool srs_ul_aperiodic_cfg_ded_list_r14_present; bool srs_ul_cfg_ded_ap_up_pts_ext_list_r14_present; bool must_cfg_r14_present; bool pusch_cfg_ded_v1430_present; bool csi_rs_cfg_v1430_present; bool csi_rs_cfg_zp_ap_list_r14_present; bool cqi_report_cfg_v1430_present; bool semi_open_loop_r14_present; bool pdsch_cfg_ded_scell_v1430_present; copy_ptr laa_scell_cfg_v1430; copy_ptr type_b_srs_tpc_pdcch_cfg_r14; copy_ptr ul_pusch_less_pwr_ctrl_ded_v1430; copy_ptr srs_ul_periodic_cfg_ded_list_r14; copy_ptr srs_ul_periodic_cfg_ded_up_pts_ext_list_r14; copy_ptr srs_ul_aperiodic_cfg_ded_list_r14; copy_ptr srs_ul_cfg_ded_ap_up_pts_ext_list_r14; copy_ptr must_cfg_r14; copy_ptr pusch_cfg_ded_v1430; copy_ptr csi_rs_cfg_v1430; copy_ptr csi_rs_cfg_zp_ap_list_r14; copy_ptr cqi_report_cfg_v1430; bool semi_open_loop_r14; copy_ptr pdsch_cfg_ded_scell_v1430; // group 6 bool csi_rs_cfg_v1480_present; copy_ptr csi_rs_cfg_v1480; // group 7 bool phys_cfg_ded_stti_r15_present; bool pdsch_cfg_ded_v1530_present; bool cqi_report_cfg_v1530_present; bool cqi_report_cfg_scell_r15_present; bool cqi_short_cfg_scell_r15_present; bool csi_rs_cfg_v1530_present; bool ul_pwr_ctrl_ded_scell_v1530_present; bool laa_scell_cfg_v1530_present; bool pusch_cfg_ded_v1530_present; bool semi_static_cfi_cfg_r15_present; bool blind_pdsch_repeat_cfg_r15_present; copy_ptr phys_cfg_ded_stti_r15; copy_ptr pdsch_cfg_ded_v1530; copy_ptr cqi_report_cfg_v1530; copy_ptr cqi_report_cfg_scell_r15; copy_ptr cqi_short_cfg_scell_r15; copy_ptr csi_rs_cfg_v1530; copy_ptr ul_pwr_ctrl_ded_scell_v1530; copy_ptr laa_scell_cfg_v1530; copy_ptr pusch_cfg_ded_v1530; copy_ptr semi_static_cfi_cfg_r15; copy_ptr blind_pdsch_repeat_cfg_r15; // sequence methods phys_cfg_ded_scell_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PhysicalConfigDedicatedSCell-v1370 ::= SEQUENCE struct phys_cfg_ded_scell_v1370_s { struct pucch_scell_v1370_c_ { struct setup_s_ { // member variables bool pucch_cfg_ded_v1370_present; pucch_cfg_ded_v1370_s pucch_cfg_ded_v1370; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods pucch_scell_v1370_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "pucch-SCell-v1370"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "pucch-SCell-v1370"); return c; } private: types type_; setup_s_ c; }; // member variables pucch_scell_v1370_c_ pucch_scell_v1370; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RACH-ConfigCommonSCell-r11 ::= SEQUENCE struct rach_cfg_common_scell_r11_s { struct ra_supervision_info_r11_s_ { // member variables preamb_trans_max_e preamb_trans_max_r11; }; // member variables bool ext; pwr_ramp_params_s pwr_ramp_params_r11; ra_supervision_info_r11_s_ ra_supervision_info_r11; // ... // sequence methods rach_cfg_common_scell_r11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UplinkPowerControlCommon-v1530 ::= SEQUENCE struct ul_pwr_ctrl_common_v1530_s { // member variables delta_flist_spucch_r15_c delta_flist_spucch_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UplinkPowerControlCommonPUSCH-LessCell-v1430 ::= SEQUENCE struct ul_pwr_ctrl_common_pusch_less_cell_v1430_s { // member variables bool p0_nominal_periodic_srs_r14_present; bool p0_nominal_aperiodic_srs_r14_present; bool alpha_srs_r14_present; int8_t p0_nominal_periodic_srs_r14; int8_t p0_nominal_aperiodic_srs_r14; alpha_r12_e alpha_srs_r14; // sequence methods ul_pwr_ctrl_common_pusch_less_cell_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UplinkPowerControlCommonSCell-r10 ::= SEQUENCE struct ul_pwr_ctrl_common_scell_r10_s { // member variables int8_t p0_nominal_pusch_r10; alpha_r12_e alpha_r10; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UplinkPowerControlCommonSCell-v1130 ::= SEQUENCE struct ul_pwr_ctrl_common_scell_v1130_s { // member variables int8_t delta_preamb_msg3_r11; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UplinkPowerControlCommonSCell-v1310 ::= SEQUENCE struct ul_pwr_ctrl_common_scell_v1310_s { struct delta_f_pucch_format3_r12_e_ { enum options { delta_f_minus1, delta_f0, delta_f1, delta_f2, delta_f3, delta_f4, delta_f5, delta_f6 }; typedef int8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_f_pucch_format3_r12_e_() {} delta_f_pucch_format3_r12_e_(options v) : value(v) {} delta_f_pucch_format3_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; struct delta_f_pucch_format1b_cs_r12_e_ { enum options { delta_f1, delta_f2, spare2, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_f_pucch_format1b_cs_r12_e_() {} delta_f_pucch_format1b_cs_r12_e_(options v) : value(v) {} delta_f_pucch_format1b_cs_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct delta_f_pucch_format4_r13_e_ { enum options { delta_f16, delta_f15, delta_f14, delta_f13, delta_f12, delta_f11, delta_f10, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_f_pucch_format4_r13_e_() {} delta_f_pucch_format4_r13_e_(options v) : value(v) {} delta_f_pucch_format4_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct delta_f_pucch_format5_minus13_e_ { enum options { delta_f13, delta_f12, delta_f11, delta_f10, delta_f9, delta_f8, delta_f7, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_f_pucch_format5_minus13_e_() {} delta_f_pucch_format5_minus13_e_(options v) : value(v) {} delta_f_pucch_format5_minus13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool delta_f_pucch_format3_r12_present; bool delta_f_pucch_format1b_cs_r12_present; bool delta_f_pucch_format4_r13_present; bool delta_f_pucch_format5_minus13_present; int8_t p0_nominal_pucch; delta_flist_pucch_s delta_flist_pucch; delta_f_pucch_format3_r12_e_ delta_f_pucch_format3_r12; delta_f_pucch_format1b_cs_r12_e_ delta_f_pucch_format1b_cs_r12; delta_f_pucch_format4_r13_e_ delta_f_pucch_format4_r13; delta_f_pucch_format5_minus13_e_ delta_f_pucch_format5_minus13; // sequence methods ul_pwr_ctrl_common_scell_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AntennaInfoDedicated-v10i0 ::= SEQUENCE struct ant_info_ded_v10i0_s { struct max_layers_mimo_r10_e_ { enum options { two_layers, four_layers, eight_layers }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods max_layers_mimo_r10_e_() {} max_layers_mimo_r10_e_(options v) : value(v) {} max_layers_mimo_r10_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool max_layers_mimo_r10_present; max_layers_mimo_r10_e_ max_layers_mimo_r10; // sequence methods ant_info_ded_v10i0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RadioResourceConfigCommonSCell-r10 ::= SEQUENCE struct rr_cfg_common_scell_r10_s { struct non_ul_cfg_r10_s_ { struct dl_bw_r10_e_ { enum options { n6, n15, n25, n50, n75, n100 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods dl_bw_r10_e_() {} dl_bw_r10_e_(options v) : value(v) {} dl_bw_r10_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool mbsfn_sf_cfg_list_r10_present; bool tdd_cfg_r10_present; dl_bw_r10_e_ dl_bw_r10; ant_info_common_s ant_info_common_r10; mbsfn_sf_cfg_list_l mbsfn_sf_cfg_list_r10; phich_cfg_s phich_cfg_r10; pdsch_cfg_common_s pdsch_cfg_common_r10; tdd_cfg_s tdd_cfg_r10; // sequence methods non_ul_cfg_r10_s_(); }; struct ul_cfg_r10_s_ { struct ul_freq_info_r10_s_ { struct ul_bw_r10_e_ { enum options { n6, n15, n25, n50, n75, n100 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods ul_bw_r10_e_() {} ul_bw_r10_e_(options v) : value(v) {} ul_bw_r10_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ul_carrier_freq_r10_present; bool ul_bw_r10_present; uint16_t ul_carrier_freq_r10; ul_bw_r10_e_ ul_bw_r10; uint8_t add_spec_emission_scell_r10; // sequence methods ul_freq_info_r10_s_(); }; // member variables bool p_max_r10_present; bool prach_cfg_scell_r10_present; ul_freq_info_r10_s_ ul_freq_info_r10; int8_t p_max_r10; ul_pwr_ctrl_common_scell_r10_s ul_pwr_ctrl_common_scell_r10; srs_ul_cfg_common_c srs_ul_cfg_common_r10; ul_cp_len_e ul_cp_len_r10; prach_cfg_scell_r10_s prach_cfg_scell_r10; pusch_cfg_common_s pusch_cfg_common_r10; // sequence methods ul_cfg_r10_s_(); }; struct ul_cfg_r14_s_ { struct ul_freq_info_r14_s_ { struct ul_bw_r14_e_ { enum options { n6, n15, n25, n50, n75, n100 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods ul_bw_r14_e_() {} ul_bw_r14_e_(options v) : value(v) {} ul_bw_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ul_carrier_freq_r14_present; bool ul_bw_r14_present; uint32_t ul_carrier_freq_r14; ul_bw_r14_e_ ul_bw_r14; uint8_t add_spec_emission_scell_r14; // sequence methods ul_freq_info_r14_s_(); }; // member variables bool p_max_r14_present; bool prach_cfg_scell_r14_present; bool ul_pwr_ctrl_common_pusch_less_cell_v1430_present; ul_freq_info_r14_s_ ul_freq_info_r14; int8_t p_max_r14; srs_ul_cfg_common_c srs_ul_cfg_common_r14; ul_cp_len_e ul_cp_len_r14; prach_cfg_scell_r10_s prach_cfg_scell_r14; ul_pwr_ctrl_common_pusch_less_cell_v1430_s ul_pwr_ctrl_common_pusch_less_cell_v1430; // sequence methods ul_cfg_r14_s_(); }; struct harq_ref_cfg_r14_e_ { enum options { sa2, sa4, sa5 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods harq_ref_cfg_r14_e_() {} harq_ref_cfg_r14_e_(options v) : value(v) {} harq_ref_cfg_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ext; bool ul_cfg_r10_present; non_ul_cfg_r10_s_ non_ul_cfg_r10; ul_cfg_r10_s_ ul_cfg_r10; // ... // group 0 bool ul_carrier_freq_v1090_present; uint32_t ul_carrier_freq_v1090; // group 1 bool rach_cfg_common_scell_r11_present; bool prach_cfg_scell_r11_present; bool tdd_cfg_v1130_present; bool ul_pwr_ctrl_common_scell_v1130_present; copy_ptr rach_cfg_common_scell_r11; copy_ptr prach_cfg_scell_r11; copy_ptr tdd_cfg_v1130; copy_ptr ul_pwr_ctrl_common_scell_v1130; // group 2 bool pusch_cfg_common_v1270_present; copy_ptr pusch_cfg_common_v1270; // group 3 bool pucch_cfg_common_r13_present; bool ul_pwr_ctrl_common_scell_v1310_present; copy_ptr pucch_cfg_common_r13; copy_ptr ul_pwr_ctrl_common_scell_v1310; // group 4 bool high_speed_cfg_scell_r14_present; bool prach_cfg_v1430_present; bool ul_cfg_r14_present; bool harq_ref_cfg_r14_present; bool srs_flex_timing_r14_present; copy_ptr high_speed_cfg_scell_r14; copy_ptr prach_cfg_v1430; copy_ptr ul_cfg_r14; harq_ref_cfg_r14_e_ harq_ref_cfg_r14; // group 5 bool mbsfn_sf_cfg_list_v1430_present; copy_ptr mbsfn_sf_cfg_list_v1430; // group 6 bool ul_pwr_ctrl_common_scell_v1530_present; copy_ptr ul_pwr_ctrl_common_scell_v1530; // sequence methods rr_cfg_common_scell_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RadioResourceConfigDedicatedSCell-r10 ::= SEQUENCE struct rr_cfg_ded_scell_r10_s { // member variables bool ext; bool phys_cfg_ded_scell_r10_present; phys_cfg_ded_scell_r10_s phys_cfg_ded_scell_r10; // ... // group 0 bool mac_main_cfg_scell_r11_present; copy_ptr mac_main_cfg_scell_r11; // group 1 bool naics_info_r12_present; copy_ptr naics_info_r12; // group 2 bool neigh_cells_crs_info_scell_r13_present; copy_ptr neigh_cells_crs_info_scell_r13; // group 3 bool phys_cfg_ded_scell_v1370_present; copy_ptr phys_cfg_ded_scell_v1370; // group 4 bool crs_intf_mitig_enabled_r15_present; bool neigh_cells_crs_info_r15_present; bool sps_cfg_v1530_present; bool crs_intf_mitig_enabled_r15; copy_ptr neigh_cells_crs_info_r15; copy_ptr sps_cfg_v1530; // sequence methods rr_cfg_ded_scell_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCellToAddModExt-r13 ::= SEQUENCE struct scell_to_add_mod_ext_r13_s { struct cell_identif_r13_s_ { // member variables uint16_t pci_r13; uint32_t dl_carrier_freq_r13; }; // member variables bool cell_identif_r13_present; bool rr_cfg_common_scell_r13_present; bool rr_cfg_ded_scell_r13_present; bool ant_info_ded_scell_r13_present; uint8_t s_cell_idx_r13; cell_identif_r13_s_ cell_identif_r13; rr_cfg_common_scell_r10_s rr_cfg_common_scell_r13; rr_cfg_ded_scell_r10_s rr_cfg_ded_scell_r13; ant_info_ded_v10i0_s ant_info_ded_scell_r13; // sequence methods scell_to_add_mod_ext_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CipheringAlgorithm-r12 ::= ENUMERATED struct ciphering_algorithm_r12_e { enum options { eea0, eea1, eea2, eea3_v1130, spare4, spare3, spare2, spare1, /*...*/ }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = true; // enumerated methods ciphering_algorithm_r12_e() {} ciphering_algorithm_r12_e(options v) : value(v) {} ciphering_algorithm_r12_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // SCellConfigCommon-r15 ::= SEQUENCE struct scell_cfg_common_r15_s { // member variables bool rr_cfg_common_scell_r15_present; bool rr_cfg_ded_scell_r15_present; bool ant_info_ded_scell_r15_present; rr_cfg_common_scell_r10_s rr_cfg_common_scell_r15; rr_cfg_ded_scell_r10_s rr_cfg_ded_scell_r15; ant_info_ded_v10i0_s ant_info_ded_scell_r15; // sequence methods scell_cfg_common_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCellToAddModListExt-r13 ::= SEQUENCE (SIZE (1..maxSCell-r13)) OF SCellToAddModExt-r13 typedef dyn_array scell_to_add_mod_list_ext_r13_l; // SCellToReleaseListExt-r13 ::= SEQUENCE (SIZE (1..maxSCell-r13)) OF INTEGER typedef bounded_array scell_to_release_list_ext_r13_l; // SL-DiscTxPoolToAddMod-r12 ::= SEQUENCE struct sl_disc_tx_pool_to_add_mod_r12_s { // member variables uint8_t pool_id_r12; sl_disc_res_pool_r12_s pool_r12; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-TF-IndexPair-r12b ::= SEQUENCE struct sl_tf_idx_pair_r12b_s { // member variables bool disc_sf_idx_r12b_present; bool disc_prb_idx_r12b_present; uint8_t disc_sf_idx_r12b; uint8_t disc_prb_idx_r12b; // sequence methods sl_tf_idx_pair_r12b_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCellGroupToAddMod-r15 ::= SEQUENCE struct scell_group_to_add_mod_r15_s { // member variables bool s_cell_cfg_common_r15_present; bool s_cell_to_release_list_r15_present; bool s_cell_to_add_mod_list_r15_present; uint8_t s_cell_group_idx_r15; scell_cfg_common_r15_s s_cell_cfg_common_r15; scell_to_release_list_ext_r13_l s_cell_to_release_list_r15; scell_to_add_mod_list_ext_r13_l s_cell_to_add_mod_list_r15; // sequence methods scell_group_to_add_mod_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-DiscTxPoolToAddModList-r12 ::= SEQUENCE (SIZE (1..maxSL-TxPool-r12)) OF SL-DiscTxPoolToAddMod-r12 typedef dyn_array sl_disc_tx_pool_to_add_mod_list_r12_l; // SL-HoppingConfigDisc-r12 ::= SEQUENCE struct sl_hop_cfg_disc_r12_s { struct c_r12_e_ { enum options { n1, n5 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods c_r12_e_() {} c_r12_e_(options v) : value(v) {} c_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables uint8_t a_r12; uint8_t b_r12; c_r12_e_ c_r12; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-TF-IndexPairList-r12b ::= SEQUENCE (SIZE (1..maxSL-TF-IndexPair-r12)) OF SL-TF-IndexPair-r12b typedef dyn_array sl_tf_idx_pair_list_r12b_l; // SL-TxPoolToReleaseList-r12 ::= SEQUENCE (SIZE (1..maxSL-TxPool-r12)) OF INTEGER typedef bounded_array sl_tx_pool_to_release_list_r12_l; // SecurityAlgorithmConfig ::= SEQUENCE struct security_algorithm_cfg_s { struct integrity_prot_algorithm_e_ { enum options { eia0_v920, eia1, eia2, eia3_v1130, spare4, spare3, spare2, spare1, /*...*/ }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = true; // enumerated methods integrity_prot_algorithm_e_() {} integrity_prot_algorithm_e_(options v) : value(v) {} integrity_prot_algorithm_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables ciphering_algorithm_r12_e ciphering_algorithm; integrity_prot_algorithm_e_ integrity_prot_algorithm; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DRB-ToAddModSCG-r12 ::= SEQUENCE struct drb_to_add_mod_scg_r12_s { struct drb_type_r12_c_ { struct scg_r12_s_ { // member variables bool eps_bearer_id_r12_present; bool pdcp_cfg_r12_present; uint8_t eps_bearer_id_r12; pdcp_cfg_s pdcp_cfg_r12; // sequence methods scg_r12_s_(); }; struct types { enum options { split_r12, scg_r12, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods drb_type_r12_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters scg_r12_s_& scg_r12() { assert_choice_type("scg-r12", type_.to_string(), "drb-Type-r12"); return c; } const scg_r12_s_& scg_r12() const { assert_choice_type("scg-r12", type_.to_string(), "drb-Type-r12"); return c; } private: types type_; scg_r12_s_ c; }; // member variables bool ext; bool drb_type_r12_present; bool rlc_cfg_scg_r12_present; bool rlc_cfg_v1250_present; bool lc_ch_id_scg_r12_present; bool lc_ch_cfg_scg_r12_present; uint8_t drb_id_r12; drb_type_r12_c_ drb_type_r12; rlc_cfg_c rlc_cfg_scg_r12; rlc_cfg_v1250_s rlc_cfg_v1250; uint8_t lc_ch_id_scg_r12; lc_ch_cfg_s lc_ch_cfg_scg_r12; // ... // group 0 bool rlc_cfg_v1430_present; copy_ptr rlc_cfg_v1430; // group 1 bool lc_ch_id_scg_r15_present; bool rlc_cfg_v1530_present; bool rlc_bearer_cfg_dupl_r15_present; uint8_t lc_ch_id_scg_r15; copy_ptr rlc_cfg_v1530; copy_ptr rlc_bearer_cfg_dupl_r15; // sequence methods drb_to_add_mod_scg_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // IKE-Identity-r13 ::= SEQUENCE struct ike_id_r13_s { // member variables dyn_octstring id_i_r13; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // IP-Address-r13 ::= CHOICE struct ip_address_r13_c { struct types { enum options { ipv4_r13, ipv6_r13, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods ip_address_r13_c() : type_(types::nulltype) {} ip_address_r13_c(const ip_address_r13_c& other); ip_address_r13_c& operator=(const ip_address_r13_c& other); ~ip_address_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(bit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<32>& ipv4_r13() { assert_choice_type("ipv4-r13", type_.to_string(), "IP-Address-r13"); return c.get >(); } fixed_bitstring<128>& ipv6_r13() { assert_choice_type("ipv6-r13", type_.to_string(), "IP-Address-r13"); return c.get >(); } const fixed_bitstring<32>& ipv4_r13() const { assert_choice_type("ipv4-r13", type_.to_string(), "IP-Address-r13"); return c.get >(); } const fixed_bitstring<128>& ipv6_r13() const { assert_choice_type("ipv6-r13", type_.to_string(), "IP-Address-r13"); return c.get >(); } private: types type_; choice_buffer_t)> c; void destroy_(); }; // PhysicalConfigDedicated-v1370 ::= SEQUENCE struct phys_cfg_ded_v1370_s { // member variables bool pucch_cfg_ded_v1370_present; pucch_cfg_ded_v1370_s pucch_cfg_ded_v1370; // sequence methods phys_cfg_ded_v1370_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RAN-AreaConfig-r15 ::= SEQUENCE struct ran_area_cfg_r15_s { typedef bounded_array ran_area_code_list_r15_l_; // member variables bool ran_area_code_list_r15_present; fixed_bitstring<24> tac_minus5_gc_r15; ran_area_code_list_r15_l_ ran_area_code_list_r15; // sequence methods ran_area_cfg_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RadioResourceConfigCommonSCell-v10l0 ::= SEQUENCE struct rr_cfg_common_scell_v10l0_s { struct ul_cfg_v10l0_s_ { // member variables uint16_t add_spec_emission_scell_v10l0; }; // member variables ul_cfg_v10l0_s_ ul_cfg_v10l0; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RadioResourceConfigCommonSCell-v1440 ::= SEQUENCE struct rr_cfg_common_scell_v1440_s { struct ul_cfg_v1440_s_ { struct ul_freq_info_v1440_s_ { // member variables uint16_t add_spec_emission_scell_v1440; }; // member variables ul_freq_info_v1440_s_ ul_freq_info_v1440; }; // member variables ul_cfg_v1440_s_ ul_cfg_v1440; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCellGroupToAddModList-r15 ::= SEQUENCE (SIZE (1..maxSCellGroups-r15)) OF SCellGroupToAddMod-r15 typedef dyn_array scell_group_to_add_mod_list_r15_l; // SCellGroupToReleaseList-r15 ::= SEQUENCE (SIZE (1..maxSCellGroups-r15)) OF INTEGER typedef bounded_array scell_group_to_release_list_r15_l; // SL-DiscTxConfigScheduled-r13 ::= SEQUENCE struct sl_disc_tx_cfg_sched_r13_s { // member variables bool ext; bool disc_tx_cfg_r13_present; bool disc_tf_idx_list_r13_present; bool disc_hop_cfg_r13_present; sl_disc_res_pool_r12_s disc_tx_cfg_r13; sl_tf_idx_pair_list_r12b_l disc_tf_idx_list_r13; sl_hop_cfg_disc_r12_s disc_hop_cfg_r13; // ... // sequence methods sl_disc_tx_cfg_sched_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-DiscTxPoolDedicated-r13 ::= SEQUENCE struct sl_disc_tx_pool_ded_r13_s { // member variables bool pool_to_release_list_r13_present; bool pool_to_add_mod_list_r13_present; sl_tx_pool_to_release_list_r12_l pool_to_release_list_r13; sl_disc_tx_pool_to_add_mod_list_r12_l pool_to_add_mod_list_r13; // sequence methods sl_disc_tx_pool_ded_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-ReliabilityList-r15 ::= SEQUENCE (SIZE (1..maxSL-Reliability-r15)) OF INTEGER typedef bounded_array sl_reliability_list_r15_l; // SL-TxPoolToAddMod-r14 ::= SEQUENCE struct sl_tx_pool_to_add_mod_r14_s { // member variables uint8_t pool_id_r14; sl_comm_res_pool_v2x_r14_s pool_r14; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SecurityConfigHO-v1530 ::= SEQUENCE struct security_cfg_ho_v1530_s { struct ho_type_v1530_c_ { struct intra5_gc_r15_s_ { // member variables bool security_algorithm_cfg_r15_present; bool nas_container_r15_present; security_algorithm_cfg_s security_algorithm_cfg_r15; bool key_change_ind_r15; uint8_t next_hop_chaining_count_r15; dyn_octstring nas_container_r15; // sequence methods intra5_gc_r15_s_(); }; struct ngc_to_epc_r15_s_ { // member variables security_algorithm_cfg_s security_algorithm_cfg_r15; uint8_t next_hop_chaining_count_r15; }; struct epc_to_ngc_r15_s_ { // member variables security_algorithm_cfg_s security_algorithm_cfg_r15; dyn_octstring nas_container_r15; }; struct types { enum options { intra5_gc_r15, ngc_to_epc_r15, epc_to_ngc_r15, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods ho_type_v1530_c_() : type_(types::nulltype) {} ho_type_v1530_c_(const ho_type_v1530_c_& other); ho_type_v1530_c_& operator=(const ho_type_v1530_c_& other); ~ho_type_v1530_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters intra5_gc_r15_s_& intra5_gc_r15() { assert_choice_type("intra5GC-r15", type_.to_string(), "handoverType-v1530"); return c.get(); } ngc_to_epc_r15_s_& ngc_to_epc_r15() { assert_choice_type("ngc-ToEPC-r15", type_.to_string(), "handoverType-v1530"); return c.get(); } epc_to_ngc_r15_s_& epc_to_ngc_r15() { assert_choice_type("epc-ToNGC-r15", type_.to_string(), "handoverType-v1530"); return c.get(); } const intra5_gc_r15_s_& intra5_gc_r15() const { assert_choice_type("intra5GC-r15", type_.to_string(), "handoverType-v1530"); return c.get(); } const ngc_to_epc_r15_s_& ngc_to_epc_r15() const { assert_choice_type("ngc-ToEPC-r15", type_.to_string(), "handoverType-v1530"); return c.get(); } const epc_to_ngc_r15_s_& epc_to_ngc_r15() const { assert_choice_type("epc-ToNGC-r15", type_.to_string(), "handoverType-v1530"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables bool ext; ho_type_v1530_c_ ho_type_v1530; // ... // sequence methods security_cfg_ho_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UplinkPowerControlCommon-v1310 ::= SEQUENCE struct ul_pwr_ctrl_common_v1310_s { struct delta_f_pucch_format4_r13_e_ { enum options { delta_f16, delta_f15, delta_f14, delta_f13, delta_f12, delta_f11, delta_f10, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_f_pucch_format4_r13_e_() {} delta_f_pucch_format4_r13_e_(options v) : value(v) {} delta_f_pucch_format4_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct delta_f_pucch_format5_minus13_e_ { enum options { delta_f13, delta_f12, delta_f11, delta_f10, delta_f9, delta_f8, delta_f7, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_f_pucch_format5_minus13_e_() {} delta_f_pucch_format5_minus13_e_(options v) : value(v) {} delta_f_pucch_format5_minus13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool delta_f_pucch_format4_r13_present; bool delta_f_pucch_format5_minus13_present; delta_f_pucch_format4_r13_e_ delta_f_pucch_format4_r13; delta_f_pucch_format5_minus13_e_ delta_f_pucch_format5_minus13; // sequence methods ul_pwr_ctrl_common_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UplinkPowerControlCommonPSCell-r12 ::= SEQUENCE struct ul_pwr_ctrl_common_ps_cell_r12_s { struct delta_f_pucch_format3_r12_e_ { enum options { delta_f_minus1, delta_f0, delta_f1, delta_f2, delta_f3, delta_f4, delta_f5, delta_f6 }; typedef int8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_f_pucch_format3_r12_e_() {} delta_f_pucch_format3_r12_e_(options v) : value(v) {} delta_f_pucch_format3_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; struct delta_f_pucch_format1b_cs_r12_e_ { enum options { delta_f1, delta_f2, spare2, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods delta_f_pucch_format1b_cs_r12_e_() {} delta_f_pucch_format1b_cs_r12_e_(options v) : value(v) {} delta_f_pucch_format1b_cs_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables delta_f_pucch_format3_r12_e_ delta_f_pucch_format3_r12; delta_f_pucch_format1b_cs_r12_e_ delta_f_pucch_format1b_cs_r12; int8_t p0_nominal_pucch_r12; delta_flist_pucch_s delta_flist_pucch_r12; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // WLAN-Id-List-r13 ::= SEQUENCE (SIZE (1..maxWLAN-Id-r13)) OF WLAN-Identifiers-r12 typedef dyn_array wlan_id_list_r13_l; // WLAN-SuspendConfig-r14 ::= SEQUENCE struct wlan_suspend_cfg_r14_s { // member variables bool wlan_suspend_resume_allowed_r14_present; bool wlan_suspend_triggers_status_report_r14_present; bool wlan_suspend_resume_allowed_r14; bool wlan_suspend_triggers_status_report_r14; // sequence methods wlan_suspend_cfg_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DRB-ToAddModListSCG-r12 ::= SEQUENCE (SIZE (1..maxDRB)) OF DRB-ToAddModSCG-r12 typedef dyn_array drb_to_add_mod_list_scg_r12_l; // DRB-ToAddModListSCG-r15 ::= SEQUENCE (SIZE (1..maxDRB-r15)) OF DRB-ToAddModSCG-r12 typedef dyn_array drb_to_add_mod_list_scg_r15_l; // LogicalChGroupInfoList-r13 ::= SEQUENCE (SIZE (1..maxLCG-r13)) OF SL-PriorityList-r13 typedef dyn_array lc_ch_group_info_list_r13_l; // LogicalChGroupInfoList-v1530 ::= SEQUENCE (SIZE (1..maxLCG-r13)) OF SL-ReliabilityList-r15 typedef dyn_array lc_ch_group_info_list_v1530_l; // MAC-MainConfigSL-r12 ::= SEQUENCE struct mac_main_cfg_sl_r12_s { // member variables bool periodic_bsr_timer_sl_present; periodic_bsr_timer_r12_e periodic_bsr_timer_sl; retx_bsr_timer_r12_e retx_bsr_timer_sl; // sequence methods mac_main_cfg_sl_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PLMN-RAN-AreaCell-r15 ::= SEQUENCE struct plmn_ran_area_cell_r15_s { typedef bounded_array, 32> ran_area_cells_r15_l_; // member variables bool plmn_id_r15_present; plmn_id_s plmn_id_r15; ran_area_cells_r15_l_ ran_area_cells_r15; // sequence methods plmn_ran_area_cell_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PLMN-RAN-AreaConfig-r15 ::= SEQUENCE struct plmn_ran_area_cfg_r15_s { typedef dyn_array ran_area_r15_l_; // member variables bool plmn_id_r15_present; plmn_id_s plmn_id_r15; ran_area_r15_l_ ran_area_r15; // sequence methods plmn_ran_area_cfg_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RACH-ConfigDedicated ::= SEQUENCE struct rach_cfg_ded_s { // member variables uint8_t ra_preamb_idx; uint8_t ra_prach_mask_idx; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RACH-Skip-r14 ::= SEQUENCE struct rach_skip_r14_s { struct target_ta_r14_c_ { struct types { enum options { ta0_r14, mcg_ptag_r14, scg_ptag_r14, mcg_stag_r14, scg_stag_r14, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 5, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods target_ta_r14_c_() : type_(types::nulltype) {} target_ta_r14_c_(const target_ta_r14_c_& other); target_ta_r14_c_& operator=(const target_ta_r14_c_& other); ~target_ta_r14_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint8_t& mcg_stag_r14() { assert_choice_type("mcg-STAG-r14", type_.to_string(), "targetTA-r14"); return c.get(); } uint8_t& scg_stag_r14() { assert_choice_type("scg-STAG-r14", type_.to_string(), "targetTA-r14"); return c.get(); } const uint8_t& mcg_stag_r14() const { assert_choice_type("mcg-STAG-r14", type_.to_string(), "targetTA-r14"); return c.get(); } const uint8_t& scg_stag_r14() const { assert_choice_type("scg-STAG-r14", type_.to_string(), "targetTA-r14"); return c.get(); } private: types type_; choice_buffer_t<8> c; void destroy_(); }; struct ul_cfg_info_r14_s_ { struct ul_sched_interv_r14_e_ { enum options { sf2, sf5, sf10 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods ul_sched_interv_r14_e_() {} ul_sched_interv_r14_e_(options v) : value(v) {} ul_sched_interv_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables uint8_t nof_conf_ul_processes_r14; ul_sched_interv_r14_e_ ul_sched_interv_r14; uint8_t ul_start_sf_r14; fixed_bitstring<16> ul_grant_r14; }; // member variables bool ul_cfg_info_r14_present; target_ta_r14_c_ target_ta_r14; ul_cfg_info_r14_s_ ul_cfg_info_r14; // sequence methods rach_skip_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RLF-TimersAndConstantsSCG-r12 ::= CHOICE struct rlf_timers_and_consts_scg_r12_c { struct setup_s_ { struct t313_r12_e_ { enum options { ms0, ms50, ms100, ms200, ms500, ms1000, ms2000 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 7, nof_exts = 0; static const bool has_ext = false; // enumerated methods t313_r12_e_() {} t313_r12_e_(options v) : value(v) {} t313_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct n313_r12_e_ { enum options { n1, n2, n3, n4, n6, n8, n10, n20 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods n313_r12_e_() {} n313_r12_e_(options v) : value(v) {} n313_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct n314_r12_e_ { enum options { n1, n2, n3, n4, n5, n6, n8, n10 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods n314_r12_e_() {} n314_r12_e_(options v) : value(v) {} n314_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ext; t313_r12_e_ t313_r12; n313_r12_e_ n313_r12; n314_r12_e_ n314_r12; // ... // sequence methods setup_s_(); }; typedef setup_e types; // choice methods rlf_timers_and_consts_scg_r12_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "RLF-TimersAndConstantsSCG-r12"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "RLF-TimersAndConstantsSCG-r12"); return c; } private: types type_; setup_s_ c; }; // RRCConnectionReconfiguration-v1530-IEs ::= SEQUENCE struct rrc_conn_recfg_v1530_ies_s { typedef bounded_array ded_info_nas_list_r15_l_; // member variables bool security_cfg_ho_v1530_present; bool s_cell_group_to_release_list_r15_present; bool s_cell_group_to_add_mod_list_r15_present; bool ded_info_nas_list_r15_present; bool p_max_ue_fr1_r15_present; bool smtc_r15_present; bool non_crit_ext_present; security_cfg_ho_v1530_s security_cfg_ho_v1530; scell_group_to_release_list_r15_l s_cell_group_to_release_list_r15; scell_group_to_add_mod_list_r15_l s_cell_group_to_add_mod_list_r15; ded_info_nas_list_r15_l_ ded_info_nas_list_r15; int8_t p_max_ue_fr1_r15; mtc_ssb_nr_r15_s smtc_r15; // sequence methods rrc_conn_recfg_v1530_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RadioResourceConfigCommonPSCell-r12 ::= SEQUENCE struct rr_cfg_common_ps_cell_r12_s { // member variables bool ext; rr_cfg_common_scell_r10_s basic_fields_r12; pucch_cfg_common_s pucch_cfg_common_r12; rach_cfg_common_s rach_cfg_common_r12; ul_pwr_ctrl_common_ps_cell_r12_s ul_pwr_ctrl_common_ps_cell_r12; // ... // group 0 bool ul_pwr_ctrl_common_ps_cell_v1310_present; copy_ptr ul_pwr_ctrl_common_ps_cell_v1310; // group 1 bool ul_pwr_ctrl_common_ps_cell_v1530_present; copy_ptr ul_pwr_ctrl_common_ps_cell_v1530; // sequence methods rr_cfg_common_ps_cell_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RadioResourceConfigCommonPSCell-v12f0 ::= SEQUENCE struct rr_cfg_common_ps_cell_v12f0_s { // member variables rr_cfg_common_scell_v10l0_s basic_fields_v12f0; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RadioResourceConfigCommonPSCell-v1440 ::= SEQUENCE struct rr_cfg_common_ps_cell_v1440_s { // member variables rr_cfg_common_scell_v1440_s basic_fields_v1440; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RadioResourceConfigDedicatedPSCell-r12 ::= SEQUENCE struct rr_cfg_ded_ps_cell_r12_s { // member variables bool ext; bool phys_cfg_ded_ps_cell_r12_present; bool sps_cfg_r12_present; bool naics_info_r12_present; phys_cfg_ded_s phys_cfg_ded_ps_cell_r12; sps_cfg_s sps_cfg_r12; naics_assist_info_r12_c naics_info_r12; // ... // group 0 bool neigh_cells_crs_info_ps_cell_r13_present; copy_ptr neigh_cells_crs_info_ps_cell_r13; // group 1 bool sps_cfg_v1430_present; copy_ptr sps_cfg_v1430; // group 2 bool sps_cfg_v1530_present; bool crs_intf_mitig_enabled_r15_present; bool neigh_cells_crs_info_r15_present; copy_ptr sps_cfg_v1530; bool crs_intf_mitig_enabled_r15; copy_ptr neigh_cells_crs_info_r15; // sequence methods rr_cfg_ded_ps_cell_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RadioResourceConfigDedicatedPSCell-v1370 ::= SEQUENCE struct rr_cfg_ded_ps_cell_v1370_s { // member variables bool phys_cfg_ded_ps_cell_v1370_present; phys_cfg_ded_v1370_s phys_cfg_ded_ps_cell_v1370; // sequence methods rr_cfg_ded_ps_cell_v1370_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCellToAddMod-r10 ::= SEQUENCE struct scell_to_add_mod_r10_s { struct cell_identif_r10_s_ { // member variables uint16_t pci_r10; uint16_t dl_carrier_freq_r10; }; struct s_cell_state_r15_e_ { enum options { activ, dormant }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods s_cell_state_r15_e_() {} s_cell_state_r15_e_(options v) : value(v) {} s_cell_state_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool ext; bool cell_identif_r10_present; bool rr_cfg_common_scell_r10_present; bool rr_cfg_ded_scell_r10_present; uint8_t s_cell_idx_r10; cell_identif_r10_s_ cell_identif_r10; rr_cfg_common_scell_r10_s rr_cfg_common_scell_r10; rr_cfg_ded_scell_r10_s rr_cfg_ded_scell_r10; // ... // group 0 bool dl_carrier_freq_v1090_present; uint32_t dl_carrier_freq_v1090; // group 1 bool ant_info_ded_scell_v10i0_present; copy_ptr ant_info_ded_scell_v10i0; // group 2 bool srs_switch_from_serv_cell_idx_r14_present; uint8_t srs_switch_from_serv_cell_idx_r14; // group 3 bool s_cell_state_r15_present; s_cell_state_r15_e_ s_cell_state_r15; // sequence methods scell_to_add_mod_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCellToAddMod-v10l0 ::= SEQUENCE struct scell_to_add_mod_v10l0_s { // member variables bool rr_cfg_common_scell_v10l0_present; rr_cfg_common_scell_v10l0_s rr_cfg_common_scell_v10l0; // sequence methods scell_to_add_mod_v10l0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCellToAddModExt-v1370 ::= SEQUENCE struct scell_to_add_mod_ext_v1370_s { // member variables bool rr_cfg_common_scell_v1370_present; rr_cfg_common_scell_v10l0_s rr_cfg_common_scell_v1370; // sequence methods scell_to_add_mod_ext_v1370_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCellToAddModExt-v1430 ::= SEQUENCE struct scell_to_add_mod_ext_v1430_s { struct s_cell_state_r15_e_ { enum options { activ, dormant }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods s_cell_state_r15_e_() {} s_cell_state_r15_e_(options v) : value(v) {} s_cell_state_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool ext; bool srs_switch_from_serv_cell_idx_r14_present; uint8_t srs_switch_from_serv_cell_idx_r14; // ... // group 0 bool s_cell_state_r15_present; s_cell_state_r15_e_ s_cell_state_r15; // sequence methods scell_to_add_mod_ext_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-DiscTxRefCarrierDedicated-r13 ::= CHOICE struct sl_disc_tx_ref_carrier_ded_r13_c { struct types { enum options { p_cell, s_cell, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods sl_disc_tx_ref_carrier_ded_r13_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint8_t& s_cell() { assert_choice_type("sCell", type_.to_string(), "SL-DiscTxRefCarrierDedicated-r13"); return c; } const uint8_t& s_cell() const { assert_choice_type("sCell", type_.to_string(), "SL-DiscTxRefCarrierDedicated-r13"); return c; } private: types type_; uint8_t c; }; // SL-DiscTxResource-r13 ::= CHOICE struct sl_disc_tx_res_r13_c { struct setup_c_ { struct types { enum options { sched_r13, ue_sel_r13, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods setup_c_() : type_(types::nulltype) {} setup_c_(const setup_c_& other); setup_c_& operator=(const setup_c_& other); ~setup_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters sl_disc_tx_cfg_sched_r13_s& sched_r13() { assert_choice_type("scheduled-r13", type_.to_string(), "setup"); return c.get(); } sl_disc_tx_pool_ded_r13_s& ue_sel_r13() { assert_choice_type("ue-Selected-r13", type_.to_string(), "setup"); return c.get(); } const sl_disc_tx_cfg_sched_r13_s& sched_r13() const { assert_choice_type("scheduled-r13", type_.to_string(), "setup"); return c.get(); } const sl_disc_tx_pool_ded_r13_s& ue_sel_r13() const { assert_choice_type("ue-Selected-r13", type_.to_string(), "setup"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; typedef setup_e types; // choice methods sl_disc_tx_res_r13_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_c_& setup() { assert_choice_type("setup", type_.to_string(), "SL-DiscTxResource-r13"); return c; } const setup_c_& setup() const { assert_choice_type("setup", type_.to_string(), "SL-DiscTxResource-r13"); return c; } private: types type_; setup_c_ c; }; // SL-GapPattern-r13 ::= SEQUENCE struct sl_gap_pattern_r13_s { struct gap_period_r13_e_ { enum options { sf40, sf60, sf70, sf80, sf120, sf140, sf160, sf240, sf280, sf320, sf640, sf1280, sf2560, sf5120, sf10240 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 15, nof_exts = 0; static const bool has_ext = false; // enumerated methods gap_period_r13_e_() {} gap_period_r13_e_(options v) : value(v) {} gap_period_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool ext; gap_period_r13_e_ gap_period_r13; sl_offset_ind_r12_c gap_offset_r12; dyn_bitstring gap_sf_bitmap_r13; // ... // sequence methods sl_gap_pattern_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-TxPoolToAddModListV2X-r14 ::= SEQUENCE (SIZE (1.. maxSL-V2X-TxPool-r14)) OF SL-TxPoolToAddMod-r14 typedef dyn_array sl_tx_pool_to_add_mod_list_v2x_r14_l; // SL-TxPoolToReleaseListV2X-r14 ::= SEQUENCE (SIZE (1.. maxSL-V2X-TxPool-r14)) OF INTEGER typedef bounded_array sl_tx_pool_to_release_list_v2x_r14_l; // SubframeAssignment-r15 ::= ENUMERATED struct sf_assign_r15_e { enum options { sa0, sa1, sa2, sa3, sa4, sa5, sa6 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 7, nof_exts = 0; static const bool has_ext = false; // enumerated methods sf_assign_r15_e() {} sf_assign_r15_e(options v) : value(v) {} sf_assign_r15_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // TunnelConfigLWIP-r13 ::= SEQUENCE struct tunnel_cfg_lwip_r13_s { // member variables bool ext; ip_address_r13_c ip_address_r13; ike_id_r13_s ike_id_r13; // ... // group 0 bool lwip_counter_r13_present; uint16_t lwip_counter_r13; // sequence methods tunnel_cfg_lwip_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // WLAN-MobilityConfig-r13 ::= SEQUENCE struct wlan_mob_cfg_r13_s { struct association_timer_r13_e_ { enum options { s10, s30, s60, s120, s240 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 5, nof_exts = 0; static const bool has_ext = false; // enumerated methods association_timer_r13_e_() {} association_timer_r13_e_(options v) : value(v) {} association_timer_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ext; bool wlan_to_release_list_r13_present; bool wlan_to_add_list_r13_present; bool association_timer_r13_present; bool success_report_requested_r13_present; wlan_id_list_r13_l wlan_to_release_list_r13; wlan_id_list_r13_l wlan_to_add_list_r13; association_timer_r13_e_ association_timer_r13; // ... // group 0 bool wlan_suspend_cfg_r14_present; copy_ptr wlan_suspend_cfg_r14; // sequence methods wlan_mob_cfg_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CA-BandwidthClass-r10 ::= ENUMERATED struct ca_bw_class_r10_e { enum options { a, b, c, d, e, f, /*...*/ }; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = true; // enumerated methods ca_bw_class_r10_e() {} ca_bw_class_r10_e(options v) : value(v) {} ca_bw_class_r10_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // LWA-Config-r13 ::= SEQUENCE struct lwa_cfg_r13_s { // member variables bool ext; bool lwa_mob_cfg_r13_present; bool lwa_wt_counter_r13_present; wlan_mob_cfg_r13_s lwa_mob_cfg_r13; uint16_t lwa_wt_counter_r13; // ... // group 0 bool wt_mac_address_r14_present; fixed_octstring<6> wt_mac_address_r14; // sequence methods lwa_cfg_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // LWIP-Config-r13 ::= SEQUENCE struct lwip_cfg_r13_s { // member variables bool ext; bool lwip_mob_cfg_r13_present; bool tunnel_cfg_lwip_r13_present; wlan_mob_cfg_r13_s lwip_mob_cfg_r13; tunnel_cfg_lwip_r13_s tunnel_cfg_lwip_r13; // ... // sequence methods lwip_cfg_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MobilityControlInfoSCG-r12 ::= SEQUENCE struct mob_ctrl_info_scg_r12_s { struct t307_r12_e_ { enum options { ms50, ms100, ms150, ms200, ms500, ms1000, ms2000, spare1 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods t307_r12_e_() {} t307_r12_e_(options v) : value(v) {} t307_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool ext; bool ue_id_scg_r12_present; bool rach_cfg_ded_r12_present; bool ciphering_algorithm_scg_r12_present; t307_r12_e_ t307_r12; fixed_bitstring<16> ue_id_scg_r12; rach_cfg_ded_s rach_cfg_ded_r12; ciphering_algorithm_r12_e ciphering_algorithm_scg_r12; // ... // group 0 bool make_before_break_scg_r14_present; bool rach_skip_scg_r14_present; copy_ptr rach_skip_scg_r14; // sequence methods mob_ctrl_info_scg_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PLMN-RAN-AreaCellList-r15 ::= SEQUENCE (SIZE (1..maxPLMN-r15)) OF PLMN-RAN-AreaCell-r15 typedef dyn_array plmn_ran_area_cell_list_r15_l; // PLMN-RAN-AreaConfigList-r15 ::= SEQUENCE (SIZE (1..maxPLMN-r15)) OF PLMN-RAN-AreaConfig-r15 typedef dyn_array plmn_ran_area_cfg_list_r15_l; // PSCellToAddMod-r12 ::= SEQUENCE struct ps_cell_to_add_mod_r12_s { struct cell_identif_r12_s_ { // member variables uint16_t pci_r12; uint32_t dl_carrier_freq_r12; }; // member variables bool ext; bool cell_identif_r12_present; bool rr_cfg_common_ps_cell_r12_present; bool rr_cfg_ded_ps_cell_r12_present; uint8_t s_cell_idx_r12; cell_identif_r12_s_ cell_identif_r12; rr_cfg_common_ps_cell_r12_s rr_cfg_common_ps_cell_r12; rr_cfg_ded_ps_cell_r12_s rr_cfg_ded_ps_cell_r12; // ... // group 0 bool ant_info_ded_ps_cell_v1280_present; copy_ptr ant_info_ded_ps_cell_v1280; // group 1 bool s_cell_idx_r13_present; uint8_t s_cell_idx_r13; // group 2 bool rr_cfg_ded_ps_cell_v1370_present; copy_ptr rr_cfg_ded_ps_cell_v1370; // sequence methods ps_cell_to_add_mod_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PSCellToAddMod-v12f0 ::= SEQUENCE struct ps_cell_to_add_mod_v12f0_s { // member variables bool rr_cfg_common_ps_cell_r12_present; rr_cfg_common_ps_cell_v12f0_s rr_cfg_common_ps_cell_r12; // sequence methods ps_cell_to_add_mod_v12f0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PSCellToAddMod-v1440 ::= SEQUENCE struct ps_cell_to_add_mod_v1440_s { // member variables bool rr_cfg_common_ps_cell_r14_present; rr_cfg_common_ps_cell_v1440_s rr_cfg_common_ps_cell_r14; // sequence methods ps_cell_to_add_mod_v1440_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RCLWI-Config-r13 ::= SEQUENCE struct rclwi_cfg_r13_s { struct cmd_c_ { struct steer_to_wlan_r13_s_ { // member variables wlan_id_list_r12_l mob_cfg_r13; }; struct types { enum options { steer_to_wlan_r13, steer_to_lte_r13, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods cmd_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters steer_to_wlan_r13_s_& steer_to_wlan_r13() { assert_choice_type("steerToWLAN-r13", type_.to_string(), "command"); return c; } const steer_to_wlan_r13_s_& steer_to_wlan_r13() const { assert_choice_type("steerToWLAN-r13", type_.to_string(), "command"); return c; } private: types type_; steer_to_wlan_r13_s_ c; }; // member variables bool ext; cmd_c_ cmd; // ... // sequence methods rclwi_cfg_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReconfiguration-v1510-IEs ::= SEQUENCE struct rrc_conn_recfg_v1510_ies_s { struct nr_cfg_r15_c_ { struct setup_s_ { // member variables bool nr_secondary_cell_group_cfg_r15_present; bool p_max_eutra_r15_present; bool endc_release_and_add_r15; dyn_octstring nr_secondary_cell_group_cfg_r15; int8_t p_max_eutra_r15; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods nr_cfg_r15_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "nr-Config-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "nr-Config-r15"); return c; } private: types type_; setup_s_ c; }; struct tdm_pattern_cfg_r15_c_ { struct setup_s_ { // member variables sf_assign_r15_e sf_assign_r15; uint8_t harq_offset_r15; }; typedef setup_e types; // choice methods tdm_pattern_cfg_r15_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "tdm-PatternConfig-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "tdm-PatternConfig-r15"); return c; } private: types type_; setup_s_ c; }; // member variables bool nr_cfg_r15_present; bool sk_counter_r15_present; bool nr_radio_bearer_cfg1_r15_present; bool nr_radio_bearer_cfg2_r15_present; bool tdm_pattern_cfg_r15_present; bool non_crit_ext_present; nr_cfg_r15_c_ nr_cfg_r15; uint16_t sk_counter_r15; dyn_octstring nr_radio_bearer_cfg1_r15; dyn_octstring nr_radio_bearer_cfg2_r15; tdm_pattern_cfg_r15_c_ tdm_pattern_cfg_r15; rrc_conn_recfg_v1530_ies_s non_crit_ext; // sequence methods rrc_conn_recfg_v1510_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RadioResourceConfigDedicatedSCG-r12 ::= SEQUENCE struct rr_cfg_ded_scg_r12_s { // member variables bool ext; bool drb_to_add_mod_list_scg_r12_present; bool mac_main_cfg_scg_r12_present; bool rlf_timers_and_consts_scg_r12_present; drb_to_add_mod_list_scg_r12_l drb_to_add_mod_list_scg_r12; mac_main_cfg_s mac_main_cfg_scg_r12; rlf_timers_and_consts_scg_r12_c rlf_timers_and_consts_scg_r12; // ... // group 0 bool drb_to_add_mod_list_scg_r15_present; copy_ptr drb_to_add_mod_list_scg_r15; // sequence methods rr_cfg_ded_scg_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCellToAddModList-r10 ::= SEQUENCE (SIZE (1..maxSCell-r10)) OF SCellToAddMod-r10 typedef dyn_array scell_to_add_mod_list_r10_l; // SCellToAddModList-v10l0 ::= SEQUENCE (SIZE (1..maxSCell-r10)) OF SCellToAddMod-v10l0 typedef dyn_array scell_to_add_mod_list_v10l0_l; // SCellToAddModListExt-v1370 ::= SEQUENCE (SIZE (1..maxSCell-r13)) OF SCellToAddModExt-v1370 typedef dyn_array scell_to_add_mod_list_ext_v1370_l; // SCellToAddModListExt-v1430 ::= SEQUENCE (SIZE (1..maxSCell-r13)) OF SCellToAddModExt-v1430 typedef dyn_array scell_to_add_mod_list_ext_v1430_l; // SCellToReleaseList-r10 ::= SEQUENCE (SIZE (1..maxSCell-r10)) OF INTEGER typedef bounded_array scell_to_release_list_r10_l; // SL-CommTxPoolToAddMod-r12 ::= SEQUENCE struct sl_comm_tx_pool_to_add_mod_r12_s { // member variables uint8_t pool_id_r12; sl_comm_res_pool_r12_s pool_r12; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-CommTxPoolToAddModExt-r13 ::= SEQUENCE struct sl_comm_tx_pool_to_add_mod_ext_r13_s { // member variables uint8_t pool_id_v1310; sl_comm_res_pool_r12_s pool_r13; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-DiscTxResourceInfoPerFreq-r13 ::= SEQUENCE struct sl_disc_tx_res_info_per_freq_r13_s { // member variables bool ext; bool disc_tx_res_r13_present; bool disc_tx_res_ps_r13_present; bool disc_tx_ref_carrier_ded_r13_present; bool disc_cell_sel_info_r13_present; uint32_t disc_tx_carrier_freq_r13; sl_disc_tx_res_r13_c disc_tx_res_r13; sl_disc_tx_res_r13_c disc_tx_res_ps_r13; sl_disc_tx_ref_carrier_ded_r13_c disc_tx_ref_carrier_ded_r13; cell_sel_info_nfreq_r13_s disc_cell_sel_info_r13; // ... // sequence methods sl_disc_tx_res_info_per_freq_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-GapPatternList-r13 ::= SEQUENCE (SIZE (1..maxSL-GP-r13)) OF SL-GapPattern-r13 typedef dyn_array sl_gap_pattern_list_r13_l; // SL-TF-IndexPair-r12 ::= SEQUENCE struct sl_tf_idx_pair_r12_s { // member variables bool disc_sf_idx_r12_present; bool disc_prb_idx_r12_present; uint8_t disc_sf_idx_r12; uint8_t disc_prb_idx_r12; // sequence methods sl_tf_idx_pair_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-V2X-ConfigDedicated-r14 ::= SEQUENCE struct sl_v2x_cfg_ded_r14_s { struct comm_tx_res_r14_c_ { struct setup_c_ { struct sched_r14_s_ { // member variables bool v2x_sched_pool_r14_present; bool mcs_r14_present; fixed_bitstring<16> sl_v_rnti_r14; mac_main_cfg_sl_r12_s mac_main_cfg_r14; sl_comm_res_pool_v2x_r14_s v2x_sched_pool_r14; uint8_t mcs_r14; lc_ch_group_info_list_r13_l lc_ch_group_info_list_r14; // sequence methods sched_r14_s_(); }; struct ue_sel_r14_s_ { struct v2x_comm_tx_pool_normal_ded_r14_s_ { // member variables bool pool_to_release_list_r14_present; bool pool_to_add_mod_list_r14_present; bool v2x_comm_tx_pool_sensing_cfg_r14_present; sl_tx_pool_to_release_list_v2x_r14_l pool_to_release_list_r14; sl_tx_pool_to_add_mod_list_v2x_r14_l pool_to_add_mod_list_r14; sl_comm_tx_pool_sensing_cfg_r14_s v2x_comm_tx_pool_sensing_cfg_r14; // sequence methods v2x_comm_tx_pool_normal_ded_r14_s_(); }; // member variables v2x_comm_tx_pool_normal_ded_r14_s_ v2x_comm_tx_pool_normal_ded_r14; }; struct types { enum options { sched_r14, ue_sel_r14, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods setup_c_() : type_(types::nulltype) {} setup_c_(const setup_c_& other); setup_c_& operator=(const setup_c_& other); ~setup_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters sched_r14_s_& sched_r14() { assert_choice_type("scheduled-r14", type_.to_string(), "setup"); return c.get(); } ue_sel_r14_s_& ue_sel_r14() { assert_choice_type("ue-Selected-r14", type_.to_string(), "setup"); return c.get(); } const sched_r14_s_& sched_r14() const { assert_choice_type("scheduled-r14", type_.to_string(), "setup"); return c.get(); } const ue_sel_r14_s_& ue_sel_r14() const { assert_choice_type("ue-Selected-r14", type_.to_string(), "setup"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; typedef setup_e types; // choice methods comm_tx_res_r14_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_c_& setup() { assert_choice_type("setup", type_.to_string(), "commTxResources-r14"); return c; } const setup_c_& setup() const { assert_choice_type("setup", type_.to_string(), "commTxResources-r14"); return c; } private: types type_; setup_c_ c; }; struct comm_tx_res_v1530_c_ { struct setup_c_ { struct sched_v1530_s_ { // member variables bool lc_ch_group_info_list_v1530_present; bool mcs_r15_present; lc_ch_group_info_list_v1530_l lc_ch_group_info_list_v1530; uint8_t mcs_r15; // sequence methods sched_v1530_s_(); }; struct ue_sel_v1530_s_ { // member variables bool v2x_freq_sel_cfg_list_r15_present; sl_v2x_freq_sel_cfg_list_r15_l v2x_freq_sel_cfg_list_r15; // sequence methods ue_sel_v1530_s_(); }; struct types { enum options { sched_v1530, ue_sel_v1530, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods setup_c_() : type_(types::nulltype) {} setup_c_(const setup_c_& other); setup_c_& operator=(const setup_c_& other); ~setup_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters sched_v1530_s_& sched_v1530() { assert_choice_type("scheduled-v1530", type_.to_string(), "setup"); return c.get(); } ue_sel_v1530_s_& ue_sel_v1530() { assert_choice_type("ue-Selected-v1530", type_.to_string(), "setup"); return c.get(); } const sched_v1530_s_& sched_v1530() const { assert_choice_type("scheduled-v1530", type_.to_string(), "setup"); return c.get(); } const ue_sel_v1530_s_& ue_sel_v1530() const { assert_choice_type("ue-Selected-v1530", type_.to_string(), "setup"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; typedef setup_e types; // choice methods comm_tx_res_v1530_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_c_& setup() { assert_choice_type("setup", type_.to_string(), "commTxResources-v1530"); return c; } const setup_c_& setup() const { assert_choice_type("setup", type_.to_string(), "commTxResources-v1530"); return c; } private: types type_; setup_c_ c; }; // member variables bool ext; bool comm_tx_res_r14_present; bool v2x_inter_freq_info_list_r14_present; bool thres_sl_tx_prioritization_r14_present; bool type_tx_sync_r14_present; bool cbr_ded_tx_cfg_list_r14_present; comm_tx_res_r14_c_ comm_tx_res_r14; sl_inter_freq_info_list_v2x_r14_l v2x_inter_freq_info_list_r14; uint8_t thres_sl_tx_prioritization_r14; sl_type_tx_sync_r14_e type_tx_sync_r14; sl_cbr_common_tx_cfg_list_r14_s cbr_ded_tx_cfg_list_r14; // ... // group 0 bool comm_tx_res_v1530_present; bool v2x_packet_dupl_cfg_r15_present; bool sync_freq_list_r15_present; bool slss_tx_multi_freq_r15_present; copy_ptr comm_tx_res_v1530; copy_ptr v2x_packet_dupl_cfg_r15; copy_ptr sync_freq_list_r15; // sequence methods sl_v2x_cfg_ded_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandIndication-r14 ::= SEQUENCE struct band_ind_r14_s { // member variables bool ca_bw_class_ul_r14_present; uint16_t band_eutra_r14; ca_bw_class_r10_e ca_bw_class_dl_r14; ca_bw_class_r10_e ca_bw_class_ul_r14; // sequence methods band_ind_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // LWA-Configuration-r13 ::= CHOICE struct lwa_cfg_r13_c { struct setup_s_ { // member variables lwa_cfg_r13_s lwa_cfg_r13; }; typedef setup_e types; // choice methods lwa_cfg_r13_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "LWA-Configuration-r13"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "LWA-Configuration-r13"); return c; } private: types type_; setup_s_ c; }; // LWIP-Configuration-r13 ::= CHOICE struct lwip_cfg_r13_c { struct setup_s_ { // member variables lwip_cfg_r13_s lwip_cfg_r13; }; typedef setup_e types; // choice methods lwip_cfg_r13_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "LWIP-Configuration-r13"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "LWIP-Configuration-r13"); return c; } private: types type_; setup_s_ c; }; // MeasCSI-RS-Config-r12 ::= SEQUENCE struct meas_csi_rs_cfg_r12_s { // member variables bool ext; uint8_t meas_csi_rs_id_r12; uint16_t pci_r12; uint16_t scrambling_id_r12; uint8_t res_cfg_r12; uint8_t sf_offset_r12; q_offset_range_e csi_rs_individual_offset_r12; // ... // sequence methods meas_csi_rs_cfg_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PhysCellIdRangeUTRA-FDD-r9 ::= SEQUENCE struct pci_range_utra_fdd_r9_s { // member variables bool range_r9_present; uint16_t start_r9; uint16_t range_r9; // sequence methods pci_range_utra_fdd_r9_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PowerCoordinationInfo-r12 ::= SEQUENCE struct pwr_coordination_info_r12_s { // member variables uint8_t p_me_nb_r12; uint8_t p_se_nb_r12; uint8_t pwr_ctrl_mode_r12; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RAN-NotificationAreaInfo-r15 ::= CHOICE struct ran_notif_area_info_r15_c { struct types { enum options { cell_list_r15, ran_area_cfg_list_r15, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods ran_notif_area_info_r15_c() : type_(types::nulltype) {} ran_notif_area_info_r15_c(const ran_notif_area_info_r15_c& other); ran_notif_area_info_r15_c& operator=(const ran_notif_area_info_r15_c& other); ~ran_notif_area_info_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(bit_ref& bref); void to_json(json_writer& j) const; // getters plmn_ran_area_cell_list_r15_l& cell_list_r15() { assert_choice_type("cellList-r15", type_.to_string(), "RAN-NotificationAreaInfo-r15"); return c.get(); } plmn_ran_area_cfg_list_r15_l& ran_area_cfg_list_r15() { assert_choice_type("ran-AreaConfigList-r15", type_.to_string(), "RAN-NotificationAreaInfo-r15"); return c.get(); } const plmn_ran_area_cell_list_r15_l& cell_list_r15() const { assert_choice_type("cellList-r15", type_.to_string(), "RAN-NotificationAreaInfo-r15"); return c.get(); } const plmn_ran_area_cfg_list_r15_l& ran_area_cfg_list_r15() const { assert_choice_type("ran-AreaConfigList-r15", type_.to_string(), "RAN-NotificationAreaInfo-r15"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // RCLWI-Configuration-r13 ::= CHOICE struct rclwi_cfg_r13_c { struct setup_s_ { // member variables rclwi_cfg_r13_s rclwi_cfg_r13; }; typedef setup_e types; // choice methods rclwi_cfg_r13_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "RCLWI-Configuration-r13"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "RCLWI-Configuration-r13"); return c; } private: types type_; setup_s_ c; }; // RRCConnectionReconfiguration-v1430-IEs ::= SEQUENCE struct rrc_conn_recfg_v1430_ies_s { // member variables bool sl_v2x_cfg_ded_r14_present; bool s_cell_to_add_mod_list_ext_v1430_present; bool per_cc_gap_ind_request_r14_present; bool sib_type2_ded_r14_present; bool non_crit_ext_present; sl_v2x_cfg_ded_r14_s sl_v2x_cfg_ded_r14; scell_to_add_mod_list_ext_v1430_l s_cell_to_add_mod_list_ext_v1430; dyn_octstring sib_type2_ded_r14; rrc_conn_recfg_v1510_ies_s non_crit_ext; // sequence methods rrc_conn_recfg_v1430_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RadioResourceConfigDedicated-v1370 ::= SEQUENCE struct rr_cfg_ded_v1370_s { // member variables bool phys_cfg_ded_v1370_present; phys_cfg_ded_v1370_s phys_cfg_ded_v1370; // sequence methods rr_cfg_ded_v1370_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCG-ConfigPartSCG-r12 ::= SEQUENCE struct scg_cfg_part_scg_r12_s { // member variables bool ext; bool rr_cfg_ded_scg_r12_present; bool s_cell_to_release_list_scg_r12_present; bool p_scell_to_add_mod_r12_present; bool s_cell_to_add_mod_list_scg_r12_present; bool mob_ctrl_info_scg_r12_present; rr_cfg_ded_scg_r12_s rr_cfg_ded_scg_r12; scell_to_release_list_r10_l s_cell_to_release_list_scg_r12; ps_cell_to_add_mod_r12_s p_scell_to_add_mod_r12; scell_to_add_mod_list_r10_l s_cell_to_add_mod_list_scg_r12; mob_ctrl_info_scg_r12_s mob_ctrl_info_scg_r12; // ... // group 0 bool s_cell_to_release_list_scg_ext_r13_present; bool s_cell_to_add_mod_list_scg_ext_r13_present; copy_ptr s_cell_to_release_list_scg_ext_r13; copy_ptr s_cell_to_add_mod_list_scg_ext_r13; // group 1 bool s_cell_to_add_mod_list_scg_ext_v1370_present; copy_ptr s_cell_to_add_mod_list_scg_ext_v1370; // group 2 bool p_scell_to_add_mod_v1440_present; copy_ptr p_scell_to_add_mod_v1440; // group 3 bool s_cell_group_to_release_list_scg_r15_present; bool s_cell_group_to_add_mod_list_scg_r15_present; copy_ptr s_cell_group_to_release_list_scg_r15; copy_ptr s_cell_group_to_add_mod_list_scg_r15; // sequence methods scg_cfg_part_scg_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCG-ConfigPartSCG-v12f0 ::= SEQUENCE struct scg_cfg_part_scg_v12f0_s { // member variables bool p_scell_to_add_mod_v12f0_present; bool s_cell_to_add_mod_list_scg_v12f0_present; ps_cell_to_add_mod_v12f0_s p_scell_to_add_mod_v12f0; scell_to_add_mod_list_v10l0_l s_cell_to_add_mod_list_scg_v12f0; // sequence methods scg_cfg_part_scg_v12f0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-CommTxPoolToAddModList-r12 ::= SEQUENCE (SIZE (1..maxSL-TxPool-r12)) OF SL-CommTxPoolToAddMod-r12 typedef dyn_array sl_comm_tx_pool_to_add_mod_list_r12_l; // SL-CommTxPoolToAddModListExt-r13 ::= SEQUENCE (SIZE (1..maxSL-TxPool-v1310)) OF SL-CommTxPoolToAddModExt-r13 typedef dyn_array sl_comm_tx_pool_to_add_mod_list_ext_r13_l; // SL-DiscSysInfoToReportFreqList-r13 ::= SEQUENCE (SIZE (1..maxFreq)) OF INTEGER typedef bounded_array sl_disc_sys_info_to_report_freq_list_r13_l; // SL-DiscTxInfoInterFreqListAdd-r13 ::= SEQUENCE struct sl_disc_tx_info_inter_freq_list_add_r13_s { typedef dyn_array disc_tx_freq_to_add_mod_list_r13_l_; typedef bounded_array disc_tx_freq_to_release_list_r13_l_; // member variables bool ext; bool disc_tx_freq_to_add_mod_list_r13_present; bool disc_tx_freq_to_release_list_r13_present; disc_tx_freq_to_add_mod_list_r13_l_ disc_tx_freq_to_add_mod_list_r13; disc_tx_freq_to_release_list_r13_l_ disc_tx_freq_to_release_list_r13; // ... // sequence methods sl_disc_tx_info_inter_freq_list_add_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-GapConfig-r13 ::= SEQUENCE struct sl_gap_cfg_r13_s { // member variables sl_gap_pattern_list_r13_l gap_pattern_list_r13; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-TF-IndexPairList-r12 ::= SEQUENCE (SIZE (1..maxSL-TF-IndexPair-r12)) OF SL-TF-IndexPair-r12 typedef dyn_array sl_tf_idx_pair_list_r12_l; // SL-TxPoolToReleaseListExt-r13 ::= SEQUENCE (SIZE (1..maxSL-TxPool-v1310)) OF INTEGER typedef bounded_array sl_tx_pool_to_release_list_ext_r13_l; // AltTTT-CellsToAddMod-r12 ::= SEQUENCE struct alt_ttt_cells_to_add_mod_r12_s { // member variables uint8_t cell_idx_r12; pci_range_s pci_range_r12; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BT-NameList-r15 ::= SEQUENCE (SIZE (1..maxBT-Name-r15)) OF OCTET STRING typedef bounded_array bt_name_list_r15_l; // BandCombination-r14 ::= SEQUENCE (SIZE (1..maxSimultaneousBands-r10)) OF BandIndication-r14 typedef dyn_array band_combination_r14_l; // BlackCellsToAddMod ::= SEQUENCE struct black_cells_to_add_mod_s { // member variables uint8_t cell_idx; pci_range_s pci_range; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellsToAddMod ::= SEQUENCE struct cells_to_add_mod_s { // member variables uint8_t cell_idx; uint16_t pci; q_offset_range_e cell_individual_offset; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellsToAddModCDMA2000 ::= SEQUENCE struct cells_to_add_mod_cdma2000_s { // member variables uint8_t cell_idx; uint16_t pci; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellsToAddModNR-r15 ::= SEQUENCE struct cells_to_add_mod_nr_r15_s { // member variables uint8_t cell_idx_r15; uint16_t pci_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellsToAddModUTRA-FDD ::= SEQUENCE struct cells_to_add_mod_utra_fdd_s { // member variables uint8_t cell_idx; uint16_t pci; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellsToAddModUTRA-TDD ::= SEQUENCE struct cells_to_add_mod_utra_tdd_s { // member variables uint8_t cell_idx; uint8_t pci; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // FlightPathInfoReportConfig-r15 ::= SEQUENCE struct flight_path_info_report_cfg_r15_s { // member variables bool include_time_stamp_r15_present; uint8_t max_way_point_num_r15; // sequence methods flight_path_info_report_cfg_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasCSI-RS-ToAddModList-r12 ::= SEQUENCE (SIZE (1..maxCSI-RS-Meas-r12)) OF MeasCSI-RS-Config-r12 typedef dyn_array meas_csi_rs_to_add_mod_list_r12_l; // MeasCSI-RS-ToRemoveList-r12 ::= SEQUENCE (SIZE (1..maxCSI-RS-Meas-r12)) OF INTEGER typedef dyn_array meas_csi_rs_to_rem_list_r12_l; // MeasIdleConfigDedicated-r15 ::= SEQUENCE struct meas_idle_cfg_ded_r15_s { struct meas_idle_dur_r15_e_ { enum options { sec10, sec30, sec60, sec120, sec180, sec240, sec300, spare }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods meas_idle_dur_r15_e_() {} meas_idle_dur_r15_e_(options v) : value(v) {} meas_idle_dur_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool ext; bool meas_idle_carrier_list_eutra_r15_present; eutra_carrier_list_r15_l meas_idle_carrier_list_eutra_r15; meas_idle_dur_r15_e_ meas_idle_dur_r15; // ... // sequence methods meas_idle_cfg_ded_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasSubframeCellList-r10 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF PhysCellIdRange typedef dyn_array meas_sf_cell_list_r10_l; // PhysCellIdRangeUTRA-FDDList-r9 ::= SEQUENCE (SIZE (1..maxPhysCellIdRange-r9)) OF PhysCellIdRangeUTRA-FDD-r9 typedef dyn_array pci_range_utra_fdd_list_r9_l; // RRC-InactiveConfig-r15 ::= SEQUENCE struct rrc_inactive_cfg_r15_s { struct ran_paging_cycle_r15_e_ { enum options { rf32, rf64, rf128, rf256 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods ran_paging_cycle_r15_e_() {} ran_paging_cycle_r15_e_(options v) : value(v) {} ran_paging_cycle_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct periodic_rnau_timer_r15_e_ { enum options { min5, min10, min20, min30, min60, min120, min360, min720 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods periodic_rnau_timer_r15_e_() {} periodic_rnau_timer_r15_e_(options v) : value(v) {} periodic_rnau_timer_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool ran_paging_cycle_r15_present; bool ran_notif_area_info_r15_present; bool periodic_rnau_timer_r15_present; bool next_hop_chaining_count_r15_present; bool non_crit_ext_present; fixed_bitstring<40> full_i_rnti_r15; fixed_bitstring<24> short_i_rnti_r15; ran_paging_cycle_r15_e_ ran_paging_cycle_r15; ran_notif_area_info_r15_c ran_notif_area_info_r15; periodic_rnau_timer_r15_e_ periodic_rnau_timer_r15; uint8_t next_hop_chaining_count_r15; // sequence methods rrc_inactive_cfg_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReconfiguration-v1310-IEs ::= SEQUENCE struct rrc_conn_recfg_v1310_ies_s { // member variables bool s_cell_to_release_list_ext_r13_present; bool s_cell_to_add_mod_list_ext_r13_present; bool lwa_cfg_r13_present; bool lwip_cfg_r13_present; bool rclwi_cfg_r13_present; bool non_crit_ext_present; scell_to_release_list_ext_r13_l s_cell_to_release_list_ext_r13; scell_to_add_mod_list_ext_r13_l s_cell_to_add_mod_list_ext_r13; lwa_cfg_r13_c lwa_cfg_r13; lwip_cfg_r13_c lwip_cfg_r13; rclwi_cfg_r13_c rclwi_cfg_r13; rrc_conn_recfg_v1430_ies_s non_crit_ext; // sequence methods rrc_conn_recfg_v1310_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReconfiguration-v1370-IEs ::= SEQUENCE struct rrc_conn_recfg_v1370_ies_s { // member variables bool rr_cfg_ded_v1370_present; bool s_cell_to_add_mod_list_ext_v1370_present; bool non_crit_ext_present; rr_cfg_ded_v1370_s rr_cfg_ded_v1370; scell_to_add_mod_list_ext_v1370_l s_cell_to_add_mod_list_ext_v1370; // sequence methods rrc_conn_recfg_v1370_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCG-Configuration-r12 ::= CHOICE struct scg_cfg_r12_c { struct setup_s_ { struct scg_cfg_part_mcg_r12_s_ { // member variables bool ext; bool scg_counter_r12_present; bool pwr_coordination_info_r12_present; uint16_t scg_counter_r12; pwr_coordination_info_r12_s pwr_coordination_info_r12; // ... // sequence methods scg_cfg_part_mcg_r12_s_(); }; // member variables bool scg_cfg_part_mcg_r12_present; bool scg_cfg_part_scg_r12_present; scg_cfg_part_mcg_r12_s_ scg_cfg_part_mcg_r12; scg_cfg_part_scg_r12_s scg_cfg_part_scg_r12; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods scg_cfg_r12_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "SCG-Configuration-r12"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "SCG-Configuration-r12"); return c; } private: types type_; setup_s_ c; }; // SCG-Configuration-v12f0 ::= CHOICE struct scg_cfg_v12f0_c { struct setup_s_ { // member variables bool scg_cfg_part_scg_v12f0_present; scg_cfg_part_scg_v12f0_s scg_cfg_part_scg_v12f0; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods scg_cfg_v12f0_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "SCG-Configuration-v12f0"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "SCG-Configuration-v12f0"); return c; } private: types type_; setup_s_ c; }; // SL-CommConfig-r12 ::= SEQUENCE struct sl_comm_cfg_r12_s { struct comm_tx_res_r12_c_ { struct setup_c_ { struct sched_r12_s_ { // member variables bool mcs_r12_present; fixed_bitstring<16> sl_rnti_r12; mac_main_cfg_sl_r12_s mac_main_cfg_r12; sl_comm_res_pool_r12_s sc_comm_tx_cfg_r12; uint8_t mcs_r12; // sequence methods sched_r12_s_(); }; struct ue_sel_r12_s_ { struct comm_tx_pool_normal_ded_r12_s_ { // member variables bool pool_to_release_list_r12_present; bool pool_to_add_mod_list_r12_present; sl_tx_pool_to_release_list_r12_l pool_to_release_list_r12; sl_comm_tx_pool_to_add_mod_list_r12_l pool_to_add_mod_list_r12; // sequence methods comm_tx_pool_normal_ded_r12_s_(); }; // member variables comm_tx_pool_normal_ded_r12_s_ comm_tx_pool_normal_ded_r12; }; struct types { enum options { sched_r12, ue_sel_r12, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods setup_c_() : type_(types::nulltype) {} setup_c_(const setup_c_& other); setup_c_& operator=(const setup_c_& other); ~setup_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters sched_r12_s_& sched_r12() { assert_choice_type("scheduled-r12", type_.to_string(), "setup"); return c.get(); } ue_sel_r12_s_& ue_sel_r12() { assert_choice_type("ue-Selected-r12", type_.to_string(), "setup"); return c.get(); } const sched_r12_s_& sched_r12() const { assert_choice_type("scheduled-r12", type_.to_string(), "setup"); return c.get(); } const ue_sel_r12_s_& ue_sel_r12() const { assert_choice_type("ue-Selected-r12", type_.to_string(), "setup"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; typedef setup_e types; // choice methods comm_tx_res_r12_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_c_& setup() { assert_choice_type("setup", type_.to_string(), "commTxResources-r12"); return c; } const setup_c_& setup() const { assert_choice_type("setup", type_.to_string(), "commTxResources-r12"); return c; } private: types type_; setup_c_ c; }; struct comm_tx_res_v1310_c_ { struct setup_c_ { struct sched_v1310_s_ { // member variables lc_ch_group_info_list_r13_l lc_ch_group_info_list_r13; bool multiple_tx_r13; }; struct ue_sel_v1310_s_ { struct comm_tx_pool_normal_ded_ext_r13_s_ { // member variables bool pool_to_release_list_ext_r13_present; bool pool_to_add_mod_list_ext_r13_present; sl_tx_pool_to_release_list_ext_r13_l pool_to_release_list_ext_r13; sl_comm_tx_pool_to_add_mod_list_ext_r13_l pool_to_add_mod_list_ext_r13; // sequence methods comm_tx_pool_normal_ded_ext_r13_s_(); }; // member variables comm_tx_pool_normal_ded_ext_r13_s_ comm_tx_pool_normal_ded_ext_r13; }; struct types { enum options { sched_v1310, ue_sel_v1310, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods setup_c_() : type_(types::nulltype) {} setup_c_(const setup_c_& other); setup_c_& operator=(const setup_c_& other); ~setup_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters sched_v1310_s_& sched_v1310() { assert_choice_type("scheduled-v1310", type_.to_string(), "setup"); return c.get(); } ue_sel_v1310_s_& ue_sel_v1310() { assert_choice_type("ue-Selected-v1310", type_.to_string(), "setup"); return c.get(); } const sched_v1310_s_& sched_v1310() const { assert_choice_type("scheduled-v1310", type_.to_string(), "setup"); return c.get(); } const ue_sel_v1310_s_& ue_sel_v1310() const { assert_choice_type("ue-Selected-v1310", type_.to_string(), "setup"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; typedef setup_e types; // choice methods comm_tx_res_v1310_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_c_& setup() { assert_choice_type("setup", type_.to_string(), "commTxResources-v1310"); return c; } const setup_c_& setup() const { assert_choice_type("setup", type_.to_string(), "commTxResources-v1310"); return c; } private: types type_; setup_c_ c; }; // member variables bool ext; bool comm_tx_res_r12_present; comm_tx_res_r12_c_ comm_tx_res_r12; // ... // group 0 bool comm_tx_res_v1310_present; bool comm_tx_allow_relay_ded_r13_present; copy_ptr comm_tx_res_v1310; bool comm_tx_allow_relay_ded_r13; // sequence methods sl_comm_cfg_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-DiscConfig-r12 ::= SEQUENCE struct sl_disc_cfg_r12_s { struct disc_tx_res_r12_c_ { struct setup_c_ { struct sched_r12_s_ { // member variables bool disc_tx_cfg_r12_present; bool disc_tf_idx_list_r12_present; bool disc_hop_cfg_r12_present; sl_disc_res_pool_r12_s disc_tx_cfg_r12; sl_tf_idx_pair_list_r12_l disc_tf_idx_list_r12; sl_hop_cfg_disc_r12_s disc_hop_cfg_r12; // sequence methods sched_r12_s_(); }; struct ue_sel_r12_s_ { struct disc_tx_pool_ded_r12_s_ { // member variables bool pool_to_release_list_r12_present; bool pool_to_add_mod_list_r12_present; sl_tx_pool_to_release_list_r12_l pool_to_release_list_r12; sl_disc_tx_pool_to_add_mod_list_r12_l pool_to_add_mod_list_r12; // sequence methods disc_tx_pool_ded_r12_s_(); }; // member variables bool disc_tx_pool_ded_r12_present; disc_tx_pool_ded_r12_s_ disc_tx_pool_ded_r12; // sequence methods ue_sel_r12_s_(); }; struct types { enum options { sched_r12, ue_sel_r12, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods setup_c_() : type_(types::nulltype) {} setup_c_(const setup_c_& other); setup_c_& operator=(const setup_c_& other); ~setup_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters sched_r12_s_& sched_r12() { assert_choice_type("scheduled-r12", type_.to_string(), "setup"); return c.get(); } ue_sel_r12_s_& ue_sel_r12() { assert_choice_type("ue-Selected-r12", type_.to_string(), "setup"); return c.get(); } const sched_r12_s_& sched_r12() const { assert_choice_type("scheduled-r12", type_.to_string(), "setup"); return c.get(); } const ue_sel_r12_s_& ue_sel_r12() const { assert_choice_type("ue-Selected-r12", type_.to_string(), "setup"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; typedef setup_e types; // choice methods disc_tx_res_r12_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_c_& setup() { assert_choice_type("setup", type_.to_string(), "discTxResources-r12"); return c; } const setup_c_& setup() const { assert_choice_type("setup", type_.to_string(), "discTxResources-r12"); return c; } private: types type_; setup_c_ c; }; struct disc_tf_idx_list_v1260_c_ { struct setup_s_ { // member variables sl_tf_idx_pair_list_r12b_l disc_tf_idx_list_r12b; }; typedef setup_e types; // choice methods disc_tf_idx_list_v1260_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "discTF-IndexList-v1260"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "discTF-IndexList-v1260"); return c; } private: types type_; setup_s_ c; }; struct disc_tx_res_ps_r13_c_ { struct setup_c_ { struct ue_sel_r13_s_ { // member variables sl_disc_tx_pool_ded_r13_s disc_tx_pool_ps_ded_r13; }; struct types { enum options { sched_r13, ue_sel_r13, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods setup_c_() : type_(types::nulltype) {} setup_c_(const setup_c_& other); setup_c_& operator=(const setup_c_& other); ~setup_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters sl_disc_tx_cfg_sched_r13_s& sched_r13() { assert_choice_type("scheduled-r13", type_.to_string(), "setup"); return c.get(); } ue_sel_r13_s_& ue_sel_r13() { assert_choice_type("ue-Selected-r13", type_.to_string(), "setup"); return c.get(); } const sl_disc_tx_cfg_sched_r13_s& sched_r13() const { assert_choice_type("scheduled-r13", type_.to_string(), "setup"); return c.get(); } const ue_sel_r13_s_& ue_sel_r13() const { assert_choice_type("ue-Selected-r13", type_.to_string(), "setup"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; typedef setup_e types; // choice methods disc_tx_res_ps_r13_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_c_& setup() { assert_choice_type("setup", type_.to_string(), "discTxResourcesPS-r13"); return c; } const setup_c_& setup() const { assert_choice_type("setup", type_.to_string(), "discTxResourcesPS-r13"); return c; } private: types type_; setup_c_ c; }; struct disc_tx_inter_freq_info_r13_c_ { struct setup_s_ { // member variables bool disc_tx_carrier_freq_r13_present; bool disc_tx_ref_carrier_ded_r13_present; bool disc_tx_info_inter_freq_list_add_r13_present; uint32_t disc_tx_carrier_freq_r13; sl_disc_tx_ref_carrier_ded_r13_c disc_tx_ref_carrier_ded_r13; sl_disc_tx_info_inter_freq_list_add_r13_s disc_tx_info_inter_freq_list_add_r13; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods disc_tx_inter_freq_info_r13_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "discTxInterFreqInfo-r13"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "discTxInterFreqInfo-r13"); return c; } private: types type_; setup_s_ c; }; struct disc_rx_gap_cfg_r13_c_ { typedef setup_e types; // choice methods disc_rx_gap_cfg_r13_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters sl_gap_cfg_r13_s& setup() { assert_choice_type("setup", type_.to_string(), "discRxGapConfig-r13"); return c; } const sl_gap_cfg_r13_s& setup() const { assert_choice_type("setup", type_.to_string(), "discRxGapConfig-r13"); return c; } private: types type_; sl_gap_cfg_r13_s c; }; struct disc_tx_gap_cfg_r13_c_ { typedef setup_e types; // choice methods disc_tx_gap_cfg_r13_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters sl_gap_cfg_r13_s& setup() { assert_choice_type("setup", type_.to_string(), "discTxGapConfig-r13"); return c; } const sl_gap_cfg_r13_s& setup() const { assert_choice_type("setup", type_.to_string(), "discTxGapConfig-r13"); return c; } private: types type_; sl_gap_cfg_r13_s c; }; struct disc_sys_info_to_report_cfg_r13_c_ { typedef setup_e types; // choice methods disc_sys_info_to_report_cfg_r13_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters sl_disc_sys_info_to_report_freq_list_r13_l& setup() { assert_choice_type("setup", type_.to_string(), "discSysInfoToReportConfig-r13"); return c; } const sl_disc_sys_info_to_report_freq_list_r13_l& setup() const { assert_choice_type("setup", type_.to_string(), "discSysInfoToReportConfig-r13"); return c; } private: types type_; sl_disc_sys_info_to_report_freq_list_r13_l c; }; // member variables bool ext; bool disc_tx_res_r12_present; disc_tx_res_r12_c_ disc_tx_res_r12; // ... // group 0 bool disc_tf_idx_list_v1260_present; copy_ptr disc_tf_idx_list_v1260; // group 1 bool disc_tx_res_ps_r13_present; bool disc_tx_inter_freq_info_r13_present; bool gap_requests_allowed_ded_r13_present; bool disc_rx_gap_cfg_r13_present; bool disc_tx_gap_cfg_r13_present; bool disc_sys_info_to_report_cfg_r13_present; copy_ptr disc_tx_res_ps_r13; copy_ptr disc_tx_inter_freq_info_r13; bool gap_requests_allowed_ded_r13; copy_ptr disc_rx_gap_cfg_r13; copy_ptr disc_tx_gap_cfg_r13; copy_ptr disc_sys_info_to_report_cfg_r13; // sequence methods sl_disc_cfg_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-SyncTxControl-r12 ::= SEQUENCE struct sl_sync_tx_ctrl_r12_s { struct network_ctrl_sync_tx_r12_e_ { enum options { on, off }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods network_ctrl_sync_tx_r12_e_() {} network_ctrl_sync_tx_r12_e_(options v) : value(v) {} network_ctrl_sync_tx_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool network_ctrl_sync_tx_r12_present; network_ctrl_sync_tx_r12_e_ network_ctrl_sync_tx_r12; // sequence methods sl_sync_tx_ctrl_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UECapabilityEnquiry-v1530-IEs ::= SEQUENCE struct ue_cap_enquiry_v1530_ies_s { // member variables bool request_stti_spt_cap_r15_present; bool eutra_nr_only_r15_present; bool non_crit_ext_present; // sequence methods ue_cap_enquiry_v1530_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // WLAN-ChannelList-r13 ::= SEQUENCE (SIZE (1..maxWLAN-Channels-r13)) OF INTEGER typedef bounded_array wlan_ch_list_r13_l; // WLAN-NameList-r15 ::= SEQUENCE (SIZE (1..maxWLAN-Name-r15)) OF OCTET STRING typedef bounded_array wlan_name_list_r15_l; // WhiteCellsToAddMod-r13 ::= SEQUENCE struct white_cells_to_add_mod_r13_s { // member variables uint8_t cell_idx_r13; pci_range_s pci_range_r13; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AltTTT-CellsToAddModList-r12 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF AltTTT-CellsToAddMod-r12 typedef dyn_array alt_ttt_cells_to_add_mod_list_r12_l; // BT-NameListConfig-r15 ::= CHOICE struct bt_name_list_cfg_r15_c { typedef setup_e types; // choice methods bt_name_list_cfg_r15_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters bt_name_list_r15_l& setup() { assert_choice_type("setup", type_.to_string(), "BT-NameListConfig-r15"); return c; } const bt_name_list_r15_l& setup() const { assert_choice_type("setup", type_.to_string(), "BT-NameListConfig-r15"); return c; } private: types type_; bt_name_list_r15_l c; }; // BandCombinationList-r14 ::= SEQUENCE (SIZE (1..maxBandComb-r13)) OF BandCombination-r14 typedef dyn_array band_combination_list_r14_l; // BlackCellsToAddModList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF BlackCellsToAddMod typedef dyn_array black_cells_to_add_mod_list_l; // CDMA2000-Type ::= ENUMERATED struct cdma2000_type_e { enum options { type1_xrtt, type_hrpd }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods cdma2000_type_e() {} cdma2000_type_e(options v) : value(v) {} cdma2000_type_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // CSG-AllowedReportingCells-r9 ::= SEQUENCE struct csg_allowed_report_cells_r9_s { // member variables bool pci_range_utra_fdd_list_r9_present; pci_range_utra_fdd_list_r9_l pci_range_utra_fdd_list_r9; // sequence methods csg_allowed_report_cells_r9_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CandidateServingFreqListNR-r15 ::= SEQUENCE (SIZE (1..maxFreqIDC-r11)) OF INTEGER typedef bounded_array candidate_serving_freq_list_nr_r15_l; // CarrierFreqGERAN ::= SEQUENCE struct carrier_freq_geran_s { // member variables uint16_t arfcn; band_ind_geran_e band_ind; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellIndexList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF INTEGER typedef bounded_array cell_idx_list_l; // CellsToAddModList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF CellsToAddMod typedef dyn_array cells_to_add_mod_list_l; // CellsToAddModListCDMA2000 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF CellsToAddModCDMA2000 typedef dyn_array cells_to_add_mod_list_cdma2000_l; // CellsToAddModListNR-r15 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF CellsToAddModNR-r15 typedef dyn_array cells_to_add_mod_list_nr_r15_l; // CellsToAddModListUTRA-FDD ::= SEQUENCE (SIZE (1..maxCellMeas)) OF CellsToAddModUTRA-FDD typedef dyn_array cells_to_add_mod_list_utra_fdd_l; // CellsToAddModListUTRA-TDD ::= SEQUENCE (SIZE (1..maxCellMeas)) OF CellsToAddModUTRA-TDD typedef dyn_array cells_to_add_mod_list_utra_tdd_l; // MeasCycleSCell-r10 ::= ENUMERATED struct meas_cycle_scell_r10_e { enum options { sf160, sf256, sf320, sf512, sf640, sf1024, sf1280, spare1 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods meas_cycle_scell_r10_e() {} meas_cycle_scell_r10_e(options v) : value(v) {} meas_cycle_scell_r10_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // MeasDS-Config-r12 ::= CHOICE struct meas_ds_cfg_r12_c { struct setup_s_ { struct dmtc_period_offset_r12_c_ { struct types { enum options { ms40_r12, ms80_r12, ms160_r12, /*...*/ nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = true; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods dmtc_period_offset_r12_c_() : type_(types::nulltype) {} dmtc_period_offset_r12_c_(const dmtc_period_offset_r12_c_& other); dmtc_period_offset_r12_c_& operator=(const dmtc_period_offset_r12_c_& other); ~dmtc_period_offset_r12_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint8_t& ms40_r12() { assert_choice_type("ms40-r12", type_.to_string(), "dmtc-PeriodOffset-r12"); return c.get(); } uint8_t& ms80_r12() { assert_choice_type("ms80-r12", type_.to_string(), "dmtc-PeriodOffset-r12"); return c.get(); } uint8_t& ms160_r12() { assert_choice_type("ms160-r12", type_.to_string(), "dmtc-PeriodOffset-r12"); return c.get(); } const uint8_t& ms40_r12() const { assert_choice_type("ms40-r12", type_.to_string(), "dmtc-PeriodOffset-r12"); return c.get(); } const uint8_t& ms80_r12() const { assert_choice_type("ms80-r12", type_.to_string(), "dmtc-PeriodOffset-r12"); return c.get(); } const uint8_t& ms160_r12() const { assert_choice_type("ms160-r12", type_.to_string(), "dmtc-PeriodOffset-r12"); return c.get(); } private: types type_; choice_buffer_t<8> c; void destroy_(); }; struct ds_occasion_dur_r12_c_ { struct types { enum options { dur_fdd_r12, dur_tdd_r12, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods ds_occasion_dur_r12_c_() : type_(types::nulltype) {} ds_occasion_dur_r12_c_(const ds_occasion_dur_r12_c_& other); ds_occasion_dur_r12_c_& operator=(const ds_occasion_dur_r12_c_& other); ~ds_occasion_dur_r12_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint8_t& dur_fdd_r12() { assert_choice_type("durationFDD-r12", type_.to_string(), "ds-OccasionDuration-r12"); return c.get(); } uint8_t& dur_tdd_r12() { assert_choice_type("durationTDD-r12", type_.to_string(), "ds-OccasionDuration-r12"); return c.get(); } const uint8_t& dur_fdd_r12() const { assert_choice_type("durationFDD-r12", type_.to_string(), "ds-OccasionDuration-r12"); return c.get(); } const uint8_t& dur_tdd_r12() const { assert_choice_type("durationTDD-r12", type_.to_string(), "ds-OccasionDuration-r12"); return c.get(); } private: types type_; choice_buffer_t<8> c; void destroy_(); }; // member variables bool ext; bool meas_csi_rs_to_rem_list_r12_present; bool meas_csi_rs_to_add_mod_list_r12_present; dmtc_period_offset_r12_c_ dmtc_period_offset_r12; ds_occasion_dur_r12_c_ ds_occasion_dur_r12; meas_csi_rs_to_rem_list_r12_l meas_csi_rs_to_rem_list_r12; meas_csi_rs_to_add_mod_list_r12_l meas_csi_rs_to_add_mod_list_r12; // ... // sequence methods setup_s_(); }; typedef setup_e types; // choice methods meas_ds_cfg_r12_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "MeasDS-Config-r12"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "MeasDS-Config-r12"); return c; } private: types type_; setup_s_ c; }; // MeasGapConfig ::= CHOICE struct meas_gap_cfg_c { struct setup_s_ { struct gap_offset_c_ { struct types { enum options { gp0, gp1, // ... gp2_r14, gp3_r14, gp_ncsg0_r14, gp_ncsg1_r14, gp_ncsg2_r14, gp_ncsg3_r14, gp_non_uniform1_r14, gp_non_uniform2_r14, gp_non_uniform3_r14, gp_non_uniform4_r14, gp4_r15, gp5_r15, gp6_r15, gp7_r15, gp8_r15, gp9_r15, gp10_r15, gp11_r15, nulltype }; options value; static const uint32_t nof_types = 20, nof_exts = 18; static const bool has_ext = true; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods gap_offset_c_() : type_(types::nulltype) {} gap_offset_c_(const gap_offset_c_& other); gap_offset_c_& operator=(const gap_offset_c_& other); ~gap_offset_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint8_t& gp0() { assert_choice_type("gp0", type_.to_string(), "gapOffset"); return c.get(); } uint8_t& gp1() { assert_choice_type("gp1", type_.to_string(), "gapOffset"); return c.get(); } uint8_t& gp2_r14() { assert_choice_type("gp2-r14", type_.to_string(), "gapOffset"); return c.get(); } uint8_t& gp3_r14() { assert_choice_type("gp3-r14", type_.to_string(), "gapOffset"); return c.get(); } uint8_t& gp_ncsg0_r14() { assert_choice_type("gp-ncsg0-r14", type_.to_string(), "gapOffset"); return c.get(); } uint8_t& gp_ncsg1_r14() { assert_choice_type("gp-ncsg1-r14", type_.to_string(), "gapOffset"); return c.get(); } uint8_t& gp_ncsg2_r14() { assert_choice_type("gp-ncsg2-r14", type_.to_string(), "gapOffset"); return c.get(); } uint8_t& gp_ncsg3_r14() { assert_choice_type("gp-ncsg3-r14", type_.to_string(), "gapOffset"); return c.get(); } uint16_t& gp_non_uniform1_r14() { assert_choice_type("gp-nonUniform1-r14", type_.to_string(), "gapOffset"); return c.get(); } uint16_t& gp_non_uniform2_r14() { assert_choice_type("gp-nonUniform2-r14", type_.to_string(), "gapOffset"); return c.get(); } uint16_t& gp_non_uniform3_r14() { assert_choice_type("gp-nonUniform3-r14", type_.to_string(), "gapOffset"); return c.get(); } uint16_t& gp_non_uniform4_r14() { assert_choice_type("gp-nonUniform4-r14", type_.to_string(), "gapOffset"); return c.get(); } uint8_t& gp4_r15() { assert_choice_type("gp4-r15", type_.to_string(), "gapOffset"); return c.get(); } uint8_t& gp5_r15() { assert_choice_type("gp5-r15", type_.to_string(), "gapOffset"); return c.get(); } uint8_t& gp6_r15() { assert_choice_type("gp6-r15", type_.to_string(), "gapOffset"); return c.get(); } uint8_t& gp7_r15() { assert_choice_type("gp7-r15", type_.to_string(), "gapOffset"); return c.get(); } uint8_t& gp8_r15() { assert_choice_type("gp8-r15", type_.to_string(), "gapOffset"); return c.get(); } uint8_t& gp9_r15() { assert_choice_type("gp9-r15", type_.to_string(), "gapOffset"); return c.get(); } uint8_t& gp10_r15() { assert_choice_type("gp10-r15", type_.to_string(), "gapOffset"); return c.get(); } uint8_t& gp11_r15() { assert_choice_type("gp11-r15", type_.to_string(), "gapOffset"); return c.get(); } const uint8_t& gp0() const { assert_choice_type("gp0", type_.to_string(), "gapOffset"); return c.get(); } const uint8_t& gp1() const { assert_choice_type("gp1", type_.to_string(), "gapOffset"); return c.get(); } const uint8_t& gp2_r14() const { assert_choice_type("gp2-r14", type_.to_string(), "gapOffset"); return c.get(); } const uint8_t& gp3_r14() const { assert_choice_type("gp3-r14", type_.to_string(), "gapOffset"); return c.get(); } const uint8_t& gp_ncsg0_r14() const { assert_choice_type("gp-ncsg0-r14", type_.to_string(), "gapOffset"); return c.get(); } const uint8_t& gp_ncsg1_r14() const { assert_choice_type("gp-ncsg1-r14", type_.to_string(), "gapOffset"); return c.get(); } const uint8_t& gp_ncsg2_r14() const { assert_choice_type("gp-ncsg2-r14", type_.to_string(), "gapOffset"); return c.get(); } const uint8_t& gp_ncsg3_r14() const { assert_choice_type("gp-ncsg3-r14", type_.to_string(), "gapOffset"); return c.get(); } const uint16_t& gp_non_uniform1_r14() const { assert_choice_type("gp-nonUniform1-r14", type_.to_string(), "gapOffset"); return c.get(); } const uint16_t& gp_non_uniform2_r14() const { assert_choice_type("gp-nonUniform2-r14", type_.to_string(), "gapOffset"); return c.get(); } const uint16_t& gp_non_uniform3_r14() const { assert_choice_type("gp-nonUniform3-r14", type_.to_string(), "gapOffset"); return c.get(); } const uint16_t& gp_non_uniform4_r14() const { assert_choice_type("gp-nonUniform4-r14", type_.to_string(), "gapOffset"); return c.get(); } const uint8_t& gp4_r15() const { assert_choice_type("gp4-r15", type_.to_string(), "gapOffset"); return c.get(); } const uint8_t& gp5_r15() const { assert_choice_type("gp5-r15", type_.to_string(), "gapOffset"); return c.get(); } const uint8_t& gp6_r15() const { assert_choice_type("gp6-r15", type_.to_string(), "gapOffset"); return c.get(); } const uint8_t& gp7_r15() const { assert_choice_type("gp7-r15", type_.to_string(), "gapOffset"); return c.get(); } const uint8_t& gp8_r15() const { assert_choice_type("gp8-r15", type_.to_string(), "gapOffset"); return c.get(); } const uint8_t& gp9_r15() const { assert_choice_type("gp9-r15", type_.to_string(), "gapOffset"); return c.get(); } const uint8_t& gp10_r15() const { assert_choice_type("gp10-r15", type_.to_string(), "gapOffset"); return c.get(); } const uint8_t& gp11_r15() const { assert_choice_type("gp11-r15", type_.to_string(), "gapOffset"); return c.get(); } private: types type_; choice_buffer_t<8> c; void destroy_(); }; // member variables gap_offset_c_ gap_offset; }; typedef setup_e types; // choice methods meas_gap_cfg_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "MeasGapConfig"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "MeasGapConfig"); return c; } private: types type_; setup_s_ c; }; // MeasRSSI-ReportConfig-r13 ::= SEQUENCE struct meas_rssi_report_cfg_r13_s { // member variables bool ch_occupancy_thres_r13_present; uint8_t ch_occupancy_thres_r13; // sequence methods meas_rssi_report_cfg_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasSensing-Config-r15 ::= SEQUENCE struct meas_sensing_cfg_r15_s { struct sensing_periodicity_r15_e_ { enum options { ms20, ms50, ms100, ms200, ms300, ms400, ms500, ms600, ms700, ms800, ms900, ms1000 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 12, nof_exts = 0; static const bool has_ext = false; // enumerated methods sensing_periodicity_r15_e_() {} sensing_periodicity_r15_e_(options v) : value(v) {} sensing_periodicity_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables uint8_t sensing_subch_num_r15; sensing_periodicity_r15_e_ sensing_periodicity_r15; uint8_t sensing_resel_counter_r15; uint8_t sensing_prio_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasSubframePatternConfigNeigh-r10 ::= CHOICE struct meas_sf_pattern_cfg_neigh_r10_c { struct setup_s_ { // member variables bool meas_sf_cell_list_r10_present; meas_sf_pattern_r10_c meas_sf_pattern_neigh_r10; meas_sf_cell_list_r10_l meas_sf_cell_list_r10; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods meas_sf_pattern_cfg_neigh_r10_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "MeasSubframePatternConfigNeigh-r10"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "MeasSubframePatternConfigNeigh-r10"); return c; } private: types type_; setup_s_ c; }; // MobilityControlInfo-v10l0 ::= SEQUENCE struct mob_ctrl_info_v10l0_s { // member variables bool add_spec_emission_v10l0_present; uint16_t add_spec_emission_v10l0; // sequence methods mob_ctrl_info_v10l0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PhysCellIdGERAN ::= SEQUENCE struct pci_geran_s { // member variables fixed_bitstring<3> network_colour_code; fixed_bitstring<3> base_station_colour_code; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // QuantityConfigRS-NR-r15 ::= SEQUENCE struct quant_cfg_rs_nr_r15_s { // member variables bool filt_coeff_rsrp_r15_present; bool filt_coeff_rsrq_r15_present; bool filt_coef_sinr_r13_present; filt_coef_e filt_coeff_rsrp_r15; filt_coef_e filt_coeff_rsrq_r15; filt_coef_e filt_coef_sinr_r13; // sequence methods quant_cfg_rs_nr_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RMTC-Config-r13 ::= CHOICE struct rmtc_cfg_r13_c { struct setup_s_ { struct rmtc_period_r13_e_ { enum options { ms40, ms80, ms160, ms320, ms640 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 5, nof_exts = 0; static const bool has_ext = false; // enumerated methods rmtc_period_r13_e_() {} rmtc_period_r13_e_(options v) : value(v) {} rmtc_period_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct meas_dur_r13_e_ { enum options { sym1, sym14, sym28, sym42, sym70 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 5, nof_exts = 0; static const bool has_ext = false; // enumerated methods meas_dur_r13_e_() {} meas_dur_r13_e_(options v) : value(v) {} meas_dur_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ext; bool rmtc_sf_offset_r13_present; rmtc_period_r13_e_ rmtc_period_r13; uint16_t rmtc_sf_offset_r13; meas_dur_r13_e_ meas_dur_r13; // ... // sequence methods setup_s_(); }; typedef setup_e types; // choice methods rmtc_cfg_r13_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "RMTC-Config-r13"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "RMTC-Config-r13"); return c; } private: types type_; setup_s_ c; }; // RRCConnectionReconfiguration-v1250-IEs ::= SEQUENCE struct rrc_conn_recfg_v1250_ies_s { struct wlan_offload_info_r12_c_ { struct setup_s_ { struct t350_r12_e_ { enum options { min5, min10, min20, min30, min60, min120, min180, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods t350_r12_e_() {} t350_r12_e_(options v) : value(v) {} t350_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool t350_r12_present; wlan_offload_cfg_r12_s wlan_offload_cfg_ded_r12; t350_r12_e_ t350_r12; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods wlan_offload_info_r12_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "wlan-OffloadInfo-r12"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "wlan-OffloadInfo-r12"); return c; } private: types type_; setup_s_ c; }; // member variables bool wlan_offload_info_r12_present; bool scg_cfg_r12_present; bool sl_sync_tx_ctrl_r12_present; bool sl_disc_cfg_r12_present; bool sl_comm_cfg_r12_present; bool non_crit_ext_present; wlan_offload_info_r12_c_ wlan_offload_info_r12; scg_cfg_r12_c scg_cfg_r12; sl_sync_tx_ctrl_r12_s sl_sync_tx_ctrl_r12; sl_disc_cfg_r12_s sl_disc_cfg_r12; sl_comm_cfg_r12_s sl_comm_cfg_r12; rrc_conn_recfg_v1310_ies_s non_crit_ext; // sequence methods rrc_conn_recfg_v1250_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReconfiguration-v12f0-IEs ::= SEQUENCE struct rrc_conn_recfg_v12f0_ies_s { // member variables bool scg_cfg_v12f0_present; bool late_non_crit_ext_present; bool non_crit_ext_present; scg_cfg_v12f0_c scg_cfg_v12f0; dyn_octstring late_non_crit_ext; rrc_conn_recfg_v1370_ies_s non_crit_ext; // sequence methods rrc_conn_recfg_v12f0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionRelease-v1530-IEs ::= SEQUENCE struct rrc_conn_release_v1530_ies_s { struct cn_type_r15_e_ { enum options { epc, fivegc }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods cn_type_r15_e_() {} cn_type_r15_e_(options v) : value(v) {} cn_type_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool drb_continue_rohc_r15_present; bool next_hop_chaining_count_r15_present; bool meas_idle_cfg_r15_present; bool rrc_inactive_cfg_r15_present; bool cn_type_r15_present; bool non_crit_ext_present; uint8_t next_hop_chaining_count_r15; meas_idle_cfg_ded_r15_s meas_idle_cfg_r15; rrc_inactive_cfg_r15_s rrc_inactive_cfg_r15; cn_type_r15_e_ cn_type_r15; // sequence methods rrc_conn_release_v1530_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RS-ConfigSSB-NR-r15 ::= SEQUENCE struct rs_cfg_ssb_nr_r15_s { struct subcarrier_spacing_ssb_r15_e_ { enum options { k_hz15, k_hz30, k_hz120, k_hz240 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods subcarrier_spacing_ssb_r15_e_() {} subcarrier_spacing_ssb_r15_e_(options v) : value(v) {} subcarrier_spacing_ssb_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ext; mtc_ssb_nr_r15_s meas_timing_cfg_r15; subcarrier_spacing_ssb_r15_e_ subcarrier_spacing_ssb_r15; // ... // sequence methods rs_cfg_ssb_nr_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RSRQ-RangeConfig-r12 ::= CHOICE struct rsrq_range_cfg_r12_c { typedef setup_e types; // choice methods rsrq_range_cfg_r12_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters int8_t& setup() { assert_choice_type("setup", type_.to_string(), "RSRQ-RangeConfig-r12"); return c; } const int8_t& setup() const { assert_choice_type("setup", type_.to_string(), "RSRQ-RangeConfig-r12"); return c; } private: types type_; int8_t c; }; // ReportInterval ::= ENUMERATED struct report_interv_e { enum options { ms120, ms240, ms480, ms640, ms1024, ms2048, ms5120, ms10240, min1, min6, min12, min30, min60, spare3, spare2, spare1 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods report_interv_e() {} report_interv_e(options v) : value(v) {} report_interv_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // ReportQuantityNR-r15 ::= SEQUENCE struct report_quant_nr_r15_s { // member variables bool ss_rsrp; bool ss_rsrq; bool ss_sinr; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // ReportQuantityWLAN-r13 ::= SEQUENCE struct report_quant_wlan_r13_s { // member variables bool ext; bool band_request_wlan_r13_present; bool carrier_info_request_wlan_r13_present; bool available_admission_capacity_request_wlan_r13_present; bool backhaul_dl_bw_request_wlan_r13_present; bool backhaul_ul_bw_request_wlan_r13_present; bool ch_utilization_request_wlan_r13_present; bool station_count_request_wlan_r13_present; // ... // sequence methods report_quant_wlan_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SystemInfoListGERAN ::= SEQUENCE (SIZE (1..maxGERAN-SI)) OF OCTET STRING typedef bounded_array sys_info_list_geran_l; // TargetMBSFN-Area-r12 ::= SEQUENCE struct target_mbsfn_area_r12_s { // member variables bool ext; bool mbsfn_area_id_r12_present; uint8_t mbsfn_area_id_r12; uint32_t carrier_freq_r12; // ... // sequence methods target_mbsfn_area_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // ThresholdEUTRA ::= CHOICE struct thres_eutra_c { struct types { enum options { thres_rsrp, thres_rsrq, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods thres_eutra_c() : type_(types::nulltype) {} thres_eutra_c(const thres_eutra_c& other); thres_eutra_c& operator=(const thres_eutra_c& other); ~thres_eutra_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint8_t& thres_rsrp() { assert_choice_type("threshold-RSRP", type_.to_string(), "ThresholdEUTRA"); return c.get(); } uint8_t& thres_rsrq() { assert_choice_type("threshold-RSRQ", type_.to_string(), "ThresholdEUTRA"); return c.get(); } const uint8_t& thres_rsrp() const { assert_choice_type("threshold-RSRP", type_.to_string(), "ThresholdEUTRA"); return c.get(); } const uint8_t& thres_rsrq() const { assert_choice_type("threshold-RSRQ", type_.to_string(), "ThresholdEUTRA"); return c.get(); } private: types type_; choice_buffer_t<8> c; void destroy_(); }; // ThresholdNR-r15 ::= CHOICE struct thres_nr_r15_c { struct types { enum options { nr_rsrp_r15, nr_rsrq_r15, nr_sinr_r15, nulltype }; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods thres_nr_r15_c() : type_(types::nulltype) {} thres_nr_r15_c(const thres_nr_r15_c& other); thres_nr_r15_c& operator=(const thres_nr_r15_c& other); ~thres_nr_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(bit_ref& bref); void to_json(json_writer& j) const; // getters uint8_t& nr_rsrp_r15() { assert_choice_type("nr-RSRP-r15", type_.to_string(), "ThresholdNR-r15"); return c.get(); } uint8_t& nr_rsrq_r15() { assert_choice_type("nr-RSRQ-r15", type_.to_string(), "ThresholdNR-r15"); return c.get(); } uint8_t& nr_sinr_r15() { assert_choice_type("nr-SINR-r15", type_.to_string(), "ThresholdNR-r15"); return c.get(); } const uint8_t& nr_rsrp_r15() const { assert_choice_type("nr-RSRP-r15", type_.to_string(), "ThresholdNR-r15"); return c.get(); } const uint8_t& nr_rsrq_r15() const { assert_choice_type("nr-RSRQ-r15", type_.to_string(), "ThresholdNR-r15"); return c.get(); } const uint8_t& nr_sinr_r15() const { assert_choice_type("nr-SINR-r15", type_.to_string(), "ThresholdNR-r15"); return c.get(); } private: types type_; choice_buffer_t<8> c; void destroy_(); }; // ThresholdUTRA ::= CHOICE struct thres_utra_c { struct types { enum options { utra_rscp, utra_ec_n0, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods thres_utra_c() : type_(types::nulltype) {} thres_utra_c(const thres_utra_c& other); thres_utra_c& operator=(const thres_utra_c& other); ~thres_utra_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters int8_t& utra_rscp() { assert_choice_type("utra-RSCP", type_.to_string(), "ThresholdUTRA"); return c.get(); } uint8_t& utra_ec_n0() { assert_choice_type("utra-EcN0", type_.to_string(), "ThresholdUTRA"); return c.get(); } const int8_t& utra_rscp() const { assert_choice_type("utra-RSCP", type_.to_string(), "ThresholdUTRA"); return c.get(); } const uint8_t& utra_ec_n0() const { assert_choice_type("utra-EcN0", type_.to_string(), "ThresholdUTRA"); return c.get(); } private: types type_; choice_buffer_t<8> c; void destroy_(); }; // TimeToTrigger ::= ENUMERATED struct time_to_trigger_e { enum options { ms0, ms40, ms64, ms80, ms100, ms128, ms160, ms256, ms320, ms480, ms512, ms640, ms1024, ms1280, ms2560, ms5120 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods time_to_trigger_e() {} time_to_trigger_e(options v) : value(v) {} time_to_trigger_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // Tx-ResourcePoolMeasList-r14 ::= SEQUENCE (SIZE (1..maxSL-PoolToMeasure-r14)) OF INTEGER typedef dyn_array tx_res_pool_meas_list_r14_l; // UECapabilityEnquiry-v1510-IEs ::= SEQUENCE struct ue_cap_enquiry_v1510_ies_s { // member variables bool requested_freq_bands_nr_mrdc_r15_present; bool non_crit_ext_present; dyn_octstring requested_freq_bands_nr_mrdc_r15; ue_cap_enquiry_v1530_ies_s non_crit_ext; // sequence methods ue_cap_enquiry_v1510_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UEInformationRequest-v1530-IEs ::= SEQUENCE struct ue_info_request_v1530_ies_s { // member variables bool idle_mode_meas_req_r15_present; bool flight_path_info_req_r15_present; bool non_crit_ext_present; flight_path_info_report_cfg_r15_s flight_path_info_req_r15; // sequence methods ue_info_request_v1530_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UL-DelayConfig-r13 ::= CHOICE struct ul_delay_cfg_r13_c { struct setup_s_ { struct delay_thres_r13_e_ { enum options { ms30, ms40, ms50, ms60, ms70, ms80, ms90, ms100, ms150, ms300, ms500, ms750, spare4, spare3, spare2, spare1 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods delay_thres_r13_e_() {} delay_thres_r13_e_(options v) : value(v) {} delay_thres_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables delay_thres_r13_e_ delay_thres_r13; }; typedef setup_e types; // choice methods ul_delay_cfg_r13_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "UL-DelayConfig-r13"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "UL-DelayConfig-r13"); return c; } private: types type_; setup_s_ c; }; // WLAN-BandIndicator-r13 ::= ENUMERATED struct wlan_band_ind_r13_e { enum options { band2dot4, band5, band60_v1430, spare5, spare4, spare3, spare2, spare1, /*...*/ }; typedef float number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = true; // enumerated methods wlan_band_ind_r13_e() {} wlan_band_ind_r13_e(options v) : value(v) {} wlan_band_ind_r13_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; // WLAN-CarrierInfo-r13 ::= SEQUENCE struct wlan_carrier_info_r13_s { struct country_code_r13_e_ { enum options { united_states, europe, japan, global, /*...*/ }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = true; // enumerated methods country_code_r13_e_() {} country_code_r13_e_(options v) : value(v) {} country_code_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool ext; bool operating_class_r13_present; bool country_code_r13_present; bool ch_nums_r13_present; uint8_t operating_class_r13; country_code_r13_e_ country_code_r13; wlan_ch_list_r13_l ch_nums_r13; // ... // sequence methods wlan_carrier_info_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // WLAN-NameListConfig-r15 ::= CHOICE struct wlan_name_list_cfg_r15_c { typedef setup_e types; // choice methods wlan_name_list_cfg_r15_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters wlan_name_list_r15_l& setup() { assert_choice_type("setup", type_.to_string(), "WLAN-NameListConfig-r15"); return c; } const wlan_name_list_r15_l& setup() const { assert_choice_type("setup", type_.to_string(), "WLAN-NameListConfig-r15"); return c; } private: types type_; wlan_name_list_r15_l c; }; // WhiteCellsToAddModList-r13 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF WhiteCellsToAddMod-r13 typedef dyn_array white_cells_to_add_mod_list_r13_l; // CellInfoGERAN-r9 ::= SEQUENCE struct cell_info_geran_r9_s { // member variables pci_geran_s pci_r9; carrier_freq_geran_s carrier_freq_r9; sys_info_list_geran_l sys_info_r9; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellInfoUTRA-FDD-r9 ::= SEQUENCE struct cell_info_utra_fdd_r9_s { // member variables uint16_t pci_r9; dyn_octstring utra_bcch_container_r9; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellInfoUTRA-TDD-r10 ::= SEQUENCE struct cell_info_utra_tdd_r10_s { // member variables uint8_t pci_r10; uint16_t carrier_freq_r10; dyn_octstring utra_bcch_container_r10; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellInfoUTRA-TDD-r9 ::= SEQUENCE struct cell_info_utra_tdd_r9_s { // member variables uint8_t pci_r9; dyn_octstring utra_bcch_container_r9; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DRB-CountMSB-Info ::= SEQUENCE struct drb_count_msb_info_s { // member variables uint8_t drb_id; uint32_t count_msb_ul; uint32_t count_msb_dl; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // IDC-Config-r11 ::= SEQUENCE struct idc_cfg_r11_s { struct autonomous_denial_params_r11_s_ { struct autonomous_denial_sfs_r11_e_ { enum options { n2, n5, n10, n15, n20, n30, spare2, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods autonomous_denial_sfs_r11_e_() {} autonomous_denial_sfs_r11_e_(options v) : value(v) {} autonomous_denial_sfs_r11_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct autonomous_denial_validity_r11_e_ { enum options { sf200, sf500, sf1000, sf2000, spare4, spare3, spare2, spare1 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods autonomous_denial_validity_r11_e_() {} autonomous_denial_validity_r11_e_(options v) : value(v) {} autonomous_denial_validity_r11_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables autonomous_denial_sfs_r11_e_ autonomous_denial_sfs_r11; autonomous_denial_validity_r11_e_ autonomous_denial_validity_r11; }; struct idc_ind_mrdc_r15_c_ { typedef setup_e types; // choice methods idc_ind_mrdc_r15_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters candidate_serving_freq_list_nr_r15_l& setup() { assert_choice_type("setup", type_.to_string(), "idc-Indication-MRDC-r15"); return c; } const candidate_serving_freq_list_nr_r15_l& setup() const { assert_choice_type("setup", type_.to_string(), "idc-Indication-MRDC-r15"); return c; } private: types type_; candidate_serving_freq_list_nr_r15_l c; }; // member variables bool ext; bool idc_ind_r11_present; bool autonomous_denial_params_r11_present; autonomous_denial_params_r11_s_ autonomous_denial_params_r11; // ... // group 0 bool idc_ind_ul_ca_r11_present; // group 1 bool idc_hardware_sharing_ind_r13_present; // group 2 bool idc_ind_mrdc_r15_present; copy_ptr idc_ind_mrdc_r15; // sequence methods idc_cfg_r11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // LoggedMeasurementConfiguration-v1530-IEs ::= SEQUENCE struct logged_meas_cfg_v1530_ies_s { // member variables bool bt_name_list_r15_present; bool wlan_name_list_r15_present; bool non_crit_ext_present; bt_name_list_r15_l bt_name_list_r15; wlan_name_list_r15_l wlan_name_list_r15; // sequence methods logged_meas_cfg_v1530_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasGapConfigPerCC-r14 ::= SEQUENCE struct meas_gap_cfg_per_cc_r14_s { // member variables uint8_t serv_cell_id_r14; meas_gap_cfg_c meas_gap_cfg_cc_r14; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasObjectCDMA2000 ::= SEQUENCE struct meas_obj_cdma2000_s { // member variables bool ext; bool search_win_size_present; bool offset_freq_present; bool cells_to_rem_list_present; bool cells_to_add_mod_list_present; bool cell_for_which_to_report_cgi_present; cdma2000_type_e cdma2000_type; carrier_freq_cdma2000_s carrier_freq; uint8_t search_win_size; int8_t offset_freq; cell_idx_list_l cells_to_rem_list; cells_to_add_mod_list_cdma2000_l cells_to_add_mod_list; uint16_t cell_for_which_to_report_cgi; // ... // sequence methods meas_obj_cdma2000_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasObjectEUTRA ::= SEQUENCE struct meas_obj_eutra_s { struct t312_r12_c_ { struct setup_e_ { enum options { ms0, ms50, ms100, ms200, ms300, ms400, ms500, ms1000 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods setup_e_() {} setup_e_(options v) : value(v) {} setup_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; typedef setup_e types; // choice methods t312_r12_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_e_& setup() { assert_choice_type("setup", type_.to_string(), "t312-r12"); return c; } const setup_e_& setup() const { assert_choice_type("setup", type_.to_string(), "t312-r12"); return c; } private: types type_; setup_e_ c; }; // member variables bool ext; bool offset_freq_present; bool cells_to_rem_list_present; bool cells_to_add_mod_list_present; bool black_cells_to_rem_list_present; bool black_cells_to_add_mod_list_present; bool cell_for_which_to_report_cgi_present; uint16_t carrier_freq; allowed_meas_bw_e allowed_meas_bw; bool presence_ant_port1; fixed_bitstring<2> neigh_cell_cfg; q_offset_range_e offset_freq; cell_idx_list_l cells_to_rem_list; cells_to_add_mod_list_l cells_to_add_mod_list; cell_idx_list_l black_cells_to_rem_list; black_cells_to_add_mod_list_l black_cells_to_add_mod_list; uint16_t cell_for_which_to_report_cgi; // ... // group 0 bool meas_cycle_scell_r10_present; bool meas_sf_pattern_cfg_neigh_r10_present; meas_cycle_scell_r10_e meas_cycle_scell_r10; copy_ptr meas_sf_pattern_cfg_neigh_r10; // group 1 bool wideband_rsrq_meas_r11_present; bool wideband_rsrq_meas_r11; // group 2 bool alt_ttt_cells_to_rem_list_r12_present; bool alt_ttt_cells_to_add_mod_list_r12_present; bool t312_r12_present; bool reduced_meas_performance_r12_present; bool meas_ds_cfg_r12_present; copy_ptr alt_ttt_cells_to_rem_list_r12; copy_ptr alt_ttt_cells_to_add_mod_list_r12; copy_ptr t312_r12; bool reduced_meas_performance_r12; copy_ptr meas_ds_cfg_r12; // group 3 bool white_cells_to_rem_list_r13_present; bool white_cells_to_add_mod_list_r13_present; bool rmtc_cfg_r13_present; bool carrier_freq_r13_present; copy_ptr white_cells_to_rem_list_r13; copy_ptr white_cells_to_add_mod_list_r13; copy_ptr rmtc_cfg_r13; uint32_t carrier_freq_r13; // group 4 bool tx_res_pool_to_rem_list_r14_present; bool tx_res_pool_to_add_list_r14_present; bool fembms_mixed_carrier_r14_present; copy_ptr tx_res_pool_to_rem_list_r14; copy_ptr tx_res_pool_to_add_list_r14; bool fembms_mixed_carrier_r14; // group 5 bool meas_sensing_cfg_r15_present; copy_ptr meas_sensing_cfg_r15; // sequence methods meas_obj_eutra_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasObjectEUTRA-v9e0 ::= SEQUENCE struct meas_obj_eutra_v9e0_s { // member variables uint32_t carrier_freq_v9e0; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasObjectGERAN ::= SEQUENCE struct meas_obj_geran_s { // member variables bool ext; bool offset_freq_present; bool ncc_permitted_present; bool cell_for_which_to_report_cgi_present; carrier_freqs_geran_s carrier_freqs; int8_t offset_freq; fixed_bitstring<8> ncc_permitted; pci_geran_s cell_for_which_to_report_cgi; // ... // sequence methods meas_obj_geran_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasObjectNR-r15 ::= SEQUENCE struct meas_obj_nr_r15_s { typedef bounded_array cells_for_which_to_report_sftd_r15_l_; struct band_nr_r15_c_ { typedef setup_e types; // choice methods band_nr_r15_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint16_t& setup() { assert_choice_type("setup", type_.to_string(), "bandNR-r15"); return c; } const uint16_t& setup() const { assert_choice_type("setup", type_.to_string(), "bandNR-r15"); return c; } private: types type_; uint16_t c; }; // member variables bool ext; bool thresh_rs_idx_r15_present; bool max_rs_idx_cell_qual_r15_present; bool offset_freq_r15_present; bool black_cells_to_rem_list_r15_present; bool black_cells_to_add_mod_list_r15_present; bool cells_for_which_to_report_sftd_r15_present; uint32_t carrier_freq_r15; rs_cfg_ssb_nr_r15_s rs_cfg_ssb_r15; thres_list_nr_r15_s thresh_rs_idx_r15; uint8_t max_rs_idx_cell_qual_r15; int8_t offset_freq_r15; cell_idx_list_l black_cells_to_rem_list_r15; cells_to_add_mod_list_nr_r15_l black_cells_to_add_mod_list_r15; uint8_t quant_cfg_set_r15; cells_for_which_to_report_sftd_r15_l_ cells_for_which_to_report_sftd_r15; // ... // group 0 bool cell_for_which_to_report_cgi_r15_present; bool derive_ssb_idx_from_cell_r15_present; bool ss_rssi_meas_r15_present; bool band_nr_r15_present; uint16_t cell_for_which_to_report_cgi_r15; bool derive_ssb_idx_from_cell_r15; copy_ptr ss_rssi_meas_r15; copy_ptr band_nr_r15; // sequence methods meas_obj_nr_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasObjectUTRA ::= SEQUENCE struct meas_obj_utra_s { struct cells_to_add_mod_list_c_ { struct types { enum options { cells_to_add_mod_list_utra_fdd, cells_to_add_mod_list_utra_tdd, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods cells_to_add_mod_list_c_() : type_(types::nulltype) {} cells_to_add_mod_list_c_(const cells_to_add_mod_list_c_& other); cells_to_add_mod_list_c_& operator=(const cells_to_add_mod_list_c_& other); ~cells_to_add_mod_list_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters cells_to_add_mod_list_utra_fdd_l& cells_to_add_mod_list_utra_fdd() { assert_choice_type("cellsToAddModListUTRA-FDD", type_.to_string(), "cellsToAddModList"); return c.get(); } cells_to_add_mod_list_utra_tdd_l& cells_to_add_mod_list_utra_tdd() { assert_choice_type("cellsToAddModListUTRA-TDD", type_.to_string(), "cellsToAddModList"); return c.get(); } const cells_to_add_mod_list_utra_fdd_l& cells_to_add_mod_list_utra_fdd() const { assert_choice_type("cellsToAddModListUTRA-FDD", type_.to_string(), "cellsToAddModList"); return c.get(); } const cells_to_add_mod_list_utra_tdd_l& cells_to_add_mod_list_utra_tdd() const { assert_choice_type("cellsToAddModListUTRA-TDD", type_.to_string(), "cellsToAddModList"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct cell_for_which_to_report_cgi_c_ { struct types { enum options { utra_fdd, utra_tdd, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods cell_for_which_to_report_cgi_c_() : type_(types::nulltype) {} cell_for_which_to_report_cgi_c_(const cell_for_which_to_report_cgi_c_& other); cell_for_which_to_report_cgi_c_& operator=(const cell_for_which_to_report_cgi_c_& other); ~cell_for_which_to_report_cgi_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint16_t& utra_fdd() { assert_choice_type("utra-FDD", type_.to_string(), "cellForWhichToReportCGI"); return c.get(); } uint8_t& utra_tdd() { assert_choice_type("utra-TDD", type_.to_string(), "cellForWhichToReportCGI"); return c.get(); } const uint16_t& utra_fdd() const { assert_choice_type("utra-FDD", type_.to_string(), "cellForWhichToReportCGI"); return c.get(); } const uint8_t& utra_tdd() const { assert_choice_type("utra-TDD", type_.to_string(), "cellForWhichToReportCGI"); return c.get(); } private: types type_; choice_buffer_t<8> c; void destroy_(); }; // member variables bool ext; bool offset_freq_present; bool cells_to_rem_list_present; bool cells_to_add_mod_list_present; bool cell_for_which_to_report_cgi_present; uint16_t carrier_freq; int8_t offset_freq; cell_idx_list_l cells_to_rem_list; cells_to_add_mod_list_c_ cells_to_add_mod_list; cell_for_which_to_report_cgi_c_ cell_for_which_to_report_cgi; // ... // group 0 bool csg_allowed_report_cells_v930_present; copy_ptr csg_allowed_report_cells_v930; // group 1 bool reduced_meas_performance_r12_present; bool reduced_meas_performance_r12; // sequence methods meas_obj_utra_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasObjectWLAN-r13 ::= SEQUENCE struct meas_obj_wlan_r13_s { struct carrier_freq_r13_c_ { typedef bounded_array band_ind_list_wlan_r13_l_; typedef dyn_array carrier_info_list_wlan_r13_l_; struct types { enum options { band_ind_list_wlan_r13, carrier_info_list_wlan_r13, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods carrier_freq_r13_c_() : type_(types::nulltype) {} carrier_freq_r13_c_(const carrier_freq_r13_c_& other); carrier_freq_r13_c_& operator=(const carrier_freq_r13_c_& other); ~carrier_freq_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(bit_ref& bref); void to_json(json_writer& j) const; // getters band_ind_list_wlan_r13_l_& band_ind_list_wlan_r13() { assert_choice_type("bandIndicatorListWLAN-r13", type_.to_string(), "carrierFreq-r13"); return c.get(); } carrier_info_list_wlan_r13_l_& carrier_info_list_wlan_r13() { assert_choice_type("carrierInfoListWLAN-r13", type_.to_string(), "carrierFreq-r13"); return c.get(); } const band_ind_list_wlan_r13_l_& band_ind_list_wlan_r13() const { assert_choice_type("bandIndicatorListWLAN-r13", type_.to_string(), "carrierFreq-r13"); return c.get(); } const carrier_info_list_wlan_r13_l_& carrier_info_list_wlan_r13() const { assert_choice_type("carrierInfoListWLAN-r13", type_.to_string(), "carrierFreq-r13"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables bool ext; bool carrier_freq_r13_present; bool wlan_to_add_mod_list_r13_present; bool wlan_to_rem_list_r13_present; carrier_freq_r13_c_ carrier_freq_r13; wlan_id_list_r13_l wlan_to_add_mod_list_r13; wlan_id_list_r13_l wlan_to_rem_list_r13; // ... // sequence methods meas_obj_wlan_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // ObtainLocationConfig-r11 ::= SEQUENCE struct obtain_location_cfg_r11_s { // member variables bool obtain_location_r11_present; // sequence methods obtain_location_cfg_r11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PowerPrefIndicationConfig-r11 ::= CHOICE struct pwr_pref_ind_cfg_r11_c { struct setup_s_ { struct pwr_pref_ind_timer_r11_e_ { enum options { s0, s0dot5, s1, s2, s5, s10, s20, s30, s60, s90, s120, s300, s600, spare3, spare2, spare1 }; typedef float number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods pwr_pref_ind_timer_r11_e_() {} pwr_pref_ind_timer_r11_e_(options v) : value(v) {} pwr_pref_ind_timer_r11_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; // member variables pwr_pref_ind_timer_r11_e_ pwr_pref_ind_timer_r11; }; typedef setup_e types; // choice methods pwr_pref_ind_cfg_r11_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "PowerPrefIndicationConfig-r11"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "PowerPrefIndicationConfig-r11"); return c; } private: types type_; setup_s_ c; }; // QuantityConfigNR-r15 ::= SEQUENCE struct quant_cfg_nr_r15_s { // member variables bool meas_quant_rs_idx_nr_r15_present; quant_cfg_rs_nr_r15_s meas_quant_cell_nr_r15; quant_cfg_rs_nr_r15_s meas_quant_rs_idx_nr_r15; // sequence methods quant_cfg_nr_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReconfiguration-v10l0-IEs ::= SEQUENCE struct rrc_conn_recfg_v10l0_ies_s { // member variables bool mob_ctrl_info_v10l0_present; bool s_cell_to_add_mod_list_v10l0_present; bool late_non_crit_ext_present; bool non_crit_ext_present; mob_ctrl_info_v10l0_s mob_ctrl_info_v10l0; scell_to_add_mod_list_v10l0_l s_cell_to_add_mod_list_v10l0; dyn_octstring late_non_crit_ext; rrc_conn_recfg_v12f0_ies_s non_crit_ext; // sequence methods rrc_conn_recfg_v10l0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReconfiguration-v1130-IEs ::= SEQUENCE struct rrc_conn_recfg_v1130_ies_s { // member variables bool sib_type1_ded_r11_present; bool non_crit_ext_present; dyn_octstring sib_type1_ded_r11; rrc_conn_recfg_v1250_ies_s non_crit_ext; // sequence methods rrc_conn_recfg_v1130_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionRelease-v1320-IEs ::= SEQUENCE struct rrc_conn_release_v1320_ies_s { // member variables bool resume_id_r13_present; bool non_crit_ext_present; fixed_bitstring<40> resume_id_r13; rrc_conn_release_v1530_ies_s non_crit_ext; // sequence methods rrc_conn_release_v1320_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; struct eutra_event_s { struct event_id_c_ { struct event_a1_s_ { // member variables thres_eutra_c a1_thres; }; struct event_a2_s_ { // member variables thres_eutra_c a2_thres; }; struct event_a3_s_ { // member variables int8_t a3_offset; bool report_on_leave; }; struct event_a4_s_ { // member variables thres_eutra_c a4_thres; }; struct event_a5_s_ { // member variables thres_eutra_c a5_thres1; thres_eutra_c a5_thres2; }; struct event_a6_r10_s_ { // member variables int8_t a6_offset_r10; bool a6_report_on_leave_r10; }; struct event_c1_r12_s_ { // member variables uint8_t c1_thres_r12; bool c1_report_on_leave_r12; }; struct event_c2_r12_s_ { // member variables uint8_t c2_ref_csi_rs_r12; int8_t c2_offset_r12; bool c2_report_on_leave_r12; }; struct event_v1_r14_s_ { // member variables uint8_t v1_thres_r14; }; struct event_v2_r14_s_ { // member variables uint8_t v2_thres_r14; }; struct event_h1_r15_s_ { // member variables uint16_t h1_thres_offset_r15; uint8_t h1_hysteresis_minus15; }; struct event_h2_r15_s_ { // member variables uint16_t h2_thres_offset_r15; uint8_t h2_hysteresis_minus15; }; struct types { enum options { event_a1, event_a2, event_a3, event_a4, event_a5, // ... event_a6_r10, event_c1_r12, event_c2_r12, event_v1_r14, event_v2_r14, event_h1_r15, event_h2_r15, nulltype }; options value; static const uint32_t nof_types = 12, nof_exts = 7; static const bool has_ext = true; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods event_id_c_() : type_(types::nulltype) {} event_id_c_(const event_id_c_& other); event_id_c_& operator=(const event_id_c_& other); ~event_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(bit_ref& bref); void to_json(json_writer& j) const; // getters event_a1_s_& event_a1() { assert_choice_type("eventA1", type_.to_string(), "eventId"); return c.get(); } event_a2_s_& event_a2() { assert_choice_type("eventA2", type_.to_string(), "eventId"); return c.get(); } event_a3_s_& event_a3() { assert_choice_type("eventA3", type_.to_string(), "eventId"); return c.get(); } event_a4_s_& event_a4() { assert_choice_type("eventA4", type_.to_string(), "eventId"); return c.get(); } event_a5_s_& event_a5() { assert_choice_type("eventA5", type_.to_string(), "eventId"); return c.get(); } event_a6_r10_s_& event_a6_r10() { assert_choice_type("eventA6-r10", type_.to_string(), "eventId"); return c.get(); } event_c1_r12_s_& event_c1_r12() { assert_choice_type("eventC1-r12", type_.to_string(), "eventId"); return c.get(); } event_c2_r12_s_& event_c2_r12() { assert_choice_type("eventC2-r12", type_.to_string(), "eventId"); return c.get(); } event_v1_r14_s_& event_v1_r14() { assert_choice_type("eventV1-r14", type_.to_string(), "eventId"); return c.get(); } event_v2_r14_s_& event_v2_r14() { assert_choice_type("eventV2-r14", type_.to_string(), "eventId"); return c.get(); } event_h1_r15_s_& event_h1_r15() { assert_choice_type("eventH1-r15", type_.to_string(), "eventId"); return c.get(); } event_h2_r15_s_& event_h2_r15() { assert_choice_type("eventH2-r15", type_.to_string(), "eventId"); return c.get(); } const event_a1_s_& event_a1() const { assert_choice_type("eventA1", type_.to_string(), "eventId"); return c.get(); } const event_a2_s_& event_a2() const { assert_choice_type("eventA2", type_.to_string(), "eventId"); return c.get(); } const event_a3_s_& event_a3() const { assert_choice_type("eventA3", type_.to_string(), "eventId"); return c.get(); } const event_a4_s_& event_a4() const { assert_choice_type("eventA4", type_.to_string(), "eventId"); return c.get(); } const event_a5_s_& event_a5() const { assert_choice_type("eventA5", type_.to_string(), "eventId"); return c.get(); } const event_a6_r10_s_& event_a6_r10() const { assert_choice_type("eventA6-r10", type_.to_string(), "eventId"); return c.get(); } const event_c1_r12_s_& event_c1_r12() const { assert_choice_type("eventC1-r12", type_.to_string(), "eventId"); return c.get(); } const event_c2_r12_s_& event_c2_r12() const { assert_choice_type("eventC2-r12", type_.to_string(), "eventId"); return c.get(); } const event_v1_r14_s_& event_v1_r14() const { assert_choice_type("eventV1-r14", type_.to_string(), "eventId"); return c.get(); } const event_v2_r14_s_& event_v2_r14() const { assert_choice_type("eventV2-r14", type_.to_string(), "eventId"); return c.get(); } const event_h1_r15_s_& event_h1_r15() const { assert_choice_type("eventH1-r15", type_.to_string(), "eventId"); return c.get(); } const event_h2_r15_s_& event_h2_r15() const { assert_choice_type("eventH2-r15", type_.to_string(), "eventId"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables event_id_c_ event_id; uint8_t hysteresis; time_to_trigger_e time_to_trigger; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // ReportConfigEUTRA ::= SEQUENCE struct report_cfg_eutra_s { struct trigger_type_c_ { typedef eutra_event_s event_s_; struct periodical_s_ { struct purpose_e_ { enum options { report_strongest_cells, report_cgi }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods purpose_e_() {} purpose_e_(options v) : value(v) {} purpose_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables purpose_e_ purpose; }; struct types { enum options { event, periodical, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods trigger_type_c_() : type_(types::nulltype) {} trigger_type_c_(const trigger_type_c_& other); trigger_type_c_& operator=(const trigger_type_c_& other); ~trigger_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(bit_ref& bref); void to_json(json_writer& j) const; // getters event_s_& event() { assert_choice_type("event", type_.to_string(), "triggerType"); return c.get(); } periodical_s_& periodical() { assert_choice_type("periodical", type_.to_string(), "triggerType"); return c.get(); } const event_s_& event() const { assert_choice_type("event", type_.to_string(), "triggerType"); return c.get(); } const periodical_s_& periodical() const { assert_choice_type("periodical", type_.to_string(), "triggerType"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct trigger_quant_e_ { enum options { rsrp, rsrq }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods trigger_quant_e_() {} trigger_quant_e_(options v) : value(v) {} trigger_quant_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct report_quant_e_ { enum options { same_as_trigger_quant, both }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods report_quant_e_() {} report_quant_e_(options v) : value(v) {} report_quant_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct report_amount_e_ { enum options { r1, r2, r4, r8, r16, r32, r64, infinity }; typedef int8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods report_amount_e_() {} report_amount_e_(options v) : value(v) {} report_amount_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; struct alternative_time_to_trigger_r12_c_ { typedef setup_e types; // choice methods alternative_time_to_trigger_r12_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters time_to_trigger_e& setup() { assert_choice_type("setup", type_.to_string(), "alternativeTimeToTrigger-r12"); return c; } const time_to_trigger_e& setup() const { assert_choice_type("setup", type_.to_string(), "alternativeTimeToTrigger-r12"); return c; } private: types type_; time_to_trigger_e c; }; struct rs_sinr_cfg_r13_c_ { struct setup_s_ { struct report_quant_v1310_e_ { enum options { rsrp_andsinr, rsrq_andsinr, all }; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods report_quant_v1310_e_() {} report_quant_v1310_e_(options v) : value(v) {} report_quant_v1310_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool trigger_quant_v1310_present; bool a_n_thres1_r13_present; bool a5_thres2_r13_present; uint8_t a_n_thres1_r13; uint8_t a5_thres2_r13; report_quant_v1310_e_ report_quant_v1310; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods rs_sinr_cfg_r13_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "rs-sinr-Config-r13"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "rs-sinr-Config-r13"); return c; } private: types type_; setup_s_ c; }; struct purpose_v1430_e_ { enum options { report_location, sidelink, spare2, spare1 }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods purpose_v1430_e_() {} purpose_v1430_e_(options v) : value(v) {} purpose_v1430_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool ext; trigger_type_c_ trigger_type; trigger_quant_e_ trigger_quant; report_quant_e_ report_quant; uint8_t max_report_cells; report_interv_e report_interv; report_amount_e_ report_amount; // ... // group 0 bool si_request_for_ho_r9_present; bool ue_rx_tx_time_diff_periodical_r9_present; // group 1 bool include_location_info_r10_present; bool report_add_neigh_meas_r10_present; // group 2 bool alternative_time_to_trigger_r12_present; bool use_t312_r12_present; bool use_ps_cell_r12_present; bool a_n_thres1_v1250_present; bool a5_thres2_v1250_present; bool report_strongest_csi_rss_r12_present; bool report_crs_meas_r12_present; bool trigger_quant_csi_rs_r12_present; copy_ptr alternative_time_to_trigger_r12; bool use_t312_r12; bool use_ps_cell_r12; copy_ptr a_n_thres1_v1250; copy_ptr a5_thres2_v1250; bool report_strongest_csi_rss_r12; bool report_crs_meas_r12; bool trigger_quant_csi_rs_r12; // group 3 bool report_sstd_meas_r13_present; bool rs_sinr_cfg_r13_present; bool use_white_cell_list_r13_present; bool meas_rssi_report_cfg_r13_present; bool include_multi_band_info_r13_present; bool ul_delay_cfg_r13_present; bool report_sstd_meas_r13; copy_ptr rs_sinr_cfg_r13; bool use_white_cell_list_r13; copy_ptr meas_rssi_report_cfg_r13; copy_ptr ul_delay_cfg_r13; // group 4 bool ue_rx_tx_time_diff_periodical_tdd_r13_present; bool ue_rx_tx_time_diff_periodical_tdd_r13; // group 5 bool purpose_v1430_present; purpose_v1430_e_ purpose_v1430; // group 6 bool max_report_rs_idx_r15_present; uint8_t max_report_rs_idx_r15; // group 7 bool include_bt_meas_r15_present; bool include_wlan_meas_r15_present; bool purpose_r15_present; bool nof_triggering_cells_r15_present; bool a4_a5_report_on_leave_r15_present; copy_ptr include_bt_meas_r15; copy_ptr include_wlan_meas_r15; uint8_t nof_triggering_cells_r15; bool a4_a5_report_on_leave_r15; // sequence methods report_cfg_eutra_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // ReportConfigInterRAT ::= SEQUENCE struct report_cfg_inter_rat_s { struct trigger_type_c_ { struct event_s_ { struct event_id_c_ { struct event_b1_s_ { struct b1_thres_c_ { struct types { enum options { b1_thres_utra, b1_thres_geran, b1_thres_cdma2000, nulltype }; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods b1_thres_c_() : type_(types::nulltype) {} b1_thres_c_(const b1_thres_c_& other); b1_thres_c_& operator=(const b1_thres_c_& other); ~b1_thres_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters thres_utra_c& b1_thres_utra() { assert_choice_type("b1-ThresholdUTRA", type_.to_string(), "b1-Threshold"); return c.get(); } uint8_t& b1_thres_geran() { assert_choice_type("b1-ThresholdGERAN", type_.to_string(), "b1-Threshold"); return c.get(); } uint8_t& b1_thres_cdma2000() { assert_choice_type("b1-ThresholdCDMA2000", type_.to_string(), "b1-Threshold"); return c.get(); } const thres_utra_c& b1_thres_utra() const { assert_choice_type("b1-ThresholdUTRA", type_.to_string(), "b1-Threshold"); return c.get(); } const uint8_t& b1_thres_geran() const { assert_choice_type("b1-ThresholdGERAN", type_.to_string(), "b1-Threshold"); return c.get(); } const uint8_t& b1_thres_cdma2000() const { assert_choice_type("b1-ThresholdCDMA2000", type_.to_string(), "b1-Threshold"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables b1_thres_c_ b1_thres; }; struct event_b2_s_ { struct b2_thres2_c_ { struct types { enum options { b2_thres2_utra, b2_thres2_geran, b2_thres2_cdma2000, nulltype }; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods b2_thres2_c_() : type_(types::nulltype) {} b2_thres2_c_(const b2_thres2_c_& other); b2_thres2_c_& operator=(const b2_thres2_c_& other); ~b2_thres2_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters thres_utra_c& b2_thres2_utra() { assert_choice_type("b2-Threshold2UTRA", type_.to_string(), "b2-Threshold2"); return c.get(); } uint8_t& b2_thres2_geran() { assert_choice_type("b2-Threshold2GERAN", type_.to_string(), "b2-Threshold2"); return c.get(); } uint8_t& b2_thres2_cdma2000() { assert_choice_type("b2-Threshold2CDMA2000", type_.to_string(), "b2-Threshold2"); return c.get(); } const thres_utra_c& b2_thres2_utra() const { assert_choice_type("b2-Threshold2UTRA", type_.to_string(), "b2-Threshold2"); return c.get(); } const uint8_t& b2_thres2_geran() const { assert_choice_type("b2-Threshold2GERAN", type_.to_string(), "b2-Threshold2"); return c.get(); } const uint8_t& b2_thres2_cdma2000() const { assert_choice_type("b2-Threshold2CDMA2000", type_.to_string(), "b2-Threshold2"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables thres_eutra_c b2_thres1; b2_thres2_c_ b2_thres2; }; struct event_w1_r13_s_ { // member variables uint8_t w1_thres_r13; }; struct event_w2_r13_s_ { // member variables uint8_t w2_thres1_r13; uint8_t w2_thres2_r13; }; struct event_w3_r13_s_ { // member variables uint8_t w3_thres_r13; }; struct event_b1_nr_r15_s_ { // member variables thres_nr_r15_c b1_thres_nr_r15; bool report_on_leave_r15; }; struct event_b2_nr_r15_s_ { // member variables thres_eutra_c b2_thres1_r15; thres_nr_r15_c b2_thres2_nr_r15; bool report_on_leave_r15; }; struct types { enum options { event_b1, event_b2, // ... event_w1_r13, event_w2_r13, event_w3_r13, event_b1_nr_r15, event_b2_nr_r15, nulltype }; options value; static const uint32_t nof_types = 7, nof_exts = 5; static const bool has_ext = true; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods event_id_c_() : type_(types::nulltype) {} event_id_c_(const event_id_c_& other); event_id_c_& operator=(const event_id_c_& other); ~event_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(bit_ref& bref); void to_json(json_writer& j) const; // getters event_b1_s_& event_b1() { assert_choice_type("eventB1", type_.to_string(), "eventId"); return c.get(); } event_b2_s_& event_b2() { assert_choice_type("eventB2", type_.to_string(), "eventId"); return c.get(); } event_w1_r13_s_& event_w1_r13() { assert_choice_type("eventW1-r13", type_.to_string(), "eventId"); return c.get(); } event_w2_r13_s_& event_w2_r13() { assert_choice_type("eventW2-r13", type_.to_string(), "eventId"); return c.get(); } event_w3_r13_s_& event_w3_r13() { assert_choice_type("eventW3-r13", type_.to_string(), "eventId"); return c.get(); } event_b1_nr_r15_s_& event_b1_nr_r15() { assert_choice_type("eventB1-NR-r15", type_.to_string(), "eventId"); return c.get(); } event_b2_nr_r15_s_& event_b2_nr_r15() { assert_choice_type("eventB2-NR-r15", type_.to_string(), "eventId"); return c.get(); } const event_b1_s_& event_b1() const { assert_choice_type("eventB1", type_.to_string(), "eventId"); return c.get(); } const event_b2_s_& event_b2() const { assert_choice_type("eventB2", type_.to_string(), "eventId"); return c.get(); } const event_w1_r13_s_& event_w1_r13() const { assert_choice_type("eventW1-r13", type_.to_string(), "eventId"); return c.get(); } const event_w2_r13_s_& event_w2_r13() const { assert_choice_type("eventW2-r13", type_.to_string(), "eventId"); return c.get(); } const event_w3_r13_s_& event_w3_r13() const { assert_choice_type("eventW3-r13", type_.to_string(), "eventId"); return c.get(); } const event_b1_nr_r15_s_& event_b1_nr_r15() const { assert_choice_type("eventB1-NR-r15", type_.to_string(), "eventId"); return c.get(); } const event_b2_nr_r15_s_& event_b2_nr_r15() const { assert_choice_type("eventB2-NR-r15", type_.to_string(), "eventId"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables event_id_c_ event_id; uint8_t hysteresis; time_to_trigger_e time_to_trigger; }; struct periodical_s_ { struct purpose_e_ { enum options { report_strongest_cells, report_strongest_cells_for_son, report_cgi }; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods purpose_e_() {} purpose_e_(options v) : value(v) {} purpose_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables purpose_e_ purpose; }; struct types { enum options { event, periodical, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods trigger_type_c_() : type_(types::nulltype) {} trigger_type_c_(const trigger_type_c_& other); trigger_type_c_& operator=(const trigger_type_c_& other); ~trigger_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(bit_ref& bref); void to_json(json_writer& j) const; // getters event_s_& event() { assert_choice_type("event", type_.to_string(), "triggerType"); return c.get(); } periodical_s_& periodical() { assert_choice_type("periodical", type_.to_string(), "triggerType"); return c.get(); } const event_s_& event() const { assert_choice_type("event", type_.to_string(), "triggerType"); return c.get(); } const periodical_s_& periodical() const { assert_choice_type("periodical", type_.to_string(), "triggerType"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct report_amount_e_ { enum options { r1, r2, r4, r8, r16, r32, r64, infinity }; typedef int8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods report_amount_e_() {} report_amount_e_(options v) : value(v) {} report_amount_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; struct b2_thres1_v1250_c_ { typedef setup_e types; // choice methods b2_thres1_v1250_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters int8_t& setup() { assert_choice_type("setup", type_.to_string(), "b2-Threshold1-v1250"); return c; } const int8_t& setup() const { assert_choice_type("setup", type_.to_string(), "b2-Threshold1-v1250"); return c; } private: types type_; int8_t c; }; struct report_sftd_meas_r15_e_ { enum options { p_scell, neighbor_cells }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods report_sftd_meas_r15_e_() {} report_sftd_meas_r15_e_(options v) : value(v) {} report_sftd_meas_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool ext; trigger_type_c_ trigger_type; uint8_t max_report_cells; report_interv_e report_interv; report_amount_e_ report_amount; // ... // group 0 bool si_request_for_ho_r9_present; // group 1 bool report_quant_utra_fdd_r10_present; // group 2 bool include_location_info_r11_present; bool include_location_info_r11; // group 3 bool b2_thres1_v1250_present; copy_ptr b2_thres1_v1250; // group 4 bool report_quant_wlan_r13_present; copy_ptr report_quant_wlan_r13; // group 5 bool report_any_wlan_r14_present; bool report_any_wlan_r14; // group 6 bool report_quant_cell_nr_r15_present; bool max_report_rs_idx_r15_present; bool report_quant_rs_idx_nr_r15_present; bool report_rs_idx_results_nr_present; bool report_sftd_meas_r15_present; copy_ptr report_quant_cell_nr_r15; uint8_t max_report_rs_idx_r15; copy_ptr report_quant_rs_idx_nr_r15; bool report_rs_idx_results_nr; report_sftd_meas_r15_e_ report_sftd_meas_r15; // sequence methods report_cfg_inter_rat_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // ReportProximityConfig-r9 ::= SEQUENCE struct report_proximity_cfg_r9_s { // member variables bool proximity_ind_eutra_r9_present; bool proximity_ind_utra_r9_present; // sequence methods report_proximity_cfg_r9_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // TargetMBSFN-AreaList-r12 ::= SEQUENCE (SIZE (0..maxMBSFN-Area)) OF TargetMBSFN-Area-r12 typedef dyn_array target_mbsfn_area_list_r12_l; // TrackingAreaCodeList-v1130 ::= SEQUENCE struct tac_list_v1130_s { typedef dyn_array plmn_id_per_tac_list_r11_l_; // member variables plmn_id_per_tac_list_r11_l_ plmn_id_per_tac_list_r11; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UECapabilityEnquiry-v1430-IEs ::= SEQUENCE struct ue_cap_enquiry_v1430_ies_s { // member variables bool request_diff_fallback_comb_list_r14_present; bool non_crit_ext_present; band_combination_list_r14_l request_diff_fallback_comb_list_r14; ue_cap_enquiry_v1510_ies_s non_crit_ext; // sequence methods ue_cap_enquiry_v1430_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UEInformationRequest-v1250-IEs ::= SEQUENCE struct ue_info_request_v1250_ies_s { // member variables bool mob_history_report_req_r12_present; bool non_crit_ext_present; ue_info_request_v1530_ies_s non_crit_ext; // sequence methods ue_info_request_v1250_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AreaConfiguration-v1130 ::= SEQUENCE struct area_cfg_v1130_s { // member variables tac_list_v1130_s tac_list_v1130; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellGlobalIdEUTRA ::= SEQUENCE struct cell_global_id_eutra_s { // member variables plmn_id_s plmn_id; fixed_bitstring<28> cell_id; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellInfoListGERAN-r9 ::= SEQUENCE (SIZE (1..maxCellInfoGERAN-r9)) OF CellInfoGERAN-r9 typedef dyn_array cell_info_list_geran_r9_l; // CellInfoListUTRA-FDD-r9 ::= SEQUENCE (SIZE (1..maxCellInfoUTRA-r9)) OF CellInfoUTRA-FDD-r9 typedef dyn_array cell_info_list_utra_fdd_r9_l; // CellInfoListUTRA-TDD-r10 ::= SEQUENCE (SIZE (1..maxCellInfoUTRA-r9)) OF CellInfoUTRA-TDD-r10 typedef dyn_array cell_info_list_utra_tdd_r10_l; // CellInfoListUTRA-TDD-r9 ::= SEQUENCE (SIZE (1..maxCellInfoUTRA-r9)) OF CellInfoUTRA-TDD-r9 typedef dyn_array cell_info_list_utra_tdd_r9_l; // DRB-CountMSB-InfoListExt-r15 ::= SEQUENCE (SIZE (1..maxDRBExt-r15)) OF DRB-CountMSB-Info typedef dyn_array drb_count_msb_info_list_ext_r15_l; // HandoverFromEUTRAPreparationRequest-v1020-IEs ::= SEQUENCE struct ho_from_eutra_prep_request_v1020_ies_s { // member variables bool dual_rx_tx_redirect_ind_r10_present; bool redirect_carrier_cdma2000_minus1_xrtt_r10_present; bool non_crit_ext_present; carrier_freq_cdma2000_s redirect_carrier_cdma2000_minus1_xrtt_r10; // sequence methods ho_from_eutra_prep_request_v1020_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // LoggedMeasurementConfiguration-v1250-IEs ::= SEQUENCE struct logged_meas_cfg_v1250_ies_s { // member variables bool target_mbsfn_area_list_r12_present; bool non_crit_ext_present; target_mbsfn_area_list_r12_l target_mbsfn_area_list_r12; logged_meas_cfg_v1530_ies_s non_crit_ext; // sequence methods logged_meas_cfg_v1250_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasGapConfigToAddModList-r14 ::= SEQUENCE (SIZE (1..maxServCell-r13)) OF MeasGapConfigPerCC-r14 typedef dyn_array meas_gap_cfg_to_add_mod_list_r14_l; // MeasGapConfigToRemoveList-r14 ::= SEQUENCE (SIZE (1..maxServCell-r13)) OF INTEGER typedef bounded_array meas_gap_cfg_to_rem_list_r14_l; // MeasIdToAddMod ::= SEQUENCE struct meas_id_to_add_mod_s { // member variables uint8_t meas_id; uint8_t meas_obj_id; uint8_t report_cfg_id; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasIdToAddMod-v1310 ::= SEQUENCE struct meas_id_to_add_mod_v1310_s { // member variables bool meas_obj_id_v1310_present; uint8_t meas_obj_id_v1310; // sequence methods meas_id_to_add_mod_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasIdToAddModExt-r12 ::= SEQUENCE struct meas_id_to_add_mod_ext_r12_s { // member variables uint8_t meas_id_v1250; uint8_t meas_obj_id_r12; uint8_t report_cfg_id_r12; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasObjectToAddMod ::= SEQUENCE struct meas_obj_to_add_mod_s { struct meas_obj_c_ { struct types { enum options { meas_obj_eutra, meas_obj_utra, meas_obj_geran, meas_obj_cdma2000, // ... meas_obj_wlan_r13, meas_obj_nr_r15, nulltype }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 2; static const bool has_ext = true; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // choice methods meas_obj_c_() : type_(types::nulltype) {} meas_obj_c_(const meas_obj_c_& other); meas_obj_c_& operator=(const meas_obj_c_& other); ~meas_obj_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters meas_obj_eutra_s& meas_obj_eutra() { assert_choice_type("measObjectEUTRA", type_.to_string(), "measObject"); return c.get(); } meas_obj_utra_s& meas_obj_utra() { assert_choice_type("measObjectUTRA", type_.to_string(), "measObject"); return c.get(); } meas_obj_geran_s& meas_obj_geran() { assert_choice_type("measObjectGERAN", type_.to_string(), "measObject"); return c.get(); } meas_obj_cdma2000_s& meas_obj_cdma2000() { assert_choice_type("measObjectCDMA2000", type_.to_string(), "measObject"); return c.get(); } meas_obj_wlan_r13_s& meas_obj_wlan_r13() { assert_choice_type("measObjectWLAN-r13", type_.to_string(), "measObject"); return c.get(); } meas_obj_nr_r15_s& meas_obj_nr_r15() { assert_choice_type("measObjectNR-r15", type_.to_string(), "measObject"); return c.get(); } const meas_obj_eutra_s& meas_obj_eutra() const { assert_choice_type("measObjectEUTRA", type_.to_string(), "measObject"); return c.get(); } const meas_obj_utra_s& meas_obj_utra() const { assert_choice_type("measObjectUTRA", type_.to_string(), "measObject"); return c.get(); } const meas_obj_geran_s& meas_obj_geran() const { assert_choice_type("measObjectGERAN", type_.to_string(), "measObject"); return c.get(); } const meas_obj_cdma2000_s& meas_obj_cdma2000() const { assert_choice_type("measObjectCDMA2000", type_.to_string(), "measObject"); return c.get(); } const meas_obj_wlan_r13_s& meas_obj_wlan_r13() const { assert_choice_type("measObjectWLAN-r13", type_.to_string(), "measObject"); return c.get(); } const meas_obj_nr_r15_s& meas_obj_nr_r15() const { assert_choice_type("measObjectNR-r15", type_.to_string(), "measObject"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables uint8_t meas_obj_id; meas_obj_c_ meas_obj; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasObjectToAddMod-v9e0 ::= SEQUENCE struct meas_obj_to_add_mod_v9e0_s { // member variables bool meas_obj_eutra_v9e0_present; meas_obj_eutra_v9e0_s meas_obj_eutra_v9e0; // sequence methods meas_obj_to_add_mod_v9e0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasObjectToAddModExt-r13 ::= SEQUENCE struct meas_obj_to_add_mod_ext_r13_s { struct meas_obj_r13_c_ { struct types { enum options { meas_obj_eutra_r13, meas_obj_utra_r13, meas_obj_geran_r13, meas_obj_cdma2000_r13, // ... meas_obj_wlan_v1320, meas_obj_nr_r15, nulltype }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 2; static const bool has_ext = true; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // choice methods meas_obj_r13_c_() : type_(types::nulltype) {} meas_obj_r13_c_(const meas_obj_r13_c_& other); meas_obj_r13_c_& operator=(const meas_obj_r13_c_& other); ~meas_obj_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(bit_ref& bref); void to_json(json_writer& j) const; // getters meas_obj_eutra_s& meas_obj_eutra_r13() { assert_choice_type("measObjectEUTRA-r13", type_.to_string(), "measObject-r13"); return c.get(); } meas_obj_utra_s& meas_obj_utra_r13() { assert_choice_type("measObjectUTRA-r13", type_.to_string(), "measObject-r13"); return c.get(); } meas_obj_geran_s& meas_obj_geran_r13() { assert_choice_type("measObjectGERAN-r13", type_.to_string(), "measObject-r13"); return c.get(); } meas_obj_cdma2000_s& meas_obj_cdma2000_r13() { assert_choice_type("measObjectCDMA2000-r13", type_.to_string(), "measObject-r13"); return c.get(); } meas_obj_wlan_r13_s& meas_obj_wlan_v1320() { assert_choice_type("measObjectWLAN-v1320", type_.to_string(), "measObject-r13"); return c.get(); } meas_obj_nr_r15_s& meas_obj_nr_r15() { assert_choice_type("measObjectNR-r15", type_.to_string(), "measObject-r13"); return c.get(); } const meas_obj_eutra_s& meas_obj_eutra_r13() const { assert_choice_type("measObjectEUTRA-r13", type_.to_string(), "measObject-r13"); return c.get(); } const meas_obj_utra_s& meas_obj_utra_r13() const { assert_choice_type("measObjectUTRA-r13", type_.to_string(), "measObject-r13"); return c.get(); } const meas_obj_geran_s& meas_obj_geran_r13() const { assert_choice_type("measObjectGERAN-r13", type_.to_string(), "measObject-r13"); return c.get(); } const meas_obj_cdma2000_s& meas_obj_cdma2000_r13() const { assert_choice_type("measObjectCDMA2000-r13", type_.to_string(), "measObject-r13"); return c.get(); } const meas_obj_wlan_r13_s& meas_obj_wlan_v1320() const { assert_choice_type("measObjectWLAN-v1320", type_.to_string(), "measObject-r13"); return c.get(); } const meas_obj_nr_r15_s& meas_obj_nr_r15() const { assert_choice_type("measObjectNR-r15", type_.to_string(), "measObject-r13"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables uint8_t meas_obj_id_r13; meas_obj_r13_c_ meas_obj_r13; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MobilityFromEUTRACommand-v1530-IEs ::= SEQUENCE struct mob_from_eutra_cmd_v1530_ies_s { // member variables bool smtc_r15_present; bool non_crit_ext_present; mtc_ssb_nr_r15_s smtc_r15; // sequence methods mob_from_eutra_cmd_v1530_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // OtherConfig-r9 ::= SEQUENCE struct other_cfg_r9_s { struct bw_pref_ind_timer_r14_e_ { enum options { s0, s0dot5, s1, s2, s5, s10, s20, s30, s60, s90, s120, s300, s600, spare3, spare2, spare1 }; typedef float number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods bw_pref_ind_timer_r14_e_() {} bw_pref_ind_timer_r14_e_(options v) : value(v) {} bw_pref_ind_timer_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; struct delay_budget_report_cfg_r14_c_ { struct setup_s_ { struct delay_budget_report_prohibit_timer_r14_e_ { enum options { s0, s0dot4, s0dot8, s1dot6, s3, s6, s12, s30 }; typedef float number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods delay_budget_report_prohibit_timer_r14_e_() {} delay_budget_report_prohibit_timer_r14_e_(options v) : value(v) {} delay_budget_report_prohibit_timer_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; // member variables delay_budget_report_prohibit_timer_r14_e_ delay_budget_report_prohibit_timer_r14; }; typedef setup_e types; // choice methods delay_budget_report_cfg_r14_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "delayBudgetReportingConfig-r14"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "delayBudgetReportingConfig-r14"); return c; } private: types type_; setup_s_ c; }; struct rlm_report_cfg_r14_c_ { struct setup_s_ { struct rlm_report_timer_r14_e_ { enum options { s0, s0dot5, s1, s2, s5, s10, s20, s30, s60, s90, s120, s300, s600, spare3, spare2, spare1 }; typedef float number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods rlm_report_timer_r14_e_() {} rlm_report_timer_r14_e_(options v) : value(v) {} rlm_report_timer_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; // member variables bool rlm_report_rep_mpdcch_r14_present; rlm_report_timer_r14_e_ rlm_report_timer_r14; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods rlm_report_cfg_r14_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "rlm-ReportConfig-r14"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "rlm-ReportConfig-r14"); return c; } private: types type_; setup_s_ c; }; struct overheat_assist_cfg_r14_c_ { struct setup_s_ { struct overheat_ind_prohibit_timer_r14_e_ { enum options { s0, s0dot5, s1, s2, s5, s10, s20, s30, s60, s90, s120, s300, s600, spare3, spare2, spare1 }; typedef float number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods overheat_ind_prohibit_timer_r14_e_() {} overheat_ind_prohibit_timer_r14_e_(options v) : value(v) {} overheat_ind_prohibit_timer_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; // member variables overheat_ind_prohibit_timer_r14_e_ overheat_ind_prohibit_timer_r14; }; typedef setup_e types; // choice methods overheat_assist_cfg_r14_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "overheatingAssistanceConfig-r14"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "overheatingAssistanceConfig-r14"); return c; } private: types type_; setup_s_ c; }; struct meas_cfg_app_layer_r15_c_ { struct setup_s_ { struct service_type_e_ { enum options { qoe, qoemtsi, spare6, spare5, spare4, spare3, spare2, spare1 }; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods service_type_e_() {} service_type_e_(options v) : value(v) {} service_type_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables dyn_octstring meas_cfg_app_layer_container_r15; service_type_e_ service_type; }; typedef setup_e types; // choice methods meas_cfg_app_layer_r15_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "measConfigAppLayer-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "measConfigAppLayer-r15"); return c; } private: types type_; setup_s_ c; }; // member variables bool ext; bool report_proximity_cfg_r9_present; report_proximity_cfg_r9_s report_proximity_cfg_r9; // ... // group 0 bool idc_cfg_r11_present; bool pwr_pref_ind_cfg_r11_present; bool obtain_location_cfg_r11_present; copy_ptr idc_cfg_r11; copy_ptr pwr_pref_ind_cfg_r11; copy_ptr obtain_location_cfg_r11; // group 1 bool bw_pref_ind_timer_r14_present; bool sps_assist_info_report_r14_present; bool delay_budget_report_cfg_r14_present; bool rlm_report_cfg_r14_present; bw_pref_ind_timer_r14_e_ bw_pref_ind_timer_r14; bool sps_assist_info_report_r14; copy_ptr delay_budget_report_cfg_r14; copy_ptr rlm_report_cfg_r14; // group 2 bool overheat_assist_cfg_r14_present; copy_ptr overheat_assist_cfg_r14; // group 3 bool meas_cfg_app_layer_r15_present; bool ailc_bit_cfg_r15_present; bool bt_name_list_cfg_r15_present; bool wlan_name_list_cfg_r15_present; copy_ptr meas_cfg_app_layer_r15; bool ailc_bit_cfg_r15; copy_ptr bt_name_list_cfg_r15; copy_ptr wlan_name_list_cfg_r15; // sequence methods other_cfg_r9_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PLMN-IdentityList3-r11 ::= SEQUENCE (SIZE (1..16)) OF PLMN-Identity typedef dyn_array plmn_id_list3_r11_l; // PRACH-Config-v1310 ::= SEQUENCE struct prach_cfg_v1310_s { struct mpdcch_start_sf_css_ra_r13_c_ { struct fdd_r13_e_ { enum options { v1, v1dot5, v2, v2dot5, v4, v5, v8, v10 }; typedef float number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods fdd_r13_e_() {} fdd_r13_e_(options v) : value(v) {} fdd_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; struct tdd_r13_e_ { enum options { v1, v2, v4, v5, v8, v10, v20, spare }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods tdd_r13_e_() {} tdd_r13_e_(options v) : value(v) {} tdd_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct types { enum options { fdd_r13, tdd_r13, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods mpdcch_start_sf_css_ra_r13_c_() : type_(types::nulltype) {} mpdcch_start_sf_css_ra_r13_c_(const mpdcch_start_sf_css_ra_r13_c_& other); mpdcch_start_sf_css_ra_r13_c_& operator=(const mpdcch_start_sf_css_ra_r13_c_& other); ~mpdcch_start_sf_css_ra_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(bit_ref& bref); void to_json(json_writer& j) const; // getters fdd_r13_e_& fdd_r13() { assert_choice_type("fdd-r13", type_.to_string(), "mpdcch-startSF-CSS-RA-r13"); return c.get(); } tdd_r13_e_& tdd_r13() { assert_choice_type("tdd-r13", type_.to_string(), "mpdcch-startSF-CSS-RA-r13"); return c.get(); } const fdd_r13_e_& fdd_r13() const { assert_choice_type("fdd-r13", type_.to_string(), "mpdcch-startSF-CSS-RA-r13"); return c.get(); } const tdd_r13_e_& tdd_r13() const { assert_choice_type("tdd-r13", type_.to_string(), "mpdcch-startSF-CSS-RA-r13"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables bool rsrp_thress_prach_info_list_r13_present; bool mpdcch_start_sf_css_ra_r13_present; bool prach_hop_offset_r13_present; bool prach_params_list_ce_r13_present; bool init_ce_level_r13_present; rsrp_thress_prach_info_list_r13_l rsrp_thress_prach_info_list_r13; mpdcch_start_sf_css_ra_r13_c_ mpdcch_start_sf_css_ra_r13; uint8_t prach_hop_offset_r13; prach_params_list_ce_r13_l prach_params_list_ce_r13; uint8_t init_ce_level_r13; // sequence methods prach_cfg_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // QuantityConfigCDMA2000 ::= SEQUENCE struct quant_cfg_cdma2000_s { struct meas_quant_cdma2000_e_ { enum options { pilot_strength, pilot_pn_phase_and_pilot_strength }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods meas_quant_cdma2000_e_() {} meas_quant_cdma2000_e_(options v) : value(v) {} meas_quant_cdma2000_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables meas_quant_cdma2000_e_ meas_quant_cdma2000; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // QuantityConfigEUTRA ::= SEQUENCE struct quant_cfg_eutra_s { // member variables bool filt_coef_rsrp_present; bool filt_coef_rsrq_present; filt_coef_e filt_coef_rsrp; filt_coef_e filt_coef_rsrq; // sequence methods quant_cfg_eutra_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // QuantityConfigEUTRA-v1250 ::= SEQUENCE struct quant_cfg_eutra_v1250_s { // member variables bool filt_coef_csi_rsrp_r12_present; filt_coef_e filt_coef_csi_rsrp_r12; // sequence methods quant_cfg_eutra_v1250_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // QuantityConfigEUTRA-v1310 ::= SEQUENCE struct quant_cfg_eutra_v1310_s { // member variables bool filt_coef_rs_sinr_r13_present; filt_coef_e filt_coef_rs_sinr_r13; // sequence methods quant_cfg_eutra_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // QuantityConfigGERAN ::= SEQUENCE struct quant_cfg_geran_s { // member variables bool filt_coef_present; filt_coef_e filt_coef; // sequence methods quant_cfg_geran_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // QuantityConfigNRList-r15 ::= SEQUENCE (SIZE (1..maxQuantSetsNR-r15)) OF QuantityConfigNR-r15 typedef dyn_array quant_cfg_nr_list_r15_l; // QuantityConfigUTRA ::= SEQUENCE struct quant_cfg_utra_s { struct meas_quant_utra_fdd_e_ { enum options { cpich_rscp, cpich_ec_n0 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods meas_quant_utra_fdd_e_() {} meas_quant_utra_fdd_e_(options v) : value(v) {} meas_quant_utra_fdd_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool filt_coef_present; meas_quant_utra_fdd_e_ meas_quant_utra_fdd; filt_coef_e filt_coef; // sequence methods quant_cfg_utra_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // QuantityConfigUTRA-v1020 ::= SEQUENCE struct quant_cfg_utra_v1020_s { // member variables bool filt_coef2_fdd_r10_present; filt_coef_e filt_coef2_fdd_r10; // sequence methods quant_cfg_utra_v1020_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // QuantityConfigWLAN-r13 ::= SEQUENCE struct quant_cfg_wlan_r13_s { // member variables bool filt_coef_r13_present; filt_coef_e filt_coef_r13; // sequence methods quant_cfg_wlan_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReconfiguration-v1020-IEs ::= SEQUENCE struct rrc_conn_recfg_v1020_ies_s { // member variables bool s_cell_to_release_list_r10_present; bool s_cell_to_add_mod_list_r10_present; bool non_crit_ext_present; scell_to_release_list_r10_l s_cell_to_release_list_r10; scell_to_add_mod_list_r10_l s_cell_to_add_mod_list_r10; rrc_conn_recfg_v1130_ies_s non_crit_ext; // sequence methods rrc_conn_recfg_v1020_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReconfiguration-v10i0-IEs ::= SEQUENCE struct rrc_conn_recfg_v10i0_ies_s { // member variables bool ant_info_ded_pcell_v10i0_present; bool non_crit_ext_present; ant_info_ded_v10i0_s ant_info_ded_pcell_v10i0; rrc_conn_recfg_v10l0_ies_s non_crit_ext; // sequence methods rrc_conn_recfg_v10i0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionRelease-v1020-IEs ::= SEQUENCE struct rrc_conn_release_v1020_ies_s { // member variables bool extended_wait_time_r10_present; bool non_crit_ext_present; uint16_t extended_wait_time_r10; rrc_conn_release_v1320_ies_s non_crit_ext; // sequence methods rrc_conn_release_v1020_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionResume-v1530-IEs ::= SEQUENCE struct rrc_conn_resume_v1530_ies_s { // member variables bool full_cfg_r15_present; bool non_crit_ext_present; // sequence methods rrc_conn_resume_v1530_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RedirectedCarrierInfo-v9e0 ::= SEQUENCE struct redirected_carrier_info_v9e0_s { // member variables uint32_t eutra_v9e0; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // ReportConfigToAddMod ::= SEQUENCE struct report_cfg_to_add_mod_s { struct report_cfg_c_ { struct types { enum options { report_cfg_eutra, report_cfg_inter_rat, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods report_cfg_c_() : type_(types::nulltype) {} report_cfg_c_(const report_cfg_c_& other); report_cfg_c_& operator=(const report_cfg_c_& other); ~report_cfg_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters report_cfg_eutra_s& report_cfg_eutra() { assert_choice_type("reportConfigEUTRA", type_.to_string(), "reportConfig"); return c.get(); } report_cfg_inter_rat_s& report_cfg_inter_rat() { assert_choice_type("reportConfigInterRAT", type_.to_string(), "reportConfig"); return c.get(); } const report_cfg_eutra_s& report_cfg_eutra() const { assert_choice_type("reportConfigEUTRA", type_.to_string(), "reportConfig"); return c.get(); } const report_cfg_inter_rat_s& report_cfg_inter_rat() const { assert_choice_type("reportConfigInterRAT", type_.to_string(), "reportConfig"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables uint8_t report_cfg_id; report_cfg_c_ report_cfg; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UECapabilityEnquiry-v1310-IEs ::= SEQUENCE struct ue_cap_enquiry_v1310_ies_s { // member variables bool request_reduced_format_r13_present; bool request_skip_fallback_comb_r13_present; bool requested_max_ccs_dl_r13_present; bool requested_max_ccs_ul_r13_present; bool request_reduced_int_non_cont_comb_r13_present; bool non_crit_ext_present; uint8_t requested_max_ccs_dl_r13; uint8_t requested_max_ccs_ul_r13; ue_cap_enquiry_v1430_ies_s non_crit_ext; // sequence methods ue_cap_enquiry_v1310_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UEInformationRequest-v1130-IEs ::= SEQUENCE struct ue_info_request_v1130_ies_s { // member variables bool conn_est_fail_report_req_r11_present; bool non_crit_ext_present; ue_info_request_v1250_ies_s non_crit_ext; // sequence methods ue_info_request_v1130_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CarrierBandwidthEUTRA ::= SEQUENCE struct carrier_bw_eutra_s { struct dl_bw_e_ { enum options { n6, n15, n25, n50, n75, n100, spare10, spare9, spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods dl_bw_e_() {} dl_bw_e_(options v) : value(v) {} dl_bw_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct ul_bw_e_ { enum options { n6, n15, n25, n50, n75, n100, spare10, spare9, spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods ul_bw_e_() {} ul_bw_e_(options v) : value(v) {} ul_bw_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ul_bw_present; dl_bw_e_ dl_bw; ul_bw_e_ ul_bw; // sequence methods carrier_bw_eutra_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CarrierFreqEUTRA ::= SEQUENCE struct carrier_freq_eutra_s { // member variables bool ul_carrier_freq_present; uint16_t dl_carrier_freq; uint16_t ul_carrier_freq; // sequence methods carrier_freq_eutra_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CarrierFreqEUTRA-v9e0 ::= SEQUENCE struct carrier_freq_eutra_v9e0_s { // member variables bool ul_carrier_freq_v9e0_present; uint32_t dl_carrier_freq_v9e0; uint32_t ul_carrier_freq_v9e0; // sequence methods carrier_freq_eutra_v9e0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CarrierInfoNR-r15 ::= SEQUENCE struct carrier_info_nr_r15_s { struct subcarrier_spacing_ssb_r15_e_ { enum options { k_hz15, k_hz30, k_hz120, k_hz240 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods subcarrier_spacing_ssb_r15_e_() {} subcarrier_spacing_ssb_r15_e_(options v) : value(v) {} subcarrier_spacing_ssb_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool smtc_r15_present; uint32_t carrier_freq_r15; subcarrier_spacing_ssb_r15_e_ subcarrier_spacing_ssb_r15; mtc_ssb_nr_r15_s smtc_r15; // sequence methods carrier_info_nr_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellGlobalIdList-r10 ::= SEQUENCE (SIZE (1..32)) OF CellGlobalIdEUTRA typedef dyn_array cell_global_id_list_r10_l; // CounterCheck-v1530-IEs ::= SEQUENCE struct counter_check_v1530_ies_s { // member variables bool drb_count_msb_info_list_ext_r15_present; bool non_crit_ext_present; drb_count_msb_info_list_ext_r15_l drb_count_msb_info_list_ext_r15; // sequence methods counter_check_v1530_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // HandoverFromEUTRAPreparationRequest-v920-IEs ::= SEQUENCE struct ho_from_eutra_prep_request_v920_ies_s { // member variables bool concurr_prep_cdma2000_hrpd_r9_present; bool non_crit_ext_present; bool concurr_prep_cdma2000_hrpd_r9; ho_from_eutra_prep_request_v1020_ies_s non_crit_ext; // sequence methods ho_from_eutra_prep_request_v920_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // LoggedMeasurementConfiguration-v1130-IEs ::= SEQUENCE struct logged_meas_cfg_v1130_ies_s { // member variables bool plmn_id_list_r11_present; bool area_cfg_v1130_present; bool non_crit_ext_present; plmn_id_list3_r11_l plmn_id_list_r11; area_cfg_v1130_s area_cfg_v1130; logged_meas_cfg_v1250_ies_s non_crit_ext; // sequence methods logged_meas_cfg_v1130_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasGapConfigDensePRS-r15 ::= CHOICE struct meas_gap_cfg_dense_prs_r15_c { struct setup_s_ { struct gap_offset_dense_prs_r15_c_ { struct types { enum options { rstd0_r15, rstd1_r15, rstd2_r15, rstd3_r15, rstd4_r15, rstd5_r15, rstd6_r15, rstd7_r15, rstd8_r15, rstd9_r15, rstd10_r15, rstd11_r15, rstd12_r15, rstd13_r15, rstd14_r15, rstd15_r15, rstd16_r15, rstd17_r15, rstd18_r15, rstd19_r15, rstd20_r15, // ... nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 21, nof_exts = 0; static const bool has_ext = true; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods gap_offset_dense_prs_r15_c_() : type_(types::nulltype) {} gap_offset_dense_prs_r15_c_(const gap_offset_dense_prs_r15_c_& other); gap_offset_dense_prs_r15_c_& operator=(const gap_offset_dense_prs_r15_c_& other); ~gap_offset_dense_prs_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(bit_ref& bref); void to_json(json_writer& j) const; // getters uint8_t& rstd0_r15() { assert_choice_type("rstd0-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } uint8_t& rstd1_r15() { assert_choice_type("rstd1-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } uint16_t& rstd2_r15() { assert_choice_type("rstd2-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } uint16_t& rstd3_r15() { assert_choice_type("rstd3-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } uint16_t& rstd4_r15() { assert_choice_type("rstd4-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } uint8_t& rstd5_r15() { assert_choice_type("rstd5-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } uint16_t& rstd6_r15() { assert_choice_type("rstd6-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } uint16_t& rstd7_r15() { assert_choice_type("rstd7-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } uint16_t& rstd8_r15() { assert_choice_type("rstd8-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } uint16_t& rstd9_r15() { assert_choice_type("rstd9-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } uint16_t& rstd10_r15() { assert_choice_type("rstd10-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } uint16_t& rstd11_r15() { assert_choice_type("rstd11-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } uint16_t& rstd12_r15() { assert_choice_type("rstd12-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } uint16_t& rstd13_r15() { assert_choice_type("rstd13-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } uint16_t& rstd14_r15() { assert_choice_type("rstd14-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } uint16_t& rstd15_r15() { assert_choice_type("rstd15-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } uint16_t& rstd16_r15() { assert_choice_type("rstd16-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } uint16_t& rstd17_r15() { assert_choice_type("rstd17-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } uint16_t& rstd18_r15() { assert_choice_type("rstd18-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } uint16_t& rstd19_r15() { assert_choice_type("rstd19-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } uint16_t& rstd20_r15() { assert_choice_type("rstd20-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } const uint8_t& rstd0_r15() const { assert_choice_type("rstd0-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } const uint8_t& rstd1_r15() const { assert_choice_type("rstd1-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } const uint16_t& rstd2_r15() const { assert_choice_type("rstd2-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } const uint16_t& rstd3_r15() const { assert_choice_type("rstd3-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } const uint16_t& rstd4_r15() const { assert_choice_type("rstd4-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } const uint8_t& rstd5_r15() const { assert_choice_type("rstd5-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } const uint16_t& rstd6_r15() const { assert_choice_type("rstd6-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } const uint16_t& rstd7_r15() const { assert_choice_type("rstd7-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } const uint16_t& rstd8_r15() const { assert_choice_type("rstd8-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } const uint16_t& rstd9_r15() const { assert_choice_type("rstd9-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } const uint16_t& rstd10_r15() const { assert_choice_type("rstd10-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } const uint16_t& rstd11_r15() const { assert_choice_type("rstd11-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } const uint16_t& rstd12_r15() const { assert_choice_type("rstd12-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } const uint16_t& rstd13_r15() const { assert_choice_type("rstd13-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } const uint16_t& rstd14_r15() const { assert_choice_type("rstd14-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } const uint16_t& rstd15_r15() const { assert_choice_type("rstd15-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } const uint16_t& rstd16_r15() const { assert_choice_type("rstd16-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } const uint16_t& rstd17_r15() const { assert_choice_type("rstd17-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } const uint16_t& rstd18_r15() const { assert_choice_type("rstd18-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } const uint16_t& rstd19_r15() const { assert_choice_type("rstd19-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } const uint16_t& rstd20_r15() const { assert_choice_type("rstd20-r15", type_.to_string(), "gapOffsetDensePRS-r15"); return c.get(); } private: types type_; choice_buffer_t<8> c; void destroy_(); }; // member variables gap_offset_dense_prs_r15_c_ gap_offset_dense_prs_r15; }; typedef setup_e types; // choice methods meas_gap_cfg_dense_prs_r15_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "MeasGapConfigDensePRS-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "MeasGapConfigDensePRS-r15"); return c; } private: types type_; setup_s_ c; }; // MeasGapConfigPerCC-List-r14 ::= CHOICE struct meas_gap_cfg_per_cc_list_r14_c { struct setup_s_ { // member variables bool meas_gap_cfg_to_rem_list_r14_present; bool meas_gap_cfg_to_add_mod_list_r14_present; meas_gap_cfg_to_rem_list_r14_l meas_gap_cfg_to_rem_list_r14; meas_gap_cfg_to_add_mod_list_r14_l meas_gap_cfg_to_add_mod_list_r14; // sequence methods setup_s_(); }; typedef setup_e types; // choice methods meas_gap_cfg_per_cc_list_r14_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "MeasGapConfigPerCC-List-r14"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "MeasGapConfigPerCC-List-r14"); return c; } private: types type_; setup_s_ c; }; // MeasGapSharingConfig-r14 ::= CHOICE struct meas_gap_sharing_cfg_r14_c { struct setup_s_ { struct meas_gap_sharing_scheme_r14_e_ { enum options { scheme00, scheme01, scheme10, scheme11 }; typedef float number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods meas_gap_sharing_scheme_r14_e_() {} meas_gap_sharing_scheme_r14_e_(options v) : value(v) {} meas_gap_sharing_scheme_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; // member variables meas_gap_sharing_scheme_r14_e_ meas_gap_sharing_scheme_r14; }; typedef setup_e types; // choice methods meas_gap_sharing_cfg_r14_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "MeasGapSharingConfig-r14"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "MeasGapSharingConfig-r14"); return c; } private: types type_; setup_s_ c; }; // MeasIdToAddModList ::= SEQUENCE (SIZE (1..maxMeasId)) OF MeasIdToAddMod typedef dyn_array meas_id_to_add_mod_list_l; // MeasIdToAddModList-v1310 ::= SEQUENCE (SIZE (1..maxMeasId)) OF MeasIdToAddMod-v1310 typedef dyn_array meas_id_to_add_mod_list_v1310_l; // MeasIdToAddModListExt-r12 ::= SEQUENCE (SIZE (1..maxMeasId)) OF MeasIdToAddModExt-r12 typedef dyn_array meas_id_to_add_mod_list_ext_r12_l; // MeasIdToAddModListExt-v1310 ::= SEQUENCE (SIZE (1..maxMeasId)) OF MeasIdToAddMod-v1310 typedef dyn_array meas_id_to_add_mod_list_ext_v1310_l; // MeasIdToRemoveList ::= SEQUENCE (SIZE (1..maxMeasId)) OF INTEGER typedef bounded_array meas_id_to_rem_list_l; // MeasIdToRemoveListExt-r12 ::= SEQUENCE (SIZE (1..maxMeasId)) OF INTEGER typedef bounded_array meas_id_to_rem_list_ext_r12_l; // MeasObjectToAddModList ::= SEQUENCE (SIZE (1..maxObjectId)) OF MeasObjectToAddMod typedef dyn_array meas_obj_to_add_mod_list_l; // MeasObjectToAddModList-v9e0 ::= SEQUENCE (SIZE (1..maxObjectId)) OF MeasObjectToAddMod-v9e0 typedef dyn_array meas_obj_to_add_mod_list_v9e0_l; // MeasObjectToAddModListExt-r13 ::= SEQUENCE (SIZE (1..maxObjectId)) OF MeasObjectToAddModExt-r13 typedef dyn_array meas_obj_to_add_mod_list_ext_r13_l; // MeasObjectToRemoveList ::= SEQUENCE (SIZE (1..maxObjectId)) OF INTEGER typedef bounded_array meas_obj_to_rem_list_l; // MeasObjectToRemoveListExt-r13 ::= SEQUENCE (SIZE (1..maxObjectId)) OF INTEGER typedef bounded_array meas_obj_to_rem_list_ext_r13_l; // MeasScaleFactor-r12 ::= ENUMERATED struct meas_scale_factor_r12_e { enum options { sf_eutra_cf1, sf_eutra_cf2 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods meas_scale_factor_r12_e() {} meas_scale_factor_r12_e(options v) : value(v) {} meas_scale_factor_r12_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // MobilityControlInfoV2X-r14 ::= SEQUENCE struct mob_ctrl_info_v2x_r14_s { // member variables bool v2x_comm_tx_pool_exceptional_r14_present; bool v2x_comm_rx_pool_r14_present; bool v2x_comm_sync_cfg_r14_present; bool cbr_mob_tx_cfg_list_r14_present; sl_comm_res_pool_v2x_r14_s v2x_comm_tx_pool_exceptional_r14; sl_comm_rx_pool_list_v2x_r14_l v2x_comm_rx_pool_r14; sl_sync_cfg_list_v2x_r14_l v2x_comm_sync_cfg_r14; sl_cbr_common_tx_cfg_list_r14_s cbr_mob_tx_cfg_list_r14; // sequence methods mob_ctrl_info_v2x_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MobilityFromEUTRACommand-v8d0-IEs ::= SEQUENCE struct mob_from_eutra_cmd_v8d0_ies_s { // member variables bool band_ind_present; bool non_crit_ext_present; band_ind_geran_e band_ind; // sequence methods mob_from_eutra_cmd_v8d0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MobilityFromEUTRACommand-v960-IEs ::= SEQUENCE struct mob_from_eutra_cmd_v960_ies_s { // member variables bool band_ind_present; bool non_crit_ext_present; band_ind_geran_e band_ind; mob_from_eutra_cmd_v1530_ies_s non_crit_ext; // sequence methods mob_from_eutra_cmd_v960_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // QuantityConfig ::= SEQUENCE struct quant_cfg_s { // member variables bool ext; bool quant_cfg_eutra_present; bool quant_cfg_utra_present; bool quant_cfg_geran_present; bool quant_cfg_cdma2000_present; quant_cfg_eutra_s quant_cfg_eutra; quant_cfg_utra_s quant_cfg_utra; quant_cfg_geran_s quant_cfg_geran; quant_cfg_cdma2000_s quant_cfg_cdma2000; // ... // group 0 bool quant_cfg_utra_v1020_present; copy_ptr quant_cfg_utra_v1020; // group 1 bool quant_cfg_eutra_v1250_present; copy_ptr quant_cfg_eutra_v1250; // group 2 bool quant_cfg_eutra_v1310_present; bool quant_cfg_wlan_r13_present; copy_ptr quant_cfg_eutra_v1310; copy_ptr quant_cfg_wlan_r13; // group 3 bool quant_cfg_nr_list_r15_present; copy_ptr quant_cfg_nr_list_r15; // sequence methods quant_cfg_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RAT-Type ::= ENUMERATED struct rat_type_e { enum options { eutra, utra, geran_cs, geran_ps, cdma2000_minus1_xrtt, nr, eutra_nr, spare1, /*...*/ }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = true; // enumerated methods rat_type_e() {} rat_type_e(options v) : value(v) {} rat_type_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // RRCConnectionReconfiguration-v8m0-IEs ::= SEQUENCE struct rrc_conn_recfg_v8m0_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; rrc_conn_recfg_v10i0_ies_s non_crit_ext; // sequence methods rrc_conn_recfg_v8m0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReconfiguration-v920-IEs ::= SEQUENCE struct rrc_conn_recfg_v920_ies_s { // member variables bool other_cfg_r9_present; bool full_cfg_r9_present; bool non_crit_ext_present; other_cfg_r9_s other_cfg_r9; rrc_conn_recfg_v1020_ies_s non_crit_ext; // sequence methods rrc_conn_recfg_v920_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionRelease-v920-IEs ::= SEQUENCE struct rrc_conn_release_v920_ies_s { struct cell_info_list_r9_c_ { struct types { enum options { geran_r9, utra_fdd_r9, utra_tdd_r9, /*...*/ utra_tdd_r10, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 1; static const bool has_ext = true; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods cell_info_list_r9_c_() : type_(types::nulltype) {} cell_info_list_r9_c_(const cell_info_list_r9_c_& other); cell_info_list_r9_c_& operator=(const cell_info_list_r9_c_& other); ~cell_info_list_r9_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters cell_info_list_geran_r9_l& geran_r9() { assert_choice_type("geran-r9", type_.to_string(), "cellInfoList-r9"); return c.get(); } cell_info_list_utra_fdd_r9_l& utra_fdd_r9() { assert_choice_type("utra-FDD-r9", type_.to_string(), "cellInfoList-r9"); return c.get(); } cell_info_list_utra_tdd_r9_l& utra_tdd_r9() { assert_choice_type("utra-TDD-r9", type_.to_string(), "cellInfoList-r9"); return c.get(); } cell_info_list_utra_tdd_r10_l& utra_tdd_r10() { assert_choice_type("utra-TDD-r10", type_.to_string(), "cellInfoList-r9"); return c.get(); } const cell_info_list_geran_r9_l& geran_r9() const { assert_choice_type("geran-r9", type_.to_string(), "cellInfoList-r9"); return c.get(); } const cell_info_list_utra_fdd_r9_l& utra_fdd_r9() const { assert_choice_type("utra-FDD-r9", type_.to_string(), "cellInfoList-r9"); return c.get(); } const cell_info_list_utra_tdd_r9_l& utra_tdd_r9() const { assert_choice_type("utra-TDD-r9", type_.to_string(), "cellInfoList-r9"); return c.get(); } const cell_info_list_utra_tdd_r10_l& utra_tdd_r10() const { assert_choice_type("utra-TDD-r10", type_.to_string(), "cellInfoList-r9"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables bool cell_info_list_r9_present; bool non_crit_ext_present; cell_info_list_r9_c_ cell_info_list_r9; rrc_conn_release_v1020_ies_s non_crit_ext; // sequence methods rrc_conn_release_v920_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionRelease-v9e0-IEs ::= SEQUENCE struct rrc_conn_release_v9e0_ies_s { // member variables bool redirected_carrier_info_v9e0_present; bool idle_mode_mob_ctrl_info_v9e0_present; bool non_crit_ext_present; redirected_carrier_info_v9e0_s redirected_carrier_info_v9e0; idle_mode_mob_ctrl_info_v9e0_s idle_mode_mob_ctrl_info_v9e0; // sequence methods rrc_conn_release_v9e0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionResume-v1510-IEs ::= SEQUENCE struct rrc_conn_resume_v1510_ies_s { // member variables bool sk_counter_r15_present; bool nr_radio_bearer_cfg1_r15_present; bool nr_radio_bearer_cfg2_r15_present; bool non_crit_ext_present; uint16_t sk_counter_r15; dyn_octstring nr_radio_bearer_cfg1_r15; dyn_octstring nr_radio_bearer_cfg2_r15; rrc_conn_resume_v1530_ies_s non_crit_ext; // sequence methods rrc_conn_resume_v1510_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RadioResourceConfigCommon ::= SEQUENCE struct rr_cfg_common_s { // member variables bool ext; bool rach_cfg_common_present; bool pdsch_cfg_common_present; bool phich_cfg_present; bool pucch_cfg_common_present; bool srs_ul_cfg_common_present; bool ul_pwr_ctrl_common_present; bool ant_info_common_present; bool p_max_present; bool tdd_cfg_present; rach_cfg_common_s rach_cfg_common; prach_cfg_s prach_cfg; pdsch_cfg_common_s pdsch_cfg_common; pusch_cfg_common_s pusch_cfg_common; phich_cfg_s phich_cfg; pucch_cfg_common_s pucch_cfg_common; srs_ul_cfg_common_c srs_ul_cfg_common; ul_pwr_ctrl_common_s ul_pwr_ctrl_common; ant_info_common_s ant_info_common; int8_t p_max; tdd_cfg_s tdd_cfg; ul_cp_len_e ul_cp_len; // ... // group 0 bool ul_pwr_ctrl_common_v1020_present; copy_ptr ul_pwr_ctrl_common_v1020; // group 1 bool tdd_cfg_v1130_present; copy_ptr tdd_cfg_v1130; // group 2 bool pusch_cfg_common_v1270_present; copy_ptr pusch_cfg_common_v1270; // group 3 bool prach_cfg_v1310_present; bool freq_hop_params_r13_present; bool pdsch_cfg_common_v1310_present; bool pucch_cfg_common_v1310_present; bool pusch_cfg_common_v1310_present; bool ul_pwr_ctrl_common_v1310_present; copy_ptr prach_cfg_v1310; copy_ptr freq_hop_params_r13; copy_ptr pdsch_cfg_common_v1310; copy_ptr pucch_cfg_common_v1310; copy_ptr pusch_cfg_common_v1310; copy_ptr ul_pwr_ctrl_common_v1310; // group 4 bool high_speed_cfg_r14_present; bool prach_cfg_v1430_present; bool pucch_cfg_common_v1430_present; bool tdd_cfg_v1430_present; copy_ptr high_speed_cfg_r14; copy_ptr prach_cfg_v1430; copy_ptr pucch_cfg_common_v1430; copy_ptr tdd_cfg_v1430; // group 5 bool tdd_cfg_v1450_present; copy_ptr tdd_cfg_v1450; // group 6 bool ul_pwr_ctrl_common_v1530_present; bool high_speed_cfg_v1530_present; copy_ptr ul_pwr_ctrl_common_v1530; copy_ptr high_speed_cfg_v1530; // sequence methods rr_cfg_common_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // ReportConfigToAddModList ::= SEQUENCE (SIZE (1..maxReportConfigId)) OF ReportConfigToAddMod typedef dyn_array report_cfg_to_add_mod_list_l; // ReportConfigToRemoveList ::= SEQUENCE (SIZE (1..maxReportConfigId)) OF INTEGER typedef bounded_array report_cfg_to_rem_list_l; // SI-OrPSI-GERAN ::= CHOICE struct si_or_psi_geran_c { struct types { enum options { si, psi, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods si_or_psi_geran_c() : type_(types::nulltype) {} si_or_psi_geran_c(const si_or_psi_geran_c& other); si_or_psi_geran_c& operator=(const si_or_psi_geran_c& other); ~si_or_psi_geran_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters sys_info_list_geran_l& si() { assert_choice_type("si", type_.to_string(), "SI-OrPSI-GERAN"); return c.get(); } sys_info_list_geran_l& psi() { assert_choice_type("psi", type_.to_string(), "SI-OrPSI-GERAN"); return c.get(); } const sys_info_list_geran_l& si() const { assert_choice_type("si", type_.to_string(), "SI-OrPSI-GERAN"); return c.get(); } const sys_info_list_geran_l& psi() const { assert_choice_type("psi", type_.to_string(), "SI-OrPSI-GERAN"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // TrackingAreaCodeList-r10 ::= SEQUENCE (SIZE (1..8)) OF BIT STRING typedef bounded_array, 8> tac_list_r10_l; // UECapabilityEnquiry-v1180-IEs ::= SEQUENCE struct ue_cap_enquiry_v1180_ies_s { typedef bounded_array requested_freq_bands_r11_l_; // member variables bool requested_freq_bands_r11_present; bool non_crit_ext_present; requested_freq_bands_r11_l_ requested_freq_bands_r11; ue_cap_enquiry_v1310_ies_s non_crit_ext; // sequence methods ue_cap_enquiry_v1180_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UEInformationRequest-v1020-IEs ::= SEQUENCE struct ue_info_request_v1020_ies_s { // member variables bool log_meas_report_req_r10_present; bool non_crit_ext_present; ue_info_request_v1130_ies_s non_crit_ext; // sequence methods ue_info_request_v1020_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AreaConfiguration-r10 ::= CHOICE struct area_cfg_r10_c { struct types { enum options { cell_global_id_list_r10, tac_list_r10, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods area_cfg_r10_c() : type_(types::nulltype) {} area_cfg_r10_c(const area_cfg_r10_c& other); area_cfg_r10_c& operator=(const area_cfg_r10_c& other); ~area_cfg_r10_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters cell_global_id_list_r10_l& cell_global_id_list_r10() { assert_choice_type("cellGlobalIdList-r10", type_.to_string(), "AreaConfiguration-r10"); return c.get(); } tac_list_r10_l& tac_list_r10() { assert_choice_type("trackingAreaCodeList-r10", type_.to_string(), "AreaConfiguration-r10"); return c.get(); } const cell_global_id_list_r10_l& cell_global_id_list_r10() const { assert_choice_type("cellGlobalIdList-r10", type_.to_string(), "AreaConfiguration-r10"); return c.get(); } const tac_list_r10_l& tac_list_r10() const { assert_choice_type("trackingAreaCodeList-r10", type_.to_string(), "AreaConfiguration-r10"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // CSFBParametersResponseCDMA2000-v8a0-IEs ::= SEQUENCE struct csfb_params_resp_cdma2000_v8a0_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; // sequence methods csfb_params_resp_cdma2000_v8a0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellChangeOrder ::= SEQUENCE struct cell_change_order_s { struct t304_e_ { enum options { ms100, ms200, ms500, ms1000, ms2000, ms4000, ms8000, ms10000_v1310 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods t304_e_() {} t304_e_(options v) : value(v) {} t304_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct target_rat_type_c_ { struct geran_s_ { // member variables bool network_ctrl_order_present; bool sys_info_present; pci_geran_s pci; carrier_freq_geran_s carrier_freq; fixed_bitstring<2> network_ctrl_order; si_or_psi_geran_c sys_info; // sequence methods geran_s_(); }; struct types { enum options { geran, /*...*/ nulltype }; options value; static const uint32_t nof_types = 1, nof_exts = 0; static const bool has_ext = true; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods target_rat_type_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters geran_s_& geran() { assert_choice_type("geran", type_.to_string(), "targetRAT-Type"); return c; } const geran_s_& geran() const { assert_choice_type("geran", type_.to_string(), "targetRAT-Type"); return c; } private: types type_; geran_s_ c; }; // member variables t304_e_ t304; target_rat_type_c_ target_rat_type; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CounterCheck-v8a0-IEs ::= SEQUENCE struct counter_check_v8a0_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; counter_check_v1530_ies_s non_crit_ext; // sequence methods counter_check_v8a0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DLInformationTransfer-v8a0-IEs ::= SEQUENCE struct dl_info_transfer_v8a0_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; // sequence methods dl_info_transfer_v8a0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DRB-CountMSB-InfoList ::= SEQUENCE (SIZE (1..maxDRB)) OF DRB-CountMSB-Info typedef dyn_array drb_count_msb_info_list_l; // E-CSFB-r9 ::= SEQUENCE struct e_csfb_r9_s { struct mob_cdma2000_hrpd_r9_e_ { enum options { ho, redirection }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods mob_cdma2000_hrpd_r9_e_() {} mob_cdma2000_hrpd_r9_e_(options v) : value(v) {} mob_cdma2000_hrpd_r9_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool msg_cont_cdma2000_minus1_xrtt_r9_present; bool mob_cdma2000_hrpd_r9_present; bool msg_cont_cdma2000_hrpd_r9_present; bool redirect_carrier_cdma2000_hrpd_r9_present; dyn_octstring msg_cont_cdma2000_minus1_xrtt_r9; mob_cdma2000_hrpd_r9_e_ mob_cdma2000_hrpd_r9; dyn_octstring msg_cont_cdma2000_hrpd_r9; carrier_freq_cdma2000_s redirect_carrier_cdma2000_hrpd_r9; // sequence methods e_csfb_r9_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // Handover ::= SEQUENCE struct ho_s { struct target_rat_type_e_ { enum options { utra, geran, cdma2000_minus1_xrtt, cdma2000_hrpd, nr, eutra, spare2, spare1, /*...*/ }; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = true; // enumerated methods target_rat_type_e_() {} target_rat_type_e_(options v) : value(v) {} target_rat_type_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool nas_security_param_from_eutra_present; bool sys_info_present; target_rat_type_e_ target_rat_type; dyn_octstring target_rat_msg_container; fixed_octstring<1> nas_security_param_from_eutra; si_or_psi_geran_c sys_info; // sequence methods ho_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // HandoverFromEUTRAPreparationRequest-v890-IEs ::= SEQUENCE struct ho_from_eutra_prep_request_v890_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; ho_from_eutra_prep_request_v920_ies_s non_crit_ext; // sequence methods ho_from_eutra_prep_request_v890_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // LoggedMeasurementConfiguration-v1080-IEs ::= SEQUENCE struct logged_meas_cfg_v1080_ies_s { // member variables bool late_non_crit_ext_r10_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext_r10; logged_meas_cfg_v1130_ies_s non_crit_ext; // sequence methods logged_meas_cfg_v1080_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // LoggingDuration-r10 ::= ENUMERATED struct logging_dur_r10_e { enum options { min10, min20, min40, min60, min90, min120, spare2, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods logging_dur_r10_e() {} logging_dur_r10_e(options v) : value(v) {} logging_dur_r10_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // LoggingInterval-r10 ::= ENUMERATED struct logging_interv_r10_e { enum options { ms1280, ms2560, ms5120, ms10240, ms20480, ms30720, ms40960, ms61440 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods logging_interv_r10_e() {} logging_interv_r10_e(options v) : value(v) {} logging_interv_r10_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // MeasConfig ::= SEQUENCE struct meas_cfg_s { struct speed_state_pars_c_ { struct setup_s_ { // member variables mob_state_params_s mob_state_params; speed_state_scale_factors_s time_to_trigger_sf; }; typedef setup_e types; // choice methods speed_state_pars_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "speedStatePars"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "speedStatePars"); return c; } private: types type_; setup_s_ c; }; struct meas_scale_factor_r12_c_ { typedef setup_e types; // choice methods meas_scale_factor_r12_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters meas_scale_factor_r12_e& setup() { assert_choice_type("setup", type_.to_string(), "measScaleFactor-r12"); return c; } const meas_scale_factor_r12_e& setup() const { assert_choice_type("setup", type_.to_string(), "measScaleFactor-r12"); return c; } private: types type_; meas_scale_factor_r12_e c; }; struct height_thresh_ref_r15_c_ { typedef setup_e types; // choice methods height_thresh_ref_r15_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint8_t& setup() { assert_choice_type("setup", type_.to_string(), "heightThreshRef-r15"); return c; } const uint8_t& setup() const { assert_choice_type("setup", type_.to_string(), "heightThreshRef-r15"); return c; } private: types type_; uint8_t c; }; // member variables bool ext; bool meas_obj_to_rem_list_present; bool meas_obj_to_add_mod_list_present; bool report_cfg_to_rem_list_present; bool report_cfg_to_add_mod_list_present; bool meas_id_to_rem_list_present; bool meas_id_to_add_mod_list_present; bool quant_cfg_present; bool meas_gap_cfg_present; bool s_measure_present; bool pre_regist_info_hrpd_present; bool speed_state_pars_present; meas_obj_to_rem_list_l meas_obj_to_rem_list; meas_obj_to_add_mod_list_l meas_obj_to_add_mod_list; report_cfg_to_rem_list_l report_cfg_to_rem_list; report_cfg_to_add_mod_list_l report_cfg_to_add_mod_list; meas_id_to_rem_list_l meas_id_to_rem_list; meas_id_to_add_mod_list_l meas_id_to_add_mod_list; quant_cfg_s quant_cfg; meas_gap_cfg_c meas_gap_cfg; uint8_t s_measure; pre_regist_info_hrpd_s pre_regist_info_hrpd; speed_state_pars_c_ speed_state_pars; // ... // group 0 bool meas_obj_to_add_mod_list_v9e0_present; copy_ptr meas_obj_to_add_mod_list_v9e0; // group 1 bool allow_interruptions_r11_present; bool allow_interruptions_r11; // group 2 bool meas_scale_factor_r12_present; bool meas_id_to_rem_list_ext_r12_present; bool meas_id_to_add_mod_list_ext_r12_present; bool meas_rsrq_on_all_symbols_r12_present; copy_ptr meas_scale_factor_r12; copy_ptr meas_id_to_rem_list_ext_r12; copy_ptr meas_id_to_add_mod_list_ext_r12; bool meas_rsrq_on_all_symbols_r12; // group 3 bool meas_obj_to_rem_list_ext_r13_present; bool meas_obj_to_add_mod_list_ext_r13_present; bool meas_id_to_add_mod_list_v1310_present; bool meas_id_to_add_mod_list_ext_v1310_present; copy_ptr meas_obj_to_rem_list_ext_r13; copy_ptr meas_obj_to_add_mod_list_ext_r13; copy_ptr meas_id_to_add_mod_list_v1310; copy_ptr meas_id_to_add_mod_list_ext_v1310; // group 4 bool meas_gap_cfg_per_cc_list_r14_present; bool meas_gap_sharing_cfg_r14_present; copy_ptr meas_gap_cfg_per_cc_list_r14; copy_ptr meas_gap_sharing_cfg_r14; // group 5 bool fr1_gap_r15_present; bool mgta_r15_present; bool fr1_gap_r15; bool mgta_r15; // group 6 bool meas_gap_cfg_dense_prs_r15_present; bool height_thresh_ref_r15_present; copy_ptr meas_gap_cfg_dense_prs_r15; copy_ptr height_thresh_ref_r15; // sequence methods meas_cfg_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MobilityControlInfo ::= SEQUENCE struct mob_ctrl_info_s { struct t304_e_ { enum options { ms50, ms100, ms150, ms200, ms500, ms1000, ms2000, ms10000_v1310 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods t304_e_() {} t304_e_(options v) : value(v) {} t304_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct ho_without_wt_change_r14_e_ { enum options { keep_lwa_cfg, send_end_marker }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods ho_without_wt_change_r14_e_() {} ho_without_wt_change_r14_e_(options v) : value(v) {} ho_without_wt_change_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool ext; bool carrier_freq_present; bool carrier_bw_present; bool add_spec_emission_present; bool rach_cfg_ded_present; uint16_t target_pci; carrier_freq_eutra_s carrier_freq; carrier_bw_eutra_s carrier_bw; uint8_t add_spec_emission; t304_e_ t304; fixed_bitstring<16> new_ue_id; rr_cfg_common_s rr_cfg_common; rach_cfg_ded_s rach_cfg_ded; // ... // group 0 bool carrier_freq_v9e0_present; copy_ptr carrier_freq_v9e0; // group 1 bool drb_continue_rohc_r11_present; // group 2 bool mob_ctrl_info_v2x_r14_present; bool ho_without_wt_change_r14_present; bool make_before_break_r14_present; bool rach_skip_r14_present; bool same_sfn_ind_r14_present; copy_ptr mob_ctrl_info_v2x_r14; ho_without_wt_change_r14_e_ ho_without_wt_change_r14; copy_ptr rach_skip_r14; // group 3 bool mib_repeat_status_r14_present; bool sched_info_sib1_br_r14_present; bool mib_repeat_status_r14; uint8_t sched_info_sib1_br_r14; // sequence methods mob_ctrl_info_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MobilityFromEUTRACommand-v8a0-IEs ::= SEQUENCE struct mob_from_eutra_cmd_v8a0_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; mob_from_eutra_cmd_v8d0_ies_s non_crit_ext; // sequence methods mob_from_eutra_cmd_v8a0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MobilityFromEUTRACommand-v930-IEs ::= SEQUENCE struct mob_from_eutra_cmd_v930_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; mob_from_eutra_cmd_v960_ies_s non_crit_ext; // sequence methods mob_from_eutra_cmd_v930_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RN-SubframeConfig-r10 ::= SEQUENCE struct rn_sf_cfg_r10_s { struct sf_cfg_pattern_r10_c_ { struct types { enum options { sf_cfg_pattern_fdd_r10, sf_cfg_pattern_tdd_r10, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods sf_cfg_pattern_r10_c_() : type_(types::nulltype) {} sf_cfg_pattern_r10_c_(const sf_cfg_pattern_r10_c_& other); sf_cfg_pattern_r10_c_& operator=(const sf_cfg_pattern_r10_c_& other); ~sf_cfg_pattern_r10_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<8>& sf_cfg_pattern_fdd_r10() { assert_choice_type("subframeConfigPatternFDD-r10", type_.to_string(), "subframeConfigPattern-r10"); return c.get >(); } uint8_t& sf_cfg_pattern_tdd_r10() { assert_choice_type("subframeConfigPatternTDD-r10", type_.to_string(), "subframeConfigPattern-r10"); return c.get(); } const fixed_bitstring<8>& sf_cfg_pattern_fdd_r10() const { assert_choice_type("subframeConfigPatternFDD-r10", type_.to_string(), "subframeConfigPattern-r10"); return c.get >(); } const uint8_t& sf_cfg_pattern_tdd_r10() const { assert_choice_type("subframeConfigPatternTDD-r10", type_.to_string(), "subframeConfigPattern-r10"); return c.get(); } private: types type_; choice_buffer_t)> c; void destroy_(); }; struct rpdcch_cfg_r10_s_ { struct res_alloc_type_r10_e_ { enum options { type0, type1, type2_localized, type2_distributed, spare4, spare3, spare2, spare1 }; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods res_alloc_type_r10_e_() {} res_alloc_type_r10_e_(options v) : value(v) {} res_alloc_type_r10_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct res_block_assign_r10_c_ { struct type01_r10_c_ { struct types { enum options { nrb6_r10, nrb15_r10, nrb25_r10, nrb50_r10, nrb75_r10, nrb100_r10, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods type01_r10_c_() : type_(types::nulltype) {} type01_r10_c_(const type01_r10_c_& other); type01_r10_c_& operator=(const type01_r10_c_& other); ~type01_r10_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<6>& nrb6_r10() { assert_choice_type("nrb6-r10", type_.to_string(), "type01-r10"); return c.get >(); } fixed_bitstring<8>& nrb15_r10() { assert_choice_type("nrb15-r10", type_.to_string(), "type01-r10"); return c.get >(); } fixed_bitstring<13>& nrb25_r10() { assert_choice_type("nrb25-r10", type_.to_string(), "type01-r10"); return c.get >(); } fixed_bitstring<17>& nrb50_r10() { assert_choice_type("nrb50-r10", type_.to_string(), "type01-r10"); return c.get >(); } fixed_bitstring<19>& nrb75_r10() { assert_choice_type("nrb75-r10", type_.to_string(), "type01-r10"); return c.get >(); } fixed_bitstring<25>& nrb100_r10() { assert_choice_type("nrb100-r10", type_.to_string(), "type01-r10"); return c.get >(); } const fixed_bitstring<6>& nrb6_r10() const { assert_choice_type("nrb6-r10", type_.to_string(), "type01-r10"); return c.get >(); } const fixed_bitstring<8>& nrb15_r10() const { assert_choice_type("nrb15-r10", type_.to_string(), "type01-r10"); return c.get >(); } const fixed_bitstring<13>& nrb25_r10() const { assert_choice_type("nrb25-r10", type_.to_string(), "type01-r10"); return c.get >(); } const fixed_bitstring<17>& nrb50_r10() const { assert_choice_type("nrb50-r10", type_.to_string(), "type01-r10"); return c.get >(); } const fixed_bitstring<19>& nrb75_r10() const { assert_choice_type("nrb75-r10", type_.to_string(), "type01-r10"); return c.get >(); } const fixed_bitstring<25>& nrb100_r10() const { assert_choice_type("nrb100-r10", type_.to_string(), "type01-r10"); return c.get >(); } private: types type_; choice_buffer_t)> c; void destroy_(); }; struct type2_r10_c_ { struct types { enum options { nrb6_r10, nrb15_r10, nrb25_r10, nrb50_r10, nrb75_r10, nrb100_r10, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods type2_r10_c_() : type_(types::nulltype) {} type2_r10_c_(const type2_r10_c_& other); type2_r10_c_& operator=(const type2_r10_c_& other); ~type2_r10_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<5>& nrb6_r10() { assert_choice_type("nrb6-r10", type_.to_string(), "type2-r10"); return c.get >(); } fixed_bitstring<7>& nrb15_r10() { assert_choice_type("nrb15-r10", type_.to_string(), "type2-r10"); return c.get >(); } fixed_bitstring<9>& nrb25_r10() { assert_choice_type("nrb25-r10", type_.to_string(), "type2-r10"); return c.get >(); } fixed_bitstring<11>& nrb50_r10() { assert_choice_type("nrb50-r10", type_.to_string(), "type2-r10"); return c.get >(); } fixed_bitstring<12>& nrb75_r10() { assert_choice_type("nrb75-r10", type_.to_string(), "type2-r10"); return c.get >(); } fixed_bitstring<13>& nrb100_r10() { assert_choice_type("nrb100-r10", type_.to_string(), "type2-r10"); return c.get >(); } const fixed_bitstring<5>& nrb6_r10() const { assert_choice_type("nrb6-r10", type_.to_string(), "type2-r10"); return c.get >(); } const fixed_bitstring<7>& nrb15_r10() const { assert_choice_type("nrb15-r10", type_.to_string(), "type2-r10"); return c.get >(); } const fixed_bitstring<9>& nrb25_r10() const { assert_choice_type("nrb25-r10", type_.to_string(), "type2-r10"); return c.get >(); } const fixed_bitstring<11>& nrb50_r10() const { assert_choice_type("nrb50-r10", type_.to_string(), "type2-r10"); return c.get >(); } const fixed_bitstring<12>& nrb75_r10() const { assert_choice_type("nrb75-r10", type_.to_string(), "type2-r10"); return c.get >(); } const fixed_bitstring<13>& nrb100_r10() const { assert_choice_type("nrb100-r10", type_.to_string(), "type2-r10"); return c.get >(); } private: types type_; choice_buffer_t)> c; void destroy_(); }; struct types { enum options { type01_r10, type2_r10, /*...*/ nulltype }; typedef float number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = true; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; // choice methods res_block_assign_r10_c_() : type_(types::nulltype) {} res_block_assign_r10_c_(const res_block_assign_r10_c_& other); res_block_assign_r10_c_& operator=(const res_block_assign_r10_c_& other); ~res_block_assign_r10_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters type01_r10_c_& type01_r10() { assert_choice_type("type01-r10", type_.to_string(), "resourceBlockAssignment-r10"); return c.get(); } type2_r10_c_& type2_r10() { assert_choice_type("type2-r10", type_.to_string(), "resourceBlockAssignment-r10"); return c.get(); } const type01_r10_c_& type01_r10() const { assert_choice_type("type01-r10", type_.to_string(), "resourceBlockAssignment-r10"); return c.get(); } const type2_r10_c_& type2_r10() const { assert_choice_type("type2-r10", type_.to_string(), "resourceBlockAssignment-r10"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct demod_rs_r10_c_ { struct no_interleaving_r10_e_ { enum options { crs, dmrs }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods no_interleaving_r10_e_() {} no_interleaving_r10_e_(options v) : value(v) {} no_interleaving_r10_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct types { enum options { interleaving_r10, no_interleaving_r10, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods demod_rs_r10_c_() : type_(types::nulltype) {} demod_rs_r10_c_(const demod_rs_r10_c_& other); demod_rs_r10_c_& operator=(const demod_rs_r10_c_& other); ~demod_rs_r10_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters no_interleaving_r10_e_& no_interleaving_r10() { assert_choice_type("noInterleaving-r10", type_.to_string(), "demodulationRS-r10"); return c.get(); } const no_interleaving_r10_e_& no_interleaving_r10() const { assert_choice_type("noInterleaving-r10", type_.to_string(), "demodulationRS-r10"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct pucch_cfg_r10_c_ { struct tdd_c_ { struct ch_sel_mux_bundling_s_ { typedef bounded_array n1_pucch_an_list_r10_l_; // member variables n1_pucch_an_list_r10_l_ n1_pucch_an_list_r10; }; struct fallback_for_format3_s_ { // member variables bool n1_pucch_an_p1_r10_present; uint16_t n1_pucch_an_p0_r10; uint16_t n1_pucch_an_p1_r10; // sequence methods fallback_for_format3_s_(); }; struct types { enum options { ch_sel_mux_bundling, fallback_for_format3, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods tdd_c_() : type_(types::nulltype) {} tdd_c_(const tdd_c_& other); tdd_c_& operator=(const tdd_c_& other); ~tdd_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters ch_sel_mux_bundling_s_& ch_sel_mux_bundling() { assert_choice_type("channelSelectionMultiplexingBundling", type_.to_string(), "tdd"); return c.get(); } fallback_for_format3_s_& fallback_for_format3() { assert_choice_type("fallbackForFormat3", type_.to_string(), "tdd"); return c.get(); } const ch_sel_mux_bundling_s_& ch_sel_mux_bundling() const { assert_choice_type("channelSelectionMultiplexingBundling", type_.to_string(), "tdd"); return c.get(); } const fallback_for_format3_s_& fallback_for_format3() const { assert_choice_type("fallbackForFormat3", type_.to_string(), "tdd"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct fdd_s_ { // member variables bool n1_pucch_an_p1_r10_present; uint16_t n1_pucch_an_p0_r10; uint16_t n1_pucch_an_p1_r10; // sequence methods fdd_s_(); }; struct types { enum options { tdd, fdd, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods pucch_cfg_r10_c_() : type_(types::nulltype) {} pucch_cfg_r10_c_(const pucch_cfg_r10_c_& other); pucch_cfg_r10_c_& operator=(const pucch_cfg_r10_c_& other); ~pucch_cfg_r10_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters tdd_c_& tdd() { assert_choice_type("tdd", type_.to_string(), "pucch-Config-r10"); return c.get(); } fdd_s_& fdd() { assert_choice_type("fdd", type_.to_string(), "pucch-Config-r10"); return c.get(); } const tdd_c_& tdd() const { assert_choice_type("tdd", type_.to_string(), "pucch-Config-r10"); return c.get(); } const fdd_s_& fdd() const { assert_choice_type("fdd", type_.to_string(), "pucch-Config-r10"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables bool ext; res_alloc_type_r10_e_ res_alloc_type_r10; res_block_assign_r10_c_ res_block_assign_r10; demod_rs_r10_c_ demod_rs_r10; uint8_t pdsch_start_r10; pucch_cfg_r10_c_ pucch_cfg_r10; // ... // sequence methods rpdcch_cfg_r10_s_(); }; // member variables bool ext; bool sf_cfg_pattern_r10_present; bool rpdcch_cfg_r10_present; sf_cfg_pattern_r10_c_ sf_cfg_pattern_r10; rpdcch_cfg_r10_s_ rpdcch_cfg_r10; // ... // sequence methods rn_sf_cfg_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RN-SystemInfo-r10 ::= SEQUENCE struct rn_sys_info_r10_s { // member variables bool ext; bool sib_type1_r10_present; bool sib_type2_r10_present; dyn_octstring sib_type1_r10; sib_type2_s sib_type2_r10; // ... // sequence methods rn_sys_info_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReconfiguration-v890-IEs ::= SEQUENCE struct rrc_conn_recfg_v890_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; rrc_conn_recfg_v920_ies_s non_crit_ext; // sequence methods rrc_conn_recfg_v890_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionRelease-v890-IEs ::= SEQUENCE struct rrc_conn_release_v890_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; rrc_conn_release_v920_ies_s non_crit_ext; // sequence methods rrc_conn_release_v890_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionResume-v1430-IEs ::= SEQUENCE struct rrc_conn_resume_v1430_ies_s { // member variables bool other_cfg_r14_present; bool rrc_conn_resume_v1510_ies_present; other_cfg_r9_s other_cfg_r14; rrc_conn_resume_v1510_ies_s rrc_conn_resume_v1510_ies; // sequence methods rrc_conn_resume_v1430_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RedirectedCarrierInfo ::= CHOICE struct redirected_carrier_info_c { struct types { enum options { eutra, geran, utra_fdd, utra_tdd, cdma2000_hrpd, cdma2000_minus1x_rtt, // ... utra_tdd_r10, nr_r15, nulltype }; options value; static const uint32_t nof_types = 8, nof_exts = 2; static const bool has_ext = true; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods redirected_carrier_info_c() : type_(types::nulltype) {} redirected_carrier_info_c(const redirected_carrier_info_c& other); redirected_carrier_info_c& operator=(const redirected_carrier_info_c& other); ~redirected_carrier_info_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint16_t& eutra() { assert_choice_type("eutra", type_.to_string(), "RedirectedCarrierInfo"); return c.get(); } carrier_freqs_geran_s& geran() { assert_choice_type("geran", type_.to_string(), "RedirectedCarrierInfo"); return c.get(); } uint16_t& utra_fdd() { assert_choice_type("utra-FDD", type_.to_string(), "RedirectedCarrierInfo"); return c.get(); } uint16_t& utra_tdd() { assert_choice_type("utra-TDD", type_.to_string(), "RedirectedCarrierInfo"); return c.get(); } carrier_freq_cdma2000_s& cdma2000_hrpd() { assert_choice_type("cdma2000-HRPD", type_.to_string(), "RedirectedCarrierInfo"); return c.get(); } carrier_freq_cdma2000_s& cdma2000_minus1x_rtt() { assert_choice_type("cdma2000-1xRTT", type_.to_string(), "RedirectedCarrierInfo"); return c.get(); } carrier_freq_list_utra_tdd_r10_l& utra_tdd_r10() { assert_choice_type("utra-TDD-r10", type_.to_string(), "RedirectedCarrierInfo"); return c.get(); } carrier_info_nr_r15_s& nr_r15() { assert_choice_type("nr-r15", type_.to_string(), "RedirectedCarrierInfo"); return c.get(); } const uint16_t& eutra() const { assert_choice_type("eutra", type_.to_string(), "RedirectedCarrierInfo"); return c.get(); } const carrier_freqs_geran_s& geran() const { assert_choice_type("geran", type_.to_string(), "RedirectedCarrierInfo"); return c.get(); } const uint16_t& utra_fdd() const { assert_choice_type("utra-FDD", type_.to_string(), "RedirectedCarrierInfo"); return c.get(); } const uint16_t& utra_tdd() const { assert_choice_type("utra-TDD", type_.to_string(), "RedirectedCarrierInfo"); return c.get(); } const carrier_freq_cdma2000_s& cdma2000_hrpd() const { assert_choice_type("cdma2000-HRPD", type_.to_string(), "RedirectedCarrierInfo"); return c.get(); } const carrier_freq_cdma2000_s& cdma2000_minus1x_rtt() const { assert_choice_type("cdma2000-1xRTT", type_.to_string(), "RedirectedCarrierInfo"); return c.get(); } const carrier_freq_list_utra_tdd_r10_l& utra_tdd_r10() const { assert_choice_type("utra-TDD-r10", type_.to_string(), "RedirectedCarrierInfo"); return c.get(); } const carrier_info_nr_r15_s& nr_r15() const { assert_choice_type("nr-r15", type_.to_string(), "RedirectedCarrierInfo"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // ReleaseCause ::= ENUMERATED struct release_cause_e { enum options { load_balancing_ta_urequired, other, cs_fallback_high_prio_v1020, rrc_suspend_v1320 }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods release_cause_e() {} release_cause_e(options v) : value(v) {} release_cause_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // SecurityConfigHO ::= SEQUENCE struct security_cfg_ho_s { struct ho_type_c_ { struct intra_lte_s_ { // member variables bool security_algorithm_cfg_present; security_algorithm_cfg_s security_algorithm_cfg; bool key_change_ind; uint8_t next_hop_chaining_count; // sequence methods intra_lte_s_(); }; struct inter_rat_s_ { // member variables security_algorithm_cfg_s security_algorithm_cfg; fixed_octstring<6> nas_security_param_to_eutra; }; struct types { enum options { intra_lte, inter_rat, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods ho_type_c_() : type_(types::nulltype) {} ho_type_c_(const ho_type_c_& other); ho_type_c_& operator=(const ho_type_c_& other); ~ho_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(bit_ref& bref); void to_json(json_writer& j) const; // getters intra_lte_s_& intra_lte() { assert_choice_type("intraLTE", type_.to_string(), "handoverType"); return c.get(); } inter_rat_s_& inter_rat() { assert_choice_type("interRAT", type_.to_string(), "handoverType"); return c.get(); } const intra_lte_s_& intra_lte() const { assert_choice_type("intraLTE", type_.to_string(), "handoverType"); return c.get(); } const inter_rat_s_& inter_rat() const { assert_choice_type("interRAT", type_.to_string(), "handoverType"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables bool ext; ho_type_c_ ho_type; // ... // sequence methods security_cfg_ho_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SecurityConfigSMC ::= SEQUENCE struct security_cfg_smc_s { // member variables bool ext; security_algorithm_cfg_s security_algorithm_cfg; // ... // sequence methods security_cfg_smc_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SecurityModeCommand-v8a0-IEs ::= SEQUENCE struct security_mode_cmd_v8a0_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; // sequence methods security_mode_cmd_v8a0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // TraceReference-r10 ::= SEQUENCE struct trace_ref_r10_s { // member variables plmn_id_s plmn_id_r10; fixed_octstring<3> trace_id_r10; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-CapabilityRequest ::= SEQUENCE (SIZE (1..maxRAT-Capabilities)) OF RAT-Type typedef bounded_array ue_cap_request_l; // UECapabilityEnquiry-v8a0-IEs ::= SEQUENCE struct ue_cap_enquiry_v8a0_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; ue_cap_enquiry_v1180_ies_s non_crit_ext; // sequence methods ue_cap_enquiry_v8a0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UEInformationRequest-v930-IEs ::= SEQUENCE struct ue_info_request_v930_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; ue_info_request_v1020_ies_s non_crit_ext; // sequence methods ue_info_request_v930_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSFBParametersResponseCDMA2000-r8-IEs ::= SEQUENCE struct csfb_params_resp_cdma2000_r8_ies_s { // member variables bool non_crit_ext_present; fixed_bitstring<32> rand; dyn_octstring mob_params; csfb_params_resp_cdma2000_v8a0_ies_s non_crit_ext; // sequence methods csfb_params_resp_cdma2000_r8_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CounterCheck-r8-IEs ::= SEQUENCE struct counter_check_r8_ies_s { // member variables bool non_crit_ext_present; drb_count_msb_info_list_l drb_count_msb_info_list; counter_check_v8a0_ies_s non_crit_ext; // sequence methods counter_check_r8_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DLInformationTransfer-r15-IEs ::= SEQUENCE struct dl_info_transfer_r15_ies_s { struct ded_info_type_r15_c_ { struct types { enum options { ded_info_nas_r15, ded_info_cdma2000_minus1_xrtt_r15, ded_info_cdma2000_hrpd_r15, nulltype }; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods ded_info_type_r15_c_() : type_(types::nulltype) {} ded_info_type_r15_c_(const ded_info_type_r15_c_& other); ded_info_type_r15_c_& operator=(const ded_info_type_r15_c_& other); ~ded_info_type_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(bit_ref& bref); void to_json(json_writer& j) const; // getters dyn_octstring& ded_info_nas_r15() { assert_choice_type("dedicatedInfoNAS-r15", type_.to_string(), "dedicatedInfoType-r15"); return c.get(); } dyn_octstring& ded_info_cdma2000_minus1_xrtt_r15() { assert_choice_type("dedicatedInfoCDMA2000-1XRTT-r15", type_.to_string(), "dedicatedInfoType-r15"); return c.get(); } dyn_octstring& ded_info_cdma2000_hrpd_r15() { assert_choice_type("dedicatedInfoCDMA2000-HRPD-r15", type_.to_string(), "dedicatedInfoType-r15"); return c.get(); } const dyn_octstring& ded_info_nas_r15() const { assert_choice_type("dedicatedInfoNAS-r15", type_.to_string(), "dedicatedInfoType-r15"); return c.get(); } const dyn_octstring& ded_info_cdma2000_minus1_xrtt_r15() const { assert_choice_type("dedicatedInfoCDMA2000-1XRTT-r15", type_.to_string(), "dedicatedInfoType-r15"); return c.get(); } const dyn_octstring& ded_info_cdma2000_hrpd_r15() const { assert_choice_type("dedicatedInfoCDMA2000-HRPD-r15", type_.to_string(), "dedicatedInfoType-r15"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables bool ded_info_type_r15_present; bool time_ref_info_r15_present; bool non_crit_ext_present; ded_info_type_r15_c_ ded_info_type_r15; time_ref_info_r15_s time_ref_info_r15; dl_info_transfer_v8a0_ies_s non_crit_ext; // sequence methods dl_info_transfer_r15_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DLInformationTransfer-r8-IEs ::= SEQUENCE struct dl_info_transfer_r8_ies_s { struct ded_info_type_c_ { struct types { enum options { ded_info_nas, ded_info_cdma2000_minus1_xrtt, ded_info_cdma2000_hrpd, nulltype }; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods ded_info_type_c_() : type_(types::nulltype) {} ded_info_type_c_(const ded_info_type_c_& other); ded_info_type_c_& operator=(const ded_info_type_c_& other); ~ded_info_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(bit_ref& bref); void to_json(json_writer& j) const; // getters dyn_octstring& ded_info_nas() { assert_choice_type("dedicatedInfoNAS", type_.to_string(), "dedicatedInfoType"); return c.get(); } dyn_octstring& ded_info_cdma2000_minus1_xrtt() { assert_choice_type("dedicatedInfoCDMA2000-1XRTT", type_.to_string(), "dedicatedInfoType"); return c.get(); } dyn_octstring& ded_info_cdma2000_hrpd() { assert_choice_type("dedicatedInfoCDMA2000-HRPD", type_.to_string(), "dedicatedInfoType"); return c.get(); } const dyn_octstring& ded_info_nas() const { assert_choice_type("dedicatedInfoNAS", type_.to_string(), "dedicatedInfoType"); return c.get(); } const dyn_octstring& ded_info_cdma2000_minus1_xrtt() const { assert_choice_type("dedicatedInfoCDMA2000-1XRTT", type_.to_string(), "dedicatedInfoType"); return c.get(); } const dyn_octstring& ded_info_cdma2000_hrpd() const { assert_choice_type("dedicatedInfoCDMA2000-HRPD", type_.to_string(), "dedicatedInfoType"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables bool non_crit_ext_present; ded_info_type_c_ ded_info_type; dl_info_transfer_v8a0_ies_s non_crit_ext; // sequence methods dl_info_transfer_r8_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // HandoverFromEUTRAPreparationRequest-r8-IEs ::= SEQUENCE struct ho_from_eutra_prep_request_r8_ies_s { // member variables bool rand_present; bool mob_params_present; bool non_crit_ext_present; cdma2000_type_e cdma2000_type; fixed_bitstring<32> rand; dyn_octstring mob_params; ho_from_eutra_prep_request_v890_ies_s non_crit_ext; // sequence methods ho_from_eutra_prep_request_r8_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // LoggedMeasurementConfiguration-r10-IEs ::= SEQUENCE struct logged_meas_cfg_r10_ies_s { // member variables bool area_cfg_r10_present; bool non_crit_ext_present; trace_ref_r10_s trace_ref_r10; fixed_octstring<2> trace_recording_session_ref_r10; fixed_octstring<1> tce_id_r10; fixed_bitstring<48> absolute_time_info_r10; area_cfg_r10_c area_cfg_r10; logging_dur_r10_e logging_dur_r10; logging_interv_r10_e logging_interv_r10; logged_meas_cfg_v1080_ies_s non_crit_ext; // sequence methods logged_meas_cfg_r10_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MobilityFromEUTRACommand-r8-IEs ::= SEQUENCE struct mob_from_eutra_cmd_r8_ies_s { struct purpose_c_ { struct types { enum options { ho, cell_change_order, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods purpose_c_() : type_(types::nulltype) {} purpose_c_(const purpose_c_& other); purpose_c_& operator=(const purpose_c_& other); ~purpose_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters ho_s& ho() { assert_choice_type("handover", type_.to_string(), "purpose"); return c.get(); } cell_change_order_s& cell_change_order() { assert_choice_type("cellChangeOrder", type_.to_string(), "purpose"); return c.get(); } const ho_s& ho() const { assert_choice_type("handover", type_.to_string(), "purpose"); return c.get(); } const cell_change_order_s& cell_change_order() const { assert_choice_type("cellChangeOrder", type_.to_string(), "purpose"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables bool non_crit_ext_present; bool cs_fallback_ind; purpose_c_ purpose; mob_from_eutra_cmd_v8a0_ies_s non_crit_ext; // sequence methods mob_from_eutra_cmd_r8_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MobilityFromEUTRACommand-r9-IEs ::= SEQUENCE struct mob_from_eutra_cmd_r9_ies_s { struct purpose_c_ { struct types { enum options { ho, cell_change_order, e_csfb_r9, /*...*/ nulltype }; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = true; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods purpose_c_() : type_(types::nulltype) {} purpose_c_(const purpose_c_& other); purpose_c_& operator=(const purpose_c_& other); ~purpose_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters ho_s& ho() { assert_choice_type("handover", type_.to_string(), "purpose"); return c.get(); } cell_change_order_s& cell_change_order() { assert_choice_type("cellChangeOrder", type_.to_string(), "purpose"); return c.get(); } e_csfb_r9_s& e_csfb_r9() { assert_choice_type("e-CSFB-r9", type_.to_string(), "purpose"); return c.get(); } const ho_s& ho() const { assert_choice_type("handover", type_.to_string(), "purpose"); return c.get(); } const cell_change_order_s& cell_change_order() const { assert_choice_type("cellChangeOrder", type_.to_string(), "purpose"); return c.get(); } const e_csfb_r9_s& e_csfb_r9() const { assert_choice_type("e-CSFB-r9", type_.to_string(), "purpose"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables bool non_crit_ext_present; bool cs_fallback_ind; purpose_c_ purpose; mob_from_eutra_cmd_v930_ies_s non_crit_ext; // sequence methods mob_from_eutra_cmd_r9_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RNReconfiguration-r10-IEs ::= SEQUENCE struct rn_recfg_r10_ies_s { // member variables bool rn_sys_info_r10_present; bool rn_sf_cfg_r10_present; bool late_non_crit_ext_present; bool non_crit_ext_present; rn_sys_info_r10_s rn_sys_info_r10; rn_sf_cfg_r10_s rn_sf_cfg_r10; dyn_octstring late_non_crit_ext; // sequence methods rn_recfg_r10_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReconfiguration-r8-IEs ::= SEQUENCE struct rrc_conn_recfg_r8_ies_s { typedef bounded_array ded_info_nas_list_l_; // member variables bool meas_cfg_present; bool mob_ctrl_info_present; bool ded_info_nas_list_present; bool rr_cfg_ded_present; bool security_cfg_ho_present; bool non_crit_ext_present; meas_cfg_s meas_cfg; mob_ctrl_info_s mob_ctrl_info; ded_info_nas_list_l_ ded_info_nas_list; rr_cfg_ded_s rr_cfg_ded; security_cfg_ho_s security_cfg_ho; rrc_conn_recfg_v890_ies_s non_crit_ext; // sequence methods rrc_conn_recfg_r8_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionRelease-r8-IEs ::= SEQUENCE struct rrc_conn_release_r8_ies_s { // member variables bool redirected_carrier_info_present; bool idle_mode_mob_ctrl_info_present; bool non_crit_ext_present; release_cause_e release_cause; redirected_carrier_info_c redirected_carrier_info; idle_mode_mob_ctrl_info_s idle_mode_mob_ctrl_info; rrc_conn_release_v890_ies_s non_crit_ext; // sequence methods rrc_conn_release_r8_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionResume-r13-IEs ::= SEQUENCE struct rrc_conn_resume_r13_ies_s { // member variables bool rr_cfg_ded_r13_present; bool meas_cfg_r13_present; bool ant_info_ded_pcell_r13_present; bool drb_continue_rohc_r13_present; bool late_non_crit_ext_present; bool rrc_conn_resume_v1430_ies_present; rr_cfg_ded_s rr_cfg_ded_r13; uint8_t next_hop_chaining_count_r13; meas_cfg_s meas_cfg_r13; ant_info_ded_v10i0_s ant_info_ded_pcell_r13; dyn_octstring late_non_crit_ext; rrc_conn_resume_v1430_ies_s rrc_conn_resume_v1430_ies; // sequence methods rrc_conn_resume_r13_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SecurityModeCommand-r8-IEs ::= SEQUENCE struct security_mode_cmd_r8_ies_s { // member variables bool non_crit_ext_present; security_cfg_smc_s security_cfg_smc; security_mode_cmd_v8a0_ies_s non_crit_ext; // sequence methods security_mode_cmd_r8_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UECapabilityEnquiry-r8-IEs ::= SEQUENCE struct ue_cap_enquiry_r8_ies_s { // member variables bool non_crit_ext_present; ue_cap_request_l ue_cap_request; ue_cap_enquiry_v8a0_ies_s non_crit_ext; // sequence methods ue_cap_enquiry_r8_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UEInformationRequest-r9-IEs ::= SEQUENCE struct ue_info_request_r9_ies_s { // member variables bool non_crit_ext_present; bool rach_report_req_r9; bool rlf_report_req_r9; ue_info_request_v930_ies_s non_crit_ext; // sequence methods ue_info_request_r9_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSFBParametersResponseCDMA2000 ::= SEQUENCE struct csfb_params_resp_cdma2000_s { struct crit_exts_c_ { struct types { enum options { csfb_params_resp_cdma2000_r8, crit_exts_future, nulltype }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters csfb_params_resp_cdma2000_r8_ies_s& csfb_params_resp_cdma2000_r8() { assert_choice_type("csfbParametersResponseCDMA2000-r8", type_.to_string(), "criticalExtensions"); return c.get(); } const csfb_params_resp_cdma2000_r8_ies_s& csfb_params_resp_cdma2000_r8() const { assert_choice_type("csfbParametersResponseCDMA2000-r8", type_.to_string(), "criticalExtensions"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables uint8_t rrc_transaction_id; crit_exts_c_ crit_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CounterCheck ::= SEQUENCE struct counter_check_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { counter_check_r8, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters counter_check_r8_ies_s& counter_check_r8() { assert_choice_type("counterCheck-r8", type_.to_string(), "c1"); return c; } const counter_check_r8_ies_s& counter_check_r8() const { assert_choice_type("counterCheck-r8", type_.to_string(), "c1"); return c; } private: types type_; counter_check_r8_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables uint8_t rrc_transaction_id; crit_exts_c_ crit_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DLInformationTransfer ::= SEQUENCE struct dl_info_transfer_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { dl_info_transfer_r8, dl_info_transfer_r15, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters dl_info_transfer_r8_ies_s& dl_info_transfer_r8() { assert_choice_type("dlInformationTransfer-r8", type_.to_string(), "c1"); return c.get(); } dl_info_transfer_r15_ies_s& dl_info_transfer_r15() { assert_choice_type("dlInformationTransfer-r15", type_.to_string(), "c1"); return c.get(); } const dl_info_transfer_r8_ies_s& dl_info_transfer_r8() const { assert_choice_type("dlInformationTransfer-r8", type_.to_string(), "c1"); return c.get(); } const dl_info_transfer_r15_ies_s& dl_info_transfer_r15() const { assert_choice_type("dlInformationTransfer-r15", type_.to_string(), "c1"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables uint8_t rrc_transaction_id; crit_exts_c_ crit_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // HandoverFromEUTRAPreparationRequest ::= SEQUENCE struct ho_from_eutra_prep_request_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { ho_from_eutra_prep_request_r8, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters ho_from_eutra_prep_request_r8_ies_s& ho_from_eutra_prep_request_r8() { assert_choice_type("handoverFromEUTRAPreparationRequest-r8", type_.to_string(), "c1"); return c; } const ho_from_eutra_prep_request_r8_ies_s& ho_from_eutra_prep_request_r8() const { assert_choice_type("handoverFromEUTRAPreparationRequest-r8", type_.to_string(), "c1"); return c; } private: types type_; ho_from_eutra_prep_request_r8_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables uint8_t rrc_transaction_id; crit_exts_c_ crit_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // LoggedMeasurementConfiguration-r10 ::= SEQUENCE struct logged_meas_cfg_r10_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { logged_meas_cfg_r10, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters logged_meas_cfg_r10_ies_s& logged_meas_cfg_r10() { assert_choice_type("loggedMeasurementConfiguration-r10", type_.to_string(), "c1"); return c; } const logged_meas_cfg_r10_ies_s& logged_meas_cfg_r10() const { assert_choice_type("loggedMeasurementConfiguration-r10", type_.to_string(), "c1"); return c; } private: types type_; logged_meas_cfg_r10_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); 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(bit_ref& bref); void to_json(json_writer& j) const; }; // MobilityFromEUTRACommand ::= SEQUENCE struct mob_from_eutra_cmd_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { mob_from_eutra_cmd_r8, mob_from_eutra_cmd_r9, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters mob_from_eutra_cmd_r8_ies_s& mob_from_eutra_cmd_r8() { assert_choice_type("mobilityFromEUTRACommand-r8", type_.to_string(), "c1"); return c.get(); } mob_from_eutra_cmd_r9_ies_s& mob_from_eutra_cmd_r9() { assert_choice_type("mobilityFromEUTRACommand-r9", type_.to_string(), "c1"); return c.get(); } const mob_from_eutra_cmd_r8_ies_s& mob_from_eutra_cmd_r8() const { assert_choice_type("mobilityFromEUTRACommand-r8", type_.to_string(), "c1"); return c.get(); } const mob_from_eutra_cmd_r9_ies_s& mob_from_eutra_cmd_r9() const { assert_choice_type("mobilityFromEUTRACommand-r9", type_.to_string(), "c1"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables uint8_t rrc_transaction_id; crit_exts_c_ crit_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RNReconfiguration-r10 ::= SEQUENCE struct rn_recfg_r10_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { rn_recfg_r10, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters rn_recfg_r10_ies_s& rn_recfg_r10() { assert_choice_type("rnReconfiguration-r10", type_.to_string(), "c1"); return c; } const rn_recfg_r10_ies_s& rn_recfg_r10() const { assert_choice_type("rnReconfiguration-r10", type_.to_string(), "c1"); return c; } private: types type_; rn_recfg_r10_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables uint8_t rrc_transaction_id; crit_exts_c_ crit_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReconfiguration ::= SEQUENCE struct rrc_conn_recfg_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { rrc_conn_recfg_r8, spare7, spare6, spare5, spare4, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters rrc_conn_recfg_r8_ies_s& rrc_conn_recfg_r8() { assert_choice_type("rrcConnectionReconfiguration-r8", type_.to_string(), "c1"); return c; } const rrc_conn_recfg_r8_ies_s& rrc_conn_recfg_r8() const { assert_choice_type("rrcConnectionReconfiguration-r8", type_.to_string(), "c1"); return c; } private: types type_; rrc_conn_recfg_r8_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables uint8_t rrc_transaction_id; crit_exts_c_ crit_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionRelease ::= SEQUENCE struct rrc_conn_release_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { rrc_conn_release_r8, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters rrc_conn_release_r8_ies_s& rrc_conn_release_r8() { assert_choice_type("rrcConnectionRelease-r8", type_.to_string(), "c1"); return c; } const rrc_conn_release_r8_ies_s& rrc_conn_release_r8() const { assert_choice_type("rrcConnectionRelease-r8", type_.to_string(), "c1"); return c; } private: types type_; rrc_conn_release_r8_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables uint8_t rrc_transaction_id; crit_exts_c_ crit_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionResume-r13 ::= SEQUENCE struct rrc_conn_resume_r13_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { rrc_conn_resume_r13, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters rrc_conn_resume_r13_ies_s& rrc_conn_resume_r13() { assert_choice_type("rrcConnectionResume-r13", type_.to_string(), "c1"); return c; } const rrc_conn_resume_r13_ies_s& rrc_conn_resume_r13() const { assert_choice_type("rrcConnectionResume-r13", type_.to_string(), "c1"); return c; } private: types type_; rrc_conn_resume_r13_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables uint8_t rrc_transaction_id; crit_exts_c_ crit_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SecurityModeCommand ::= SEQUENCE struct security_mode_cmd_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { security_mode_cmd_r8, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters security_mode_cmd_r8_ies_s& security_mode_cmd_r8() { assert_choice_type("securityModeCommand-r8", type_.to_string(), "c1"); return c; } const security_mode_cmd_r8_ies_s& security_mode_cmd_r8() const { assert_choice_type("securityModeCommand-r8", type_.to_string(), "c1"); return c; } private: types type_; security_mode_cmd_r8_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables uint8_t rrc_transaction_id; crit_exts_c_ crit_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UECapabilityEnquiry ::= SEQUENCE struct ue_cap_enquiry_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { ue_cap_enquiry_r8, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters ue_cap_enquiry_r8_ies_s& ue_cap_enquiry_r8() { assert_choice_type("ueCapabilityEnquiry-r8", type_.to_string(), "c1"); return c; } const ue_cap_enquiry_r8_ies_s& ue_cap_enquiry_r8() const { assert_choice_type("ueCapabilityEnquiry-r8", type_.to_string(), "c1"); return c; } private: types type_; ue_cap_enquiry_r8_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables uint8_t rrc_transaction_id; crit_exts_c_ crit_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UEInformationRequest-r9 ::= SEQUENCE struct ue_info_request_r9_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { ue_info_request_r9, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters ue_info_request_r9_ies_s& ue_info_request_r9() { assert_choice_type("ueInformationRequest-r9", type_.to_string(), "c1"); return c; } const ue_info_request_r9_ies_s& ue_info_request_r9() const { assert_choice_type("ueInformationRequest-r9", type_.to_string(), "c1"); return c; } private: types type_; ue_info_request_r9_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables uint8_t rrc_transaction_id; crit_exts_c_ crit_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DL-DCCH-MessageType ::= CHOICE struct dl_dcch_msg_type_c { struct c1_c_ { struct types { enum options { csfb_params_resp_cdma2000, dl_info_transfer, ho_from_eutra_prep_request, mob_from_eutra_cmd, rrc_conn_recfg, rrc_conn_release, security_mode_cmd, ue_cap_enquiry, counter_check, ue_info_request_r9, logged_meas_cfg_r10, rn_recfg_r10, rrc_conn_resume_r13, spare3, spare2, spare1, nulltype }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // choice methods c1_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters csfb_params_resp_cdma2000_s& csfb_params_resp_cdma2000() { assert_choice_type("csfbParametersResponseCDMA2000", type_.to_string(), "c1"); return c.get(); } dl_info_transfer_s& dl_info_transfer() { assert_choice_type("dlInformationTransfer", type_.to_string(), "c1"); return c.get(); } ho_from_eutra_prep_request_s& ho_from_eutra_prep_request() { assert_choice_type("handoverFromEUTRAPreparationRequest", type_.to_string(), "c1"); return c.get(); } mob_from_eutra_cmd_s& mob_from_eutra_cmd() { assert_choice_type("mobilityFromEUTRACommand", type_.to_string(), "c1"); return c.get(); } rrc_conn_recfg_s& rrc_conn_recfg() { assert_choice_type("rrcConnectionReconfiguration", type_.to_string(), "c1"); return c.get(); } rrc_conn_release_s& rrc_conn_release() { assert_choice_type("rrcConnectionRelease", type_.to_string(), "c1"); return c.get(); } security_mode_cmd_s& security_mode_cmd() { assert_choice_type("securityModeCommand", type_.to_string(), "c1"); return c.get(); } ue_cap_enquiry_s& ue_cap_enquiry() { assert_choice_type("ueCapabilityEnquiry", type_.to_string(), "c1"); return c.get(); } counter_check_s& counter_check() { assert_choice_type("counterCheck", type_.to_string(), "c1"); return c.get(); } ue_info_request_r9_s& ue_info_request_r9() { assert_choice_type("ueInformationRequest-r9", type_.to_string(), "c1"); return c.get(); } logged_meas_cfg_r10_s& logged_meas_cfg_r10() { assert_choice_type("loggedMeasurementConfiguration-r10", type_.to_string(), "c1"); return c.get(); } rn_recfg_r10_s& rn_recfg_r10() { assert_choice_type("rnReconfiguration-r10", type_.to_string(), "c1"); return c.get(); } rrc_conn_resume_r13_s& rrc_conn_resume_r13() { assert_choice_type("rrcConnectionResume-r13", type_.to_string(), "c1"); return c.get(); } const csfb_params_resp_cdma2000_s& csfb_params_resp_cdma2000() const { assert_choice_type("csfbParametersResponseCDMA2000", type_.to_string(), "c1"); return c.get(); } const dl_info_transfer_s& dl_info_transfer() const { assert_choice_type("dlInformationTransfer", type_.to_string(), "c1"); return c.get(); } const ho_from_eutra_prep_request_s& ho_from_eutra_prep_request() const { assert_choice_type("handoverFromEUTRAPreparationRequest", type_.to_string(), "c1"); return c.get(); } const mob_from_eutra_cmd_s& mob_from_eutra_cmd() const { assert_choice_type("mobilityFromEUTRACommand", type_.to_string(), "c1"); return c.get(); } const rrc_conn_recfg_s& rrc_conn_recfg() const { assert_choice_type("rrcConnectionReconfiguration", type_.to_string(), "c1"); return c.get(); } const rrc_conn_release_s& rrc_conn_release() const { assert_choice_type("rrcConnectionRelease", type_.to_string(), "c1"); return c.get(); } const security_mode_cmd_s& security_mode_cmd() const { assert_choice_type("securityModeCommand", type_.to_string(), "c1"); return c.get(); } const ue_cap_enquiry_s& ue_cap_enquiry() const { assert_choice_type("ueCapabilityEnquiry", type_.to_string(), "c1"); return c.get(); } const counter_check_s& counter_check() const { assert_choice_type("counterCheck", type_.to_string(), "c1"); return c.get(); } const ue_info_request_r9_s& ue_info_request_r9() const { assert_choice_type("ueInformationRequest-r9", type_.to_string(), "c1"); return c.get(); } const logged_meas_cfg_r10_s& logged_meas_cfg_r10() const { assert_choice_type("loggedMeasurementConfiguration-r10", type_.to_string(), "c1"); return c.get(); } const rn_recfg_r10_s& rn_recfg_r10() const { assert_choice_type("rnReconfiguration-r10", type_.to_string(), "c1"); return c.get(); } const rrc_conn_resume_r13_s& rrc_conn_resume_r13() const { assert_choice_type("rrcConnectionResume-r13", type_.to_string(), "c1"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct types { enum options { c1, msg_class_ext, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods dl_dcch_msg_type_c() : type_(types::nulltype) {} dl_dcch_msg_type_c(const dl_dcch_msg_type_c& other); dl_dcch_msg_type_c& operator=(const dl_dcch_msg_type_c& other); ~dl_dcch_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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "DL-DCCH-MessageType"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "DL-DCCH-MessageType"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // DL-DCCH-Message ::= SEQUENCE struct dl_dcch_msg_s { // member variables dl_dcch_msg_type_c msg; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // TMGI-r9 ::= SEQUENCE struct tmgi_r9_s { struct plmn_id_r9_c_ { struct types { enum options { plmn_idx_r9, explicit_value_r9, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods plmn_id_r9_c_() : type_(types::nulltype) {} plmn_id_r9_c_(const plmn_id_r9_c_& other); plmn_id_r9_c_& operator=(const plmn_id_r9_c_& other); ~plmn_id_r9_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint8_t& plmn_idx_r9() { assert_choice_type("plmn-Index-r9", type_.to_string(), "plmn-Id-r9"); return c.get(); } plmn_id_s& explicit_value_r9() { assert_choice_type("explicitValue-r9", type_.to_string(), "plmn-Id-r9"); return c.get(); } const uint8_t& plmn_idx_r9() const { assert_choice_type("plmn-Index-r9", type_.to_string(), "plmn-Id-r9"); return c.get(); } const plmn_id_s& explicit_value_r9() const { assert_choice_type("explicitValue-r9", type_.to_string(), "plmn-Id-r9"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables plmn_id_r9_c_ plmn_id_r9; fixed_octstring<3> service_id_r9; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MBMS-SessionInfo-r9 ::= SEQUENCE struct mbms_session_info_r9_s { // member variables bool ext; bool session_id_r9_present; tmgi_r9_s tmgi_r9; fixed_octstring<1> session_id_r9; uint8_t lc_ch_id_r9; // ... // sequence methods mbms_session_info_r9_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MBMS-SessionInfoList-r9 ::= SEQUENCE (SIZE (0..maxSessionPerPMCH)) OF MBMS-SessionInfo-r9 typedef dyn_array mbms_session_info_list_r9_l; // PMCH-Config-r12 ::= SEQUENCE struct pmch_cfg_r12_s { struct data_mcs_r12_c_ { struct types { enum options { normal_r12, higer_order_r12, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods data_mcs_r12_c_() : type_(types::nulltype) {} data_mcs_r12_c_(const data_mcs_r12_c_& other); data_mcs_r12_c_& operator=(const data_mcs_r12_c_& other); ~data_mcs_r12_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint8_t& normal_r12() { assert_choice_type("normal-r12", type_.to_string(), "dataMCS-r12"); return c.get(); } uint8_t& higer_order_r12() { assert_choice_type("higerOrder-r12", type_.to_string(), "dataMCS-r12"); return c.get(); } const uint8_t& normal_r12() const { assert_choice_type("normal-r12", type_.to_string(), "dataMCS-r12"); return c.get(); } const uint8_t& higer_order_r12() const { assert_choice_type("higerOrder-r12", type_.to_string(), "dataMCS-r12"); return c.get(); } private: types type_; choice_buffer_t<8> c; void destroy_(); }; struct mch_sched_period_r12_e_ { enum options { rf4, rf8, rf16, rf32, rf64, rf128, rf256, rf512, rf1024 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 9, nof_exts = 0; static const bool has_ext = false; // enumerated methods mch_sched_period_r12_e_() {} mch_sched_period_r12_e_(options v) : value(v) {} mch_sched_period_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct mch_sched_period_v1430_e_ { enum options { rf1, rf2 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods mch_sched_period_v1430_e_() {} mch_sched_period_v1430_e_(options v) : value(v) {} mch_sched_period_v1430_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ext; uint16_t sf_alloc_end_r12; data_mcs_r12_c_ data_mcs_r12; mch_sched_period_r12_e_ mch_sched_period_r12; // ... // group 0 bool mch_sched_period_v1430_present; mch_sched_period_v1430_e_ mch_sched_period_v1430; // sequence methods pmch_cfg_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CommonSF-AllocPatternList-r14 ::= SEQUENCE (SIZE (1..maxMBSFN-Allocations)) OF MBSFN-SubframeConfig-v1430 typedef dyn_array common_sf_alloc_pattern_list_r14_l; // PMCH-InfoExt-r12 ::= SEQUENCE struct pmch_info_ext_r12_s { // member variables bool ext; pmch_cfg_r12_s pmch_cfg_r12; mbms_session_info_list_r9_l mbms_session_info_list_r12; // ... // sequence methods pmch_info_ext_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MBSFNAreaConfiguration-v1430-IEs ::= SEQUENCE struct mbsfn_area_cfg_v1430_ies_s { // member variables bool non_crit_ext_present; common_sf_alloc_pattern_list_r14_l common_sf_alloc_r14; // sequence methods mbsfn_area_cfg_v1430_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PMCH-Config-r9 ::= SEQUENCE struct pmch_cfg_r9_s { struct mch_sched_period_r9_e_ { enum options { rf8, rf16, rf32, rf64, rf128, rf256, rf512, rf1024 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods mch_sched_period_r9_e_() {} mch_sched_period_r9_e_(options v) : value(v) {} mch_sched_period_r9_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool ext; uint16_t sf_alloc_end_r9; uint8_t data_mcs_r9; mch_sched_period_r9_e_ mch_sched_period_r9; // ... // sequence methods pmch_cfg_r9_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PMCH-InfoListExt-r12 ::= SEQUENCE (SIZE (0..maxPMCH-PerMBSFN)) OF PMCH-InfoExt-r12 typedef dyn_array pmch_info_list_ext_r12_l; // CountingRequestInfo-r10 ::= SEQUENCE struct count_request_info_r10_s { // member variables bool ext; tmgi_r9_s tmgi_r10; // ... // sequence methods count_request_info_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MBSFNAreaConfiguration-v1250-IEs ::= SEQUENCE struct mbsfn_area_cfg_v1250_ies_s { // member variables bool pmch_info_list_ext_r12_present; bool non_crit_ext_present; pmch_info_list_ext_r12_l pmch_info_list_ext_r12; mbsfn_area_cfg_v1430_ies_s non_crit_ext; // sequence methods mbsfn_area_cfg_v1250_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PMCH-Info-r9 ::= SEQUENCE struct pmch_info_r9_s { // member variables bool ext; pmch_cfg_r9_s pmch_cfg_r9; mbms_session_info_list_r9_l mbms_session_info_list_r9; // ... // sequence methods pmch_info_r9_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CommonSF-AllocPatternList-r9 ::= SEQUENCE (SIZE (1..maxMBSFN-Allocations)) OF MBSFN-SubframeConfig typedef dyn_array common_sf_alloc_pattern_list_r9_l; // CountingRequestList-r10 ::= SEQUENCE (SIZE (1..maxServiceCount)) OF CountingRequestInfo-r10 typedef dyn_array count_request_list_r10_l; // MBSFNAreaConfiguration-v930-IEs ::= SEQUENCE struct mbsfn_area_cfg_v930_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; mbsfn_area_cfg_v1250_ies_s non_crit_ext; // sequence methods mbsfn_area_cfg_v930_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PMCH-InfoList-r9 ::= SEQUENCE (SIZE (0..maxPMCH-PerMBSFN)) OF PMCH-Info-r9 typedef dyn_array pmch_info_list_r9_l; // MBMSCountingRequest-r10 ::= SEQUENCE struct mbms_count_request_r10_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; count_request_list_r10_l count_request_list_r10; dyn_octstring late_non_crit_ext; // sequence methods mbms_count_request_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MBSFNAreaConfiguration-r9 ::= SEQUENCE struct mbsfn_area_cfg_r9_s { struct common_sf_alloc_period_r9_e_ { enum options { rf4, rf8, rf16, rf32, rf64, rf128, rf256 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 7, nof_exts = 0; static const bool has_ext = false; // enumerated methods common_sf_alloc_period_r9_e_() {} common_sf_alloc_period_r9_e_(options v) : value(v) {} common_sf_alloc_period_r9_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool non_crit_ext_present; common_sf_alloc_pattern_list_r9_l common_sf_alloc_r9; common_sf_alloc_period_r9_e_ common_sf_alloc_period_r9; pmch_info_list_r9_l pmch_info_list_r9; mbsfn_area_cfg_v930_ies_s non_crit_ext; // sequence methods mbsfn_area_cfg_r9_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MCCH-MessageType ::= CHOICE struct mcch_msg_type_c { struct c1_c_ { struct types { enum options { mbsfn_area_cfg_r9, nulltype }; options value; static const uint32_t nof_types = 1, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters mbsfn_area_cfg_r9_s& mbsfn_area_cfg_r9() { assert_choice_type("mbsfnAreaConfiguration-r9", type_.to_string(), "c1"); return c; } const mbsfn_area_cfg_r9_s& mbsfn_area_cfg_r9() const { assert_choice_type("mbsfnAreaConfiguration-r9", type_.to_string(), "c1"); return c; } private: types type_; mbsfn_area_cfg_r9_s c; }; struct later_c_ { struct c2_c_ { struct types { enum options { mbms_count_request_r10, nulltype }; options value; static const uint32_t nof_types = 1, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c2_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters mbms_count_request_r10_s& mbms_count_request_r10() { assert_choice_type("mbmsCountingRequest-r10", type_.to_string(), "c2"); return c; } const mbms_count_request_r10_s& mbms_count_request_r10() const { assert_choice_type("mbmsCountingRequest-r10", type_.to_string(), "c2"); return c; } private: types type_; mbms_count_request_r10_s c; }; struct types { enum options { c2, msg_class_ext, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods later_c_() : type_(types::nulltype) {} later_c_(const later_c_& other); later_c_& operator=(const later_c_& other); ~later_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters c2_c_& c2() { assert_choice_type("c2", type_.to_string(), "later"); return c.get(); } const c2_c_& c2() const { assert_choice_type("c2", type_.to_string(), "later"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct types { enum options { c1, later, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods mcch_msg_type_c() : type_(types::nulltype) {} mcch_msg_type_c(const mcch_msg_type_c& other); mcch_msg_type_c& operator=(const mcch_msg_type_c& other); ~mcch_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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "MCCH-MessageType"); return c.get(); } later_c_& later() { assert_choice_type("later", type_.to_string(), "MCCH-MessageType"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "MCCH-MessageType"); return c.get(); } const later_c_& later() const { assert_choice_type("later", type_.to_string(), "MCCH-MessageType"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // MCCH-Message ::= SEQUENCE struct mcch_msg_s { // member variables mcch_msg_type_c msg; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // Paging-v1530-IEs ::= SEQUENCE struct paging_v1530_ies_s { // member variables bool access_type_present; bool non_crit_ext_present; // sequence methods paging_v1530_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // IMSI ::= SEQUENCE (SIZE (6..21)) OF INTEGER typedef bounded_array imsi_l; // Paging-v1310-IEs ::= SEQUENCE struct paging_v1310_ies_s { // member variables bool redist_ind_r13_present; bool sys_info_mod_e_drx_r13_present; bool non_crit_ext_present; paging_v1530_ies_s non_crit_ext; // sequence methods paging_v1310_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // S-TMSI ::= SEQUENCE struct s_tmsi_s { // member variables fixed_bitstring<8> mmec; fixed_bitstring<32> m_tmsi; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // Paging-v1130-IEs ::= SEQUENCE struct paging_v1130_ies_s { // member variables bool eab_param_mod_r11_present; bool non_crit_ext_present; paging_v1310_ies_s non_crit_ext; // sequence methods paging_v1130_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PagingUE-Identity ::= CHOICE struct paging_ue_id_c { struct types { enum options { s_tmsi, imsi, /*...*/ ng_minus5_g_s_tmsi_r15, i_rnti_r15, nulltype }; typedef int8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 2; static const bool has_ext = true; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int8_t to_number() const; }; // choice methods paging_ue_id_c() : type_(types::nulltype) {} paging_ue_id_c(const paging_ue_id_c& other); paging_ue_id_c& operator=(const paging_ue_id_c& other); ~paging_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(bit_ref& bref); void to_json(json_writer& j) const; // getters s_tmsi_s& s_tmsi() { assert_choice_type("s-TMSI", type_.to_string(), "PagingUE-Identity"); return c.get(); } imsi_l& imsi() { assert_choice_type("imsi", type_.to_string(), "PagingUE-Identity"); return c.get(); } fixed_bitstring<48>& ng_minus5_g_s_tmsi_r15() { assert_choice_type("ng-5G-S-TMSI-r15", type_.to_string(), "PagingUE-Identity"); return c.get >(); } fixed_bitstring<40>& i_rnti_r15() { assert_choice_type("i-RNTI-r15", type_.to_string(), "PagingUE-Identity"); return c.get >(); } const s_tmsi_s& s_tmsi() const { assert_choice_type("s-TMSI", type_.to_string(), "PagingUE-Identity"); return c.get(); } const imsi_l& imsi() const { assert_choice_type("imsi", type_.to_string(), "PagingUE-Identity"); return c.get(); } const fixed_bitstring<48>& ng_minus5_g_s_tmsi_r15() const { assert_choice_type("ng-5G-S-TMSI-r15", type_.to_string(), "PagingUE-Identity"); return c.get >(); } const fixed_bitstring<40>& i_rnti_r15() const { assert_choice_type("i-RNTI-r15", type_.to_string(), "PagingUE-Identity"); return c.get >(); } private: types type_; choice_buffer_t), sizeof(imsi_l), sizeof(s_tmsi_s), 0)> c; void destroy_(); }; // Paging-v920-IEs ::= SEQUENCE struct paging_v920_ies_s { // member variables bool cmas_ind_r9_present; bool non_crit_ext_present; paging_v1130_ies_s non_crit_ext; // sequence methods paging_v920_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PagingRecord ::= SEQUENCE struct paging_record_s { struct cn_domain_e_ { enum options { ps, cs }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods cn_domain_e_() {} cn_domain_e_(options v) : value(v) {} cn_domain_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool ext; paging_ue_id_c ue_id; cn_domain_e_ cn_domain; // ... // sequence methods paging_record_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // Paging-v890-IEs ::= SEQUENCE struct paging_v890_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; paging_v920_ies_s non_crit_ext; // sequence methods paging_v890_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PagingRecordList ::= SEQUENCE (SIZE (1..maxPageRec)) OF PagingRecord typedef dyn_array paging_record_list_l; // Paging ::= SEQUENCE struct paging_s { // member variables bool paging_record_list_present; bool sys_info_mod_present; bool etws_ind_present; bool non_crit_ext_present; paging_record_list_l paging_record_list; paging_v890_ies_s non_crit_ext; // sequence methods paging_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PCCH-MessageType ::= CHOICE struct pcch_msg_type_c { struct c1_c_ { struct types { enum options { paging, nulltype }; options value; static const uint32_t nof_types = 1, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters paging_s& paging() { assert_choice_type("paging", type_.to_string(), "c1"); return c; } const paging_s& paging() const { assert_choice_type("paging", type_.to_string(), "c1"); return c; } private: types type_; paging_s c; }; struct types { enum options { c1, msg_class_ext, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods pcch_msg_type_c() : type_(types::nulltype) {} pcch_msg_type_c(const pcch_msg_type_c& other); pcch_msg_type_c& operator=(const pcch_msg_type_c& other); ~pcch_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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "PCCH-MessageType"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "PCCH-MessageType"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // PCCH-Message ::= SEQUENCE struct pcch_msg_s { // member variables pcch_msg_type_c msg; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MBMSSessionInfo-r13 ::= SEQUENCE struct mbms_session_info_r13_s { // member variables bool session_id_r13_present; tmgi_r9_s tmgi_r13; fixed_octstring<1> session_id_r13; // sequence methods mbms_session_info_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SC-MTCH-SchedulingInfo-BR-r14 ::= SEQUENCE struct sc_mtch_sched_info_br_r14_s { struct on_dur_timer_scptm_r14_e_ { enum options { psf300, psf400, psf500, psf600, psf800, psf1000, psf1200, psf1600 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods on_dur_timer_scptm_r14_e_() {} on_dur_timer_scptm_r14_e_(options v) : value(v) {} on_dur_timer_scptm_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct drx_inactivity_timer_scptm_r14_e_ { enum options { psf0, psf1, psf2, psf4, psf8, psf16, psf32, psf64, psf128, psf256, ps512, psf1024, psf2048, psf4096, psf8192, psf16384 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods drx_inactivity_timer_scptm_r14_e_() {} drx_inactivity_timer_scptm_r14_e_(options v) : value(v) {} drx_inactivity_timer_scptm_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct sched_period_start_offset_scptm_r14_c_ { struct types { enum options { sf10, sf20, sf32, sf40, sf64, sf80, sf128, sf160, sf256, sf320, sf512, sf640, sf1024, sf2048, sf4096, sf8192, nulltype }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // choice methods sched_period_start_offset_scptm_r14_c_() : type_(types::nulltype) {} sched_period_start_offset_scptm_r14_c_(const sched_period_start_offset_scptm_r14_c_& other); sched_period_start_offset_scptm_r14_c_& operator=(const sched_period_start_offset_scptm_r14_c_& other); ~sched_period_start_offset_scptm_r14_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint8_t& sf10() { assert_choice_type("sf10", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint8_t& sf20() { assert_choice_type("sf20", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint8_t& sf32() { assert_choice_type("sf32", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint8_t& sf40() { assert_choice_type("sf40", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint8_t& sf64() { assert_choice_type("sf64", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint8_t& sf80() { assert_choice_type("sf80", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint8_t& sf128() { assert_choice_type("sf128", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint8_t& sf160() { assert_choice_type("sf160", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint8_t& sf256() { assert_choice_type("sf256", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint16_t& sf320() { assert_choice_type("sf320", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint16_t& sf512() { assert_choice_type("sf512", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint16_t& sf640() { assert_choice_type("sf640", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint16_t& sf1024() { assert_choice_type("sf1024", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint16_t& sf2048() { assert_choice_type("sf2048", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint16_t& sf4096() { assert_choice_type("sf4096", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } uint16_t& sf8192() { assert_choice_type("sf8192", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint8_t& sf10() const { assert_choice_type("sf10", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint8_t& sf20() const { assert_choice_type("sf20", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint8_t& sf32() const { assert_choice_type("sf32", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint8_t& sf40() const { assert_choice_type("sf40", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint8_t& sf64() const { assert_choice_type("sf64", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint8_t& sf80() const { assert_choice_type("sf80", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint8_t& sf128() const { assert_choice_type("sf128", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint8_t& sf160() const { assert_choice_type("sf160", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint8_t& sf256() const { assert_choice_type("sf256", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint16_t& sf320() const { assert_choice_type("sf320", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint16_t& sf512() const { assert_choice_type("sf512", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint16_t& sf640() const { assert_choice_type("sf640", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint16_t& sf1024() const { assert_choice_type("sf1024", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint16_t& sf2048() const { assert_choice_type("sf2048", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint16_t& sf4096() const { assert_choice_type("sf4096", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } const uint16_t& sf8192() const { assert_choice_type("sf8192", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r14"); return c.get(); } private: types type_; choice_buffer_t<8> c; void destroy_(); }; // member variables bool ext; on_dur_timer_scptm_r14_e_ on_dur_timer_scptm_r14; drx_inactivity_timer_scptm_r14_e_ drx_inactivity_timer_scptm_r14; sched_period_start_offset_scptm_r14_c_ sched_period_start_offset_scptm_r14; // ... // sequence methods sc_mtch_sched_info_br_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SC-MTCH-SchedulingInfo-r13 ::= SEQUENCE struct sc_mtch_sched_info_r13_s { struct on_dur_timer_scptm_r13_e_ { enum options { psf1, psf2, psf3, psf4, psf5, psf6, psf8, psf10, psf20, psf30, psf40, psf50, psf60, psf80, psf100, psf200 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods on_dur_timer_scptm_r13_e_() {} on_dur_timer_scptm_r13_e_(options v) : value(v) {} on_dur_timer_scptm_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct drx_inactivity_timer_scptm_r13_e_ { enum options { psf0, psf1, psf2, psf4, psf8, psf10, psf20, psf40, psf80, psf160, ps320, psf640, psf960, psf1280, psf1920, psf2560 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods drx_inactivity_timer_scptm_r13_e_() {} drx_inactivity_timer_scptm_r13_e_(options v) : value(v) {} drx_inactivity_timer_scptm_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct sched_period_start_offset_scptm_r13_c_ { struct types { enum options { sf10, sf20, sf32, sf40, sf64, sf80, sf128, sf160, sf256, sf320, sf512, sf640, sf1024, sf2048, sf4096, sf8192, nulltype }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // choice methods sched_period_start_offset_scptm_r13_c_() : type_(types::nulltype) {} sched_period_start_offset_scptm_r13_c_(const sched_period_start_offset_scptm_r13_c_& other); sched_period_start_offset_scptm_r13_c_& operator=(const sched_period_start_offset_scptm_r13_c_& other); ~sched_period_start_offset_scptm_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(bit_ref& bref); void to_json(json_writer& j) const; // getters uint8_t& sf10() { assert_choice_type("sf10", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } uint8_t& sf20() { assert_choice_type("sf20", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } uint8_t& sf32() { assert_choice_type("sf32", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } uint8_t& sf40() { assert_choice_type("sf40", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } uint8_t& sf64() { assert_choice_type("sf64", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } uint8_t& sf80() { assert_choice_type("sf80", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } uint8_t& sf128() { assert_choice_type("sf128", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } uint8_t& sf160() { assert_choice_type("sf160", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } uint8_t& sf256() { assert_choice_type("sf256", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } uint16_t& sf320() { assert_choice_type("sf320", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } uint16_t& sf512() { assert_choice_type("sf512", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } uint16_t& sf640() { assert_choice_type("sf640", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } uint16_t& sf1024() { assert_choice_type("sf1024", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } uint16_t& sf2048() { assert_choice_type("sf2048", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } uint16_t& sf4096() { assert_choice_type("sf4096", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } uint16_t& sf8192() { assert_choice_type("sf8192", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } const uint8_t& sf10() const { assert_choice_type("sf10", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } const uint8_t& sf20() const { assert_choice_type("sf20", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } const uint8_t& sf32() const { assert_choice_type("sf32", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } const uint8_t& sf40() const { assert_choice_type("sf40", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } const uint8_t& sf64() const { assert_choice_type("sf64", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } const uint8_t& sf80() const { assert_choice_type("sf80", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } const uint8_t& sf128() const { assert_choice_type("sf128", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } const uint8_t& sf160() const { assert_choice_type("sf160", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } const uint8_t& sf256() const { assert_choice_type("sf256", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } const uint16_t& sf320() const { assert_choice_type("sf320", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } const uint16_t& sf512() const { assert_choice_type("sf512", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } const uint16_t& sf640() const { assert_choice_type("sf640", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } const uint16_t& sf1024() const { assert_choice_type("sf1024", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } const uint16_t& sf2048() const { assert_choice_type("sf2048", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } const uint16_t& sf4096() const { assert_choice_type("sf4096", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } const uint16_t& sf8192() const { assert_choice_type("sf8192", type_.to_string(), "schedulingPeriodStartOffsetSCPTM-r13"); return c.get(); } private: types type_; choice_buffer_t<8> c; void destroy_(); }; // member variables bool ext; on_dur_timer_scptm_r13_e_ on_dur_timer_scptm_r13; drx_inactivity_timer_scptm_r13_e_ drx_inactivity_timer_scptm_r13; sched_period_start_offset_scptm_r13_c_ sched_period_start_offset_scptm_r13; // ... // sequence methods sc_mtch_sched_info_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PCI-ARFCN-r13 ::= SEQUENCE struct pci_arfcn_r13_s { // member variables bool carrier_freq_r13_present; uint16_t pci_r13; uint32_t carrier_freq_r13; // sequence methods pci_arfcn_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SC-MTCH-Info-BR-r14 ::= SEQUENCE struct sc_mtch_info_br_r14_s { struct mpdcch_num_repeat_sc_mtch_r14_e_ { enum options { r1, r2, r4, r8, r16, r32, r64, r128, r256 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 9, nof_exts = 0; static const bool has_ext = false; // enumerated methods mpdcch_num_repeat_sc_mtch_r14_e_() {} mpdcch_num_repeat_sc_mtch_r14_e_(options v) : value(v) {} mpdcch_num_repeat_sc_mtch_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct mpdcch_start_sf_sc_mtch_r14_c_ { struct fdd_r14_e_ { enum options { v1, v1dot5, v2, v2dot5, v4, v5, v8, v10 }; typedef float number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods fdd_r14_e_() {} fdd_r14_e_(options v) : value(v) {} fdd_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; struct tdd_r14_e_ { enum options { v1, v2, v4, v5, v8, v10, v20 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 7, nof_exts = 0; static const bool has_ext = false; // enumerated methods tdd_r14_e_() {} tdd_r14_e_(options v) : value(v) {} tdd_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct types { enum options { fdd_r14, tdd_r14, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods mpdcch_start_sf_sc_mtch_r14_c_() : type_(types::nulltype) {} mpdcch_start_sf_sc_mtch_r14_c_(const mpdcch_start_sf_sc_mtch_r14_c_& other); mpdcch_start_sf_sc_mtch_r14_c_& operator=(const mpdcch_start_sf_sc_mtch_r14_c_& other); ~mpdcch_start_sf_sc_mtch_r14_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters fdd_r14_e_& fdd_r14() { assert_choice_type("fdd-r14", type_.to_string(), "mpdcch-StartSF-SC-MTCH-r14"); return c.get(); } tdd_r14_e_& tdd_r14() { assert_choice_type("tdd-r14", type_.to_string(), "mpdcch-StartSF-SC-MTCH-r14"); return c.get(); } const fdd_r14_e_& fdd_r14() const { assert_choice_type("fdd-r14", type_.to_string(), "mpdcch-StartSF-SC-MTCH-r14"); return c.get(); } const tdd_r14_e_& tdd_r14() const { assert_choice_type("tdd-r14", type_.to_string(), "mpdcch-StartSF-SC-MTCH-r14"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct mpdcch_pdsch_hop_cfg_sc_mtch_r14_e_ { enum options { on, off }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods mpdcch_pdsch_hop_cfg_sc_mtch_r14_e_() {} mpdcch_pdsch_hop_cfg_sc_mtch_r14_e_(options v) : value(v) {} mpdcch_pdsch_hop_cfg_sc_mtch_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct mpdcch_pdsch_cemode_cfg_sc_mtch_r14_e_ { enum options { ce_mode_a, ce_mode_b }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods mpdcch_pdsch_cemode_cfg_sc_mtch_r14_e_() {} mpdcch_pdsch_cemode_cfg_sc_mtch_r14_e_(options v) : value(v) {} mpdcch_pdsch_cemode_cfg_sc_mtch_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct mpdcch_pdsch_max_bw_sc_mtch_r14_e_ { enum options { bw1dot4, bw5 }; typedef float number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods mpdcch_pdsch_max_bw_sc_mtch_r14_e_() {} mpdcch_pdsch_max_bw_sc_mtch_r14_e_(options v) : value(v) {} mpdcch_pdsch_max_bw_sc_mtch_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; struct mpdcch_offset_sc_mtch_r14_e_ { enum options { zero, one_eighth, one_quarter, three_eighth, one_half, five_eighth, three_quarter, seven_eighth }; typedef float number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods mpdcch_offset_sc_mtch_r14_e_() {} mpdcch_offset_sc_mtch_r14_e_(options v) : value(v) {} mpdcch_offset_sc_mtch_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; struct p_a_r14_e_ { enum options { db_minus6, db_minus4dot77, db_minus3, db_minus1dot77, db0, db1, db2, db3 }; typedef float number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods p_a_r14_e_() {} p_a_r14_e_(options v) : value(v) {} p_a_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; // member variables bool ext; bool sc_mtch_sched_info_r14_present; bool sc_mtch_neighbour_cell_r14_present; bool p_a_r14_present; uint32_t sc_mtch_carrier_freq_r14; mbms_session_info_r13_s mbms_session_info_r14; fixed_bitstring<16> g_rnti_r14; sc_mtch_sched_info_br_r14_s sc_mtch_sched_info_r14; fixed_bitstring<8> sc_mtch_neighbour_cell_r14; uint8_t mpdcch_nb_sc_mtch_r14; mpdcch_num_repeat_sc_mtch_r14_e_ mpdcch_num_repeat_sc_mtch_r14; mpdcch_start_sf_sc_mtch_r14_c_ mpdcch_start_sf_sc_mtch_r14; mpdcch_pdsch_hop_cfg_sc_mtch_r14_e_ mpdcch_pdsch_hop_cfg_sc_mtch_r14; mpdcch_pdsch_cemode_cfg_sc_mtch_r14_e_ mpdcch_pdsch_cemode_cfg_sc_mtch_r14; mpdcch_pdsch_max_bw_sc_mtch_r14_e_ mpdcch_pdsch_max_bw_sc_mtch_r14; mpdcch_offset_sc_mtch_r14_e_ mpdcch_offset_sc_mtch_r14; p_a_r14_e_ p_a_r14; // ... // sequence methods sc_mtch_info_br_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SC-MTCH-Info-r13 ::= SEQUENCE struct sc_mtch_info_r13_s { struct p_a_r13_e_ { enum options { db_minus6, db_minus4dot77, db_minus3, db_minus1dot77, db0, db1, db2, db3 }; typedef float number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods p_a_r13_e_() {} p_a_r13_e_(options v) : value(v) {} p_a_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; // member variables bool ext; bool sc_mtch_sched_info_r13_present; bool sc_mtch_neighbour_cell_r13_present; mbms_session_info_r13_s mbms_session_info_r13; fixed_bitstring<16> g_rnti_r13; sc_mtch_sched_info_r13_s sc_mtch_sched_info_r13; fixed_bitstring<8> sc_mtch_neighbour_cell_r13; // ... // group 0 bool p_a_r13_present; p_a_r13_e_ p_a_r13; // sequence methods sc_mtch_info_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SC-MTCH-InfoList-BR-r14 ::= SEQUENCE (SIZE (0..maxSC-MTCH-BR-r14)) OF SC-MTCH-Info-BR-r14 typedef dyn_array sc_mtch_info_list_br_r14_l; // SC-MTCH-InfoList-r13 ::= SEQUENCE (SIZE (0..maxSC-MTCH-r13)) OF SC-MTCH-Info-r13 typedef dyn_array sc_mtch_info_list_r13_l; // SCPTM-NeighbourCellList-r13 ::= SEQUENCE (SIZE (1..maxNeighCell-SCPTM-r13)) OF PCI-ARFCN-r13 typedef dyn_array scptm_neighbour_cell_list_r13_l; // SCPTMConfiguration-v1340 ::= SEQUENCE struct scptm_cfg_v1340_s { // member variables bool p_b_r13_present; bool non_crit_ext_present; uint8_t p_b_r13; // sequence methods scptm_cfg_v1340_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCPTMConfiguration-BR-r14 ::= SEQUENCE struct scptm_cfg_br_r14_s { // member variables bool scptm_neighbour_cell_list_r14_present; bool p_b_r14_present; bool late_non_crit_ext_present; bool non_crit_ext_present; sc_mtch_info_list_br_r14_l sc_mtch_info_list_r14; scptm_neighbour_cell_list_r13_l scptm_neighbour_cell_list_r14; uint8_t p_b_r14; dyn_octstring late_non_crit_ext; // sequence methods scptm_cfg_br_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCPTMConfiguration-r13 ::= SEQUENCE struct scptm_cfg_r13_s { // member variables bool scptm_neighbour_cell_list_r13_present; bool late_non_crit_ext_present; bool non_crit_ext_present; sc_mtch_info_list_r13_l sc_mtch_info_list_r13; scptm_neighbour_cell_list_r13_l scptm_neighbour_cell_list_r13; dyn_octstring late_non_crit_ext; scptm_cfg_v1340_s non_crit_ext; // sequence methods scptm_cfg_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SC-MCCH-MessageType-r13 ::= CHOICE struct sc_mcch_msg_type_r13_c { struct c1_c_ { struct types { enum options { scptm_cfg_r13, nulltype }; options value; static const uint32_t nof_types = 1, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters scptm_cfg_r13_s& scptm_cfg_r13() { assert_choice_type("scptmConfiguration-r13", type_.to_string(), "c1"); return c; } const scptm_cfg_r13_s& scptm_cfg_r13() const { assert_choice_type("scptmConfiguration-r13", type_.to_string(), "c1"); return c; } private: types type_; scptm_cfg_r13_s c; }; struct msg_class_ext_c_ { struct c2_c_ { struct types { enum options { scptm_cfg_br_r14, spare, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c2_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters scptm_cfg_br_r14_s& scptm_cfg_br_r14() { assert_choice_type("scptmConfiguration-BR-r14", type_.to_string(), "c2"); return c; } const scptm_cfg_br_r14_s& scptm_cfg_br_r14() const { assert_choice_type("scptmConfiguration-BR-r14", type_.to_string(), "c2"); return c; } private: types type_; scptm_cfg_br_r14_s c; }; struct types { enum options { c2, msg_class_ext_future_r14, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods msg_class_ext_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c2_c_& c2() { assert_choice_type("c2", type_.to_string(), "messageClassExtension"); return c.get(); } const c2_c_& c2() const { assert_choice_type("c2", type_.to_string(), "messageClassExtension"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct types { enum options { c1, msg_class_ext, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods sc_mcch_msg_type_r13_c() : type_(types::nulltype) {} sc_mcch_msg_type_r13_c(const sc_mcch_msg_type_r13_c& other); sc_mcch_msg_type_r13_c& operator=(const sc_mcch_msg_type_r13_c& other); ~sc_mcch_msg_type_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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "SC-MCCH-MessageType-r13"); return c.get(); } msg_class_ext_c_& msg_class_ext() { assert_choice_type("messageClassExtension", type_.to_string(), "SC-MCCH-MessageType-r13"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "SC-MCCH-MessageType-r13"); return c.get(); } const msg_class_ext_c_& msg_class_ext() const { assert_choice_type("messageClassExtension", type_.to_string(), "SC-MCCH-MessageType-r13"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // SC-MCCH-Message-r13 ::= SEQUENCE struct sc_mcch_msg_r13_s { // member variables sc_mcch_msg_type_r13_c msg; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // EstablishmentCause ::= ENUMERATED struct establishment_cause_e { enum options { emergency, high_prio_access, mt_access, mo_sig, mo_data, delay_tolerant_access_v1020, mo_voice_call_v1280, spare1 }; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods establishment_cause_e() {} establishment_cause_e(options v) : value(v) {} establishment_cause_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // InitialUE-Identity ::= CHOICE struct init_ue_id_c { struct types { enum options { s_tmsi, random_value, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods init_ue_id_c() : type_(types::nulltype) {} 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(bit_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 >(); } private: types type_; choice_buffer_t), sizeof(s_tmsi_s))> c; void destroy_(); }; // ReestabUE-Identity ::= SEQUENCE struct reestab_ue_id_s { // member variables fixed_bitstring<16> c_rnti; uint16_t pci; fixed_bitstring<16> short_mac_i; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // ReestablishmentCause ::= ENUMERATED struct reest_cause_e { enum options { recfg_fail, ho_fail, other_fail, spare1 }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods reest_cause_e() {} reest_cause_e(options v) : value(v) {} reest_cause_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // ResumeCause ::= ENUMERATED struct resume_cause_e { enum options { emergency, high_prio_access, mt_access, mo_sig, mo_data, delay_tolerant_access_v1020, mo_voice_call_v1280, spare1 }; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods resume_cause_e() {} resume_cause_e(options v) : value(v) {} resume_cause_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // ResumeCause-r15 ::= ENUMERATED struct resume_cause_r15_e { enum options { emergency, high_prio_access, mt_access, mo_sig, mo_data, rna_update, mo_voice_call, spare1 }; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods resume_cause_r15_e() {} resume_cause_r15_e(options v) : value(v) {} resume_cause_r15_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // RRCConnectionReestablishmentRequest-r8-IEs ::= SEQUENCE struct rrc_conn_reest_request_r8_ies_s { // member variables 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(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionRequest-r8-IEs ::= SEQUENCE struct rrc_conn_request_r8_ies_s { // member variables 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(bit_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 { enum options { full_i_rnti_r15, short_i_rnti_r15, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods resume_id_r15_c_() : type_(types::nulltype) {} 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(bit_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 >(); } 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(bit_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 { enum options { resume_id_r13, truncated_resume_id_r13, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods resume_id_r13_c_() : type_(types::nulltype) {} 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(bit_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 >(); } 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(bit_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_e_ { enum options { mo_data_r15, delay_tolerant_access_r15 }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods establishment_cause_r15_e_() {} establishment_cause_r15_e_(options v) : value(v) {} establishment_cause_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool non_crit_ext_present; s_tmsi_s s_tmsi_r15; establishment_cause_r15_e_ establishment_cause_r15; dyn_octstring ded_info_nas_r15; // sequence methods rrc_early_data_request_r15_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReestablishmentRequest ::= SEQUENCE struct rrc_conn_reest_request_s { struct crit_exts_c_ { struct types { enum options { rrc_conn_reest_request_r8, crit_exts_future, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_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(); } 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(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionRequest ::= SEQUENCE struct rrc_conn_request_s { struct crit_exts_c_ { struct types { enum options { rrc_conn_request_r8, crit_exts_future, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_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(); } const rrc_conn_request_r8_ies_s& rrc_conn_request_r8() const { assert_choice_type("rrcConnectionRequest-r8", type_.to_string(), "criticalExtensions"); 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(bit_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 { enum options { rrc_conn_resume_request_r13, rrc_conn_resume_request_r15, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_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(); } 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(bit_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 { enum options { rrc_early_data_request_r15, crit_exts_future, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_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(); } 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(bit_ref& bref); void to_json(json_writer& j) const; }; // UL-CCCH-MessageType ::= CHOICE struct ul_ccch_msg_type_c { struct c1_c_ { struct types { enum options { rrc_conn_reest_request, rrc_conn_request, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} 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(bit_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(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct msg_class_ext_c_ { struct c2_c_ { struct types { enum options { rrc_conn_resume_request_r13, nulltype }; options value; static const uint32_t nof_types = 1, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c2_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters rrc_conn_resume_request_r13_s& rrc_conn_resume_request_r13() { assert_choice_type("rrcConnectionResumeRequest-r13", type_.to_string(), "c2"); return c; } const rrc_conn_resume_request_r13_s& rrc_conn_resume_request_r13() const { assert_choice_type("rrcConnectionResumeRequest-r13", type_.to_string(), "c2"); return c; } private: types type_; rrc_conn_resume_request_r13_s c; }; struct msg_class_ext_future_r13_c_ { struct c3_c_ { struct types { enum options { rrc_early_data_request_r15, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c3_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_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; } private: types type_; rrc_early_data_request_r15_s c; }; struct types { enum options { c3, msg_class_ext_future_r15, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods msg_class_ext_future_r13_c_() : type_(types::nulltype) {} 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(bit_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(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct types { enum options { c2, msg_class_ext_future_r13, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods msg_class_ext_c_() : type_(types::nulltype) {} 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(bit_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(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct types { enum options { c1, msg_class_ext, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods ul_ccch_msg_type_c() : type_(types::nulltype) {} 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(bit_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(); } private: types type_; choice_buffer_t c; void destroy_(); }; // UL-CCCH-Message ::= SEQUENCE struct ul_ccch_msg_s { // member variables ul_ccch_msg_type_c msg; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellGlobalIdCDMA2000 ::= CHOICE struct cell_global_id_cdma2000_c { struct types { enum options { cell_global_id1_xrtt, cell_global_id_hrpd, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods cell_global_id_cdma2000_c() : type_(types::nulltype) {} cell_global_id_cdma2000_c(const cell_global_id_cdma2000_c& other); cell_global_id_cdma2000_c& operator=(const cell_global_id_cdma2000_c& other); ~cell_global_id_cdma2000_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<47>& cell_global_id1_xrtt() { assert_choice_type("cellGlobalId1XRTT", type_.to_string(), "CellGlobalIdCDMA2000"); return c.get >(); } fixed_bitstring<128>& cell_global_id_hrpd() { assert_choice_type("cellGlobalIdHRPD", type_.to_string(), "CellGlobalIdCDMA2000"); return c.get >(); } const fixed_bitstring<47>& cell_global_id1_xrtt() const { assert_choice_type("cellGlobalId1XRTT", type_.to_string(), "CellGlobalIdCDMA2000"); return c.get >(); } const fixed_bitstring<128>& cell_global_id_hrpd() const { assert_choice_type("cellGlobalIdHRPD", type_.to_string(), "CellGlobalIdCDMA2000"); return c.get >(); } private: types type_; choice_buffer_t)> c; void destroy_(); }; // AdditionalSI-Info-r9 ::= SEQUENCE struct add_si_info_r9_s { // member variables bool csg_member_status_r9_present; bool csg_id_r9_present; fixed_bitstring<27> csg_id_r9; // sequence methods add_si_info_r9_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BLER-Result-r12 ::= SEQUENCE struct bler_result_r12_s { struct blocks_rx_r12_s_ { // member variables fixed_bitstring<3> n_r12; fixed_bitstring<8> m_r12; }; // member variables uint8_t bler_r12; blocks_rx_r12_s_ blocks_rx_r12; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CellGlobalIdUTRA ::= SEQUENCE struct cell_global_id_utra_s { // member variables plmn_id_s plmn_id; fixed_bitstring<28> cell_id; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResultCDMA2000 ::= SEQUENCE struct meas_result_cdma2000_s { struct meas_result_s_ { // member variables bool ext; bool pilot_pn_phase_present; uint16_t pilot_pn_phase; uint8_t pilot_strength; // ... // sequence methods meas_result_s_(); }; // member variables bool cgi_info_present; uint16_t pci; cell_global_id_cdma2000_c cgi_info; meas_result_s_ meas_result; // sequence methods meas_result_cdma2000_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PLMN-IdentityList2 ::= SEQUENCE (SIZE (1..5)) OF PLMN-Identity typedef dyn_array plmn_id_list2_l; // CellGlobalIdGERAN ::= SEQUENCE struct cell_global_id_geran_s { // member variables plmn_id_s plmn_id; fixed_bitstring<16> location_area_code; fixed_bitstring<16> cell_id; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DataBLER-MCH-Result-r12 ::= SEQUENCE struct data_bler_mch_result_r12_s { // member variables uint8_t mch_idx_r12; bler_result_r12_s data_bler_result_r12; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResultEUTRA ::= SEQUENCE struct meas_result_eutra_s { struct cgi_info_s_ { // member variables bool plmn_id_list_present; cell_global_id_eutra_s cell_global_id; fixed_bitstring<16> tac; plmn_id_list2_l plmn_id_list; // sequence methods cgi_info_s_(); }; struct meas_result_s_ { struct cgi_info_v1310_s_ { // member variables bool freq_band_ind_r13_present; bool multi_band_info_list_r13_present; bool freq_band_ind_prio_r13_present; uint16_t freq_band_ind_r13; multi_band_info_list_r11_l multi_band_info_list_r13; // sequence methods cgi_info_v1310_s_(); }; typedef dyn_array cgi_info_minus5_gc_r15_l_; // member variables bool ext; bool rsrp_result_present; bool rsrq_result_present; uint8_t rsrp_result; uint8_t rsrq_result; // ... // group 0 bool add_si_info_r9_present; copy_ptr add_si_info_r9; // group 1 bool primary_plmn_suitable_r12_present; bool meas_result_v1250_present; int8_t meas_result_v1250; // group 2 bool rs_sinr_result_r13_present; bool cgi_info_v1310_present; uint8_t rs_sinr_result_r13; copy_ptr cgi_info_v1310; // group 3 bool meas_result_v1360_present; int8_t meas_result_v1360; // group 4 bool cgi_info_minus5_gc_r15_present; copy_ptr cgi_info_minus5_gc_r15; // sequence methods meas_result_s_(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // member variables bool cgi_info_present; uint16_t pci; cgi_info_s_ cgi_info; meas_result_s_ meas_result; // sequence methods meas_result_eutra_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResultIdleEUTRA-r15 ::= SEQUENCE struct meas_result_idle_eutra_r15_s { struct meas_result_r15_s_ { // member variables uint8_t rsrp_result_r15; int8_t rsrq_result_r15; }; // member variables bool ext; uint32_t carrier_freq_r15; uint16_t pci_r15; meas_result_r15_s_ meas_result_r15; // ... // sequence methods meas_result_idle_eutra_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResultListCDMA2000 ::= SEQUENCE (SIZE (1..maxCellReport)) OF MeasResultCDMA2000 typedef dyn_array meas_result_list_cdma2000_l; // MeasResultUTRA ::= SEQUENCE struct meas_result_utra_s { struct pci_c_ { struct types { enum options { fdd, tdd, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods pci_c_() : type_(types::nulltype) {} pci_c_(const pci_c_& other); pci_c_& operator=(const pci_c_& other); ~pci_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint16_t& fdd() { assert_choice_type("fdd", type_.to_string(), "physCellId"); return c.get(); } uint8_t& tdd() { assert_choice_type("tdd", type_.to_string(), "physCellId"); return c.get(); } const uint16_t& fdd() const { assert_choice_type("fdd", type_.to_string(), "physCellId"); return c.get(); } const uint8_t& tdd() const { assert_choice_type("tdd", type_.to_string(), "physCellId"); return c.get(); } private: types type_; choice_buffer_t<8> c; void destroy_(); }; struct cgi_info_s_ { // member variables bool location_area_code_present; bool routing_area_code_present; bool plmn_id_list_present; cell_global_id_utra_s cell_global_id; fixed_bitstring<16> location_area_code; fixed_bitstring<8> routing_area_code; plmn_id_list2_l plmn_id_list; // sequence methods cgi_info_s_(); }; struct meas_result_s_ { // member variables bool ext; bool utra_rscp_present; bool utra_ec_n0_present; int8_t utra_rscp; uint8_t utra_ec_n0; // ... // group 0 bool add_si_info_r9_present; copy_ptr add_si_info_r9; // group 1 bool primary_plmn_suitable_r12_present; // sequence methods meas_result_s_(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // member variables bool cgi_info_present; pci_c_ pci; cgi_info_s_ cgi_info; meas_result_s_ meas_result; // sequence methods meas_result_utra_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PLMN-IdentityListNR-r15 ::= SEQUENCE (SIZE (1.. maxPLMN-NR-r15)) OF PLMN-Identity typedef dyn_array plmn_id_list_nr_r15_l; // RegisteredAMF-r15 ::= SEQUENCE struct registered_amf_r15_s { // member variables bool plmn_id_r15_present; plmn_id_s plmn_id_r15; fixed_bitstring<24> amf_id_r15; // sequence methods registered_amf_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // S-NSSAI-r15 ::= CHOICE struct s_nssai_r15_c { struct types { enum options { sst, sst_sd, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods s_nssai_r15_c() : type_(types::nulltype) {} s_nssai_r15_c(const s_nssai_r15_c& other); s_nssai_r15_c& operator=(const s_nssai_r15_c& other); ~s_nssai_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(bit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<8>& sst() { assert_choice_type("sst", type_.to_string(), "S-NSSAI-r15"); return c.get >(); } fixed_bitstring<32>& sst_sd() { assert_choice_type("sst-SD", type_.to_string(), "S-NSSAI-r15"); return c.get >(); } const fixed_bitstring<8>& sst() const { assert_choice_type("sst", type_.to_string(), "S-NSSAI-r15"); return c.get >(); } const fixed_bitstring<32>& sst_sd() const { assert_choice_type("sst-SD", type_.to_string(), "S-NSSAI-r15"); return c.get >(); } private: types type_; choice_buffer_t)> c; void destroy_(); }; // DataBLER-MCH-ResultList-r12 ::= SEQUENCE (SIZE (1.. maxPMCH-PerMBSFN)) OF DataBLER-MCH-Result-r12 typedef dyn_array data_bler_mch_result_list_r12_l; // LocationInfo-r10 ::= SEQUENCE struct location_info_r10_s { struct location_coordinates_r10_c_ { struct types { enum options { ellipsoid_point_r10, ellipsoid_point_with_altitude_r10, // ... ellipsoid_point_with_uncertainty_circle_r11, ellipsoid_point_with_uncertainty_ellipse_r11, ellipsoid_point_with_altitude_and_uncertainty_ellipsoid_r11, ellipsoid_arc_r11, polygon_r11, nulltype }; options value; static const uint32_t nof_types = 7, nof_exts = 5; static const bool has_ext = true; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods location_coordinates_r10_c_() : type_(types::nulltype) {} location_coordinates_r10_c_(const location_coordinates_r10_c_& other); location_coordinates_r10_c_& operator=(const location_coordinates_r10_c_& other); ~location_coordinates_r10_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters dyn_octstring& ellipsoid_point_r10() { assert_choice_type("ellipsoid-Point-r10", type_.to_string(), "locationCoordinates-r10"); return c.get(); } dyn_octstring& ellipsoid_point_with_altitude_r10() { assert_choice_type("ellipsoidPointWithAltitude-r10", type_.to_string(), "locationCoordinates-r10"); return c.get(); } dyn_octstring& ellipsoid_point_with_uncertainty_circle_r11() { assert_choice_type("ellipsoidPointWithUncertaintyCircle-r11", type_.to_string(), "locationCoordinates-r10"); return c.get(); } dyn_octstring& ellipsoid_point_with_uncertainty_ellipse_r11() { assert_choice_type("ellipsoidPointWithUncertaintyEllipse-r11", type_.to_string(), "locationCoordinates-r10"); return c.get(); } dyn_octstring& ellipsoid_point_with_altitude_and_uncertainty_ellipsoid_r11() { assert_choice_type("ellipsoidPointWithAltitudeAndUncertaintyEllipsoid-r11", type_.to_string(), "locationCoordinates-r10"); return c.get(); } dyn_octstring& ellipsoid_arc_r11() { assert_choice_type("ellipsoidArc-r11", type_.to_string(), "locationCoordinates-r10"); return c.get(); } dyn_octstring& polygon_r11() { assert_choice_type("polygon-r11", type_.to_string(), "locationCoordinates-r10"); return c.get(); } const dyn_octstring& ellipsoid_point_r10() const { assert_choice_type("ellipsoid-Point-r10", type_.to_string(), "locationCoordinates-r10"); return c.get(); } const dyn_octstring& ellipsoid_point_with_altitude_r10() const { assert_choice_type("ellipsoidPointWithAltitude-r10", type_.to_string(), "locationCoordinates-r10"); return c.get(); } const dyn_octstring& ellipsoid_point_with_uncertainty_circle_r11() const { assert_choice_type("ellipsoidPointWithUncertaintyCircle-r11", type_.to_string(), "locationCoordinates-r10"); return c.get(); } const dyn_octstring& ellipsoid_point_with_uncertainty_ellipse_r11() const { assert_choice_type("ellipsoidPointWithUncertaintyEllipse-r11", type_.to_string(), "locationCoordinates-r10"); return c.get(); } const dyn_octstring& ellipsoid_point_with_altitude_and_uncertainty_ellipsoid_r11() const { assert_choice_type("ellipsoidPointWithAltitudeAndUncertaintyEllipsoid-r11", type_.to_string(), "locationCoordinates-r10"); return c.get(); } const dyn_octstring& ellipsoid_arc_r11() const { assert_choice_type("ellipsoidArc-r11", type_.to_string(), "locationCoordinates-r10"); return c.get(); } const dyn_octstring& polygon_r11() const { assert_choice_type("polygon-r11", type_.to_string(), "locationCoordinates-r10"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct vertical_velocity_info_r15_c_ { struct types { enum options { vertical_velocity_r15, vertical_velocity_and_uncertainty_r15, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods vertical_velocity_info_r15_c_() : type_(types::nulltype) {} vertical_velocity_info_r15_c_(const vertical_velocity_info_r15_c_& other); vertical_velocity_info_r15_c_& operator=(const vertical_velocity_info_r15_c_& other); ~vertical_velocity_info_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(bit_ref& bref); void to_json(json_writer& j) const; // getters dyn_octstring& vertical_velocity_r15() { assert_choice_type("verticalVelocity-r15", type_.to_string(), "verticalVelocityInfo-r15"); return c.get(); } dyn_octstring& vertical_velocity_and_uncertainty_r15() { assert_choice_type("verticalVelocityAndUncertainty-r15", type_.to_string(), "verticalVelocityInfo-r15"); return c.get(); } const dyn_octstring& vertical_velocity_r15() const { assert_choice_type("verticalVelocity-r15", type_.to_string(), "verticalVelocityInfo-r15"); return c.get(); } const dyn_octstring& vertical_velocity_and_uncertainty_r15() const { assert_choice_type("verticalVelocityAndUncertainty-r15", type_.to_string(), "verticalVelocityInfo-r15"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables bool ext; bool horizontal_velocity_r10_present; bool gnss_tod_msec_r10_present; location_coordinates_r10_c_ location_coordinates_r10; dyn_octstring horizontal_velocity_r10; dyn_octstring gnss_tod_msec_r10; // ... // group 0 bool vertical_velocity_info_r15_present; copy_ptr vertical_velocity_info_r15; // sequence methods location_info_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResultGERAN ::= SEQUENCE struct meas_result_geran_s { struct cgi_info_s_ { // member variables bool routing_area_code_present; cell_global_id_geran_s cell_global_id; fixed_bitstring<8> routing_area_code; // sequence methods cgi_info_s_(); }; struct meas_result_s_ { // member variables bool ext; uint8_t rssi; // ... // sequence methods meas_result_s_(); }; // member variables bool cgi_info_present; carrier_freq_geran_s carrier_freq; pci_geran_s pci; cgi_info_s_ cgi_info; meas_result_s_ meas_result; // sequence methods meas_result_geran_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResultIdleListEUTRA-r15 ::= SEQUENCE (SIZE (1..maxCellMeasIdle-r15)) OF MeasResultIdleEUTRA-r15 typedef dyn_array meas_result_idle_list_eutra_r15_l; // MeasResultListEUTRA ::= SEQUENCE (SIZE (1..maxCellReport)) OF MeasResultEUTRA typedef dyn_array meas_result_list_eutra_l; // MeasResultListUTRA ::= SEQUENCE (SIZE (1..maxCellReport)) OF MeasResultUTRA typedef dyn_array meas_result_list_utra_l; // MeasResultNR-r15 ::= SEQUENCE struct meas_result_nr_r15_s { // member variables bool ext; bool rsrp_result_r15_present; bool rsrq_result_r15_present; bool rs_sinr_result_r15_present; uint8_t rsrp_result_r15; uint8_t rsrq_result_r15; uint8_t rs_sinr_result_r15; // ... // sequence methods meas_result_nr_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResultsCDMA2000 ::= SEQUENCE struct meas_results_cdma2000_s { // member variables bool pre_regist_status_hrpd; meas_result_list_cdma2000_l meas_result_list_cdma2000; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PLMN-IdentityInfoNR-r15 ::= SEQUENCE struct plmn_id_info_nr_r15_s { // member variables bool tac_r15_present; bool ran_area_code_r15_present; plmn_id_list_nr_r15_l plmn_id_list_r15; fixed_bitstring<24> tac_r15; uint8_t ran_area_code_r15; fixed_bitstring<36> cell_id_r15; // sequence methods plmn_id_info_nr_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionSetupComplete-v1530-IEs ::= SEQUENCE struct rrc_conn_setup_complete_v1530_ies_s { typedef dyn_array s_nssai_list_r15_l_; struct ng_minus5_g_s_tmsi_bits_r15_c_ { struct types { enum options { ng_minus5_g_s_tmsi_r15, ng_minus5_g_s_tmsi_part2_r15, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods ng_minus5_g_s_tmsi_bits_r15_c_() : type_(types::nulltype) {} ng_minus5_g_s_tmsi_bits_r15_c_(const ng_minus5_g_s_tmsi_bits_r15_c_& other); ng_minus5_g_s_tmsi_bits_r15_c_& operator=(const ng_minus5_g_s_tmsi_bits_r15_c_& other); ~ng_minus5_g_s_tmsi_bits_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(bit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<48>& ng_minus5_g_s_tmsi_r15() { assert_choice_type("ng-5G-S-TMSI-r15", type_.to_string(), "ng-5G-S-TMSI-Bits-r15"); return c.get >(); } fixed_bitstring<8>& ng_minus5_g_s_tmsi_part2_r15() { assert_choice_type("ng-5G-S-TMSI-Part2-r15", type_.to_string(), "ng-5G-S-TMSI-Bits-r15"); return c.get >(); } const fixed_bitstring<48>& ng_minus5_g_s_tmsi_r15() const { assert_choice_type("ng-5G-S-TMSI-r15", type_.to_string(), "ng-5G-S-TMSI-Bits-r15"); return c.get >(); } const fixed_bitstring<8>& ng_minus5_g_s_tmsi_part2_r15() const { assert_choice_type("ng-5G-S-TMSI-Part2-r15", type_.to_string(), "ng-5G-S-TMSI-Bits-r15"); return c.get >(); } private: types type_; choice_buffer_t)> c; void destroy_(); }; // member variables bool log_meas_available_bt_r15_present; bool log_meas_available_wlan_r15_present; bool idle_meas_available_r15_present; bool flight_path_info_available_r15_present; bool connect_to5_gc_r15_present; bool registered_amf_r15_present; bool s_nssai_list_r15_present; bool ng_minus5_g_s_tmsi_bits_r15_present; bool non_crit_ext_present; registered_amf_r15_s registered_amf_r15; s_nssai_list_r15_l_ s_nssai_list_r15; ng_minus5_g_s_tmsi_bits_r15_c_ ng_minus5_g_s_tmsi_bits_r15; // sequence methods rrc_conn_setup_complete_v1530_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RSRQ-Type-r12 ::= SEQUENCE struct rsrq_type_r12_s { // member variables bool all_symbols_r12; bool wide_band_r12; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // WLAN-RTT-r15 ::= SEQUENCE struct wlan_rtt_r15_s { struct rtt_units_r15_e_ { enum options { microseconds, hundredsofnanoseconds, tensofnanoseconds, nanoseconds, tenthsofnanoseconds, /*...*/ }; options value; static const uint32_t nof_types = 5, nof_exts = 0; static const bool has_ext = true; // enumerated methods rtt_units_r15_e_() {} rtt_units_r15_e_(options v) : value(v) {} rtt_units_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool ext; bool rtt_accuracy_r15_present; uint32_t rtt_value_r15; rtt_units_r15_e_ rtt_units_r15; uint8_t rtt_accuracy_r15; // ... // sequence methods wlan_rtt_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AffectedCarrierFreqComb-r15 ::= SEQUENCE (SIZE (1..maxServCell-r13)) OF INTEGER typedef bounded_array affected_carrier_freq_comb_r15_l; // AffectedCarrierFreqCombNR-r15 ::= SEQUENCE (SIZE (1..maxServCellNR-r15)) OF INTEGER typedef bounded_array affected_carrier_freq_comb_nr_r15_l; // LogMeasResultBT-r15 ::= SEQUENCE struct log_meas_result_bt_r15_s { // member variables bool ext; bool rssi_bt_r15_present; fixed_bitstring<48> bt_addr_r15; int8_t rssi_bt_r15; // ... // sequence methods log_meas_result_bt_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // LogMeasResultWLAN-r15 ::= SEQUENCE struct log_meas_result_wlan_r15_s { // member variables bool ext; bool rssi_wlan_r15_present; bool rtt_wlan_r15_present; wlan_ids_r12_s wlan_ids_r15; uint8_t rssi_wlan_r15; wlan_rtt_r15_s rtt_wlan_r15; // ... // sequence methods log_meas_result_wlan_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResult2CDMA2000-r9 ::= SEQUENCE struct meas_result2_cdma2000_r9_s { // member variables carrier_freq_cdma2000_s carrier_freq_r9; meas_results_cdma2000_s meas_result_list_r9; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResult2EUTRA-r9 ::= SEQUENCE struct meas_result2_eutra_r9_s { // member variables uint16_t carrier_freq_r9; meas_result_list_eutra_l meas_result_list_r9; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResult2EUTRA-v1250 ::= SEQUENCE struct meas_result2_eutra_v1250_s { // member variables bool rsrq_type_r12_present; rsrq_type_r12_s rsrq_type_r12; // sequence methods meas_result2_eutra_v1250_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResult2EUTRA-v9e0 ::= SEQUENCE struct meas_result2_eutra_v9e0_s { // member variables bool carrier_freq_v9e0_present; uint32_t carrier_freq_v9e0; // sequence methods meas_result2_eutra_v9e0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResult2UTRA-r9 ::= SEQUENCE struct meas_result2_utra_r9_s { // member variables uint16_t carrier_freq_r9; meas_result_list_utra_l meas_result_list_r9; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResultIdle-r15 ::= SEQUENCE struct meas_result_idle_r15_s { struct meas_result_serving_cell_r15_s_ { // member variables uint8_t rsrp_result_r15; int8_t rsrq_result_r15; }; struct meas_result_neigh_cells_r15_c_ { struct types { enum options { meas_result_idle_list_eutra_r15, /*...*/ nulltype }; options value; static const uint32_t nof_types = 1, nof_exts = 0; static const bool has_ext = true; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods meas_result_neigh_cells_r15_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters meas_result_idle_list_eutra_r15_l& meas_result_idle_list_eutra_r15() { assert_choice_type("measResultIdleListEUTRA-r15", type_.to_string(), "measResultNeighCells-r15"); return c; } const meas_result_idle_list_eutra_r15_l& meas_result_idle_list_eutra_r15() const { assert_choice_type("measResultIdleListEUTRA-r15", type_.to_string(), "measResultNeighCells-r15"); return c; } private: types type_; meas_result_idle_list_eutra_r15_l c; }; // member variables bool ext; bool meas_result_neigh_cells_r15_present; meas_result_serving_cell_r15_s_ meas_result_serving_cell_r15; meas_result_neigh_cells_r15_c_ meas_result_neigh_cells_r15; // ... // sequence methods meas_result_idle_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResultListGERAN ::= SEQUENCE (SIZE (1..maxCellReport)) OF MeasResultGERAN typedef dyn_array meas_result_list_geran_l; // MeasResultMBSFN-r12 ::= SEQUENCE struct meas_result_mbsfn_r12_s { struct mbsfn_area_r12_s_ { // member variables uint8_t mbsfn_area_id_r12; uint32_t carrier_freq_r12; }; // member variables bool ext; bool sig_bler_result_r12_present; bool data_bler_mch_result_list_r12_present; mbsfn_area_r12_s_ mbsfn_area_r12; uint8_t rsrp_result_mbsfn_r12; uint8_t rsrq_result_mbsfn_r12; bler_result_r12_s sig_bler_result_r12; data_bler_mch_result_list_r12_l data_bler_mch_result_list_r12; // ... // sequence methods meas_result_mbsfn_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResultSSB-Index-r15 ::= SEQUENCE struct meas_result_ssb_idx_r15_s { // member variables bool ext; bool meas_result_ssb_idx_r15_present; uint8_t ssb_idx_r15; meas_result_nr_r15_s meas_result_ssb_idx_r15; // ... // sequence methods meas_result_ssb_idx_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PLMN-IdentityInfoListNR-r15 ::= SEQUENCE (SIZE (1..maxPLMN-NR-r15)) OF PLMN-IdentityInfoNR-r15 typedef dyn_array plmn_id_info_list_nr_r15_l; // PerCC-GapIndication-r14 ::= SEQUENCE struct per_cc_gap_ind_r14_s { struct gap_ind_r14_e_ { enum options { gap, ncsg, nogap_no_ncsg }; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods gap_ind_r14_e_() {} gap_ind_r14_e_(options v) : value(v) {} gap_ind_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables uint8_t serv_cell_id_r14; gap_ind_r14_e_ gap_ind_r14; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReconfigurationComplete-v1530-IEs ::= SEQUENCE struct rrc_conn_recfg_complete_v1530_ies_s { // member variables bool log_meas_available_bt_r15_present; bool log_meas_available_wlan_r15_present; bool flight_path_info_available_r15_present; bool non_crit_ext_present; // sequence methods rrc_conn_recfg_complete_v1530_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionSetupComplete-v1430-IEs ::= SEQUENCE struct rrc_conn_setup_complete_v1430_ies_s { // member variables bool dcn_id_r14_present; bool non_crit_ext_present; uint16_t dcn_id_r14; rrc_conn_setup_complete_v1530_ies_s non_crit_ext; // sequence methods rrc_conn_setup_complete_v1430_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // VictimSystemType-r11 ::= SEQUENCE struct victim_sys_type_r11_s { // member variables bool gps_r11_present; bool glonass_r11_present; bool bds_r11_present; bool galileo_r11_present; bool wlan_r11_present; bool bluetooth_r11_present; // sequence methods victim_sys_type_r11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // VisitedCellInfo-r12 ::= SEQUENCE struct visited_cell_info_r12_s { struct visited_cell_id_r12_c_ { struct pci_arfcn_r12_s_ { // member variables uint16_t pci_r12; uint32_t carrier_freq_r12; }; struct types { enum options { cell_global_id_r12, pci_arfcn_r12, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods visited_cell_id_r12_c_() : type_(types::nulltype) {} visited_cell_id_r12_c_(const visited_cell_id_r12_c_& other); visited_cell_id_r12_c_& operator=(const visited_cell_id_r12_c_& other); ~visited_cell_id_r12_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters cell_global_id_eutra_s& cell_global_id_r12() { assert_choice_type("cellGlobalId-r12", type_.to_string(), "visitedCellId-r12"); return c.get(); } pci_arfcn_r12_s_& pci_arfcn_r12() { assert_choice_type("pci-arfcn-r12", type_.to_string(), "visitedCellId-r12"); return c.get(); } const cell_global_id_eutra_s& cell_global_id_r12() const { assert_choice_type("cellGlobalId-r12", type_.to_string(), "visitedCellId-r12"); return c.get(); } const pci_arfcn_r12_s_& pci_arfcn_r12() const { assert_choice_type("pci-arfcn-r12", type_.to_string(), "visitedCellId-r12"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables bool ext; bool visited_cell_id_r12_present; visited_cell_id_r12_c_ visited_cell_id_r12; uint16_t time_spent_r12; // ... // sequence methods visited_cell_info_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // WayPointLocation-r15 ::= SEQUENCE struct way_point_location_r15_s { // member variables bool time_stamp_r15_present; location_info_r10_s way_point_location_r15; fixed_bitstring<48> time_stamp_r15; // sequence methods way_point_location_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AffectedCarrierFreqCombInfoMRDC-r15 ::= SEQUENCE struct affected_carrier_freq_comb_info_mrdc_r15_s { struct interference_direction_mrdc_r15_e_ { enum options { eutra_nr, nr, other, eutra_nr_other, nr_other, spare3, spare2, spare1 }; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods interference_direction_mrdc_r15_e_() {} interference_direction_mrdc_r15_e_(options v) : value(v) {} interference_direction_mrdc_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct affected_carrier_freq_comb_mrdc_r15_s_ { // member variables bool affected_carrier_freq_comb_eutra_r15_present; affected_carrier_freq_comb_r15_l affected_carrier_freq_comb_eutra_r15; affected_carrier_freq_comb_nr_r15_l affected_carrier_freq_comb_nr_r15; // sequence methods affected_carrier_freq_comb_mrdc_r15_s_(); }; // member variables bool affected_carrier_freq_comb_mrdc_r15_present; victim_sys_type_r11_s victim_sys_type_r15; interference_direction_mrdc_r15_e_ interference_direction_mrdc_r15; affected_carrier_freq_comb_mrdc_r15_s_ affected_carrier_freq_comb_mrdc_r15; // sequence methods affected_carrier_freq_comb_info_mrdc_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CGI-InfoNR-r15 ::= SEQUENCE struct cgi_info_nr_r15_s { struct no_sib1_r15_s_ { // member variables uint8_t ssb_subcarrier_offset_r15; uint8_t pdcch_cfg_sib1_r15; }; // member variables bool ext; bool plmn_id_info_list_r15_present; bool freq_band_list_minus15_present; bool no_sib1_r15_present; plmn_id_info_list_nr_r15_l plmn_id_info_list_r15; multi_freq_band_list_nr_r15_l freq_band_list_minus15; no_sib1_r15_s_ no_sib1_r15; // ... // sequence methods cgi_info_nr_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // FlightPathInfoReport-r15 ::= SEQUENCE struct flight_path_info_report_r15_s { typedef dyn_array flight_path_r15_l_; // member variables bool flight_path_r15_present; bool non_crit_ext_present; flight_path_r15_l_ flight_path_r15; // sequence methods flight_path_info_report_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // LogMeasResultListBT-r15 ::= SEQUENCE (SIZE (1..maxBT-IdReport-r15)) OF LogMeasResultBT-r15 typedef dyn_array log_meas_result_list_bt_r15_l; // LogMeasResultListWLAN-r15 ::= SEQUENCE (SIZE (1..maxWLAN-Id-Report-r14)) OF LogMeasResultWLAN-r15 typedef dyn_array log_meas_result_list_wlan_r15_l; // MeasResultList2CDMA2000-r9 ::= SEQUENCE (SIZE (1..maxFreq)) OF MeasResult2CDMA2000-r9 typedef dyn_array meas_result_list2_cdma2000_r9_l; // MeasResultList2EUTRA-r9 ::= SEQUENCE (SIZE (1..maxFreq)) OF MeasResult2EUTRA-r9 typedef dyn_array meas_result_list2_eutra_r9_l; // MeasResultList2EUTRA-v1250 ::= SEQUENCE (SIZE (1..maxFreq)) OF MeasResult2EUTRA-v1250 typedef dyn_array meas_result_list2_eutra_v1250_l; // MeasResultList2EUTRA-v9e0 ::= SEQUENCE (SIZE (1..maxFreq)) OF MeasResult2EUTRA-v9e0 typedef dyn_array meas_result_list2_eutra_v9e0_l; // MeasResultList2GERAN-r10 ::= SEQUENCE (SIZE (1..maxCellListGERAN)) OF MeasResultListGERAN typedef dyn_array meas_result_list2_geran_r10_l; // MeasResultList2UTRA-r9 ::= SEQUENCE (SIZE (1..maxFreq)) OF MeasResult2UTRA-r9 typedef dyn_array meas_result_list2_utra_r9_l; // MeasResultListIdle-r15 ::= SEQUENCE (SIZE (1..maxIdleMeasCarriers-r15)) OF MeasResultIdle-r15 typedef dyn_array meas_result_list_idle_r15_l; // MeasResultListMBSFN-r12 ::= SEQUENCE (SIZE (1..maxMBSFN-Area)) OF MeasResultMBSFN-r12 typedef dyn_array meas_result_list_mbsfn_r12_l; // MeasResultSSB-IndexList-r15 ::= SEQUENCE (SIZE (1..maxRS-IndexReport-r15)) OF MeasResultSSB-Index-r15 typedef dyn_array meas_result_ssb_idx_list_r15_l; // PerCC-GapIndicationList-r14 ::= SEQUENCE (SIZE (1..maxServCell-r13)) OF PerCC-GapIndication-r14 typedef dyn_array per_cc_gap_ind_list_r14_l; // RRCConnectionReconfigurationComplete-v1510-IEs ::= SEQUENCE struct rrc_conn_recfg_complete_v1510_ies_s { // member variables bool scg_cfg_resp_nr_r15_present; bool non_crit_ext_present; dyn_octstring scg_cfg_resp_nr_r15; rrc_conn_recfg_complete_v1530_ies_s non_crit_ext; // sequence methods rrc_conn_recfg_complete_v1510_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReestablishmentComplete-v1530-IEs ::= SEQUENCE struct rrc_conn_reest_complete_v1530_ies_s { // member variables bool log_meas_available_bt_r15_present; bool log_meas_available_wlan_r15_present; bool flight_path_info_available_r15_present; bool non_crit_ext_present; // sequence methods rrc_conn_reest_complete_v1530_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionSetupComplete-v1330-IEs ::= SEQUENCE struct rrc_conn_setup_complete_v1330_ies_s { // member variables bool ue_ce_need_ul_gaps_r13_present; bool non_crit_ext_present; rrc_conn_setup_complete_v1430_ies_s non_crit_ext; // sequence methods rrc_conn_setup_complete_v1330_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // VisitedCellInfoList-r12 ::= SEQUENCE (SIZE (1..maxCellHistory-r12)) OF VisitedCellInfo-r12 typedef dyn_array visited_cell_info_list_r12_l; // LogMeasInfo-r10 ::= SEQUENCE struct log_meas_info_r10_s { struct meas_result_serv_cell_r10_s_ { // member variables uint8_t rsrp_result_r10; uint8_t rsrq_result_r10; }; struct meas_result_neigh_cells_r10_s_ { // member variables bool meas_result_list_eutra_r10_present; bool meas_result_list_utra_r10_present; bool meas_result_list_geran_r10_present; bool meas_result_list_cdma2000_r10_present; meas_result_list2_eutra_r9_l meas_result_list_eutra_r10; meas_result_list2_utra_r9_l meas_result_list_utra_r10; meas_result_list2_geran_r10_l meas_result_list_geran_r10; meas_result_list2_cdma2000_r9_l meas_result_list_cdma2000_r10; // sequence methods meas_result_neigh_cells_r10_s_(); }; // member variables bool ext; bool location_info_r10_present; bool meas_result_neigh_cells_r10_present; location_info_r10_s location_info_r10; uint16_t relative_time_stamp_r10; cell_global_id_eutra_s serv_cell_id_r10; meas_result_serv_cell_r10_s_ meas_result_serv_cell_r10; meas_result_neigh_cells_r10_s_ meas_result_neigh_cells_r10; // ... // group 0 bool meas_result_list_eutra_v1090_present; copy_ptr meas_result_list_eutra_v1090; // group 1 bool meas_result_list_mbsfn_r12_present; bool meas_result_serv_cell_v1250_present; bool serv_cell_rsrq_type_r12_present; bool meas_result_list_eutra_v1250_present; copy_ptr meas_result_list_mbsfn_r12; int8_t meas_result_serv_cell_v1250; copy_ptr serv_cell_rsrq_type_r12; copy_ptr meas_result_list_eutra_v1250; // group 2 bool in_dev_coex_detected_r13_present; // group 3 bool meas_result_serv_cell_v1360_present; int8_t meas_result_serv_cell_v1360; // group 4 bool log_meas_result_list_bt_r15_present; bool log_meas_result_list_wlan_r15_present; copy_ptr log_meas_result_list_bt_r15; copy_ptr log_meas_result_list_wlan_r15; // sequence methods log_meas_info_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MRDC-AssistanceInfo-r15 ::= SEQUENCE struct mrdc_assist_info_r15_s { typedef dyn_array affected_carrier_freq_comb_info_list_mrdc_r15_l_; // member variables bool ext; affected_carrier_freq_comb_info_list_mrdc_r15_l_ affected_carrier_freq_comb_info_list_mrdc_r15; // ... // sequence methods mrdc_assist_info_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResultCellNR-r15 ::= SEQUENCE struct meas_result_cell_nr_r15_s { // member variables bool ext; bool meas_result_rs_idx_list_r15_present; uint16_t pci_r15; meas_result_nr_r15_s meas_result_cell_r15; meas_result_ssb_idx_list_r15_l meas_result_rs_idx_list_r15; // ... // group 0 bool cgi_info_r15_present; copy_ptr cgi_info_r15; // sequence methods meas_result_cell_nr_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MobilityHistoryReport-r12 ::= VisitedCellInfoList-r12 typedef visited_cell_info_list_r12_l mob_history_report_r12_l; // RRCConnectionReconfigurationComplete-v1430-IEs ::= SEQUENCE struct rrc_conn_recfg_complete_v1430_ies_s { // member variables bool per_cc_gap_ind_list_r14_present; bool num_freq_effective_r14_present; bool num_freq_effective_reduced_r14_present; bool non_crit_ext_present; per_cc_gap_ind_list_r14_l per_cc_gap_ind_list_r14; uint8_t num_freq_effective_r14; uint8_t num_freq_effective_reduced_r14; rrc_conn_recfg_complete_v1510_ies_s non_crit_ext; // sequence methods rrc_conn_recfg_complete_v1430_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReestablishmentComplete-v1250-IEs ::= SEQUENCE struct rrc_conn_reest_complete_v1250_ies_s { // member variables bool log_meas_available_mbsfn_r12_present; bool non_crit_ext_present; rrc_conn_reest_complete_v1530_ies_s non_crit_ext; // sequence methods rrc_conn_reest_complete_v1250_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionSetupComplete-v1320-IEs ::= SEQUENCE struct rrc_conn_setup_complete_v1320_ies_s { // member variables bool ce_mode_b_r13_present; bool s_tmsi_r13_present; bool attach_without_pdn_connect_r13_present; bool up_cio_t_eps_optim_r13_present; bool cp_cio_t_eps_optim_r13_present; bool non_crit_ext_present; s_tmsi_s s_tmsi_r13; rrc_conn_setup_complete_v1330_ies_s non_crit_ext; // sequence methods rrc_conn_setup_complete_v1320_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // TrafficPatternInfo-v1530 ::= SEQUENCE struct traffic_pattern_info_v1530_s { // member variables bool traffic_dest_r15_present; bool reliability_info_sl_r15_present; fixed_bitstring<24> traffic_dest_r15; uint8_t reliability_info_sl_r15; // sequence methods traffic_pattern_info_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UEInformationResponse-v1530-IEs ::= SEQUENCE struct ue_info_resp_v1530_ies_s { // member variables bool meas_result_list_idle_r15_present; bool flight_path_info_report_r15_present; bool non_crit_ext_present; meas_result_list_idle_r15_l meas_result_list_idle_r15; flight_path_info_report_r15_s flight_path_info_report_r15; // sequence methods ue_info_resp_v1530_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AffectedCarrierFreq-v1310 ::= SEQUENCE struct affected_carrier_freq_v1310_s { // member variables bool carrier_freq_v1310_present; uint8_t carrier_freq_v1310; // sequence methods affected_carrier_freq_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AffectedCarrierFreqComb-r13 ::= SEQUENCE (SIZE (2..maxServCell-r13)) OF INTEGER typedef bounded_array affected_carrier_freq_comb_r13_l; // ConnEstFailReport-r11 ::= SEQUENCE struct conn_est_fail_report_r11_s { struct meas_result_failed_cell_r11_s_ { // member variables bool rsrq_result_r11_present; uint8_t rsrp_result_r11; uint8_t rsrq_result_r11; // sequence methods meas_result_failed_cell_r11_s_(); }; struct meas_result_neigh_cells_r11_s_ { // member variables bool meas_result_list_eutra_r11_present; bool meas_result_list_utra_r11_present; bool meas_result_list_geran_r11_present; bool meas_results_cdma2000_r11_present; meas_result_list2_eutra_r9_l meas_result_list_eutra_r11; meas_result_list2_utra_r9_l meas_result_list_utra_r11; meas_result_list_geran_l meas_result_list_geran_r11; meas_result_list2_cdma2000_r9_l meas_results_cdma2000_r11; // sequence methods meas_result_neigh_cells_r11_s_(); }; // member variables bool ext; bool location_info_r11_present; bool meas_result_neigh_cells_r11_present; bool meas_result_list_eutra_v1130_present; cell_global_id_eutra_s failed_cell_id_r11; location_info_r10_s location_info_r11; meas_result_failed_cell_r11_s_ meas_result_failed_cell_r11; meas_result_neigh_cells_r11_s_ meas_result_neigh_cells_r11; uint8_t nof_preambs_sent_r11; bool contention_detected_r11; bool max_tx_pwr_reached_r11; uint32_t time_since_fail_r11; meas_result_list2_eutra_v9e0_l meas_result_list_eutra_v1130; // ... // group 0 bool meas_result_failed_cell_v1250_present; bool failed_cell_rsrq_type_r12_present; bool meas_result_list_eutra_v1250_present; int8_t meas_result_failed_cell_v1250; copy_ptr failed_cell_rsrq_type_r12; copy_ptr meas_result_list_eutra_v1250; // group 1 bool meas_result_failed_cell_v1360_present; int8_t meas_result_failed_cell_v1360; // group 2 bool log_meas_result_list_bt_r15_present; bool log_meas_result_list_wlan_r15_present; copy_ptr log_meas_result_list_bt_r15; copy_ptr log_meas_result_list_wlan_r15; // sequence methods conn_est_fail_report_r11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DRB-CountInfo ::= SEQUENCE struct drb_count_info_s { // member variables uint8_t drb_id; uint32_t count_ul; uint32_t count_dl; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // InDeviceCoexIndication-v1530-IEs ::= SEQUENCE struct in_dev_coex_ind_v1530_ies_s { // member variables bool mrdc_assist_info_r15_present; bool non_crit_ext_present; mrdc_assist_info_r15_s mrdc_assist_info_r15; // sequence methods in_dev_coex_ind_v1530_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // LogMeasInfoList-r10 ::= SEQUENCE (SIZE (1..maxLogMeasReport-r10)) OF LogMeasInfo-r10 typedef dyn_array log_meas_info_list_r10_l; // MeasResultCellListNR-r15 ::= SEQUENCE (SIZE (1..maxCellReport)) OF MeasResultCellNR-r15 typedef dyn_array meas_result_cell_list_nr_r15_l; // RRCConnectionReconfigurationComplete-v1250-IEs ::= SEQUENCE struct rrc_conn_recfg_complete_v1250_ies_s { // member variables bool log_meas_available_mbsfn_r12_present; bool non_crit_ext_present; rrc_conn_recfg_complete_v1430_ies_s non_crit_ext; // sequence methods rrc_conn_recfg_complete_v1250_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReestablishmentComplete-v1130-IEs ::= SEQUENCE struct rrc_conn_reest_complete_v1130_ies_s { // member variables bool conn_est_fail_info_available_r11_present; bool non_crit_ext_present; rrc_conn_reest_complete_v1250_ies_s non_crit_ext; // sequence methods rrc_conn_reest_complete_v1130_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionSetupComplete-v1250-IEs ::= SEQUENCE struct rrc_conn_setup_complete_v1250_ies_s { struct mob_state_r12_e_ { enum options { normal, medium, high, spare }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods mob_state_r12_e_() {} mob_state_r12_e_(options v) : value(v) {} mob_state_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool mob_state_r12_present; bool mob_history_avail_r12_present; bool log_meas_available_mbsfn_r12_present; bool non_crit_ext_present; mob_state_r12_e_ mob_state_r12; rrc_conn_setup_complete_v1320_ies_s non_crit_ext; // sequence methods rrc_conn_setup_complete_v1250_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-V2X-CommTxResourceReq-r14 ::= SEQUENCE struct sl_v2x_comm_tx_res_req_r14_s { // member variables bool carrier_freq_comm_tx_r14_present; bool v2x_type_tx_sync_r14_present; bool v2x_dest_info_list_r14_present; uint8_t carrier_freq_comm_tx_r14; sl_type_tx_sync_r14_e v2x_type_tx_sync_r14; sl_dest_info_list_r12_l v2x_dest_info_list_r14; // sequence methods sl_v2x_comm_tx_res_req_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // TrafficPatternInfoList-v1530 ::= SEQUENCE (SIZE (1..maxTrafficPattern-r14)) OF TrafficPatternInfo-v1530 typedef dyn_array traffic_pattern_info_list_v1530_l; // UEInformationResponse-v1250-IEs ::= SEQUENCE struct ue_info_resp_v1250_ies_s { // member variables bool mob_history_report_r12_present; bool non_crit_ext_present; mob_history_report_r12_l mob_history_report_r12; ue_info_resp_v1530_ies_s non_crit_ext; // sequence methods ue_info_resp_v1250_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AffectedCarrierFreqComb-r11 ::= SEQUENCE (SIZE (2..maxServCell-r10)) OF INTEGER typedef bounded_array affected_carrier_freq_comb_r11_l; // AffectedCarrierFreqCombList-r13 ::= SEQUENCE (SIZE (1..maxCombIDC-r11)) OF AffectedCarrierFreqComb-r13 typedef dyn_array affected_carrier_freq_comb_list_r13_l; // AffectedCarrierFreqList-v1310 ::= SEQUENCE (SIZE (1..maxFreqIDC-r11)) OF AffectedCarrierFreq-v1310 typedef dyn_array affected_carrier_freq_list_v1310_l; // DRB-CountInfoListExt-r15 ::= SEQUENCE (SIZE (1..maxDRBExt-r15)) OF DRB-CountInfo typedef dyn_array drb_count_info_list_ext_r15_l; // FailureReportSCG-v12d0 ::= SEQUENCE struct fail_report_scg_v12d0_s { // member variables bool meas_result_neigh_cells_v12d0_present; meas_result_list2_eutra_v9e0_l meas_result_neigh_cells_v12d0; // sequence methods fail_report_scg_v12d0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // IDC-SubframePattern-r11 ::= CHOICE struct idc_sf_pattern_r11_c { struct sf_pattern_tdd_r11_c_ { struct types { enum options { sf_cfg0_r11, sf_cfg1_minus5_r11, sf_cfg6_r11, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods sf_pattern_tdd_r11_c_() : type_(types::nulltype) {} sf_pattern_tdd_r11_c_(const sf_pattern_tdd_r11_c_& other); sf_pattern_tdd_r11_c_& operator=(const sf_pattern_tdd_r11_c_& other); ~sf_pattern_tdd_r11_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<70>& sf_cfg0_r11() { assert_choice_type("subframeConfig0-r11", type_.to_string(), "subframePatternTDD-r11"); return c.get >(); } fixed_bitstring<10>& sf_cfg1_minus5_r11() { assert_choice_type("subframeConfig1-5-r11", type_.to_string(), "subframePatternTDD-r11"); return c.get >(); } fixed_bitstring<60>& sf_cfg6_r11() { assert_choice_type("subframeConfig6-r11", type_.to_string(), "subframePatternTDD-r11"); return c.get >(); } const fixed_bitstring<70>& sf_cfg0_r11() const { assert_choice_type("subframeConfig0-r11", type_.to_string(), "subframePatternTDD-r11"); return c.get >(); } const fixed_bitstring<10>& sf_cfg1_minus5_r11() const { assert_choice_type("subframeConfig1-5-r11", type_.to_string(), "subframePatternTDD-r11"); return c.get >(); } const fixed_bitstring<60>& sf_cfg6_r11() const { assert_choice_type("subframeConfig6-r11", type_.to_string(), "subframePatternTDD-r11"); return c.get >(); } private: types type_; choice_buffer_t)> c; void destroy_(); }; struct types { enum options { sf_pattern_fdd_r11, sf_pattern_tdd_r11, /*...*/ nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = true; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods idc_sf_pattern_r11_c() : type_(types::nulltype) {} idc_sf_pattern_r11_c(const idc_sf_pattern_r11_c& other); idc_sf_pattern_r11_c& operator=(const idc_sf_pattern_r11_c& other); ~idc_sf_pattern_r11_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<4>& sf_pattern_fdd_r11() { assert_choice_type("subframePatternFDD-r11", type_.to_string(), "IDC-SubframePattern-r11"); return c.get >(); } sf_pattern_tdd_r11_c_& sf_pattern_tdd_r11() { assert_choice_type("subframePatternTDD-r11", type_.to_string(), "IDC-SubframePattern-r11"); return c.get(); } const fixed_bitstring<4>& sf_pattern_fdd_r11() const { assert_choice_type("subframePatternFDD-r11", type_.to_string(), "IDC-SubframePattern-r11"); return c.get >(); } const sf_pattern_tdd_r11_c_& sf_pattern_tdd_r11() const { assert_choice_type("subframePatternTDD-r11", type_.to_string(), "IDC-SubframePattern-r11"); return c.get(); } private: types type_; choice_buffer_t), sizeof(sf_pattern_tdd_r11_c_))> c; void destroy_(); }; // InDeviceCoexIndication-v1360-IEs ::= SEQUENCE struct in_dev_coex_ind_v1360_ies_s { // member variables bool hardware_sharing_problem_r13_present; bool non_crit_ext_present; in_dev_coex_ind_v1530_ies_s non_crit_ext; // sequence methods in_dev_coex_ind_v1360_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // LogMeasReport-r10 ::= SEQUENCE struct log_meas_report_r10_s { // member variables bool ext; bool log_meas_available_r10_present; fixed_bitstring<48> absolute_time_stamp_r10; trace_ref_r10_s trace_ref_r10; fixed_octstring<2> trace_recording_session_ref_r10; fixed_octstring<1> tce_id_r10; log_meas_info_list_r10_l log_meas_info_list_r10; // ... // group 0 bool log_meas_available_bt_r15_present; bool log_meas_available_wlan_r15_present; // sequence methods log_meas_report_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MBMS-ServiceInfo-r13 ::= SEQUENCE struct mbms_service_info_r13_s { // member variables tmgi_r9_s tmgi_r13; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResultCBR-r14 ::= SEQUENCE struct meas_result_cbr_r14_s { // member variables bool cbr_pscch_r14_present; uint8_t pool_id_r14; uint8_t cbr_pssch_r14; uint8_t cbr_pscch_r14; // sequence methods meas_result_cbr_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResultCSI-RS-r12 ::= SEQUENCE struct meas_result_csi_rs_r12_s { // member variables bool ext; uint8_t meas_csi_rs_id_r12; uint8_t csi_rsrp_result_r12; // ... // sequence methods meas_result_csi_rs_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResultCellSFTD-r15 ::= SEQUENCE struct meas_result_cell_sftd_r15_s { // member variables bool rsrp_result_r15_present; uint16_t pci_r15; uint16_t sfn_offset_result_r15; int16_t frame_boundary_offset_result_r15; uint8_t rsrp_result_r15; // sequence methods meas_result_cell_sftd_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResultFreqFailNR-r15 ::= SEQUENCE struct meas_result_freq_fail_nr_r15_s { // member variables bool ext; bool meas_result_cell_list_r15_present; uint32_t carrier_freq_r15; meas_result_cell_list_nr_r15_l meas_result_cell_list_r15; // ... // sequence methods meas_result_freq_fail_nr_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResultServFreq-r10 ::= SEQUENCE struct meas_result_serv_freq_r10_s { struct meas_result_scell_r10_s_ { // member variables uint8_t rsrp_result_scell_r10; uint8_t rsrq_result_scell_r10; }; struct meas_result_best_neigh_cell_r10_s_ { // member variables uint16_t pci_r10; uint8_t rsrp_result_ncell_r10; uint8_t rsrq_result_ncell_r10; }; struct meas_result_scell_v1310_s_ { // member variables uint8_t rs_sinr_result_r13; }; struct meas_result_best_neigh_cell_v1310_s_ { // member variables uint8_t rs_sinr_result_r13; }; // member variables bool ext; bool meas_result_scell_r10_present; bool meas_result_best_neigh_cell_r10_present; uint8_t serv_freq_id_r10; meas_result_scell_r10_s_ meas_result_scell_r10; meas_result_best_neigh_cell_r10_s_ meas_result_best_neigh_cell_r10; // ... // group 0 bool meas_result_scell_v1250_present; bool meas_result_best_neigh_cell_v1250_present; int8_t meas_result_scell_v1250; int8_t meas_result_best_neigh_cell_v1250; // group 1 bool meas_result_scell_v1310_present; bool meas_result_best_neigh_cell_v1310_present; copy_ptr meas_result_scell_v1310; copy_ptr meas_result_best_neigh_cell_v1310; // sequence methods meas_result_serv_freq_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResultServFreq-r13 ::= SEQUENCE struct meas_result_serv_freq_r13_s { struct meas_result_scell_r13_s_ { // member variables bool rs_sinr_result_r13_present; uint8_t rsrp_result_scell_r13; int8_t rsrq_result_scell_r13; uint8_t rs_sinr_result_r13; // sequence methods meas_result_scell_r13_s_(); }; struct meas_result_best_neigh_cell_r13_s_ { // member variables bool rs_sinr_result_r13_present; uint16_t pci_r13; uint8_t rsrp_result_ncell_r13; int8_t rsrq_result_ncell_r13; uint8_t rs_sinr_result_r13; // sequence methods meas_result_best_neigh_cell_r13_s_(); }; struct meas_result_best_neigh_cell_v1360_s_ { // member variables int8_t rsrp_result_ncell_v1360; }; // member variables bool ext; bool meas_result_scell_r13_present; bool meas_result_best_neigh_cell_r13_present; uint8_t serv_freq_id_r13; meas_result_scell_r13_s_ meas_result_scell_r13; meas_result_best_neigh_cell_r13_s_ meas_result_best_neigh_cell_r13; // ... // group 0 bool meas_result_best_neigh_cell_v1360_present; copy_ptr meas_result_best_neigh_cell_v1360; // sequence methods meas_result_serv_freq_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResultServFreqNR-r15 ::= SEQUENCE struct meas_result_serv_freq_nr_r15_s { // member variables bool ext; bool meas_result_scell_r15_present; bool meas_result_best_neigh_cell_r15_present; uint32_t carrier_freq_r15; meas_result_cell_nr_r15_s meas_result_scell_r15; meas_result_cell_nr_r15_s meas_result_best_neigh_cell_r15; // ... // sequence methods meas_result_serv_freq_nr_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResultWLAN-r13 ::= SEQUENCE struct meas_result_wlan_r13_s { // member variables bool ext; bool carrier_info_wlan_r13_present; bool band_wlan_r13_present; bool available_admission_capacity_wlan_r13_present; bool backhaul_dl_bw_wlan_r13_present; bool backhaul_ul_bw_wlan_r13_present; bool ch_utilization_wlan_r13_present; bool station_count_wlan_r13_present; bool connected_wlan_r13_present; wlan_ids_r12_s wlan_ids_r13; wlan_carrier_info_r13_s carrier_info_wlan_r13; wlan_band_ind_r13_e band_wlan_r13; uint8_t rssi_wlan_r13; uint16_t available_admission_capacity_wlan_r13; wlan_backhaul_rate_r12_e backhaul_dl_bw_wlan_r13; wlan_backhaul_rate_r12_e backhaul_ul_bw_wlan_r13; uint8_t ch_utilization_wlan_r13; uint16_t station_count_wlan_r13; // ... // sequence methods meas_result_wlan_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // OverheatingAssistance-r14 ::= SEQUENCE struct overheat_assist_r14_s { struct reduced_ue_category_s_ { // member variables uint8_t reduced_ue_category_dl; uint8_t reduced_ue_category_ul; }; struct reduced_max_ccs_s_ { // member variables uint8_t reduced_ccs_dl; uint8_t reduced_ccs_ul; }; // member variables bool reduced_ue_category_present; bool reduced_max_ccs_present; reduced_ue_category_s_ reduced_ue_category; reduced_max_ccs_s_ reduced_max_ccs; // sequence methods overheat_assist_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RLF-Report-v9e0 ::= SEQUENCE struct rlf_report_v9e0_s { // member variables meas_result_list2_eutra_v9e0_l meas_result_list_eutra_v9e0; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReconfigurationComplete-v1130-IEs ::= SEQUENCE struct rrc_conn_recfg_complete_v1130_ies_s { // member variables bool conn_est_fail_info_available_r11_present; bool non_crit_ext_present; rrc_conn_recfg_complete_v1250_ies_s non_crit_ext; // sequence methods rrc_conn_recfg_complete_v1130_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReestablishmentComplete-v1020-IEs ::= SEQUENCE struct rrc_conn_reest_complete_v1020_ies_s { // member variables bool log_meas_available_r10_present; bool non_crit_ext_present; rrc_conn_reest_complete_v1130_ies_s non_crit_ext; // sequence methods rrc_conn_reest_complete_v1020_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionSetupComplete-v1130-IEs ::= SEQUENCE struct rrc_conn_setup_complete_v1130_ies_s { // member variables bool conn_est_fail_info_available_r11_present; bool non_crit_ext_present; rrc_conn_setup_complete_v1250_ies_s non_crit_ext; // sequence methods rrc_conn_setup_complete_v1130_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-DiscSysInfoReport-r13 ::= SEQUENCE struct sl_disc_sys_info_report_r13_s { struct disc_cell_sel_info_r13_s_ { // member variables bool q_rx_lev_min_offset_r13_present; int8_t q_rx_lev_min_r13; uint8_t q_rx_lev_min_offset_r13; // sequence methods disc_cell_sel_info_r13_s_(); }; struct cell_resel_info_r13_s_ { struct q_hyst_r13_e_ { enum options { db0, db1, db2, db3, db4, db5, db6, db8, db10, db12, db14, db16, db18, db20, db22, db24 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods q_hyst_r13_e_() {} q_hyst_r13_e_(options v) : value(v) {} q_hyst_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables q_hyst_r13_e_ q_hyst_r13; int8_t q_rx_lev_min_r13; uint8_t t_resel_eutra_r13; }; struct freq_info_r13_s_ { struct ul_bw_r13_e_ { enum options { n6, n15, n25, n50, n75, n100 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods ul_bw_r13_e_() {} ul_bw_r13_e_(options v) : value(v) {} ul_bw_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ul_carrier_freq_r13_present; bool ul_bw_r13_present; bool add_spec_emission_r13_present; uint16_t ul_carrier_freq_r13; ul_bw_r13_e_ ul_bw_r13; uint8_t add_spec_emission_r13; // sequence methods freq_info_r13_s_(); }; struct freq_info_v1370_s_ { // member variables uint16_t add_spec_emission_v1370; }; // member variables bool ext; bool plmn_id_list_r13_present; bool cell_id_minus13_present; bool carrier_freq_info_minus13_present; bool disc_rx_res_r13_present; bool disc_tx_pool_common_r13_present; bool disc_tx_pwr_info_r13_present; bool disc_sync_cfg_r13_present; bool disc_cell_sel_info_r13_present; bool cell_resel_info_r13_present; bool tdd_cfg_r13_present; bool freq_info_r13_present; bool p_max_r13_present; bool ref_sig_pwr_r13_present; plmn_id_list_l plmn_id_list_r13; fixed_bitstring<28> cell_id_minus13; uint32_t carrier_freq_info_minus13; sl_disc_rx_pool_list_r12_l disc_rx_res_r13; sl_disc_tx_pool_list_r12_l disc_tx_pool_common_r13; sl_disc_tx_pwr_info_list_r12_l disc_tx_pwr_info_r13; sl_sync_cfg_nfreq_r13_s disc_sync_cfg_r13; disc_cell_sel_info_r13_s_ disc_cell_sel_info_r13; cell_resel_info_r13_s_ cell_resel_info_r13; tdd_cfg_s tdd_cfg_r13; freq_info_r13_s_ freq_info_r13; int8_t p_max_r13; int8_t ref_sig_pwr_r13; // ... // group 0 bool freq_info_v1370_present; copy_ptr freq_info_v1370; // sequence methods sl_disc_sys_info_report_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-DiscTxResourceReq-r13 ::= SEQUENCE struct sl_disc_tx_res_req_r13_s { // member variables bool carrier_freq_disc_tx_r13_present; uint8_t carrier_freq_disc_tx_r13; uint8_t disc_tx_res_req_r13; // sequence methods sl_disc_tx_res_req_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-GapFreqInfo-r13 ::= SEQUENCE struct sl_gap_freq_info_r13_s { // member variables bool carrier_freq_r13_present; uint32_t carrier_freq_r13; sl_gap_pattern_list_r13_l gap_pattern_list_r13; // sequence methods sl_gap_freq_info_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-V2X-CommFreqList-r14 ::= SEQUENCE (SIZE (1..maxFreqV2X-r14)) OF INTEGER typedef bounded_array sl_v2x_comm_freq_list_r14_l; // SL-V2X-CommTxFreqList-r14 ::= SEQUENCE (SIZE (1..maxFreqV2X-r14)) OF SL-V2X-CommTxResourceReq-r14 typedef dyn_array sl_v2x_comm_tx_freq_list_r14_l; // SensingResult-r15 ::= SEQUENCE struct sensing_result_r15_s { // member variables uint16_t res_idx_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SidelinkUEInformation-v1530-IEs ::= SEQUENCE struct sidelink_ue_info_v1530_ies_s { // member variables bool reliability_info_list_sl_r15_present; bool non_crit_ext_present; sl_reliability_list_r15_l reliability_info_list_sl_r15; // sequence methods sidelink_ue_info_v1530_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // TrafficPatternInfo-r14 ::= SEQUENCE struct traffic_pattern_info_r14_s { struct traffic_periodicity_r14_e_ { enum options { sf20, sf50, sf100, sf200, sf300, sf400, sf500, sf600, sf700, sf800, sf900, sf1000 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 12, nof_exts = 0; static const bool has_ext = false; // enumerated methods traffic_periodicity_r14_e_() {} traffic_periodicity_r14_e_(options v) : value(v) {} traffic_periodicity_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool prio_info_sl_r14_present; bool lc_ch_id_ul_r14_present; traffic_periodicity_r14_e_ traffic_periodicity_r14; uint16_t timing_offset_r14; uint8_t prio_info_sl_r14; uint8_t lc_ch_id_ul_r14; fixed_bitstring<6> msg_size_r14; // sequence methods traffic_pattern_info_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-RadioPagingInfo-r12 ::= SEQUENCE struct ue_radio_paging_info_r12_s { struct wake_up_signal_min_gap_e_drx_r15_e_ { enum options { ms40, ms240, ms1000, ms2000 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods wake_up_signal_min_gap_e_drx_r15_e_() {} wake_up_signal_min_gap_e_drx_r15_e_(options v) : value(v) {} wake_up_signal_min_gap_e_drx_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct wake_up_signal_min_gap_e_drx_tdd_r15_e_ { enum options { ms40, ms240, ms1000, ms2000 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods wake_up_signal_min_gap_e_drx_tdd_r15_e_() {} wake_up_signal_min_gap_e_drx_tdd_r15_e_(options v) : value(v) {} wake_up_signal_min_gap_e_drx_tdd_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool ext; bool ue_category_v1250_present; uint8_t ue_category_v1250; // ... // group 0 bool ue_category_dl_v1310_present; bool ce_mode_a_r13_present; bool ce_mode_b_r13_present; // group 1 bool wake_up_signal_r15_present; bool wake_up_signal_tdd_r15_present; bool wake_up_signal_min_gap_e_drx_r15_present; bool wake_up_signal_min_gap_e_drx_tdd_r15_present; wake_up_signal_min_gap_e_drx_r15_e_ wake_up_signal_min_gap_e_drx_r15; wake_up_signal_min_gap_e_drx_tdd_r15_e_ wake_up_signal_min_gap_e_drx_tdd_r15; // sequence methods ue_radio_paging_info_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UEAssistanceInformation-v1530-IEs ::= SEQUENCE struct ueassist_info_v1530_ies_s { struct sps_assist_info_v1530_s_ { // member variables traffic_pattern_info_list_v1530_l traffic_pattern_info_list_sl_v1530; }; // member variables bool sps_assist_info_v1530_present; bool non_crit_ext_present; sps_assist_info_v1530_s_ sps_assist_info_v1530; // sequence methods ueassist_info_v1530_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UEInformationResponse-v1130-IEs ::= SEQUENCE struct ue_info_resp_v1130_ies_s { // member variables bool conn_est_fail_report_r11_present; bool non_crit_ext_present; conn_est_fail_report_r11_s conn_est_fail_report_r11; ue_info_resp_v1250_ies_s non_crit_ext; // sequence methods ue_info_resp_v1130_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UL-PDCP-DelayResult-r13 ::= SEQUENCE struct ul_pdcp_delay_result_r13_s { struct qci_id_r13_e_ { enum options { qci1, qci2, qci3, qci4, spare4, spare3, spare2, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods qci_id_r13_e_() {} qci_id_r13_e_(options v) : value(v) {} qci_id_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ext; qci_id_r13_e_ qci_id_r13; uint8_t excess_delay_r13; // ... // sequence methods ul_pdcp_delay_result_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AffectedCarrierFreq-r11 ::= SEQUENCE struct affected_carrier_freq_r11_s { struct interference_direction_r11_e_ { enum options { eutra, other, both, spare }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods interference_direction_r11_e_() {} interference_direction_r11_e_(options v) : value(v) {} interference_direction_r11_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables uint8_t carrier_freq_r11; interference_direction_r11_e_ interference_direction_r11; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AffectedCarrierFreqCombList-r11 ::= SEQUENCE (SIZE (1..maxCombIDC-r11)) OF AffectedCarrierFreqComb-r11 typedef dyn_array affected_carrier_freq_comb_list_r11_l; // BW-Preference-r14 ::= SEQUENCE struct bw_pref_r14_s { struct dl_pref_r14_e_ { enum options { mhz1dot4, mhz5, mhz20 }; typedef float number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods dl_pref_r14_e_() {} dl_pref_r14_e_(options v) : value(v) {} dl_pref_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; struct ul_pref_r14_e_ { enum options { mhz1dot4, mhz5 }; typedef float number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods ul_pref_r14_e_() {} ul_pref_r14_e_(options v) : value(v) {} ul_pref_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; // member variables bool dl_pref_r14_present; bool ul_pref_r14_present; dl_pref_r14_e_ dl_pref_r14; ul_pref_r14_e_ ul_pref_r14; // sequence methods bw_pref_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CounterCheckResponse-v1530-IEs ::= SEQUENCE struct counter_check_resp_v1530_ies_s { // member variables bool drb_count_info_list_ext_r15_present; bool non_crit_ext_present; drb_count_info_list_ext_r15_l drb_count_info_list_ext_r15; // sequence methods counter_check_resp_v1530_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CountingResponseInfo-r10 ::= SEQUENCE struct count_resp_info_r10_s { // member variables bool ext; uint8_t count_resp_service_r10; // ... // sequence methods count_resp_info_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DelayBudgetReport-r14 ::= CHOICE struct delay_budget_report_r14_c { struct type1_e_ { enum options { ms_minus1280, ms_minus640, ms_minus320, ms_minus160, ms_minus80, ms_minus60, ms_minus40, ms_minus20, ms0, ms20, ms40, ms60, ms80, ms160, ms320, ms640, ms1280 }; typedef int16_t number_type; options value; static const uint32_t nof_types = 17, nof_exts = 0; static const bool has_ext = false; // enumerated methods type1_e_() {} type1_e_(options v) : value(v) {} type1_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int16_t to_number() const; }; struct type2_e_ { enum options { ms_minus192, ms_minus168, ms_minus144, ms_minus120, ms_minus96, ms_minus72, ms_minus48, ms_minus24, ms0, ms24, ms48, ms72, ms96, ms120, ms144, ms168, ms192 }; typedef int16_t number_type; options value; static const uint32_t nof_types = 17, nof_exts = 0; static const bool has_ext = false; // enumerated methods type2_e_() {} type2_e_(options v) : value(v) {} type2_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; int16_t to_number() const; }; struct types { enum options { type1, type2, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods delay_budget_report_r14_c() : type_(types::nulltype) {} delay_budget_report_r14_c(const delay_budget_report_r14_c& other); delay_budget_report_r14_c& operator=(const delay_budget_report_r14_c& other); ~delay_budget_report_r14_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters type1_e_& type1() { assert_choice_type("type1", type_.to_string(), "DelayBudgetReport-r14"); return c.get(); } type2_e_& type2() { assert_choice_type("type2", type_.to_string(), "DelayBudgetReport-r14"); return c.get(); } const type1_e_& type1() const { assert_choice_type("type1", type_.to_string(), "DelayBudgetReport-r14"); return c.get(); } const type2_e_& type2() const { assert_choice_type("type2", type_.to_string(), "DelayBudgetReport-r14"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // IDC-SubframePatternList-r11 ::= SEQUENCE (SIZE (1..maxSubframePatternIDC-r11)) OF IDC-SubframePattern-r11 typedef dyn_array idc_sf_pattern_list_r11_l; // InDeviceCoexIndication-v1310-IEs ::= SEQUENCE struct in_dev_coex_ind_v1310_ies_s { // member variables bool affected_carrier_freq_list_v1310_present; bool affected_carrier_freq_comb_list_r13_present; bool non_crit_ext_present; affected_carrier_freq_list_v1310_l affected_carrier_freq_list_v1310; affected_carrier_freq_comb_list_r13_l affected_carrier_freq_comb_list_r13; in_dev_coex_ind_v1360_ies_s non_crit_ext; // sequence methods in_dev_coex_ind_v1310_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MBMS-ServiceList-r13 ::= SEQUENCE (SIZE (0..maxMBMS-ServiceListPerUE-r13)) OF MBMS-ServiceInfo-r13 typedef dyn_array mbms_service_list_r13_l; // MeasResultCSI-RS-List-r12 ::= SEQUENCE (SIZE (1..maxCellReport)) OF MeasResultCSI-RS-r12 typedef dyn_array meas_result_csi_rs_list_r12_l; // MeasResultCellListSFTD-r15 ::= SEQUENCE (SIZE (1..maxCellSFTD)) OF MeasResultCellSFTD-r15 typedef dyn_array meas_result_cell_list_sftd_r15_l; // MeasResultForECID-r9 ::= SEQUENCE struct meas_result_for_ecid_r9_s { // member variables uint16_t ue_rx_tx_time_diff_result_r9; fixed_bitstring<10> current_sfn_r9; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResultForRSSI-r13 ::= SEQUENCE struct meas_result_for_rssi_r13_s { // member variables bool ext; uint8_t rssi_result_r13; uint8_t ch_occupancy_r13; // ... // sequence methods meas_result_for_rssi_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResultFreqListFailNR-r15 ::= SEQUENCE (SIZE (1..maxFreqNR-r15)) OF MeasResultFreqFailNR-r15 typedef dyn_array meas_result_freq_list_fail_nr_r15_l; // MeasResultListCBR-r14 ::= SEQUENCE (SIZE (1..maxCBR-Report-r14)) OF MeasResultCBR-r14 typedef dyn_array meas_result_list_cbr_r14_l; // MeasResultListWLAN-r13 ::= SEQUENCE (SIZE (1..maxCellReport)) OF MeasResultWLAN-r13 typedef dyn_array meas_result_list_wlan_r13_l; // MeasResultListWLAN-r14 ::= SEQUENCE (SIZE (1..maxWLAN-Id-Report-r14)) OF MeasResultWLAN-r13 typedef dyn_array meas_result_list_wlan_r14_l; // MeasResultSSTD-r13 ::= SEQUENCE struct meas_result_sstd_r13_s { // member variables uint16_t sfn_offset_result_r13; int8_t frame_boundary_offset_result_r13; uint8_t sf_boundary_offset_result_r13; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResultSensing-r15 ::= SEQUENCE struct meas_result_sensing_r15_s { typedef dyn_array sensing_result_r15_l_; // member variables uint16_t sl_sf_ref_r15; sensing_result_r15_l_ sensing_result_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResultServFreqList-r10 ::= SEQUENCE (SIZE (1..maxServCell-r10)) OF MeasResultServFreq-r10 typedef dyn_array meas_result_serv_freq_list_r10_l; // MeasResultServFreqListExt-r13 ::= SEQUENCE (SIZE (1..maxServCell-r13)) OF MeasResultServFreq-r13 typedef dyn_array meas_result_serv_freq_list_ext_r13_l; // MeasResultServFreqListNR-r15 ::= SEQUENCE (SIZE (1..maxServCell-r13)) OF MeasResultServFreqNR-r15 typedef dyn_array meas_result_serv_freq_list_nr_r15_l; // RRCConnectionReconfigurationComplete-v1020-IEs ::= SEQUENCE struct rrc_conn_recfg_complete_v1020_ies_s { // member variables bool rlf_info_available_r10_present; bool log_meas_available_r10_present; bool non_crit_ext_present; rrc_conn_recfg_complete_v1130_ies_s non_crit_ext; // sequence methods rrc_conn_recfg_complete_v1020_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReestablishmentComplete-v8a0-IEs ::= SEQUENCE struct rrc_conn_reest_complete_v8a0_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; rrc_conn_reest_complete_v1020_ies_s non_crit_ext; // sequence methods rrc_conn_reest_complete_v8a0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionSetupComplete-v1020-IEs ::= SEQUENCE struct rrc_conn_setup_complete_v1020_ies_s { struct gummei_type_r10_e_ { enum options { native, mapped }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods gummei_type_r10_e_() {} gummei_type_r10_e_(options v) : value(v) {} gummei_type_r10_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct rn_sf_cfg_req_r10_e_ { enum options { required, not_required }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods rn_sf_cfg_req_r10_e_() {} rn_sf_cfg_req_r10_e_(options v) : value(v) {} rn_sf_cfg_req_r10_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool gummei_type_r10_present; bool rlf_info_available_r10_present; bool log_meas_available_r10_present; bool rn_sf_cfg_req_r10_present; bool non_crit_ext_present; gummei_type_r10_e_ gummei_type_r10; rn_sf_cfg_req_r10_e_ rn_sf_cfg_req_r10; rrc_conn_setup_complete_v1130_ies_s non_crit_ext; // sequence methods rrc_conn_setup_complete_v1020_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RSTD-InterFreqInfo-r10 ::= SEQUENCE struct rstd_inter_freq_info_r10_s { struct meas_prs_offset_r15_c_ { struct types { enum options { rstd0_r15, rstd1_r15, rstd2_r15, rstd3_r15, rstd4_r15, rstd5_r15, rstd6_r15, rstd7_r15, rstd8_r15, rstd9_r15, rstd10_r15, rstd11_r15, rstd12_r15, rstd13_r15, rstd14_r15, rstd15_r15, rstd16_r15, rstd17_r15, rstd18_r15, rstd19_r15, rstd20_r15, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 21, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods meas_prs_offset_r15_c_() : type_(types::nulltype) {} meas_prs_offset_r15_c_(const meas_prs_offset_r15_c_& other); meas_prs_offset_r15_c_& operator=(const meas_prs_offset_r15_c_& other); ~meas_prs_offset_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(bit_ref& bref); void to_json(json_writer& j) const; // getters uint8_t& rstd0_r15() { assert_choice_type("rstd0-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } uint8_t& rstd1_r15() { assert_choice_type("rstd1-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } uint16_t& rstd2_r15() { assert_choice_type("rstd2-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } uint16_t& rstd3_r15() { assert_choice_type("rstd3-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } uint16_t& rstd4_r15() { assert_choice_type("rstd4-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } uint8_t& rstd5_r15() { assert_choice_type("rstd5-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } uint16_t& rstd6_r15() { assert_choice_type("rstd6-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } uint16_t& rstd7_r15() { assert_choice_type("rstd7-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } uint16_t& rstd8_r15() { assert_choice_type("rstd8-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } uint16_t& rstd9_r15() { assert_choice_type("rstd9-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } uint16_t& rstd10_r15() { assert_choice_type("rstd10-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } uint16_t& rstd11_r15() { assert_choice_type("rstd11-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } uint16_t& rstd12_r15() { assert_choice_type("rstd12-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } uint16_t& rstd13_r15() { assert_choice_type("rstd13-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } uint16_t& rstd14_r15() { assert_choice_type("rstd14-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } uint16_t& rstd15_r15() { assert_choice_type("rstd15-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } uint16_t& rstd16_r15() { assert_choice_type("rstd16-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } uint16_t& rstd17_r15() { assert_choice_type("rstd17-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } uint16_t& rstd18_r15() { assert_choice_type("rstd18-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } uint16_t& rstd19_r15() { assert_choice_type("rstd19-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } uint16_t& rstd20_r15() { assert_choice_type("rstd20-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } const uint8_t& rstd0_r15() const { assert_choice_type("rstd0-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } const uint8_t& rstd1_r15() const { assert_choice_type("rstd1-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } const uint16_t& rstd2_r15() const { assert_choice_type("rstd2-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } const uint16_t& rstd3_r15() const { assert_choice_type("rstd3-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } const uint16_t& rstd4_r15() const { assert_choice_type("rstd4-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } const uint8_t& rstd5_r15() const { assert_choice_type("rstd5-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } const uint16_t& rstd6_r15() const { assert_choice_type("rstd6-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } const uint16_t& rstd7_r15() const { assert_choice_type("rstd7-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } const uint16_t& rstd8_r15() const { assert_choice_type("rstd8-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } const uint16_t& rstd9_r15() const { assert_choice_type("rstd9-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } const uint16_t& rstd10_r15() const { assert_choice_type("rstd10-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } const uint16_t& rstd11_r15() const { assert_choice_type("rstd11-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } const uint16_t& rstd12_r15() const { assert_choice_type("rstd12-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } const uint16_t& rstd13_r15() const { assert_choice_type("rstd13-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } const uint16_t& rstd14_r15() const { assert_choice_type("rstd14-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } const uint16_t& rstd15_r15() const { assert_choice_type("rstd15-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } const uint16_t& rstd16_r15() const { assert_choice_type("rstd16-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } const uint16_t& rstd17_r15() const { assert_choice_type("rstd17-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } const uint16_t& rstd18_r15() const { assert_choice_type("rstd18-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } const uint16_t& rstd19_r15() const { assert_choice_type("rstd19-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } const uint16_t& rstd20_r15() const { assert_choice_type("rstd20-r15", type_.to_string(), "measPRS-Offset-r15"); return c.get(); } private: types type_; choice_buffer_t<8> c; void destroy_(); }; // member variables bool ext; uint16_t carrier_freq_r10; uint8_t meas_prs_offset_r10; // ... // group 0 bool carrier_freq_v1090_present; uint32_t carrier_freq_v1090; // group 1 bool meas_prs_offset_r15_present; copy_ptr meas_prs_offset_r15; // sequence methods rstd_inter_freq_info_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCGFailureInformation-v12d0-IEs ::= SEQUENCE struct scg_fail_info_v12d0_ies_s { // member variables bool fail_report_scg_v12d0_present; bool non_crit_ext_present; fail_report_scg_v12d0_s fail_report_scg_v12d0; // sequence methods scg_fail_info_v12d0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-CommTxResourceReq-r12 ::= SEQUENCE struct sl_comm_tx_res_req_r12_s { // member variables bool carrier_freq_r12_present; uint32_t carrier_freq_r12; sl_dest_info_list_r12_l dest_info_list_r12; // sequence methods sl_comm_tx_res_req_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-DiscSysInfoReportFreqList-r13 ::= SEQUENCE (SIZE (1.. maxSL-DiscSysInfoReportFreq-r13)) OF // SL-DiscSysInfoReport-r13 typedef dyn_array sl_disc_sys_info_report_freq_list_r13_l; // SL-DiscTxResourceReqPerFreqList-r13 ::= SEQUENCE (SIZE (1..maxFreq)) OF SL-DiscTxResourceReq-r13 typedef dyn_array sl_disc_tx_res_req_per_freq_list_r13_l; // SL-GapRequest-r13 ::= SEQUENCE (SIZE (1..maxFreq)) OF SL-GapFreqInfo-r13 typedef dyn_array sl_gap_request_r13_l; // SidelinkUEInformation-v1430-IEs ::= SEQUENCE struct sidelink_ue_info_v1430_ies_s { // member variables bool v2x_comm_rx_interested_freq_list_r14_present; bool p2x_comm_tx_type_r14_present; bool v2x_comm_tx_res_req_r14_present; bool non_crit_ext_present; sl_v2x_comm_freq_list_r14_l v2x_comm_rx_interested_freq_list_r14; sl_v2x_comm_tx_freq_list_r14_l v2x_comm_tx_res_req_r14; sidelink_ue_info_v1530_ies_s non_crit_ext; // sequence methods sidelink_ue_info_v1430_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // TrafficPatternInfoList-r14 ::= SEQUENCE (SIZE (1..maxTrafficPattern-r14)) OF TrafficPatternInfo-r14 typedef dyn_array traffic_pattern_info_list_r14_l; // UE-CapabilityRAT-Container ::= SEQUENCE struct ue_cap_rat_container_s { // member variables rat_type_e rat_type; dyn_octstring ue_cap_rat_container; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UEAssistanceInformation-v1450-IEs ::= SEQUENCE struct ueassist_info_v1450_ies_s { // member variables bool overheat_assist_r14_present; bool non_crit_ext_present; overheat_assist_r14_s overheat_assist_r14; ueassist_info_v1530_ies_s non_crit_ext; // sequence methods ueassist_info_v1450_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UECapabilityInformation-v1250-IEs ::= SEQUENCE struct ue_cap_info_v1250_ies_s { // member variables bool ue_radio_paging_info_r12_present; bool non_crit_ext_present; ue_radio_paging_info_r12_s ue_radio_paging_info_r12; // sequence methods ue_cap_info_v1250_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UEInformationResponse-v1020-IEs ::= SEQUENCE struct ue_info_resp_v1020_ies_s { // member variables bool log_meas_report_r10_present; bool non_crit_ext_present; log_meas_report_r10_s log_meas_report_r10; ue_info_resp_v1130_ies_s non_crit_ext; // sequence methods ue_info_resp_v1020_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UEInformationResponse-v9e0-IEs ::= SEQUENCE struct ue_info_resp_v9e0_ies_s { // member variables bool rlf_report_v9e0_present; bool non_crit_ext_present; rlf_report_v9e0_s rlf_report_v9e0; // sequence methods ue_info_resp_v9e0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UL-PDCP-DelayResultList-r13 ::= SEQUENCE (SIZE (1..maxQCI-r13)) OF UL-PDCP-DelayResult-r13 typedef dyn_array ul_pdcp_delay_result_list_r13_l; // WLAN-Status-v1430 ::= ENUMERATED struct wlan_status_v1430_e { enum options { suspended, resumed }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods wlan_status_v1430_e() {} wlan_status_v1430_e(options v) : value(v) {} wlan_status_v1430_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // AffectedCarrierFreqList-r11 ::= SEQUENCE (SIZE (1..maxFreqIDC-r11)) OF AffectedCarrierFreq-r11 typedef dyn_array affected_carrier_freq_list_r11_l; // CSFBParametersRequestCDMA2000-v8a0-IEs ::= SEQUENCE struct csfb_params_request_cdma2000_v8a0_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; // sequence methods csfb_params_request_cdma2000_v8a0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CarrierFreqListMBMS-r11 ::= SEQUENCE (SIZE (1..maxFreqMBMS-r11)) OF INTEGER typedef bounded_array carrier_freq_list_mbms_r11_l; // CounterCheckResponse-v8a0-IEs ::= SEQUENCE struct counter_check_resp_v8a0_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; counter_check_resp_v1530_ies_s non_crit_ext; // sequence methods counter_check_resp_v8a0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CountingResponseList-r10 ::= SEQUENCE (SIZE (1..maxServiceCount)) OF CountingResponseInfo-r10 typedef dyn_array count_resp_list_r10_l; // DRB-CountInfoList ::= SEQUENCE (SIZE (0..maxDRB)) OF DRB-CountInfo typedef dyn_array drb_count_info_list_l; // FailureReportSCG-NR-r15 ::= SEQUENCE struct fail_report_scg_nr_r15_s { struct fail_type_r15_e_ { enum options { t310_expiry, random_access_problem, rlc_max_num_retx, scg_change_fail, scg_recfg_fail, srb3_integrity_fail }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods fail_type_r15_e_() {} fail_type_r15_e_(options v) : value(v) {} fail_type_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool ext; bool meas_result_freq_list_nr_r15_present; bool meas_result_scg_r15_present; fail_type_r15_e_ fail_type_r15; meas_result_freq_list_fail_nr_r15_l meas_result_freq_list_nr_r15; dyn_octstring meas_result_scg_r15; // ... // sequence methods fail_report_scg_nr_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // FailureReportSCG-r12 ::= SEQUENCE struct fail_report_scg_r12_s { struct fail_type_r12_e_ { enum options { t313_expiry, random_access_problem, rlc_max_num_retx, scg_change_fail }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods fail_type_r12_e_() {} fail_type_r12_e_(options v) : value(v) {} fail_type_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool ext; bool meas_result_serv_freq_list_r12_present; bool meas_result_neigh_cells_r12_present; fail_type_r12_e_ fail_type_r12; meas_result_serv_freq_list_r10_l meas_result_serv_freq_list_r12; meas_result_list2_eutra_r9_l meas_result_neigh_cells_r12; // ... // group 0 bool fail_type_v1290_present; // group 1 bool meas_result_serv_freq_list_ext_r13_present; copy_ptr meas_result_serv_freq_list_ext_r13; // sequence methods fail_report_scg_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // InDeviceCoexIndication-v11d0-IEs ::= SEQUENCE struct in_dev_coex_ind_v11d0_ies_s { struct ul_ca_assist_info_r11_s_ { // member variables bool affected_carrier_freq_comb_list_r11_present; affected_carrier_freq_comb_list_r11_l affected_carrier_freq_comb_list_r11; victim_sys_type_r11_s victim_sys_type_r11; // sequence methods ul_ca_assist_info_r11_s_(); }; // member variables bool ul_ca_assist_info_r11_present; bool non_crit_ext_present; ul_ca_assist_info_r11_s_ ul_ca_assist_info_r11; in_dev_coex_ind_v1310_ies_s non_crit_ext; // sequence methods in_dev_coex_ind_v11d0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MBMSInterestIndication-v1310-IEs ::= SEQUENCE struct mbms_interest_ind_v1310_ies_s { // member variables bool mbms_services_r13_present; bool non_crit_ext_present; mbms_service_list_r13_l mbms_services_r13; // sequence methods mbms_interest_ind_v1310_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResults ::= SEQUENCE struct meas_results_s { struct meas_result_pcell_s_ { // member variables uint8_t rsrp_result; uint8_t rsrq_result; }; struct meas_result_neigh_cells_c_ { struct types { enum options { meas_result_list_eutra, meas_result_list_utra, meas_result_list_geran, meas_results_cdma2000, // ... meas_result_neigh_cell_list_nr_r15, nulltype }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 5, nof_exts = 1; static const bool has_ext = true; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // choice methods meas_result_neigh_cells_c_() : type_(types::nulltype) {} meas_result_neigh_cells_c_(const meas_result_neigh_cells_c_& other); meas_result_neigh_cells_c_& operator=(const meas_result_neigh_cells_c_& other); ~meas_result_neigh_cells_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters meas_result_list_eutra_l& meas_result_list_eutra() { assert_choice_type("measResultListEUTRA", type_.to_string(), "measResultNeighCells"); return c.get(); } meas_result_list_utra_l& meas_result_list_utra() { assert_choice_type("measResultListUTRA", type_.to_string(), "measResultNeighCells"); return c.get(); } meas_result_list_geran_l& meas_result_list_geran() { assert_choice_type("measResultListGERAN", type_.to_string(), "measResultNeighCells"); return c.get(); } meas_results_cdma2000_s& meas_results_cdma2000() { assert_choice_type("measResultsCDMA2000", type_.to_string(), "measResultNeighCells"); return c.get(); } meas_result_cell_list_nr_r15_l& meas_result_neigh_cell_list_nr_r15() { assert_choice_type("measResultNeighCellListNR-r15", type_.to_string(), "measResultNeighCells"); return c.get(); } const meas_result_list_eutra_l& meas_result_list_eutra() const { assert_choice_type("measResultListEUTRA", type_.to_string(), "measResultNeighCells"); return c.get(); } const meas_result_list_utra_l& meas_result_list_utra() const { assert_choice_type("measResultListUTRA", type_.to_string(), "measResultNeighCells"); return c.get(); } const meas_result_list_geran_l& meas_result_list_geran() const { assert_choice_type("measResultListGERAN", type_.to_string(), "measResultNeighCells"); return c.get(); } const meas_results_cdma2000_s& meas_results_cdma2000() const { assert_choice_type("measResultsCDMA2000", type_.to_string(), "measResultNeighCells"); return c.get(); } const meas_result_cell_list_nr_r15_l& meas_result_neigh_cell_list_nr_r15() const { assert_choice_type("measResultNeighCellListNR-r15", type_.to_string(), "measResultNeighCells"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct meas_result_pcell_v1310_s_ { // member variables uint8_t rs_sinr_result_r13; }; // member variables bool ext; bool meas_result_neigh_cells_present; uint8_t meas_id; meas_result_pcell_s_ meas_result_pcell; meas_result_neigh_cells_c_ meas_result_neigh_cells; // ... // group 0 bool meas_result_for_ecid_r9_present; copy_ptr meas_result_for_ecid_r9; // group 1 bool location_info_r10_present; bool meas_result_serv_freq_list_r10_present; copy_ptr location_info_r10; copy_ptr meas_result_serv_freq_list_r10; // group 2 bool meas_id_v1250_present; bool meas_result_pcell_v1250_present; bool meas_result_csi_rs_list_r12_present; uint8_t meas_id_v1250; int8_t meas_result_pcell_v1250; copy_ptr meas_result_csi_rs_list_r12; // group 3 bool meas_result_for_rssi_r13_present; bool meas_result_serv_freq_list_ext_r13_present; bool meas_result_sstd_r13_present; bool meas_result_pcell_v1310_present; bool ul_pdcp_delay_result_list_r13_present; bool meas_result_list_wlan_r13_present; copy_ptr meas_result_for_rssi_r13; copy_ptr meas_result_serv_freq_list_ext_r13; copy_ptr meas_result_sstd_r13; copy_ptr meas_result_pcell_v1310; copy_ptr ul_pdcp_delay_result_list_r13; copy_ptr meas_result_list_wlan_r13; // group 4 bool meas_result_pcell_v1360_present; int8_t meas_result_pcell_v1360; // group 5 bool meas_result_list_cbr_r14_present; bool meas_result_list_wlan_r14_present; copy_ptr meas_result_list_cbr_r14; copy_ptr meas_result_list_wlan_r14; // group 6 bool meas_result_serv_freq_list_nr_r15_present; bool meas_result_cell_list_sftd_r15_present; copy_ptr meas_result_serv_freq_list_nr_r15; copy_ptr meas_result_cell_list_sftd_r15; // group 7 bool log_meas_result_list_bt_r15_present; bool log_meas_result_list_wlan_r15_present; bool meas_result_sensing_r15_present; bool height_ue_r15_present; copy_ptr log_meas_result_list_bt_r15; copy_ptr log_meas_result_list_wlan_r15; copy_ptr meas_result_sensing_r15; int16_t height_ue_r15; // sequence methods meas_results_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasurementReport-v8a0-IEs ::= SEQUENCE struct meas_report_v8a0_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; // sequence methods meas_report_v8a0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // ProximityIndication-v930-IEs ::= SEQUENCE struct proximity_ind_v930_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; // sequence methods proximity_ind_v930_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RLF-Report-r9 ::= SEQUENCE struct rlf_report_r9_s { struct meas_result_last_serv_cell_r9_s_ { // member variables bool rsrq_result_r9_present; uint8_t rsrp_result_r9; uint8_t rsrq_result_r9; // sequence methods meas_result_last_serv_cell_r9_s_(); }; struct meas_result_neigh_cells_r9_s_ { // member variables bool meas_result_list_eutra_r9_present; bool meas_result_list_utra_r9_present; bool meas_result_list_geran_r9_present; bool meas_results_cdma2000_r9_present; meas_result_list2_eutra_r9_l meas_result_list_eutra_r9; meas_result_list2_utra_r9_l meas_result_list_utra_r9; meas_result_list_geran_l meas_result_list_geran_r9; meas_result_list2_cdma2000_r9_l meas_results_cdma2000_r9; // sequence methods meas_result_neigh_cells_r9_s_(); }; struct failed_pcell_id_r10_c_ { struct pci_arfcn_r10_s_ { // member variables uint16_t pci_r10; uint16_t carrier_freq_r10; }; struct types { enum options { cell_global_id_r10, pci_arfcn_r10, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods failed_pcell_id_r10_c_() : type_(types::nulltype) {} failed_pcell_id_r10_c_(const failed_pcell_id_r10_c_& other); failed_pcell_id_r10_c_& operator=(const failed_pcell_id_r10_c_& other); ~failed_pcell_id_r10_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters cell_global_id_eutra_s& cell_global_id_r10() { assert_choice_type("cellGlobalId-r10", type_.to_string(), "failedPCellId-r10"); return c.get(); } pci_arfcn_r10_s_& pci_arfcn_r10() { assert_choice_type("pci-arfcn-r10", type_.to_string(), "failedPCellId-r10"); return c.get(); } const cell_global_id_eutra_s& cell_global_id_r10() const { assert_choice_type("cellGlobalId-r10", type_.to_string(), "failedPCellId-r10"); return c.get(); } const pci_arfcn_r10_s_& pci_arfcn_r10() const { assert_choice_type("pci-arfcn-r10", type_.to_string(), "failedPCellId-r10"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct conn_fail_type_r10_e_ { enum options { rlf, hof }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods conn_fail_type_r10_e_() {} conn_fail_type_r10_e_(options v) : value(v) {} conn_fail_type_r10_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct failed_pcell_id_v1090_s_ { // member variables uint32_t carrier_freq_v1090; }; struct basic_fields_r11_s_ { struct rlf_cause_r11_e_ { enum options { t310_expiry, random_access_problem, rlc_max_num_retx, t312_expiry_r12 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods rlf_cause_r11_e_() {} rlf_cause_r11_e_(options v) : value(v) {} rlf_cause_r11_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables fixed_bitstring<16> c_rnti_r11; rlf_cause_r11_e_ rlf_cause_r11; uint32_t time_since_fail_r11; }; struct prev_utra_cell_id_r11_s_ { struct pci_r11_c_ { struct types { enum options { fdd_r11, tdd_r11, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods pci_r11_c_() : type_(types::nulltype) {} pci_r11_c_(const pci_r11_c_& other); pci_r11_c_& operator=(const pci_r11_c_& other); ~pci_r11_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint16_t& fdd_r11() { assert_choice_type("fdd-r11", type_.to_string(), "physCellId-r11"); return c.get(); } uint8_t& tdd_r11() { assert_choice_type("tdd-r11", type_.to_string(), "physCellId-r11"); return c.get(); } const uint16_t& fdd_r11() const { assert_choice_type("fdd-r11", type_.to_string(), "physCellId-r11"); return c.get(); } const uint8_t& tdd_r11() const { assert_choice_type("tdd-r11", type_.to_string(), "physCellId-r11"); return c.get(); } private: types type_; choice_buffer_t<8> c; void destroy_(); }; // member variables bool cell_global_id_r11_present; uint16_t carrier_freq_r11; pci_r11_c_ pci_r11; cell_global_id_utra_s cell_global_id_r11; // sequence methods prev_utra_cell_id_r11_s_(); }; struct sel_utra_cell_id_r11_s_ { struct pci_r11_c_ { struct types { enum options { fdd_r11, tdd_r11, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods pci_r11_c_() : type_(types::nulltype) {} pci_r11_c_(const pci_r11_c_& other); pci_r11_c_& operator=(const pci_r11_c_& other); ~pci_r11_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint16_t& fdd_r11() { assert_choice_type("fdd-r11", type_.to_string(), "physCellId-r11"); return c.get(); } uint8_t& tdd_r11() { assert_choice_type("tdd-r11", type_.to_string(), "physCellId-r11"); return c.get(); } const uint16_t& fdd_r11() const { assert_choice_type("fdd-r11", type_.to_string(), "physCellId-r11"); return c.get(); } const uint8_t& tdd_r11() const { assert_choice_type("tdd-r11", type_.to_string(), "physCellId-r11"); return c.get(); } private: types type_; choice_buffer_t<8> c; void destroy_(); }; // member variables uint16_t carrier_freq_r11; pci_r11_c_ pci_r11; }; struct failed_pcell_id_v1250_s_ { // member variables fixed_bitstring<16> tac_failed_pcell_r12; }; // member variables bool ext; bool meas_result_neigh_cells_r9_present; meas_result_last_serv_cell_r9_s_ meas_result_last_serv_cell_r9; meas_result_neigh_cells_r9_s_ meas_result_neigh_cells_r9; // ... // group 0 bool location_info_r10_present; bool failed_pcell_id_r10_present; bool reest_cell_id_r10_present; bool time_conn_fail_r10_present; bool conn_fail_type_r10_present; bool prev_pcell_id_r10_present; copy_ptr location_info_r10; copy_ptr failed_pcell_id_r10; copy_ptr reest_cell_id_r10; uint16_t time_conn_fail_r10; conn_fail_type_r10_e_ conn_fail_type_r10; copy_ptr prev_pcell_id_r10; // group 1 bool failed_pcell_id_v1090_present; copy_ptr failed_pcell_id_v1090; // group 2 bool basic_fields_r11_present; bool prev_utra_cell_id_r11_present; bool sel_utra_cell_id_r11_present; copy_ptr basic_fields_r11; copy_ptr prev_utra_cell_id_r11; copy_ptr sel_utra_cell_id_r11; // group 3 bool failed_pcell_id_v1250_present; bool meas_result_last_serv_cell_v1250_present; bool last_serv_cell_rsrq_type_r12_present; bool meas_result_list_eutra_v1250_present; copy_ptr failed_pcell_id_v1250; int8_t meas_result_last_serv_cell_v1250; copy_ptr last_serv_cell_rsrq_type_r12; copy_ptr meas_result_list_eutra_v1250; // group 4 bool drb_established_with_qci_minus1_r13_present; // group 5 bool meas_result_last_serv_cell_v1360_present; int8_t meas_result_last_serv_cell_v1360; // group 6 bool log_meas_result_list_bt_r15_present; bool log_meas_result_list_wlan_r15_present; copy_ptr log_meas_result_list_bt_r15; copy_ptr log_meas_result_list_wlan_r15; // sequence methods rlf_report_r9_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReconfigurationComplete-v8a0-IEs ::= SEQUENCE struct rrc_conn_recfg_complete_v8a0_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; rrc_conn_recfg_complete_v1020_ies_s non_crit_ext; // sequence methods rrc_conn_recfg_complete_v8a0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReestablishmentComplete-v920-IEs ::= SEQUENCE struct rrc_conn_reest_complete_v920_ies_s { // member variables bool rlf_info_available_r9_present; bool non_crit_ext_present; rrc_conn_reest_complete_v8a0_ies_s non_crit_ext; // sequence methods rrc_conn_reest_complete_v920_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionResumeComplete-v1530-IEs ::= SEQUENCE struct rrc_conn_resume_complete_v1530_ies_s { // member variables bool log_meas_available_bt_r15_present; bool log_meas_available_wlan_r15_present; bool idle_meas_available_r15_present; bool flight_path_info_available_r15_present; bool non_crit_ext_present; // sequence methods rrc_conn_resume_complete_v1530_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionSetupComplete-v8a0-IEs ::= SEQUENCE struct rrc_conn_setup_complete_v8a0_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; rrc_conn_setup_complete_v1020_ies_s non_crit_ext; // sequence methods rrc_conn_setup_complete_v8a0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RSTD-InterFreqInfoList-r10 ::= SEQUENCE (SIZE(1..maxRSTD-Freq-r10)) OF RSTD-InterFreqInfo-r10 typedef dyn_array rstd_inter_freq_info_list_r10_l; // RegisteredMME ::= SEQUENCE struct registered_mme_s { // member variables bool plmn_id_present; plmn_id_s plmn_id; fixed_bitstring<16> mmegi; fixed_bitstring<8> mmec; // sequence methods registered_mme_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCGFailureInformation-v1310-IEs ::= SEQUENCE struct scg_fail_info_v1310_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; // sequence methods scg_fail_info_v1310_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SecurityModeComplete-v8a0-IEs ::= SEQUENCE struct security_mode_complete_v8a0_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; // sequence methods security_mode_complete_v8a0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SecurityModeFailure-v8a0-IEs ::= SEQUENCE struct security_mode_fail_v8a0_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; // sequence methods security_mode_fail_v8a0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SidelinkUEInformation-v1310-IEs ::= SEQUENCE struct sidelink_ue_info_v1310_ies_s { struct comm_tx_res_info_req_relay_r13_s_ { struct ue_type_r13_e_ { enum options { relay_ue, remote_ue }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods ue_type_r13_e_() {} ue_type_r13_e_(options v) : value(v) {} ue_type_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool comm_tx_res_req_relay_r13_present; bool comm_tx_res_req_relay_uc_r13_present; sl_comm_tx_res_req_r12_s comm_tx_res_req_relay_r13; sl_comm_tx_res_req_r12_s comm_tx_res_req_relay_uc_r13; ue_type_r13_e_ ue_type_r13; // sequence methods comm_tx_res_info_req_relay_r13_s_(); }; struct disc_tx_res_req_v1310_s_ { // member variables bool carrier_freq_disc_tx_r13_present; bool disc_tx_res_req_add_freq_r13_present; uint8_t carrier_freq_disc_tx_r13; sl_disc_tx_res_req_per_freq_list_r13_l disc_tx_res_req_add_freq_r13; // sequence methods disc_tx_res_req_v1310_s_(); }; // member variables bool comm_tx_res_req_uc_r13_present; bool comm_tx_res_info_req_relay_r13_present; bool disc_tx_res_req_v1310_present; bool disc_tx_res_req_ps_r13_present; bool disc_rx_gap_req_r13_present; bool disc_tx_gap_req_r13_present; bool disc_sys_info_report_freq_list_r13_present; bool non_crit_ext_present; sl_comm_tx_res_req_r12_s comm_tx_res_req_uc_r13; comm_tx_res_info_req_relay_r13_s_ comm_tx_res_info_req_relay_r13; disc_tx_res_req_v1310_s_ disc_tx_res_req_v1310; sl_disc_tx_res_req_r13_s disc_tx_res_req_ps_r13; sl_gap_request_r13_l disc_rx_gap_req_r13; sl_gap_request_r13_l disc_tx_gap_req_r13; sl_disc_sys_info_report_freq_list_r13_l disc_sys_info_report_freq_list_r13; sidelink_ue_info_v1430_ies_s non_crit_ext; // sequence methods sidelink_ue_info_v1310_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // TDM-AssistanceInfo-r11 ::= CHOICE struct tdm_assist_info_r11_c { struct drx_assist_info_r11_s_ { struct drx_cycle_len_r11_e_ { enum options { sf40, sf64, sf80, sf128, sf160, sf256, spare2, spare1 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods drx_cycle_len_r11_e_() {} drx_cycle_len_r11_e_(options v) : value(v) {} drx_cycle_len_r11_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct drx_active_time_r11_e_ { enum options { sf20, sf30, sf40, sf60, sf80, sf100, spare2, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods drx_active_time_r11_e_() {} drx_active_time_r11_e_(options v) : value(v) {} drx_active_time_r11_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool drx_offset_r11_present; drx_cycle_len_r11_e_ drx_cycle_len_r11; uint8_t drx_offset_r11; drx_active_time_r11_e_ drx_active_time_r11; // sequence methods drx_assist_info_r11_s_(); }; struct types { enum options { drx_assist_info_r11, idc_sf_pattern_list_r11, /*...*/ nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = true; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods tdm_assist_info_r11_c() : type_(types::nulltype) {} tdm_assist_info_r11_c(const tdm_assist_info_r11_c& other); tdm_assist_info_r11_c& operator=(const tdm_assist_info_r11_c& other); ~tdm_assist_info_r11_c() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters drx_assist_info_r11_s_& drx_assist_info_r11() { assert_choice_type("drx-AssistanceInfo-r11", type_.to_string(), "TDM-AssistanceInfo-r11"); return c.get(); } idc_sf_pattern_list_r11_l& idc_sf_pattern_list_r11() { assert_choice_type("idc-SubframePatternList-r11", type_.to_string(), "TDM-AssistanceInfo-r11"); return c.get(); } const drx_assist_info_r11_s_& drx_assist_info_r11() const { assert_choice_type("drx-AssistanceInfo-r11", type_.to_string(), "TDM-AssistanceInfo-r11"); return c.get(); } const idc_sf_pattern_list_r11_l& idc_sf_pattern_list_r11() const { assert_choice_type("idc-SubframePatternList-r11", type_.to_string(), "TDM-AssistanceInfo-r11"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // UE-CapabilityRAT-ContainerList ::= SEQUENCE (SIZE (0..maxRAT-Capabilities)) OF UE-CapabilityRAT-Container typedef dyn_array ue_cap_rat_container_list_l; // UEAssistanceInformation-v1430-IEs ::= SEQUENCE struct ueassist_info_v1430_ies_s { struct sps_assist_info_r14_s_ { // member variables bool traffic_pattern_info_list_sl_r14_present; bool traffic_pattern_info_list_ul_r14_present; traffic_pattern_info_list_r14_l traffic_pattern_info_list_sl_r14; traffic_pattern_info_list_r14_l traffic_pattern_info_list_ul_r14; // sequence methods sps_assist_info_r14_s_(); }; struct rlm_report_r14_s_ { struct rlm_event_r14_e_ { enum options { early_out_of_sync, early_in_sync }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods rlm_event_r14_e_() {} rlm_event_r14_e_(options v) : value(v) {} rlm_event_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct excess_rep_mpdcch_r14_e_ { enum options { excess_rep1, excess_rep2 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods excess_rep_mpdcch_r14_e_() {} excess_rep_mpdcch_r14_e_(options v) : value(v) {} excess_rep_mpdcch_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool excess_rep_mpdcch_r14_present; rlm_event_r14_e_ rlm_event_r14; excess_rep_mpdcch_r14_e_ excess_rep_mpdcch_r14; // sequence methods rlm_report_r14_s_(); }; // member variables bool bw_pref_r14_present; bool sps_assist_info_r14_present; bool rlm_report_r14_present; bool delay_budget_report_r14_present; bool non_crit_ext_present; bw_pref_r14_s bw_pref_r14; sps_assist_info_r14_s_ sps_assist_info_r14; rlm_report_r14_s_ rlm_report_r14; delay_budget_report_r14_c delay_budget_report_r14; ueassist_info_v1450_ies_s non_crit_ext; // sequence methods ueassist_info_v1430_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UECapabilityInformation-v8a0-IEs ::= SEQUENCE struct ue_cap_info_v8a0_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; ue_cap_info_v1250_ies_s non_crit_ext; // sequence methods ue_cap_info_v8a0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UEInformationResponse-v930-IEs ::= SEQUENCE struct ue_info_resp_v930_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; ue_info_resp_v1020_ies_s non_crit_ext; // sequence methods ue_info_resp_v930_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // ULHandoverPreparationTransfer-v8a0-IEs ::= SEQUENCE struct ul_ho_prep_transfer_v8a0_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; // sequence methods ul_ho_prep_transfer_v8a0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // ULInformationTransfer-v8a0-IEs ::= SEQUENCE struct ul_info_transfer_v8a0_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; // sequence methods ul_info_transfer_v8a0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // WLAN-Status-r13 ::= ENUMERATED struct wlan_status_r13_e { enum options { successful_association, fail_wlan_radio_link, fail_wlan_unavailable, fail_timeout }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods wlan_status_r13_e() {} wlan_status_r13_e(options v) : value(v) {} wlan_status_r13_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // WLANConnectionStatusReport-v1430-IEs ::= SEQUENCE struct wlan_conn_status_report_v1430_ies_s { // member variables bool non_crit_ext_present; wlan_status_v1430_e wlan_status_v1430; // sequence methods wlan_conn_status_report_v1430_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSFBParametersRequestCDMA2000-r8-IEs ::= SEQUENCE struct csfb_params_request_cdma2000_r8_ies_s { // member variables bool non_crit_ext_present; csfb_params_request_cdma2000_v8a0_ies_s non_crit_ext; // sequence methods csfb_params_request_cdma2000_r8_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CounterCheckResponse-r8-IEs ::= SEQUENCE struct counter_check_resp_r8_ies_s { // member variables bool non_crit_ext_present; drb_count_info_list_l drb_count_info_list; counter_check_resp_v8a0_ies_s non_crit_ext; // sequence methods counter_check_resp_r8_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // FailedLogicalChannelInfo-r15 ::= SEQUENCE struct failed_lc_ch_info_r15_s { struct failed_lc_ch_id_r15_s_ { struct cell_group_ind_r15_e_ { enum options { mn, sn }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods cell_group_ind_r15_e_() {} cell_group_ind_r15_e_(options v) : value(v) {} cell_group_ind_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool lc_ch_id_r15_present; bool lc_ch_id_ext_r15_present; cell_group_ind_r15_e_ cell_group_ind_r15; uint8_t lc_ch_id_r15; uint8_t lc_ch_id_ext_r15; // sequence methods failed_lc_ch_id_r15_s_(); }; struct fail_type_e_ { enum options { dupl, spare3, spare2, spare1 }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods fail_type_e_() {} fail_type_e_(options v) : value(v) {} fail_type_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables failed_lc_ch_id_r15_s_ failed_lc_ch_id_r15; fail_type_e_ fail_type; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // InDeviceCoexIndication-r11-IEs ::= SEQUENCE struct in_dev_coex_ind_r11_ies_s { // member variables bool affected_carrier_freq_list_r11_present; bool tdm_assist_info_r11_present; bool late_non_crit_ext_present; bool non_crit_ext_present; affected_carrier_freq_list_r11_l affected_carrier_freq_list_r11; tdm_assist_info_r11_c tdm_assist_info_r11; dyn_octstring late_non_crit_ext; in_dev_coex_ind_v11d0_ies_s non_crit_ext; // sequence methods in_dev_coex_ind_r11_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // InterFreqRSTDMeasurementIndication-r10-IEs ::= SEQUENCE struct inter_freq_rstd_meas_ind_r10_ies_s { struct rstd_inter_freq_ind_r10_c_ { struct start_s_ { // member variables rstd_inter_freq_info_list_r10_l rstd_inter_freq_info_list_r10; }; struct types { enum options { start, stop, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods rstd_inter_freq_ind_r10_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters start_s_& start() { assert_choice_type("start", type_.to_string(), "rstd-InterFreqIndication-r10"); return c; } const start_s_& start() const { assert_choice_type("start", type_.to_string(), "rstd-InterFreqIndication-r10"); return c; } private: types type_; start_s_ c; }; // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; rstd_inter_freq_ind_r10_c_ rstd_inter_freq_ind_r10; dyn_octstring late_non_crit_ext; // sequence methods inter_freq_rstd_meas_ind_r10_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MBMSCountingResponse-r10-IEs ::= SEQUENCE struct mbms_count_resp_r10_ies_s { // member variables bool mbsfn_area_idx_r10_present; bool count_resp_list_r10_present; bool late_non_crit_ext_present; bool non_crit_ext_present; uint8_t mbsfn_area_idx_r10; count_resp_list_r10_l count_resp_list_r10; dyn_octstring late_non_crit_ext; // sequence methods mbms_count_resp_r10_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MBMSInterestIndication-r11-IEs ::= SEQUENCE struct mbms_interest_ind_r11_ies_s { // member variables bool mbms_freq_list_r11_present; bool mbms_prio_r11_present; bool late_non_crit_ext_present; bool non_crit_ext_present; carrier_freq_list_mbms_r11_l mbms_freq_list_r11; dyn_octstring late_non_crit_ext; mbms_interest_ind_v1310_ies_s non_crit_ext; // sequence methods mbms_interest_ind_r11_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasReportAppLayer-r15-IEs ::= SEQUENCE struct meas_report_app_layer_r15_ies_s { struct service_type_e_ { enum options { qoe, qoemtsi, spare6, spare5, spare4, spare3, spare2, spare1 }; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods service_type_e_() {} service_type_e_(options v) : value(v) {} service_type_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool meas_report_app_layer_container_r15_present; bool service_type_present; bool non_crit_ext_present; dyn_octstring meas_report_app_layer_container_r15; service_type_e_ service_type; // sequence methods meas_report_app_layer_r15_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasurementReport-r8-IEs ::= SEQUENCE struct meas_report_r8_ies_s { // member variables bool non_crit_ext_present; meas_results_s meas_results; meas_report_v8a0_ies_s non_crit_ext; // sequence methods meas_report_r8_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // ProximityIndication-r9-IEs ::= SEQUENCE struct proximity_ind_r9_ies_s { struct type_r9_e_ { enum options { entering, leaving }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods type_r9_e_() {} type_r9_e_(options v) : value(v) {} type_r9_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct carrier_freq_r9_c_ { struct types { enum options { eutra_r9, utra_r9, /*...*/ eutra2_v9e0, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 1; static const bool has_ext = true; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods carrier_freq_r9_c_() : type_(types::nulltype) {} carrier_freq_r9_c_(const carrier_freq_r9_c_& other); carrier_freq_r9_c_& operator=(const carrier_freq_r9_c_& other); ~carrier_freq_r9_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint16_t& eutra_r9() { assert_choice_type("eutra-r9", type_.to_string(), "carrierFreq-r9"); return c.get(); } uint16_t& utra_r9() { assert_choice_type("utra-r9", type_.to_string(), "carrierFreq-r9"); return c.get(); } uint32_t& eutra2_v9e0() { assert_choice_type("eutra2-v9e0", type_.to_string(), "carrierFreq-r9"); return c.get(); } const uint16_t& eutra_r9() const { assert_choice_type("eutra-r9", type_.to_string(), "carrierFreq-r9"); return c.get(); } const uint16_t& utra_r9() const { assert_choice_type("utra-r9", type_.to_string(), "carrierFreq-r9"); return c.get(); } const uint32_t& eutra2_v9e0() const { assert_choice_type("eutra2-v9e0", type_.to_string(), "carrierFreq-r9"); return c.get(); } private: types type_; choice_buffer_t<8> c; void destroy_(); }; // member variables bool non_crit_ext_present; type_r9_e_ type_r9; carrier_freq_r9_c_ carrier_freq_r9; proximity_ind_v930_ies_s non_crit_ext; // sequence methods proximity_ind_r9_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RNReconfigurationComplete-r10-IEs ::= SEQUENCE struct rn_recfg_complete_r10_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; // sequence methods rn_recfg_complete_r10_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReconfigurationComplete-r8-IEs ::= SEQUENCE struct rrc_conn_recfg_complete_r8_ies_s { // member variables bool non_crit_ext_present; rrc_conn_recfg_complete_v8a0_ies_s non_crit_ext; // sequence methods rrc_conn_recfg_complete_r8_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReestablishmentComplete-r8-IEs ::= SEQUENCE struct rrc_conn_reest_complete_r8_ies_s { // member variables bool non_crit_ext_present; rrc_conn_reest_complete_v920_ies_s non_crit_ext; // sequence methods rrc_conn_reest_complete_r8_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionResumeComplete-r13-IEs ::= SEQUENCE struct rrc_conn_resume_complete_r13_ies_s { struct mob_state_r13_e_ { enum options { normal, medium, high, spare }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods mob_state_r13_e_() {} mob_state_r13_e_(options v) : value(v) {} mob_state_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool sel_plmn_id_r13_present; bool ded_info_nas_r13_present; bool rlf_info_available_r13_present; bool log_meas_available_r13_present; bool conn_est_fail_info_available_r13_present; bool mob_state_r13_present; bool mob_history_avail_r13_present; bool log_meas_available_mbsfn_r13_present; bool late_non_crit_ext_present; bool non_crit_ext_present; uint8_t sel_plmn_id_r13; dyn_octstring ded_info_nas_r13; mob_state_r13_e_ mob_state_r13; dyn_octstring late_non_crit_ext; rrc_conn_resume_complete_v1530_ies_s non_crit_ext; // sequence methods rrc_conn_resume_complete_r13_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionSetupComplete-r8-IEs ::= SEQUENCE struct rrc_conn_setup_complete_r8_ies_s { // member variables bool registered_mme_present; bool non_crit_ext_present; uint8_t sel_plmn_id; registered_mme_s registered_mme; dyn_octstring ded_info_nas; rrc_conn_setup_complete_v8a0_ies_s non_crit_ext; // sequence methods rrc_conn_setup_complete_r8_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCGFailureInformation-r12-IEs ::= SEQUENCE struct scg_fail_info_r12_ies_s { // member variables bool fail_report_scg_r12_present; bool non_crit_ext_present; fail_report_scg_r12_s fail_report_scg_r12; scg_fail_info_v1310_ies_s non_crit_ext; // sequence methods scg_fail_info_r12_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCGFailureInformationNR-r15-IEs ::= SEQUENCE struct scg_fail_info_nr_r15_ies_s { // member variables bool fail_report_scg_nr_r15_present; bool non_crit_ext_present; fail_report_scg_nr_r15_s fail_report_scg_nr_r15; // sequence methods scg_fail_info_nr_r15_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SecurityModeComplete-r8-IEs ::= SEQUENCE struct security_mode_complete_r8_ies_s { // member variables bool non_crit_ext_present; security_mode_complete_v8a0_ies_s non_crit_ext; // sequence methods security_mode_complete_r8_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SecurityModeFailure-r8-IEs ::= SEQUENCE struct security_mode_fail_r8_ies_s { // member variables bool non_crit_ext_present; security_mode_fail_v8a0_ies_s non_crit_ext; // sequence methods security_mode_fail_r8_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SidelinkUEInformation-r12-IEs ::= SEQUENCE struct sidelink_ue_info_r12_ies_s { // member variables bool comm_rx_interested_freq_r12_present; bool comm_tx_res_req_r12_present; bool disc_rx_interest_r12_present; bool disc_tx_res_req_r12_present; bool late_non_crit_ext_present; bool non_crit_ext_present; uint32_t comm_rx_interested_freq_r12; sl_comm_tx_res_req_r12_s comm_tx_res_req_r12; uint8_t disc_tx_res_req_r12; dyn_octstring late_non_crit_ext; sidelink_ue_info_v1310_ies_s non_crit_ext; // sequence methods sidelink_ue_info_r12_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UEAssistanceInformation-r11-IEs ::= SEQUENCE struct ueassist_info_r11_ies_s { struct pwr_pref_ind_r11_e_ { enum options { normal, low_pwr_consumption }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods pwr_pref_ind_r11_e_() {} pwr_pref_ind_r11_e_(options v) : value(v) {} pwr_pref_ind_r11_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool pwr_pref_ind_r11_present; bool late_non_crit_ext_present; bool non_crit_ext_present; pwr_pref_ind_r11_e_ pwr_pref_ind_r11; dyn_octstring late_non_crit_ext; ueassist_info_v1430_ies_s non_crit_ext; // sequence methods ueassist_info_r11_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UECapabilityInformation-r8-IEs ::= SEQUENCE struct ue_cap_info_r8_ies_s { // member variables bool non_crit_ext_present; ue_cap_rat_container_list_l ue_cap_rat_container_list; ue_cap_info_v8a0_ies_s non_crit_ext; // sequence methods ue_cap_info_r8_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UEInformationResponse-r9-IEs ::= SEQUENCE struct ue_info_resp_r9_ies_s { struct rach_report_r9_s_ { // member variables uint8_t nof_preambs_sent_r9; bool contention_detected_r9; }; // member variables bool rach_report_r9_present; bool rlf_report_r9_present; bool non_crit_ext_present; rach_report_r9_s_ rach_report_r9; rlf_report_r9_s rlf_report_r9; ue_info_resp_v930_ies_s non_crit_ext; // sequence methods ue_info_resp_r9_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // ULHandoverPreparationTransfer-r8-IEs ::= SEQUENCE struct ul_ho_prep_transfer_r8_ies_s { // member variables bool meid_present; bool non_crit_ext_present; cdma2000_type_e cdma2000_type; fixed_bitstring<56> meid; dyn_octstring ded_info; ul_ho_prep_transfer_v8a0_ies_s non_crit_ext; // sequence methods ul_ho_prep_transfer_r8_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // ULInformationTransfer-r8-IEs ::= SEQUENCE struct ul_info_transfer_r8_ies_s { struct ded_info_type_c_ { struct types { enum options { ded_info_nas, ded_info_cdma2000_minus1_xrtt, ded_info_cdma2000_hrpd, nulltype }; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods ded_info_type_c_() : type_(types::nulltype) {} ded_info_type_c_(const ded_info_type_c_& other); ded_info_type_c_& operator=(const ded_info_type_c_& other); ~ded_info_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(bit_ref& bref); void to_json(json_writer& j) const; // getters dyn_octstring& ded_info_nas() { assert_choice_type("dedicatedInfoNAS", type_.to_string(), "dedicatedInfoType"); return c.get(); } dyn_octstring& ded_info_cdma2000_minus1_xrtt() { assert_choice_type("dedicatedInfoCDMA2000-1XRTT", type_.to_string(), "dedicatedInfoType"); return c.get(); } dyn_octstring& ded_info_cdma2000_hrpd() { assert_choice_type("dedicatedInfoCDMA2000-HRPD", type_.to_string(), "dedicatedInfoType"); return c.get(); } const dyn_octstring& ded_info_nas() const { assert_choice_type("dedicatedInfoNAS", type_.to_string(), "dedicatedInfoType"); return c.get(); } const dyn_octstring& ded_info_cdma2000_minus1_xrtt() const { assert_choice_type("dedicatedInfoCDMA2000-1XRTT", type_.to_string(), "dedicatedInfoType"); return c.get(); } const dyn_octstring& ded_info_cdma2000_hrpd() const { assert_choice_type("dedicatedInfoCDMA2000-HRPD", type_.to_string(), "dedicatedInfoType"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables bool non_crit_ext_present; ded_info_type_c_ ded_info_type; ul_info_transfer_v8a0_ies_s non_crit_ext; // sequence methods ul_info_transfer_r8_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // ULInformationTransferMRDC-r15-IEs ::= SEQUENCE struct ul_info_transfer_mrdc_r15_ies_s { // member variables bool ul_dcch_msg_nr_r15_present; bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring ul_dcch_msg_nr_r15; dyn_octstring late_non_crit_ext; // sequence methods ul_info_transfer_mrdc_r15_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // WLANConnectionStatusReport-r13-IEs ::= SEQUENCE struct wlan_conn_status_report_r13_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; wlan_status_r13_e wlan_status_r13; dyn_octstring late_non_crit_ext; wlan_conn_status_report_v1430_ies_s non_crit_ext; // sequence methods wlan_conn_status_report_r13_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSFBParametersRequestCDMA2000 ::= SEQUENCE struct csfb_params_request_cdma2000_s { struct crit_exts_c_ { struct types { enum options { csfb_params_request_cdma2000_r8, crit_exts_future, nulltype }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters csfb_params_request_cdma2000_r8_ies_s& csfb_params_request_cdma2000_r8() { assert_choice_type("csfbParametersRequestCDMA2000-r8", type_.to_string(), "criticalExtensions"); return c.get(); } const csfb_params_request_cdma2000_r8_ies_s& csfb_params_request_cdma2000_r8() const { assert_choice_type("csfbParametersRequestCDMA2000-r8", type_.to_string(), "criticalExtensions"); 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(bit_ref& bref); void to_json(json_writer& j) const; }; // CounterCheckResponse ::= SEQUENCE struct counter_check_resp_s { struct crit_exts_c_ { struct types { enum options { counter_check_resp_r8, crit_exts_future, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters counter_check_resp_r8_ies_s& counter_check_resp_r8() { assert_choice_type("counterCheckResponse-r8", type_.to_string(), "criticalExtensions"); return c.get(); } const counter_check_resp_r8_ies_s& counter_check_resp_r8() const { assert_choice_type("counterCheckResponse-r8", type_.to_string(), "criticalExtensions"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables uint8_t rrc_transaction_id; crit_exts_c_ crit_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // FailureInformation-r15 ::= SEQUENCE struct fail_info_r15_s { // member variables bool failed_lc_ch_info_r15_present; failed_lc_ch_info_r15_s failed_lc_ch_info_r15; // sequence methods fail_info_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // InDeviceCoexIndication-r11 ::= SEQUENCE struct in_dev_coex_ind_r11_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { in_dev_coex_ind_r11, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters in_dev_coex_ind_r11_ies_s& in_dev_coex_ind_r11() { assert_choice_type("inDeviceCoexIndication-r11", type_.to_string(), "c1"); return c; } const in_dev_coex_ind_r11_ies_s& in_dev_coex_ind_r11() const { assert_choice_type("inDeviceCoexIndication-r11", type_.to_string(), "c1"); return c; } private: types type_; in_dev_coex_ind_r11_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); 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(bit_ref& bref); void to_json(json_writer& j) const; }; // InterFreqRSTDMeasurementIndication-r10 ::= SEQUENCE struct inter_freq_rstd_meas_ind_r10_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { inter_freq_rstd_meas_ind_r10, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters inter_freq_rstd_meas_ind_r10_ies_s& inter_freq_rstd_meas_ind_r10() { assert_choice_type("interFreqRSTDMeasurementIndication-r10", type_.to_string(), "c1"); return c; } const inter_freq_rstd_meas_ind_r10_ies_s& inter_freq_rstd_meas_ind_r10() const { assert_choice_type("interFreqRSTDMeasurementIndication-r10", type_.to_string(), "c1"); return c; } private: types type_; inter_freq_rstd_meas_ind_r10_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); 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(bit_ref& bref); void to_json(json_writer& j) const; }; // MBMSCountingResponse-r10 ::= SEQUENCE struct mbms_count_resp_r10_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { count_resp_r10, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters mbms_count_resp_r10_ies_s& count_resp_r10() { assert_choice_type("countingResponse-r10", type_.to_string(), "c1"); return c; } const mbms_count_resp_r10_ies_s& count_resp_r10() const { assert_choice_type("countingResponse-r10", type_.to_string(), "c1"); return c; } private: types type_; mbms_count_resp_r10_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); 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(bit_ref& bref); void to_json(json_writer& j) const; }; // MBMSInterestIndication-r11 ::= SEQUENCE struct mbms_interest_ind_r11_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { interest_ind_r11, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters mbms_interest_ind_r11_ies_s& interest_ind_r11() { assert_choice_type("interestIndication-r11", type_.to_string(), "c1"); return c; } const mbms_interest_ind_r11_ies_s& interest_ind_r11() const { assert_choice_type("interestIndication-r11", type_.to_string(), "c1"); return c; } private: types type_; mbms_interest_ind_r11_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); 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(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasReportAppLayer-r15 ::= SEQUENCE struct meas_report_app_layer_r15_s { struct crit_exts_c_ { struct types { enum options { meas_report_app_layer_r15, crit_exts_future, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters meas_report_app_layer_r15_ies_s& meas_report_app_layer_r15() { assert_choice_type("measReportAppLayer-r15", type_.to_string(), "criticalExtensions"); return c.get(); } const meas_report_app_layer_r15_ies_s& meas_report_app_layer_r15() const { assert_choice_type("measReportAppLayer-r15", type_.to_string(), "criticalExtensions"); 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(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasurementReport ::= SEQUENCE struct meas_report_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { meas_report_r8, spare7, spare6, spare5, spare4, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters meas_report_r8_ies_s& meas_report_r8() { assert_choice_type("measurementReport-r8", type_.to_string(), "c1"); return c; } const meas_report_r8_ies_s& meas_report_r8() const { assert_choice_type("measurementReport-r8", type_.to_string(), "c1"); return c; } private: types type_; meas_report_r8_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); 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(bit_ref& bref); void to_json(json_writer& j) const; }; // ProximityIndication-r9 ::= SEQUENCE struct proximity_ind_r9_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { proximity_ind_r9, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters proximity_ind_r9_ies_s& proximity_ind_r9() { assert_choice_type("proximityIndication-r9", type_.to_string(), "c1"); return c; } const proximity_ind_r9_ies_s& proximity_ind_r9() const { assert_choice_type("proximityIndication-r9", type_.to_string(), "c1"); return c; } private: types type_; proximity_ind_r9_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); 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(bit_ref& bref); void to_json(json_writer& j) const; }; // RNReconfigurationComplete-r10 ::= SEQUENCE struct rn_recfg_complete_r10_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { rn_recfg_complete_r10, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters rn_recfg_complete_r10_ies_s& rn_recfg_complete_r10() { assert_choice_type("rnReconfigurationComplete-r10", type_.to_string(), "c1"); return c; } const rn_recfg_complete_r10_ies_s& rn_recfg_complete_r10() const { assert_choice_type("rnReconfigurationComplete-r10", type_.to_string(), "c1"); return c; } private: types type_; rn_recfg_complete_r10_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables uint8_t rrc_transaction_id; crit_exts_c_ crit_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReconfigurationComplete ::= SEQUENCE struct rrc_conn_recfg_complete_s { struct crit_exts_c_ { struct types { enum options { rrc_conn_recfg_complete_r8, crit_exts_future, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters rrc_conn_recfg_complete_r8_ies_s& rrc_conn_recfg_complete_r8() { assert_choice_type("rrcConnectionReconfigurationComplete-r8", type_.to_string(), "criticalExtensions"); return c.get(); } const rrc_conn_recfg_complete_r8_ies_s& rrc_conn_recfg_complete_r8() const { assert_choice_type("rrcConnectionReconfigurationComplete-r8", type_.to_string(), "criticalExtensions"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables uint8_t rrc_transaction_id; crit_exts_c_ crit_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionReestablishmentComplete ::= SEQUENCE struct rrc_conn_reest_complete_s { struct crit_exts_c_ { struct types { enum options { rrc_conn_reest_complete_r8, crit_exts_future, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters rrc_conn_reest_complete_r8_ies_s& rrc_conn_reest_complete_r8() { assert_choice_type("rrcConnectionReestablishmentComplete-r8", type_.to_string(), "criticalExtensions"); return c.get(); } const rrc_conn_reest_complete_r8_ies_s& rrc_conn_reest_complete_r8() const { assert_choice_type("rrcConnectionReestablishmentComplete-r8", type_.to_string(), "criticalExtensions"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables uint8_t rrc_transaction_id; crit_exts_c_ crit_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionResumeComplete-r13 ::= SEQUENCE struct rrc_conn_resume_complete_r13_s { struct crit_exts_c_ { struct types { enum options { rrc_conn_resume_complete_r13, crit_exts_future, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters rrc_conn_resume_complete_r13_ies_s& rrc_conn_resume_complete_r13() { assert_choice_type("rrcConnectionResumeComplete-r13", type_.to_string(), "criticalExtensions"); return c.get(); } const rrc_conn_resume_complete_r13_ies_s& rrc_conn_resume_complete_r13() const { assert_choice_type("rrcConnectionResumeComplete-r13", type_.to_string(), "criticalExtensions"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables uint8_t rrc_transaction_id; crit_exts_c_ crit_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRCConnectionSetupComplete ::= SEQUENCE struct rrc_conn_setup_complete_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { rrc_conn_setup_complete_r8, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters rrc_conn_setup_complete_r8_ies_s& rrc_conn_setup_complete_r8() { assert_choice_type("rrcConnectionSetupComplete-r8", type_.to_string(), "c1"); return c; } const rrc_conn_setup_complete_r8_ies_s& rrc_conn_setup_complete_r8() const { assert_choice_type("rrcConnectionSetupComplete-r8", type_.to_string(), "c1"); return c; } private: types type_; rrc_conn_setup_complete_r8_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables uint8_t rrc_transaction_id; crit_exts_c_ crit_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCGFailureInformation-r12 ::= SEQUENCE struct scg_fail_info_r12_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { scg_fail_info_r12, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters scg_fail_info_r12_ies_s& scg_fail_info_r12() { assert_choice_type("scgFailureInformation-r12", type_.to_string(), "c1"); return c; } const scg_fail_info_r12_ies_s& scg_fail_info_r12() const { assert_choice_type("scgFailureInformation-r12", type_.to_string(), "c1"); return c; } private: types type_; scg_fail_info_r12_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); 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(bit_ref& bref); void to_json(json_writer& j) const; }; // SCGFailureInformationNR-r15 ::= SEQUENCE struct scg_fail_info_nr_r15_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { scg_fail_info_nr_r15, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters scg_fail_info_nr_r15_ies_s& scg_fail_info_nr_r15() { assert_choice_type("scgFailureInformationNR-r15", type_.to_string(), "c1"); return c; } const scg_fail_info_nr_r15_ies_s& scg_fail_info_nr_r15() const { assert_choice_type("scgFailureInformationNR-r15", type_.to_string(), "c1"); return c; } private: types type_; scg_fail_info_nr_r15_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); 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(bit_ref& bref); void to_json(json_writer& j) const; }; // SecurityModeComplete ::= SEQUENCE struct security_mode_complete_s { struct crit_exts_c_ { struct types { enum options { security_mode_complete_r8, crit_exts_future, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters security_mode_complete_r8_ies_s& security_mode_complete_r8() { assert_choice_type("securityModeComplete-r8", type_.to_string(), "criticalExtensions"); return c.get(); } const security_mode_complete_r8_ies_s& security_mode_complete_r8() const { assert_choice_type("securityModeComplete-r8", type_.to_string(), "criticalExtensions"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables uint8_t rrc_transaction_id; crit_exts_c_ crit_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SecurityModeFailure ::= SEQUENCE struct security_mode_fail_s { struct crit_exts_c_ { struct types { enum options { security_mode_fail_r8, crit_exts_future, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters security_mode_fail_r8_ies_s& security_mode_fail_r8() { assert_choice_type("securityModeFailure-r8", type_.to_string(), "criticalExtensions"); return c.get(); } const security_mode_fail_r8_ies_s& security_mode_fail_r8() const { assert_choice_type("securityModeFailure-r8", type_.to_string(), "criticalExtensions"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables uint8_t rrc_transaction_id; crit_exts_c_ crit_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SidelinkUEInformation-r12 ::= SEQUENCE struct sidelink_ue_info_r12_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { sidelink_ue_info_r12, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters sidelink_ue_info_r12_ies_s& sidelink_ue_info_r12() { assert_choice_type("sidelinkUEInformation-r12", type_.to_string(), "c1"); return c; } const sidelink_ue_info_r12_ies_s& sidelink_ue_info_r12() const { assert_choice_type("sidelinkUEInformation-r12", type_.to_string(), "c1"); return c; } private: types type_; sidelink_ue_info_r12_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); 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(bit_ref& bref); void to_json(json_writer& j) const; }; // UEAssistanceInformation-r11 ::= SEQUENCE struct ueassist_info_r11_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { ue_assist_info_r11, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters ueassist_info_r11_ies_s& ue_assist_info_r11() { assert_choice_type("ueAssistanceInformation-r11", type_.to_string(), "c1"); return c; } const ueassist_info_r11_ies_s& ue_assist_info_r11() const { assert_choice_type("ueAssistanceInformation-r11", type_.to_string(), "c1"); return c; } private: types type_; ueassist_info_r11_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); 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(bit_ref& bref); void to_json(json_writer& j) const; }; // UECapabilityInformation ::= SEQUENCE struct ue_cap_info_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { ue_cap_info_r8, spare7, spare6, spare5, spare4, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters ue_cap_info_r8_ies_s& ue_cap_info_r8() { assert_choice_type("ueCapabilityInformation-r8", type_.to_string(), "c1"); return c; } const ue_cap_info_r8_ies_s& ue_cap_info_r8() const { assert_choice_type("ueCapabilityInformation-r8", type_.to_string(), "c1"); return c; } private: types type_; ue_cap_info_r8_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables uint8_t rrc_transaction_id; crit_exts_c_ crit_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UEInformationResponse-r9 ::= SEQUENCE struct ue_info_resp_r9_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { ue_info_resp_r9, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters ue_info_resp_r9_ies_s& ue_info_resp_r9() { assert_choice_type("ueInformationResponse-r9", type_.to_string(), "c1"); return c; } const ue_info_resp_r9_ies_s& ue_info_resp_r9() const { assert_choice_type("ueInformationResponse-r9", type_.to_string(), "c1"); return c; } private: types type_; ue_info_resp_r9_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // member variables uint8_t rrc_transaction_id; crit_exts_c_ crit_exts; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // ULHandoverPreparationTransfer ::= SEQUENCE struct ul_ho_prep_transfer_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { ul_ho_prep_transfer_r8, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters ul_ho_prep_transfer_r8_ies_s& ul_ho_prep_transfer_r8() { assert_choice_type("ulHandoverPreparationTransfer-r8", type_.to_string(), "c1"); return c; } const ul_ho_prep_transfer_r8_ies_s& ul_ho_prep_transfer_r8() const { assert_choice_type("ulHandoverPreparationTransfer-r8", type_.to_string(), "c1"); return c; } private: types type_; ul_ho_prep_transfer_r8_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); 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(bit_ref& bref); void to_json(json_writer& j) const; }; // ULInformationTransfer ::= SEQUENCE struct ul_info_transfer_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { ul_info_transfer_r8, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters ul_info_transfer_r8_ies_s& ul_info_transfer_r8() { assert_choice_type("ulInformationTransfer-r8", type_.to_string(), "c1"); return c; } const ul_info_transfer_r8_ies_s& ul_info_transfer_r8() const { assert_choice_type("ulInformationTransfer-r8", type_.to_string(), "c1"); return c; } private: types type_; ul_info_transfer_r8_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); 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(bit_ref& bref); void to_json(json_writer& j) const; }; // ULInformationTransferMRDC-r15 ::= SEQUENCE struct ul_info_transfer_mrdc_r15_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { ul_info_transfer_mrdc_r15, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters ul_info_transfer_mrdc_r15_ies_s& ul_info_transfer_mrdc_r15() { assert_choice_type("ulInformationTransferMRDC-r15", type_.to_string(), "c1"); return c; } const ul_info_transfer_mrdc_r15_ies_s& ul_info_transfer_mrdc_r15() const { assert_choice_type("ulInformationTransferMRDC-r15", type_.to_string(), "c1"); return c; } private: types type_; ul_info_transfer_mrdc_r15_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); 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(bit_ref& bref); void to_json(json_writer& j) const; }; // WLANConnectionStatusReport-r13 ::= SEQUENCE struct wlan_conn_status_report_r13_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { wlan_conn_status_report_r13, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters wlan_conn_status_report_r13_ies_s& wlan_conn_status_report_r13() { assert_choice_type("wlanConnectionStatusReport-r13", type_.to_string(), "c1"); return c; } const wlan_conn_status_report_r13_ies_s& wlan_conn_status_report_r13() const { assert_choice_type("wlanConnectionStatusReport-r13", type_.to_string(), "c1"); return c; } private: types type_; wlan_conn_status_report_r13_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); 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(bit_ref& bref); void to_json(json_writer& j) const; }; // UL-DCCH-MessageType ::= CHOICE struct ul_dcch_msg_type_c { struct c1_c_ { struct types { enum options { csfb_params_request_cdma2000, meas_report, rrc_conn_recfg_complete, rrc_conn_reest_complete, rrc_conn_setup_complete, security_mode_complete, security_mode_fail, ue_cap_info, ul_ho_prep_transfer, ul_info_transfer, counter_check_resp, ue_info_resp_r9, proximity_ind_r9, rn_recfg_complete_r10, mbms_count_resp_r10, inter_freq_rstd_meas_ind_r10, nulltype }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // choice methods c1_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters csfb_params_request_cdma2000_s& csfb_params_request_cdma2000() { assert_choice_type("csfbParametersRequestCDMA2000", type_.to_string(), "c1"); return c.get(); } meas_report_s& meas_report() { assert_choice_type("measurementReport", type_.to_string(), "c1"); return c.get(); } rrc_conn_recfg_complete_s& rrc_conn_recfg_complete() { assert_choice_type("rrcConnectionReconfigurationComplete", type_.to_string(), "c1"); return c.get(); } rrc_conn_reest_complete_s& rrc_conn_reest_complete() { assert_choice_type("rrcConnectionReestablishmentComplete", type_.to_string(), "c1"); return c.get(); } rrc_conn_setup_complete_s& rrc_conn_setup_complete() { assert_choice_type("rrcConnectionSetupComplete", type_.to_string(), "c1"); return c.get(); } security_mode_complete_s& security_mode_complete() { assert_choice_type("securityModeComplete", type_.to_string(), "c1"); return c.get(); } security_mode_fail_s& security_mode_fail() { assert_choice_type("securityModeFailure", type_.to_string(), "c1"); return c.get(); } ue_cap_info_s& ue_cap_info() { assert_choice_type("ueCapabilityInformation", type_.to_string(), "c1"); return c.get(); } ul_ho_prep_transfer_s& ul_ho_prep_transfer() { assert_choice_type("ulHandoverPreparationTransfer", type_.to_string(), "c1"); return c.get(); } ul_info_transfer_s& ul_info_transfer() { assert_choice_type("ulInformationTransfer", type_.to_string(), "c1"); return c.get(); } counter_check_resp_s& counter_check_resp() { assert_choice_type("counterCheckResponse", type_.to_string(), "c1"); return c.get(); } ue_info_resp_r9_s& ue_info_resp_r9() { assert_choice_type("ueInformationResponse-r9", type_.to_string(), "c1"); return c.get(); } proximity_ind_r9_s& proximity_ind_r9() { assert_choice_type("proximityIndication-r9", type_.to_string(), "c1"); return c.get(); } rn_recfg_complete_r10_s& rn_recfg_complete_r10() { assert_choice_type("rnReconfigurationComplete-r10", type_.to_string(), "c1"); return c.get(); } mbms_count_resp_r10_s& mbms_count_resp_r10() { assert_choice_type("mbmsCountingResponse-r10", type_.to_string(), "c1"); return c.get(); } inter_freq_rstd_meas_ind_r10_s& inter_freq_rstd_meas_ind_r10() { assert_choice_type("interFreqRSTDMeasurementIndication-r10", type_.to_string(), "c1"); return c.get(); } const csfb_params_request_cdma2000_s& csfb_params_request_cdma2000() const { assert_choice_type("csfbParametersRequestCDMA2000", type_.to_string(), "c1"); return c.get(); } const meas_report_s& meas_report() const { assert_choice_type("measurementReport", type_.to_string(), "c1"); return c.get(); } const rrc_conn_recfg_complete_s& rrc_conn_recfg_complete() const { assert_choice_type("rrcConnectionReconfigurationComplete", type_.to_string(), "c1"); return c.get(); } const rrc_conn_reest_complete_s& rrc_conn_reest_complete() const { assert_choice_type("rrcConnectionReestablishmentComplete", type_.to_string(), "c1"); return c.get(); } const rrc_conn_setup_complete_s& rrc_conn_setup_complete() const { assert_choice_type("rrcConnectionSetupComplete", type_.to_string(), "c1"); return c.get(); } const security_mode_complete_s& security_mode_complete() const { assert_choice_type("securityModeComplete", type_.to_string(), "c1"); return c.get(); } const security_mode_fail_s& security_mode_fail() const { assert_choice_type("securityModeFailure", type_.to_string(), "c1"); return c.get(); } const ue_cap_info_s& ue_cap_info() const { assert_choice_type("ueCapabilityInformation", type_.to_string(), "c1"); return c.get(); } const ul_ho_prep_transfer_s& ul_ho_prep_transfer() const { assert_choice_type("ulHandoverPreparationTransfer", type_.to_string(), "c1"); return c.get(); } const ul_info_transfer_s& ul_info_transfer() const { assert_choice_type("ulInformationTransfer", type_.to_string(), "c1"); return c.get(); } const counter_check_resp_s& counter_check_resp() const { assert_choice_type("counterCheckResponse", type_.to_string(), "c1"); return c.get(); } const ue_info_resp_r9_s& ue_info_resp_r9() const { assert_choice_type("ueInformationResponse-r9", type_.to_string(), "c1"); return c.get(); } const proximity_ind_r9_s& proximity_ind_r9() const { assert_choice_type("proximityIndication-r9", type_.to_string(), "c1"); return c.get(); } const rn_recfg_complete_r10_s& rn_recfg_complete_r10() const { assert_choice_type("rnReconfigurationComplete-r10", type_.to_string(), "c1"); return c.get(); } const mbms_count_resp_r10_s& mbms_count_resp_r10() const { assert_choice_type("mbmsCountingResponse-r10", type_.to_string(), "c1"); return c.get(); } const inter_freq_rstd_meas_ind_r10_s& inter_freq_rstd_meas_ind_r10() const { assert_choice_type("interFreqRSTDMeasurementIndication-r10", type_.to_string(), "c1"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct msg_class_ext_c_ { struct c2_c_ { struct types { enum options { ue_assist_info_r11, in_dev_coex_ind_r11, mbms_interest_ind_r11, scg_fail_info_r12, sidelink_ue_info_r12, wlan_conn_status_report_r13, rrc_conn_resume_complete_r13, ul_info_transfer_mrdc_r15, scg_fail_info_nr_r15, meas_report_app_layer_r15, fail_info_r15, spare5, spare4, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c2_c_() : type_(types::nulltype) {} c2_c_(const c2_c_& other); c2_c_& operator=(const c2_c_& other); ~c2_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters ueassist_info_r11_s& ue_assist_info_r11() { assert_choice_type("ueAssistanceInformation-r11", type_.to_string(), "c2"); return c.get(); } in_dev_coex_ind_r11_s& in_dev_coex_ind_r11() { assert_choice_type("inDeviceCoexIndication-r11", type_.to_string(), "c2"); return c.get(); } mbms_interest_ind_r11_s& mbms_interest_ind_r11() { assert_choice_type("mbmsInterestIndication-r11", type_.to_string(), "c2"); return c.get(); } scg_fail_info_r12_s& scg_fail_info_r12() { assert_choice_type("scgFailureInformation-r12", type_.to_string(), "c2"); return c.get(); } sidelink_ue_info_r12_s& sidelink_ue_info_r12() { assert_choice_type("sidelinkUEInformation-r12", type_.to_string(), "c2"); return c.get(); } wlan_conn_status_report_r13_s& wlan_conn_status_report_r13() { assert_choice_type("wlanConnectionStatusReport-r13", type_.to_string(), "c2"); return c.get(); } rrc_conn_resume_complete_r13_s& rrc_conn_resume_complete_r13() { assert_choice_type("rrcConnectionResumeComplete-r13", type_.to_string(), "c2"); return c.get(); } ul_info_transfer_mrdc_r15_s& ul_info_transfer_mrdc_r15() { assert_choice_type("ulInformationTransferMRDC-r15", type_.to_string(), "c2"); return c.get(); } scg_fail_info_nr_r15_s& scg_fail_info_nr_r15() { assert_choice_type("scgFailureInformationNR-r15", type_.to_string(), "c2"); return c.get(); } meas_report_app_layer_r15_s& meas_report_app_layer_r15() { assert_choice_type("measReportAppLayer-r15", type_.to_string(), "c2"); return c.get(); } fail_info_r15_s& fail_info_r15() { assert_choice_type("failureInformation-r15", type_.to_string(), "c2"); return c.get(); } const ueassist_info_r11_s& ue_assist_info_r11() const { assert_choice_type("ueAssistanceInformation-r11", type_.to_string(), "c2"); return c.get(); } const in_dev_coex_ind_r11_s& in_dev_coex_ind_r11() const { assert_choice_type("inDeviceCoexIndication-r11", type_.to_string(), "c2"); return c.get(); } const mbms_interest_ind_r11_s& mbms_interest_ind_r11() const { assert_choice_type("mbmsInterestIndication-r11", type_.to_string(), "c2"); return c.get(); } const scg_fail_info_r12_s& scg_fail_info_r12() const { assert_choice_type("scgFailureInformation-r12", type_.to_string(), "c2"); return c.get(); } const sidelink_ue_info_r12_s& sidelink_ue_info_r12() const { assert_choice_type("sidelinkUEInformation-r12", type_.to_string(), "c2"); return c.get(); } const wlan_conn_status_report_r13_s& wlan_conn_status_report_r13() const { assert_choice_type("wlanConnectionStatusReport-r13", type_.to_string(), "c2"); return c.get(); } const rrc_conn_resume_complete_r13_s& rrc_conn_resume_complete_r13() const { assert_choice_type("rrcConnectionResumeComplete-r13", type_.to_string(), "c2"); return c.get(); } const ul_info_transfer_mrdc_r15_s& ul_info_transfer_mrdc_r15() const { assert_choice_type("ulInformationTransferMRDC-r15", type_.to_string(), "c2"); return c.get(); } const scg_fail_info_nr_r15_s& scg_fail_info_nr_r15() const { assert_choice_type("scgFailureInformationNR-r15", type_.to_string(), "c2"); return c.get(); } const meas_report_app_layer_r15_s& meas_report_app_layer_r15() const { assert_choice_type("measReportAppLayer-r15", type_.to_string(), "c2"); return c.get(); } const fail_info_r15_s& fail_info_r15() const { assert_choice_type("failureInformation-r15", type_.to_string(), "c2"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct types { enum options { c2, msg_class_ext_future_r11, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods msg_class_ext_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c2_c_& c2() { assert_choice_type("c2", type_.to_string(), "messageClassExtension"); return c.get(); } const c2_c_& c2() const { assert_choice_type("c2", type_.to_string(), "messageClassExtension"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; struct types { enum options { c1, msg_class_ext, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods ul_dcch_msg_type_c() : type_(types::nulltype) {} ul_dcch_msg_type_c(const ul_dcch_msg_type_c& other); ul_dcch_msg_type_c& operator=(const ul_dcch_msg_type_c& other); ~ul_dcch_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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "UL-DCCH-MessageType"); return c.get(); } msg_class_ext_c_& msg_class_ext() { assert_choice_type("messageClassExtension", type_.to_string(), "UL-DCCH-MessageType"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "UL-DCCH-MessageType"); return c.get(); } const msg_class_ext_c_& msg_class_ext() const { assert_choice_type("messageClassExtension", type_.to_string(), "UL-DCCH-MessageType"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // UL-DCCH-Message ::= SEQUENCE struct ul_dcch_msg_s { // member variables ul_dcch_msg_type_c msg; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // InterFreqBandInfo ::= SEQUENCE struct inter_freq_band_info_s { // member variables bool inter_freq_need_for_gaps; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // InterRAT-BandInfo ::= SEQUENCE struct inter_rat_band_info_s { // member variables bool inter_rat_need_for_gaps; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // InterFreqBandList ::= SEQUENCE (SIZE (1..maxBands)) OF InterFreqBandInfo typedef dyn_array inter_freq_band_list_l; // InterRAT-BandList ::= SEQUENCE (SIZE (1..maxBands)) OF InterRAT-BandInfo typedef dyn_array inter_rat_band_list_l; // BandInfoEUTRA ::= SEQUENCE struct band_info_eutra_s { // member variables bool inter_rat_band_list_present; inter_freq_band_list_l inter_freq_band_list; inter_rat_band_list_l inter_rat_band_list; // sequence methods band_info_eutra_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandCombinationListEUTRA-r10 ::= SEQUENCE (SIZE (1..maxBandComb-r10)) OF BandInfoEUTRA typedef dyn_array band_combination_list_eutra_r10_l; // MIMO-CapabilityDL-r10 ::= ENUMERATED struct mimo_cap_dl_r10_e { enum options { two_layers, four_layers, eight_layers }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods mimo_cap_dl_r10_e() {} mimo_cap_dl_r10_e(options v) : value(v) {} mimo_cap_dl_r10_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // MIMO-CapabilityUL-r10 ::= ENUMERATED struct mimo_cap_ul_r10_e { enum options { two_layers, four_layers }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods mimo_cap_ul_r10_e() {} mimo_cap_ul_r10_e(options v) : value(v) {} mimo_cap_ul_r10_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // CA-MIMO-ParametersDL-r10 ::= SEQUENCE struct ca_mimo_params_dl_r10_s { // member variables bool supported_mimo_cap_dl_r10_present; ca_bw_class_r10_e ca_bw_class_dl_r10; mimo_cap_dl_r10_e supported_mimo_cap_dl_r10; // sequence methods ca_mimo_params_dl_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CA-MIMO-ParametersUL-r10 ::= SEQUENCE struct ca_mimo_params_ul_r10_s { // member variables bool supported_mimo_cap_ul_r10_present; ca_bw_class_r10_e ca_bw_class_ul_r10; mimo_cap_ul_r10_e supported_mimo_cap_ul_r10; // sequence methods ca_mimo_params_ul_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandParametersDL-r10 ::= SEQUENCE (SIZE (1..maxBandwidthClass-r10)) OF CA-MIMO-ParametersDL-r10 typedef dyn_array band_params_dl_r10_l; // BandParametersUL-r10 ::= SEQUENCE (SIZE (1..maxBandwidthClass-r10)) OF CA-MIMO-ParametersUL-r10 typedef dyn_array band_params_ul_r10_l; // BandParameters-r10 ::= SEQUENCE struct band_params_r10_s { // member variables bool band_params_ul_r10_present; bool band_params_dl_r10_present; uint8_t band_eutra_r10; band_params_ul_r10_l band_params_ul_r10; band_params_dl_r10_l band_params_dl_r10; // sequence methods band_params_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandCombinationParameters-r10 ::= SEQUENCE (SIZE (1..maxSimultaneousBands-r10)) OF BandParameters-r10 typedef dyn_array band_combination_params_r10_l; // BandParameters-r11 ::= SEQUENCE struct band_params_r11_s { struct supported_csi_proc_r11_e_ { enum options { n1, n3, n4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods supported_csi_proc_r11_e_() {} supported_csi_proc_r11_e_(options v) : value(v) {} supported_csi_proc_r11_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool band_params_ul_r11_present; bool band_params_dl_r11_present; bool supported_csi_proc_r11_present; uint16_t band_eutra_r11; band_params_ul_r10_l band_params_ul_r11; band_params_dl_r10_l band_params_dl_r11; supported_csi_proc_r11_e_ supported_csi_proc_r11; // sequence methods band_params_r11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandCombinationParameters-r11 ::= SEQUENCE struct band_combination_params_r11_s { typedef dyn_array band_param_list_r11_l_; // member variables bool ext; bool supported_bw_combination_set_r11_present; bool multiple_timing_advance_r11_present; bool simul_rx_tx_r11_present; band_param_list_r11_l_ band_param_list_r11; dyn_bitstring supported_bw_combination_set_r11; band_info_eutra_s band_info_eutra_r11; // ... // sequence methods band_combination_params_r11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // IntraBandContiguousCC-Info-r12 ::= SEQUENCE struct intra_band_contiguous_cc_info_r12_s { struct supported_csi_proc_r12_e_ { enum options { n1, n3, n4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods supported_csi_proc_r12_e_() {} supported_csi_proc_r12_e_(options v) : value(v) {} supported_csi_proc_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool four_layer_tm3_tm4_per_cc_r12_present; bool supported_mimo_cap_dl_r12_present; bool supported_csi_proc_r12_present; mimo_cap_dl_r10_e supported_mimo_cap_dl_r12; supported_csi_proc_r12_e_ supported_csi_proc_r12; // sequence methods intra_band_contiguous_cc_info_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CA-MIMO-ParametersDL-r13 ::= SEQUENCE struct ca_mimo_params_dl_r13_s { typedef dyn_array intra_band_contiguous_cc_info_list_r13_l_; // member variables bool supported_mimo_cap_dl_r13_present; bool four_layer_tm3_tm4_r13_present; ca_bw_class_r10_e ca_bw_class_dl_r13; mimo_cap_dl_r10_e supported_mimo_cap_dl_r13; intra_band_contiguous_cc_info_list_r13_l_ intra_band_contiguous_cc_info_list_r13; // sequence methods ca_mimo_params_dl_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandParametersDL-r13 ::= CA-MIMO-ParametersDL-r13 typedef ca_mimo_params_dl_r13_s band_params_dl_r13_s; // BandParametersUL-r13 ::= CA-MIMO-ParametersUL-r10 typedef ca_mimo_params_ul_r10_s band_params_ul_r13_s; // BandParameters-r13 ::= SEQUENCE struct band_params_r13_s { struct supported_csi_proc_r13_e_ { enum options { n1, n3, n4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods supported_csi_proc_r13_e_() {} supported_csi_proc_r13_e_(options v) : value(v) {} supported_csi_proc_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool band_params_ul_r13_present; bool band_params_dl_r13_present; bool supported_csi_proc_r13_present; uint16_t band_eutra_r13; band_params_ul_r13_s band_params_ul_r13; band_params_dl_r13_s band_params_dl_r13; supported_csi_proc_r13_e_ supported_csi_proc_r13; // sequence methods band_params_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandCombinationParameters-r13 ::= SEQUENCE struct band_combination_params_r13_s { typedef dyn_array band_param_list_r13_l_; struct dc_support_r13_s_ { struct supported_cell_grouping_r13_c_ { struct types { enum options { three_entries_r13, four_entries_r13, five_entries_r13, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods supported_cell_grouping_r13_c_() : type_(types::nulltype) {} supported_cell_grouping_r13_c_(const supported_cell_grouping_r13_c_& other); supported_cell_grouping_r13_c_& operator=(const supported_cell_grouping_r13_c_& other); ~supported_cell_grouping_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(bit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<3>& three_entries_r13() { assert_choice_type("threeEntries-r13", type_.to_string(), "supportedCellGrouping-r13"); return c.get >(); } fixed_bitstring<7>& four_entries_r13() { assert_choice_type("fourEntries-r13", type_.to_string(), "supportedCellGrouping-r13"); return c.get >(); } fixed_bitstring<15>& five_entries_r13() { assert_choice_type("fiveEntries-r13", type_.to_string(), "supportedCellGrouping-r13"); return c.get >(); } const fixed_bitstring<3>& three_entries_r13() const { assert_choice_type("threeEntries-r13", type_.to_string(), "supportedCellGrouping-r13"); return c.get >(); } const fixed_bitstring<7>& four_entries_r13() const { assert_choice_type("fourEntries-r13", type_.to_string(), "supportedCellGrouping-r13"); return c.get >(); } const fixed_bitstring<15>& five_entries_r13() const { assert_choice_type("fiveEntries-r13", type_.to_string(), "supportedCellGrouping-r13"); return c.get >(); } private: types type_; choice_buffer_t)> c; void destroy_(); }; // member variables bool async_r13_present; bool supported_cell_grouping_r13_present; supported_cell_grouping_r13_c_ supported_cell_grouping_r13; // sequence methods dc_support_r13_s_(); }; // member variables bool different_fallback_supported_r13_present; bool supported_bw_combination_set_r13_present; bool multiple_timing_advance_r13_present; bool simul_rx_tx_r13_present; bool dc_support_r13_present; bool supported_naics_minus2_crs_ap_r13_present; bool comm_supported_bands_per_bc_r13_present; band_param_list_r13_l_ band_param_list_r13; dyn_bitstring supported_bw_combination_set_r13; band_info_eutra_s band_info_eutra_r13; dc_support_r13_s_ dc_support_r13; dyn_bitstring supported_naics_minus2_crs_ap_r13; dyn_bitstring comm_supported_bands_per_bc_r13; // sequence methods band_combination_params_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandParameters-v1090 ::= SEQUENCE struct band_params_v1090_s { // member variables bool ext; bool band_eutra_v1090_present; uint16_t band_eutra_v1090; // ... // sequence methods band_params_v1090_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandCombinationParameters-v1090 ::= SEQUENCE (SIZE (1..maxSimultaneousBands-r10)) OF BandParameters-v1090 typedef dyn_array band_combination_params_v1090_l; // CA-MIMO-ParametersDL-v10i0 ::= SEQUENCE struct ca_mimo_params_dl_v10i0_s { // member variables bool four_layer_tm3_tm4_r10_present; // sequence methods ca_mimo_params_dl_v10i0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandParameters-v10i0 ::= SEQUENCE struct band_params_v10i0_s { typedef dyn_array band_params_dl_v10i0_l_; // member variables band_params_dl_v10i0_l_ band_params_dl_v10i0; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandCombinationParameters-v10i0 ::= SEQUENCE struct band_combination_params_v10i0_s { typedef dyn_array band_param_list_v10i0_l_; // member variables bool band_param_list_v10i0_present; band_param_list_v10i0_l_ band_param_list_v10i0; // sequence methods band_combination_params_v10i0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandParameters-v1130 ::= SEQUENCE struct band_params_v1130_s { struct supported_csi_proc_r11_e_ { enum options { n1, n3, n4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods supported_csi_proc_r11_e_() {} supported_csi_proc_r11_e_(options v) : value(v) {} supported_csi_proc_r11_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables supported_csi_proc_r11_e_ supported_csi_proc_r11; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandCombinationParameters-v1130 ::= SEQUENCE struct band_combination_params_v1130_s { typedef dyn_array band_param_list_r11_l_; // member variables bool ext; bool multiple_timing_advance_r11_present; bool simul_rx_tx_r11_present; bool band_param_list_r11_present; band_param_list_r11_l_ band_param_list_r11; // ... // sequence methods band_combination_params_v1130_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandCombinationParameters-v1250 ::= SEQUENCE struct band_combination_params_v1250_s { struct dc_support_r12_s_ { struct supported_cell_grouping_r12_c_ { struct types { enum options { three_entries_r12, four_entries_r12, five_entries_r12, nulltype }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // choice methods supported_cell_grouping_r12_c_() : type_(types::nulltype) {} supported_cell_grouping_r12_c_(const supported_cell_grouping_r12_c_& other); supported_cell_grouping_r12_c_& operator=(const supported_cell_grouping_r12_c_& other); ~supported_cell_grouping_r12_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters fixed_bitstring<3>& three_entries_r12() { assert_choice_type("threeEntries-r12", type_.to_string(), "supportedCellGrouping-r12"); return c.get >(); } fixed_bitstring<7>& four_entries_r12() { assert_choice_type("fourEntries-r12", type_.to_string(), "supportedCellGrouping-r12"); return c.get >(); } fixed_bitstring<15>& five_entries_r12() { assert_choice_type("fiveEntries-r12", type_.to_string(), "supportedCellGrouping-r12"); return c.get >(); } const fixed_bitstring<3>& three_entries_r12() const { assert_choice_type("threeEntries-r12", type_.to_string(), "supportedCellGrouping-r12"); return c.get >(); } const fixed_bitstring<7>& four_entries_r12() const { assert_choice_type("fourEntries-r12", type_.to_string(), "supportedCellGrouping-r12"); return c.get >(); } const fixed_bitstring<15>& five_entries_r12() const { assert_choice_type("fiveEntries-r12", type_.to_string(), "supportedCellGrouping-r12"); return c.get >(); } private: types type_; choice_buffer_t)> c; void destroy_(); }; // member variables bool async_r12_present; bool supported_cell_grouping_r12_present; supported_cell_grouping_r12_c_ supported_cell_grouping_r12; // sequence methods dc_support_r12_s_(); }; // member variables bool ext; bool dc_support_r12_present; bool supported_naics_minus2_crs_ap_r12_present; bool comm_supported_bands_per_bc_r12_present; dc_support_r12_s_ dc_support_r12; dyn_bitstring supported_naics_minus2_crs_ap_r12; dyn_bitstring comm_supported_bands_per_bc_r12; // ... // sequence methods band_combination_params_v1250_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CA-MIMO-ParametersDL-v1270 ::= SEQUENCE struct ca_mimo_params_dl_v1270_s { typedef dyn_array intra_band_contiguous_cc_info_list_r12_l_; // member variables intra_band_contiguous_cc_info_list_r12_l_ intra_band_contiguous_cc_info_list_r12; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandParameters-v1270 ::= SEQUENCE struct band_params_v1270_s { typedef dyn_array band_params_dl_v1270_l_; // member variables band_params_dl_v1270_l_ band_params_dl_v1270; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandCombinationParameters-v1270 ::= SEQUENCE struct band_combination_params_v1270_s { typedef dyn_array band_param_list_v1270_l_; // member variables bool band_param_list_v1270_present; band_param_list_v1270_l_ band_param_list_v1270; // sequence methods band_combination_params_v1270_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MIMO-BeamformedCapabilities-r13 ::= SEQUENCE struct mimo_beamformed_capabilities_r13_s { // member variables bool n_max_list_r13_present; uint8_t k_max_r13; dyn_bitstring n_max_list_r13; // sequence methods mimo_beamformed_capabilities_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MIMO-BeamformedCapabilityList-r13 ::= SEQUENCE (SIZE (1..maxCSI-Proc-r11)) OF MIMO-BeamformedCapabilities-r13 typedef dyn_array mimo_beamformed_cap_list_r13_l; // MIMO-NonPrecodedCapabilities-r13 ::= SEQUENCE struct mimo_non_precoded_capabilities_r13_s { // member variables bool cfg1_r13_present; bool cfg2_r13_present; bool cfg3_r13_present; bool cfg4_r13_present; // sequence methods mimo_non_precoded_capabilities_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MIMO-CA-ParametersPerBoBCPerTM-r13 ::= SEQUENCE struct mimo_ca_params_per_bo_bc_per_tm_r13_s { // member variables bool non_precoded_r13_present; bool beamformed_r13_present; bool dmrs_enhance_r13_present; mimo_non_precoded_capabilities_r13_s non_precoded_r13; mimo_beamformed_cap_list_r13_l beamformed_r13; // sequence methods mimo_ca_params_per_bo_bc_per_tm_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MIMO-CA-ParametersPerBoBC-r13 ::= SEQUENCE struct mimo_ca_params_per_bo_bc_r13_s { // member variables bool params_tm9_r13_present; bool params_tm10_r13_present; mimo_ca_params_per_bo_bc_per_tm_r13_s params_tm9_r13; mimo_ca_params_per_bo_bc_per_tm_r13_s params_tm10_r13; // sequence methods mimo_ca_params_per_bo_bc_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandParameters-v1320 ::= SEQUENCE struct band_params_v1320_s { // member variables mimo_ca_params_per_bo_bc_r13_s band_params_dl_v1320; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandCombinationParameters-v1320 ::= SEQUENCE struct band_combination_params_v1320_s { typedef dyn_array band_param_list_v1320_l_; // member variables bool band_param_list_v1320_present; bool add_rx_tx_performance_req_r13_present; band_param_list_v1320_l_ band_param_list_v1320; // sequence methods band_combination_params_v1320_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandParameters-v1380 ::= SEQUENCE struct band_params_v1380_s { // member variables bool tx_ant_switch_dl_r13_present; bool tx_ant_switch_ul_r13_present; uint8_t tx_ant_switch_dl_r13; uint8_t tx_ant_switch_ul_r13; // sequence methods band_params_v1380_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandCombinationParameters-v1380 ::= SEQUENCE struct band_combination_params_v1380_s { typedef dyn_array band_param_list_v1380_l_; // member variables bool band_param_list_v1380_present; band_param_list_v1380_l_ band_param_list_v1380; // sequence methods band_combination_params_v1380_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MIMO-CA-ParametersPerBoBCPerTM-v1430 ::= SEQUENCE struct mimo_ca_params_per_bo_bc_per_tm_v1430_s { // member variables bool csi_report_np_r14_present; bool csi_report_advanced_r14_present; // sequence methods mimo_ca_params_per_bo_bc_per_tm_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MIMO-CA-ParametersPerBoBC-v1430 ::= SEQUENCE struct mimo_ca_params_per_bo_bc_v1430_s { // member variables bool params_tm9_v1430_present; bool params_tm10_v1430_present; mimo_ca_params_per_bo_bc_per_tm_v1430_s params_tm9_v1430; mimo_ca_params_per_bo_bc_per_tm_v1430_s params_tm10_v1430; // sequence methods mimo_ca_params_per_bo_bc_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RetuningTimeInfo-r14 ::= SEQUENCE struct retuning_time_info_r14_s { struct retuning_info_s_ { struct rf_retuning_time_dl_r14_e_ { enum options { n0, n0dot5, n1, n1dot5, n2, n2dot5, n3, n3dot5, n4, n4dot5, n5, n5dot5, n6, n6dot5, n7, spare1 }; typedef float number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods rf_retuning_time_dl_r14_e_() {} rf_retuning_time_dl_r14_e_(options v) : value(v) {} rf_retuning_time_dl_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; struct rf_retuning_time_ul_r14_e_ { enum options { n0, n0dot5, n1, n1dot5, n2, n2dot5, n3, n3dot5, n4, n4dot5, n5, n5dot5, n6, n6dot5, n7, spare1 }; typedef float number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods rf_retuning_time_ul_r14_e_() {} rf_retuning_time_ul_r14_e_(options v) : value(v) {} rf_retuning_time_ul_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; float to_number() const; std::string to_number_string() const; }; // member variables bool rf_retuning_time_dl_r14_present; bool rf_retuning_time_ul_r14_present; rf_retuning_time_dl_r14_e_ rf_retuning_time_dl_r14; rf_retuning_time_ul_r14_e_ rf_retuning_time_ul_r14; // sequence methods retuning_info_s_(); }; // member variables retuning_info_s_ retuning_info; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UL-256QAM-perCC-Info-r14 ::= SEQUENCE struct ul_minus256_qam_per_cc_info_r14_s { // member variables bool ul_minus256_qam_per_cc_r14_present; // sequence methods ul_minus256_qam_per_cc_info_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandParameters-v1430 ::= SEQUENCE struct band_params_v1430_s { typedef dyn_array ul_minus256_qam_per_cc_info_list_r14_l_; typedef dyn_array retuning_time_info_band_list_r14_l_; // member variables bool band_params_dl_v1430_present; bool ul_minus256_qam_r14_present; bool ul_minus256_qam_per_cc_info_list_r14_present; bool retuning_time_info_band_list_r14_present; mimo_ca_params_per_bo_bc_v1430_s band_params_dl_v1430; ul_minus256_qam_per_cc_info_list_r14_l_ ul_minus256_qam_per_cc_info_list_r14; retuning_time_info_band_list_r14_l_ retuning_time_info_band_list_r14; // sequence methods band_params_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandCombinationParameters-v1430 ::= SEQUENCE struct band_combination_params_v1430_s { typedef dyn_array band_param_list_v1430_l_; // member variables bool band_param_list_v1430_present; bool v2x_supported_tx_band_comb_list_per_bc_r14_present; bool v2x_supported_rx_band_comb_list_per_bc_r14_present; band_param_list_v1430_l_ band_param_list_v1430; dyn_bitstring v2x_supported_tx_band_comb_list_per_bc_r14; dyn_bitstring v2x_supported_rx_band_comb_list_per_bc_r14; // sequence methods band_combination_params_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MUST-Parameters-r14 ::= SEQUENCE struct must_params_r14_s { // member variables bool must_tm234_up_to2_tx_r14_present; bool must_tm89_up_to_one_interfering_layer_r14_present; bool must_tm10_up_to_one_interfering_layer_r14_present; bool must_tm89_up_to_three_interfering_layers_r14_present; bool must_tm10_up_to_three_interfering_layers_r14_present; // sequence methods must_params_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandParameters-v1450 ::= SEQUENCE struct band_params_v1450_s { // member variables bool must_cap_per_band_r14_present; must_params_r14_s must_cap_per_band_r14; // sequence methods band_params_v1450_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandCombinationParameters-v1450 ::= SEQUENCE struct band_combination_params_v1450_s { typedef dyn_array band_param_list_v1450_l_; // member variables bool band_param_list_v1450_present; band_param_list_v1450_l_ band_param_list_v1450; // sequence methods band_combination_params_v1450_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MIMO-CA-ParametersPerBoBCPerTM-v1470 ::= SEQUENCE struct mimo_ca_params_per_bo_bc_per_tm_v1470_s { struct csi_report_advanced_max_ports_r14_e_ { enum options { n8, n12, n16, n20, n24, n28 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods csi_report_advanced_max_ports_r14_e_() {} csi_report_advanced_max_ports_r14_e_(options v) : value(v) {} csi_report_advanced_max_ports_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool csi_report_advanced_max_ports_r14_present; csi_report_advanced_max_ports_r14_e_ csi_report_advanced_max_ports_r14; // sequence methods mimo_ca_params_per_bo_bc_per_tm_v1470_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MIMO-CA-ParametersPerBoBC-v1470 ::= SEQUENCE struct mimo_ca_params_per_bo_bc_v1470_s { // member variables mimo_ca_params_per_bo_bc_per_tm_v1470_s params_tm9_v1470; mimo_ca_params_per_bo_bc_per_tm_v1470_s params_tm10_v1470; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandParameters-v1470 ::= SEQUENCE struct band_params_v1470_s { // member variables bool band_params_dl_v1470_present; mimo_ca_params_per_bo_bc_v1470_s band_params_dl_v1470; // sequence methods band_params_v1470_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandCombinationParameters-v1470 ::= SEQUENCE struct band_combination_params_v1470_s { typedef dyn_array band_param_list_v1470_l_; // member variables bool band_param_list_v1470_present; bool srs_max_simul_ccs_r14_present; band_param_list_v1470_l_ band_param_list_v1470; uint8_t srs_max_simul_ccs_r14; // sequence methods band_combination_params_v1470_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DL-UL-CCs-r15 ::= SEQUENCE struct dl_ul_ccs_r15_s { // member variables bool max_num_dl_ccs_r15_present; bool max_num_ul_ccs_r15_present; uint8_t max_num_dl_ccs_r15; uint8_t max_num_ul_ccs_r15; // sequence methods dl_ul_ccs_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CA-MIMO-ParametersDL-r15 ::= SEQUENCE struct ca_mimo_params_dl_r15_s { typedef dyn_array intra_band_contiguous_cc_info_list_r15_l_; // member variables bool supported_mimo_cap_dl_r15_present; bool four_layer_tm3_tm4_r15_present; bool intra_band_contiguous_cc_info_list_r15_present; mimo_cap_dl_r10_e supported_mimo_cap_dl_r15; intra_band_contiguous_cc_info_list_r15_l_ intra_band_contiguous_cc_info_list_r15; // sequence methods ca_mimo_params_dl_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CA-MIMO-ParametersUL-r15 ::= SEQUENCE struct ca_mimo_params_ul_r15_s { // member variables bool supported_mimo_cap_ul_r15_present; mimo_cap_ul_r10_e supported_mimo_cap_ul_r15; // sequence methods ca_mimo_params_ul_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // STTI-SupportedCombinations-r15 ::= SEQUENCE struct stti_supported_combinations_r15_s { typedef dyn_array combination_minus22_minus27_r15_l_; typedef dyn_array combination_minus77_minus22_r15_l_; typedef dyn_array combination_minus77_minus27_r15_l_; // member variables bool combination_minus22_r15_present; bool combination_minus77_r15_present; bool combination_minus27_r15_present; bool combination_minus22_minus27_r15_present; bool combination_minus77_minus22_r15_present; bool combination_minus77_minus27_r15_present; dl_ul_ccs_r15_s combination_minus22_r15; dl_ul_ccs_r15_s combination_minus77_r15; dl_ul_ccs_r15_s combination_minus27_r15; combination_minus22_minus27_r15_l_ combination_minus22_minus27_r15; combination_minus77_minus22_r15_l_ combination_minus77_minus22_r15; combination_minus77_minus27_r15_l_ combination_minus77_minus27_r15; // sequence methods stti_supported_combinations_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // STTI-SPT-BandParameters-r15 ::= SEQUENCE struct stti_spt_band_params_r15_s { struct s_tti_supported_csi_proc_r15_e_ { enum options { n1, n3, n4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods s_tti_supported_csi_proc_r15_e_() {} s_tti_supported_csi_proc_r15_e_(options v) : value(v) {} s_tti_supported_csi_proc_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ext; bool dl_minus1024_qam_slot_r15_present; bool dl_minus1024_qam_subslot_ta_minus1_r15_present; bool dl_minus1024_qam_subslot_ta_minus2_r15_present; bool simul_tx_different_tx_dur_r15_present; bool s_tti_ca_mimo_params_dl_r15_present; bool s_tti_fd_mimo_coexistence_present; bool s_tti_mimo_ca_params_per_bo_bcs_r15_present; bool s_tti_mimo_ca_params_per_bo_bcs_v1530_present; bool s_tti_supported_combinations_r15_present; bool s_tti_supported_csi_proc_r15_present; bool ul_minus256_qam_slot_r15_present; bool ul_minus256_qam_subslot_r15_present; ca_mimo_params_dl_r15_s s_tti_ca_mimo_params_dl_r15; ca_mimo_params_ul_r15_s s_tti_ca_mimo_params_ul_r15; mimo_ca_params_per_bo_bc_r13_s s_tti_mimo_ca_params_per_bo_bcs_r15; mimo_ca_params_per_bo_bc_v1430_s s_tti_mimo_ca_params_per_bo_bcs_v1530; stti_supported_combinations_r15_s s_tti_supported_combinations_r15; s_tti_supported_csi_proc_r15_e_ s_tti_supported_csi_proc_r15; // ... // sequence methods stti_spt_band_params_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandParameters-v1530 ::= SEQUENCE struct band_params_v1530_s { // member variables bool ue_tx_ant_sel_srs_minus1_t4_r_r15_present; bool ue_tx_ant_sel_srs_minus2_t4_r_minus2_pairs_r15_present; bool ue_tx_ant_sel_srs_minus2_t4_r_minus3_pairs_r15_present; bool dl_minus1024_qam_r15_present; bool qcl_type_c_operation_r15_present; bool qcl_cri_based_csi_report_r15_present; bool stti_spt_band_params_r15_present; stti_spt_band_params_r15_s stti_spt_band_params_r15; // sequence methods band_params_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SPT-Parameters-r15 ::= SEQUENCE struct spt_params_r15_s { // member variables bool frame_structure_type_spt_r15_present; bool max_num_ccs_spt_r15_present; fixed_bitstring<3> frame_structure_type_spt_r15; uint8_t max_num_ccs_spt_r15; // sequence methods spt_params_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandCombinationParameters-v1530 ::= SEQUENCE struct band_combination_params_v1530_s { typedef dyn_array band_param_list_v1530_l_; // member variables bool band_param_list_v1530_present; bool spt_params_r15_present; band_param_list_v1530_l_ band_param_list_v1530; spt_params_r15_s spt_params_r15; // sequence methods band_combination_params_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandCombinationParametersExt-r10 ::= SEQUENCE struct band_combination_params_ext_r10_s { // member variables bool supported_bw_combination_set_r10_present; dyn_bitstring supported_bw_combination_set_r10; // sequence methods band_combination_params_ext_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandListEUTRA ::= SEQUENCE (SIZE (1..maxBands)) OF BandInfoEUTRA typedef dyn_array band_list_eutra_l; // V2X-BandwidthClass-r14 ::= ENUMERATED struct v2x_bw_class_r14_e { enum options { a, b, c, d, e, f, /*...*/ c1_v1530 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 7, nof_exts = 1; static const bool has_ext = true; // enumerated methods v2x_bw_class_r14_e() {} v2x_bw_class_r14_e(options v) : value(v) {} v2x_bw_class_r14_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // V2X-BandwidthClassSL-r14 ::= SEQUENCE (SIZE (1..maxBandwidthClass-r10)) OF V2X-BandwidthClass-r14 typedef bounded_array v2x_bw_class_sl_r14_l; // BandParametersRxSL-r14 ::= SEQUENCE struct band_params_rx_sl_r14_s { // member variables bool v2x_high_reception_r14_present; v2x_bw_class_sl_r14_l v2x_bw_class_rx_sl_r14; // sequence methods band_params_rx_sl_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandParametersTxSL-r14 ::= SEQUENCE struct band_params_tx_sl_r14_s { // member variables bool v2x_e_nb_sched_r14_present; bool v2x_high_pwr_r14_present; v2x_bw_class_sl_r14_l v2x_bw_class_tx_sl_r14; // sequence methods band_params_tx_sl_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // FeatureSetDL-PerCC-r15 ::= SEQUENCE struct feature_set_dl_per_cc_r15_s { struct supported_csi_proc_r15_e_ { enum options { n1, n3, n4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods supported_csi_proc_r15_e_() {} supported_csi_proc_r15_e_(options v) : value(v) {} supported_csi_proc_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool four_layer_tm3_tm4_r15_present; bool supported_mimo_cap_dl_r15_present; bool supported_csi_proc_r15_present; mimo_cap_dl_r10_e supported_mimo_cap_dl_r15; supported_csi_proc_r15_e_ supported_csi_proc_r15; // sequence methods feature_set_dl_per_cc_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MIMO-CA-ParametersPerBoBCPerTM-r15 ::= SEQUENCE struct mimo_ca_params_per_bo_bc_per_tm_r15_s { // member variables bool non_precoded_r13_present; bool beamformed_r13_present; bool dmrs_enhance_r13_present; bool csi_report_np_r14_present; bool csi_report_advanced_r14_present; mimo_non_precoded_capabilities_r13_s non_precoded_r13; mimo_beamformed_cap_list_r13_l beamformed_r13; // sequence methods mimo_ca_params_per_bo_bc_per_tm_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MIMO-CA-ParametersPerBoBC-r15 ::= SEQUENCE struct mimo_ca_params_per_bo_bc_r15_s { // member variables bool params_tm9_r15_present; bool params_tm10_r15_present; mimo_ca_params_per_bo_bc_per_tm_r15_s params_tm9_r15; mimo_ca_params_per_bo_bc_per_tm_r15_s params_tm10_r15; // sequence methods mimo_ca_params_per_bo_bc_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // FeatureSetDL-r15 ::= SEQUENCE struct feature_set_dl_r15_s { typedef bounded_array feature_set_per_cc_list_dl_r15_l_; // member variables bool mimo_ca_params_per_bo_bc_r15_present; mimo_ca_params_per_bo_bc_r15_s mimo_ca_params_per_bo_bc_r15; feature_set_per_cc_list_dl_r15_l_ feature_set_per_cc_list_dl_r15; // sequence methods feature_set_dl_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // FeatureSetUL-PerCC-r15 ::= SEQUENCE struct feature_set_ul_per_cc_r15_s { // member variables bool supported_mimo_cap_ul_r15_present; bool ul_minus256_qam_r15_present; mimo_cap_ul_r10_e supported_mimo_cap_ul_r15; // sequence methods feature_set_ul_per_cc_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // FeatureSetUL-r15 ::= SEQUENCE struct feature_set_ul_r15_s { typedef bounded_array feature_set_per_cc_list_ul_r15_l_; // member variables feature_set_per_cc_list_ul_r15_l_ feature_set_per_cc_list_ul_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // FeatureSetsEUTRA-r15 ::= SEQUENCE struct feature_sets_eutra_r15_s { typedef dyn_array feature_sets_dl_r15_l_; typedef dyn_array feature_sets_dl_per_cc_r15_l_; typedef dyn_array feature_sets_ul_r15_l_; typedef dyn_array feature_sets_ul_per_cc_r15_l_; // member variables bool ext; bool feature_sets_dl_r15_present; bool feature_sets_dl_per_cc_r15_present; bool feature_sets_ul_r15_present; bool feature_sets_ul_per_cc_r15_present; feature_sets_dl_r15_l_ feature_sets_dl_r15; feature_sets_dl_per_cc_r15_l_ feature_sets_dl_per_cc_r15; feature_sets_ul_r15_l_ feature_sets_ul_r15; feature_sets_ul_per_cc_r15_l_ feature_sets_ul_per_cc_r15; // ... // sequence methods feature_sets_eutra_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // FreqBandIndicatorListEUTRA-r12 ::= SEQUENCE (SIZE (1..maxBands)) OF INTEGER typedef dyn_array freq_band_ind_list_eutra_r12_l; // SupportedBandList1XRTT ::= SEQUENCE (SIZE (1..maxCDMA-BandClass)) OF BandclassCDMA2000 typedef bounded_array supported_band_list1_xrtt_l; // IRAT-ParametersCDMA2000-1XRTT ::= SEQUENCE struct irat_params_cdma2000_minus1_xrtt_s { struct tx_cfg1_xrtt_e_ { enum options { single, dual }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods tx_cfg1_xrtt_e_() {} tx_cfg1_xrtt_e_(options v) : value(v) {} tx_cfg1_xrtt_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct rx_cfg1_xrtt_e_ { enum options { single, dual }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods rx_cfg1_xrtt_e_() {} rx_cfg1_xrtt_e_(options v) : value(v) {} rx_cfg1_xrtt_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables supported_band_list1_xrtt_l supported_band_list1_xrtt; tx_cfg1_xrtt_e_ tx_cfg1_xrtt; rx_cfg1_xrtt_e_ rx_cfg1_xrtt; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandListHRPD ::= SEQUENCE (SIZE (1..maxCDMA-BandClass)) OF BandclassCDMA2000 typedef bounded_array supported_band_list_hrpd_l; // IRAT-ParametersCDMA2000-HRPD ::= SEQUENCE struct irat_params_cdma2000_hrpd_s { struct tx_cfg_hrpd_e_ { enum options { single, dual }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods tx_cfg_hrpd_e_() {} tx_cfg_hrpd_e_(options v) : value(v) {} tx_cfg_hrpd_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; struct rx_cfg_hrpd_e_ { enum options { single, dual }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods rx_cfg_hrpd_e_() {} rx_cfg_hrpd_e_(options v) : value(v) {} rx_cfg_hrpd_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables supported_band_list_hrpd_l supported_band_list_hrpd; tx_cfg_hrpd_e_ tx_cfg_hrpd; rx_cfg_hrpd_e_ rx_cfg_hrpd; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandGERAN ::= ENUMERATED struct supported_band_geran_e { enum options { gsm450, gsm480, gsm710, gsm750, gsm810, gsm850, gsm900_p, gsm900_e, gsm900_r, gsm1800, gsm1900, spare5, spare4, spare3, spare2, spare1, // ... }; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = true; // enumerated methods supported_band_geran_e() {} supported_band_geran_e(options v) : value(v) {} supported_band_geran_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // SupportedBandListGERAN ::= SEQUENCE (SIZE (1..maxBands)) OF SupportedBandGERAN typedef dyn_array supported_band_list_geran_l; // IRAT-ParametersGERAN ::= SEQUENCE struct irat_params_geran_s { // member variables supported_band_list_geran_l supported_band_list_geran; bool inter_rat_ps_ho_to_geran; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandNR-r15 ::= SEQUENCE struct supported_band_nr_r15_s { // member variables uint16_t band_nr_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandListNR-r15 ::= SEQUENCE (SIZE (1..maxBandsNR-r15)) OF SupportedBandNR-r15 typedef dyn_array supported_band_list_nr_r15_l; // IRAT-ParametersNR-r15 ::= SEQUENCE struct irat_params_nr_r15_s { // member variables bool en_dc_r15_present; bool event_b2_r15_present; bool supported_band_list_nr_r15_present; supported_band_list_nr_r15_l supported_band_list_nr_r15; // sequence methods irat_params_nr_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandUTRA-FDD ::= ENUMERATED struct supported_band_utra_fdd_e { enum options { band_i, band_ii, band_iii, band_iv, band_v, band_vi, band_vii, band_viii, band_ix, band_x, band_xi, band_xii, band_xiii, band_xiv, band_xv, band_xvi, // ... band_xvii_minus8a0, band_xviii_minus8a0, band_xix_minus8a0, band_xx_minus8a0, band_xxi_minus8a0, band_xxii_minus8a0, band_xxiii_minus8a0, band_xxiv_minus8a0, band_xxv_minus8a0, band_xxvi_minus8a0, band_xxvii_minus8a0, band_xxviii_minus8a0, band_xxix_minus8a0, band_xxx_minus8a0, band_xxxi_minus8a0, band_xxxii_minus8a0 }; options value; static const uint32_t nof_types = 32, nof_exts = 16; static const bool has_ext = true; // enumerated methods supported_band_utra_fdd_e() {} supported_band_utra_fdd_e(options v) : value(v) {} supported_band_utra_fdd_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // SupportedBandListUTRA-FDD ::= SEQUENCE (SIZE (1..maxBands)) OF SupportedBandUTRA-FDD typedef dyn_array supported_band_list_utra_fdd_l; // IRAT-ParametersUTRA-FDD ::= SEQUENCE struct irat_params_utra_fdd_s { // member variables supported_band_list_utra_fdd_l supported_band_list_utra_fdd; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandUTRA-TDD128 ::= ENUMERATED struct supported_band_utra_tdd128_e { enum options { a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, /*...*/ }; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = true; // enumerated methods supported_band_utra_tdd128_e() {} supported_band_utra_tdd128_e(options v) : value(v) {} supported_band_utra_tdd128_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // SupportedBandListUTRA-TDD128 ::= SEQUENCE (SIZE (1..maxBands)) OF SupportedBandUTRA-TDD128 typedef dyn_array supported_band_list_utra_tdd128_l; // IRAT-ParametersUTRA-TDD128 ::= SEQUENCE struct irat_params_utra_tdd128_s { // member variables supported_band_list_utra_tdd128_l supported_band_list_utra_tdd128; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandUTRA-TDD384 ::= ENUMERATED struct supported_band_utra_tdd384_e { enum options { a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, /*...*/ }; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = true; // enumerated methods supported_band_utra_tdd384_e() {} supported_band_utra_tdd384_e(options v) : value(v) {} supported_band_utra_tdd384_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // SupportedBandListUTRA-TDD384 ::= SEQUENCE (SIZE (1..maxBands)) OF SupportedBandUTRA-TDD384 typedef dyn_array supported_band_list_utra_tdd384_l; // IRAT-ParametersUTRA-TDD384 ::= SEQUENCE struct irat_params_utra_tdd384_s { // member variables supported_band_list_utra_tdd384_l supported_band_list_utra_tdd384; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandUTRA-TDD768 ::= ENUMERATED struct supported_band_utra_tdd768_e { enum options { a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, /*...*/ }; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = true; // enumerated methods supported_band_utra_tdd768_e() {} supported_band_utra_tdd768_e(options v) : value(v) {} supported_band_utra_tdd768_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // SupportedBandListUTRA-TDD768 ::= SEQUENCE (SIZE (1..maxBands)) OF SupportedBandUTRA-TDD768 typedef dyn_array supported_band_list_utra_tdd768_l; // IRAT-ParametersUTRA-TDD768 ::= SEQUENCE struct irat_params_utra_tdd768_s { // member variables supported_band_list_utra_tdd768_l supported_band_list_utra_tdd768; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // IRAT-ParametersWLAN-r13 ::= SEQUENCE struct irat_params_wlan_r13_s { typedef bounded_array supported_band_list_wlan_r13_l_; // member variables bool supported_band_list_wlan_r13_present; supported_band_list_wlan_r13_l_ supported_band_list_wlan_r13; // sequence methods irat_params_wlan_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // ProcessingTimelineSet-r15 ::= ENUMERATED struct processing_timeline_set_r15_e { enum options { set1, set2 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods processing_timeline_set_r15_e() {} processing_timeline_set_r15_e(options v) : value(v) {} processing_timeline_set_r15_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // SkipSubframeProcessing-r15 ::= SEQUENCE struct skip_sf_processing_r15_s { // member variables bool skip_processing_dl_slot_r15_present; bool skip_processing_dl_sub_slot_r15_present; bool skip_processing_ul_slot_r15_present; bool skip_processing_ul_sub_slot_r15_present; uint8_t skip_processing_dl_slot_r15; uint8_t skip_processing_dl_sub_slot_r15; uint8_t skip_processing_ul_slot_r15; uint8_t skip_processing_ul_sub_slot_r15; // sequence methods skip_sf_processing_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MAC-Parameters-v1530 ::= SEQUENCE struct mac_params_v1530_s { typedef bounded_array min_proc_timeline_subslot_r15_l_; // member variables bool min_proc_timeline_subslot_r15_present; bool skip_sf_processing_r15_present; bool early_data_up_r15_present; bool dormant_scell_state_r15_present; bool direct_scell_activation_r15_present; bool direct_scell_hibernation_r15_present; bool extended_lcid_dupl_r15_present; bool sps_serving_cell_r15_present; min_proc_timeline_subslot_r15_l_ min_proc_timeline_subslot_r15; skip_sf_processing_r15_s skip_sf_processing_r15; // sequence methods mac_params_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MIMO-UE-BeamformedCapabilities-r13 ::= SEQUENCE struct mimo_ue_beamformed_capabilities_r13_s { // member variables bool alt_codebook_r13_present; mimo_beamformed_cap_list_r13_l mimo_beamformed_capabilities_r13; // sequence methods mimo_ue_beamformed_capabilities_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MIMO-UE-ParametersPerTM-r13 ::= SEQUENCE struct mimo_ue_params_per_tm_r13_s { // member variables bool non_precoded_r13_present; bool beamformed_r13_present; bool ch_meas_restrict_r13_present; bool dmrs_enhance_r13_present; bool csi_rs_enhance_tdd_r13_present; mimo_non_precoded_capabilities_r13_s non_precoded_r13; mimo_ue_beamformed_capabilities_r13_s beamformed_r13; // sequence methods mimo_ue_params_per_tm_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MIMO-UE-Parameters-r13 ::= SEQUENCE struct mimo_ue_params_r13_s { // member variables bool params_tm9_r13_present; bool params_tm10_r13_present; bool srs_enhance_tdd_r13_present; bool srs_enhance_r13_present; bool interference_meas_restrict_r13_present; mimo_ue_params_per_tm_r13_s params_tm9_r13; mimo_ue_params_per_tm_r13_s params_tm10_r13; // sequence methods mimo_ue_params_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MIMO-UE-ParametersPerTM-v1430 ::= SEQUENCE struct mimo_ue_params_per_tm_v1430_s { struct nzp_csi_rs_aperiodic_info_r14_s_ { struct n_max_res_r14_e_ { enum options { ffs1, ffs2, ffs3, ffs4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods n_max_res_r14_e_() {} n_max_res_r14_e_(options v) : value(v) {} n_max_res_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables uint8_t n_max_proc_r14; n_max_res_r14_e_ n_max_res_r14; }; struct nzp_csi_rs_periodic_info_r14_s_ { struct n_max_res_r14_e_ { enum options { ffs1, ffs2, ffs3, ffs4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods n_max_res_r14_e_() {} n_max_res_r14_e_(options v) : value(v) {} n_max_res_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables n_max_res_r14_e_ n_max_res_r14; }; // member variables bool nzp_csi_rs_aperiodic_info_r14_present; bool nzp_csi_rs_periodic_info_r14_present; bool zp_csi_rs_aperiodic_info_r14_present; bool ul_dmrs_enhance_r14_present; bool density_reduction_np_r14_present; bool density_reduction_bf_r14_present; bool hybrid_csi_r14_present; bool semi_ol_r14_present; bool csi_report_np_r14_present; bool csi_report_advanced_r14_present; nzp_csi_rs_aperiodic_info_r14_s_ nzp_csi_rs_aperiodic_info_r14; nzp_csi_rs_periodic_info_r14_s_ nzp_csi_rs_periodic_info_r14; // sequence methods mimo_ue_params_per_tm_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MIMO-UE-Parameters-v1430 ::= SEQUENCE struct mimo_ue_params_v1430_s { // member variables bool params_tm9_v1430_present; bool params_tm10_v1430_present; mimo_ue_params_per_tm_v1430_s params_tm9_v1430; mimo_ue_params_per_tm_v1430_s params_tm10_v1430; // sequence methods mimo_ue_params_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MIMO-UE-ParametersPerTM-v1470 ::= SEQUENCE struct mimo_ue_params_per_tm_v1470_s { struct csi_report_advanced_max_ports_r14_e_ { enum options { n8, n12, n16, n20, n24, n28 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods csi_report_advanced_max_ports_r14_e_() {} csi_report_advanced_max_ports_r14_e_(options v) : value(v) {} csi_report_advanced_max_ports_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool csi_report_advanced_max_ports_r14_present; csi_report_advanced_max_ports_r14_e_ csi_report_advanced_max_ports_r14; // sequence methods mimo_ue_params_per_tm_v1470_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MIMO-UE-Parameters-v1470 ::= SEQUENCE struct mimo_ue_params_v1470_s { // member variables mimo_ue_params_per_tm_v1470_s params_tm9_v1470; mimo_ue_params_per_tm_v1470_s params_tm10_v1470; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasParameters ::= SEQUENCE struct meas_params_s { // member variables band_list_eutra_l band_list_eutra; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasParameters-v1020 ::= SEQUENCE struct meas_params_v1020_s { // member variables band_combination_list_eutra_r10_l band_combination_list_eutra_r10; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // NAICS-Capability-Entry-r12 ::= SEQUENCE struct naics_cap_entry_r12_s { struct nof_aggregated_prb_r12_e_ { enum options { n50, n75, n100, n125, n150, n175, n200, n225, n250, n275, n300, n350, n400, n450, n500, spare }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods nof_aggregated_prb_r12_e_() {} nof_aggregated_prb_r12_e_(options v) : value(v) {} nof_aggregated_prb_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool ext; uint8_t nof_naics_capable_cc_r12; nof_aggregated_prb_r12_e_ nof_aggregated_prb_r12; // ... // sequence methods naics_cap_entry_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // NAICS-Capability-List-r12 ::= SEQUENCE (SIZE (1..maxNAICS-Entries-r12)) OF NAICS-Capability-Entry-r12 typedef dyn_array naics_cap_list_r12_l; // NonContiguousUL-RA-WithinCC-r10 ::= SEQUENCE struct non_contiguous_ul_ra_within_cc_r10_s { // member variables bool non_contiguous_ul_ra_within_cc_info_r10_present; // sequence methods non_contiguous_ul_ra_within_cc_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // NonContiguousUL-RA-WithinCC-List-r10 ::= SEQUENCE (SIZE (1..maxBands)) OF NonContiguousUL-RA-WithinCC-r10 typedef dyn_array non_contiguous_ul_ra_within_cc_list_r10_l; // ROHC-ProfileSupportList-r15 ::= SEQUENCE struct rohc_profile_support_list_r15_s { // member variables bool profile0x0001_r15; bool profile0x0002_r15; bool profile0x0003_r15; bool profile0x0004_r15; bool profile0x0006_r15; bool profile0x0101_r15; bool profile0x0102_r15; bool profile0x0103_r15; bool profile0x0104_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PDCP-Parameters ::= SEQUENCE struct pdcp_params_s { struct max_num_rohc_context_sessions_e_ { enum options { cs2, cs4, cs8, cs12, cs16, cs24, cs32, cs48, cs64, cs128, cs256, cs512, cs1024, cs16384, spare2, spare1 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods max_num_rohc_context_sessions_e_() {} max_num_rohc_context_sessions_e_(options v) : value(v) {} max_num_rohc_context_sessions_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool ext; bool max_num_rohc_context_sessions_present; rohc_profile_support_list_r15_s supported_rohc_profiles; max_num_rohc_context_sessions_e_ max_num_rohc_context_sessions; // ... // sequence methods pdcp_params_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedOperatorDic-r15 ::= SEQUENCE struct supported_operator_dic_r15_s { // member variables uint8_t version_of_dictionary_r15; plmn_id_s associated_plmn_id_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedUDC-r15 ::= SEQUENCE struct supported_udc_r15_s { // member variables bool supported_standard_dic_r15_present; bool supported_operator_dic_r15_present; supported_operator_dic_r15_s supported_operator_dic_r15; // sequence methods supported_udc_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PDCP-Parameters-v1530 ::= SEQUENCE struct pdcp_params_v1530_s { // member variables bool supported_udc_r15_present; bool pdcp_dupl_r15_present; supported_udc_r15_s supported_udc_r15; // sequence methods pdcp_params_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PDCP-ParametersNR-r15 ::= SEQUENCE struct pdcp_params_nr_r15_s { struct rohc_context_max_sessions_r15_e_ { enum options { cs2, cs4, cs8, cs12, cs16, cs24, cs32, cs48, cs64, cs128, cs256, cs512, cs1024, cs16384, spare2, spare1 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods rohc_context_max_sessions_r15_e_() {} rohc_context_max_sessions_r15_e_(options v) : value(v) {} rohc_context_max_sessions_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct rohc_profiles_ul_only_r15_s_ { // member variables bool profile0x0006_r15; }; // member variables bool rohc_context_max_sessions_r15_present; bool rohc_context_continue_r15_present; bool out_of_order_delivery_r15_present; bool sn_size_lo_r15_present; bool ims_voice_over_nr_pdcp_mcg_bearer_r15_present; bool ims_voice_over_nr_pdcp_scg_bearer_r15_present; rohc_profile_support_list_r15_s rohc_profiles_r15; rohc_context_max_sessions_r15_e_ rohc_context_max_sessions_r15; rohc_profiles_ul_only_r15_s_ rohc_profiles_ul_only_r15; // sequence methods pdcp_params_nr_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PhyLayerParameters-v1020 ::= SEQUENCE struct phy_layer_params_v1020_s { // member variables bool two_ant_ports_for_pucch_r10_present; bool tm9_with_minus8_tx_fdd_r10_present; bool pmi_disabling_r10_present; bool cross_carrier_sched_r10_present; bool simul_pucch_pusch_r10_present; bool multi_cluster_pusch_within_cc_r10_present; bool non_contiguous_ul_ra_within_cc_list_r10_present; non_contiguous_ul_ra_within_cc_list_r10_l non_contiguous_ul_ra_within_cc_list_r10; // sequence methods phy_layer_params_v1020_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PhyLayerParameters-v1250 ::= SEQUENCE struct phy_layer_params_v1250_s { // member variables bool e_harq_pattern_fdd_r12_present; bool enhanced_minus4_tx_codebook_r12_present; bool tdd_fdd_ca_pcell_duplex_r12_present; bool phy_tdd_re_cfg_tdd_pcell_r12_present; bool phy_tdd_re_cfg_fdd_pcell_r12_present; bool pusch_feedback_mode_r12_present; bool pusch_srs_pwr_ctrl_sf_set_r12_present; bool csi_sf_set_r12_present; bool no_res_restrict_for_tti_bundling_r12_present; bool discovery_signals_in_deact_scell_r12_present; bool naics_cap_list_r12_present; fixed_bitstring<2> tdd_fdd_ca_pcell_duplex_r12; naics_cap_list_r12_l naics_cap_list_r12; // sequence methods phy_layer_params_v1250_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PhyLayerParameters-v1320 ::= SEQUENCE struct phy_layer_params_v1320_s { // member variables bool mimo_ue_params_r13_present; mimo_ue_params_r13_s mimo_ue_params_r13; // sequence methods phy_layer_params_v1320_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PhyLayerParameters-v1330 ::= SEQUENCE struct phy_layer_params_v1330_s { // member variables bool cch_interf_mitigation_ref_rec_type_a_r13_present; bool cch_interf_mitigation_ref_rec_type_b_r13_present; bool cch_interf_mitigation_max_num_ccs_r13_present; bool crs_interf_mitigation_tm1to_tm9_r13_present; uint8_t cch_interf_mitigation_max_num_ccs_r13; uint8_t crs_interf_mitigation_tm1to_tm9_r13; // sequence methods phy_layer_params_v1330_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // FeMBMS-Unicast-Parameters-r14 ::= SEQUENCE struct fe_mbms_unicast_params_r14_s { // member variables bool unicast_fembms_mixed_scell_r14_present; bool empty_unicast_region_r14_present; // sequence methods fe_mbms_unicast_params_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PhyLayerParameters-v1430 ::= SEQUENCE struct phy_layer_params_v1430_s { struct ce_pdsch_pusch_max_bw_r14_e_ { enum options { bw5, bw20 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods ce_pdsch_pusch_max_bw_r14_e_() {} ce_pdsch_pusch_max_bw_r14_e_(options v) : value(v) {} ce_pdsch_pusch_max_bw_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct ce_retuning_symbols_r14_e_ { enum options { n0, n1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods ce_retuning_symbols_r14_e_() {} ce_retuning_symbols_r14_e_(options v) : value(v) {} ce_retuning_symbols_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ce_pusch_nb_max_tbs_r14_present; bool ce_pdsch_pusch_max_bw_r14_present; bool ce_harq_ack_bundling_r14_present; bool ce_pdsch_ten_processes_r14_present; bool ce_retuning_symbols_r14_present; bool ce_pdsch_pusch_enhancement_r14_present; bool ce_sched_enhancement_r14_present; bool ce_srs_enhancement_r14_present; bool ce_pucch_enhancement_r14_present; bool ce_closed_loop_tx_ant_sel_r14_present; bool tdd_special_sf_r14_present; bool tdd_tti_bundling_r14_present; bool dmrs_less_up_pts_r14_present; bool mimo_ue_params_v1430_present; bool alternative_tbs_idx_r14_present; bool fe_mbms_unicast_params_r14_present; ce_pdsch_pusch_max_bw_r14_e_ ce_pdsch_pusch_max_bw_r14; ce_retuning_symbols_r14_e_ ce_retuning_symbols_r14; mimo_ue_params_v1430_s mimo_ue_params_v1430; fe_mbms_unicast_params_r14_s fe_mbms_unicast_params_r14; // sequence methods phy_layer_params_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PhyLayerParameters-v1470 ::= SEQUENCE struct phy_layer_params_v1470_s { // member variables bool mimo_ue_params_v1470_present; bool srs_up_pts_minus6sym_r14_present; mimo_ue_params_v1470_s mimo_ue_params_v1470; // sequence methods phy_layer_params_v1470_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PhyLayerParameters-v1530 ::= SEQUENCE struct phy_layer_params_v1530_s { struct stti_spt_capabilities_r15_s_ { struct max_layers_slot_or_subslot_pusch_r15_e_ { enum options { one_layer, two_layers, four_layers }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods max_layers_slot_or_subslot_pusch_r15_e_() {} max_layers_slot_or_subslot_pusch_r15_e_(options v) : value(v) {} max_layers_slot_or_subslot_pusch_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct sps_stti_r15_e_ { enum options { slot, subslot, slot_and_subslot }; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods sps_stti_r15_e_() {} sps_stti_r15_e_(options v) : value(v) {} sps_stti_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool aperiodic_csi_report_stti_r15_present; bool dmrs_based_spdcch_mbsfn_r15_present; bool dmrs_based_spdcch_non_mbsfn_r15_present; bool dmrs_position_pattern_r15_present; bool dmrs_sharing_subslot_pdsch_r15_present; bool dmrs_repeat_subslot_pdsch_r15_present; bool epdcch_spt_different_cells_r15_present; bool epdcch_stti_different_cells_r15_present; bool max_layers_slot_or_subslot_pusch_r15_present; bool max_num_updated_csi_proc_spt_r15_present; bool max_num_updated_csi_proc_stti_comb77_r15_present; bool max_num_updated_csi_proc_stti_comb27_r15_present; bool max_num_updated_csi_proc_stti_comb22_set1_r15_present; bool max_num_updated_csi_proc_stti_comb22_set2_r15_present; bool mimo_ue_params_stti_r15_present; bool mimo_ue_params_stti_v1530_present; bool nof_blind_decodes_uss_r15_present; bool pdsch_slot_subslot_pdsch_decoding_r15_present; bool pwr_uci_slot_pusch_present; bool pwr_uci_subslot_pusch_present; bool slot_pdsch_tx_div_tm9and10_present; bool subslot_pdsch_tx_div_tm9and10_present; bool spdcch_different_rs_types_r15_present; bool srs_dci7_triggering_fs2_r15_present; bool sps_cyclic_shift_r15_present; bool spdcch_reuse_r15_present; bool sps_stti_r15_present; bool tm8_slot_pdsch_r15_present; bool tm9_slot_subslot_r15_present; bool tm9_slot_subslot_mbsfn_r15_present; bool tm10_slot_subslot_r15_present; bool tm10_slot_subslot_mbsfn_r15_present; bool tx_div_spucch_r15_present; bool ul_async_harq_sharing_diff_tti_lens_r15_present; max_layers_slot_or_subslot_pusch_r15_e_ max_layers_slot_or_subslot_pusch_r15; uint8_t max_num_updated_csi_proc_spt_r15; uint8_t max_num_updated_csi_proc_stti_comb77_r15; uint8_t max_num_updated_csi_proc_stti_comb27_r15; uint8_t max_num_updated_csi_proc_stti_comb22_set1_r15; uint8_t max_num_updated_csi_proc_stti_comb22_set2_r15; mimo_ue_params_r13_s mimo_ue_params_stti_r15; mimo_ue_params_v1430_s mimo_ue_params_stti_v1530; uint8_t nof_blind_decodes_uss_r15; sps_stti_r15_e_ sps_stti_r15; // sequence methods stti_spt_capabilities_r15_s_(); }; struct ce_capabilities_r15_s_ { // member variables bool ce_crs_intf_mitig_r15_present; bool ce_cqi_alternative_table_r15_present; bool ce_pdsch_flex_start_prb_ce_mode_a_r15_present; bool ce_pdsch_flex_start_prb_ce_mode_b_r15_present; bool ce_pdsch_minus64_qam_r15_present; bool ce_pusch_flex_start_prb_ce_mode_a_r15_present; bool ce_pusch_flex_start_prb_ce_mode_b_r15_present; bool ce_pusch_sub_prb_alloc_r15_present; bool ce_ul_harq_ack_feedback_r15_present; // sequence methods ce_capabilities_r15_s_(); }; struct urllc_capabilities_r15_s_ { // member variables bool pdsch_rep_sf_r15_present; bool pdsch_rep_slot_r15_present; bool pdsch_rep_subslot_r15_present; bool pusch_sps_multi_cfg_sf_r15_present; bool pusch_sps_max_cfg_sf_r15_present; bool pusch_sps_multi_cfg_slot_r15_present; bool pusch_sps_max_cfg_slot_r15_present; bool pusch_sps_multi_cfg_subslot_r15_present; bool pusch_sps_max_cfg_subslot_r15_present; bool pusch_sps_slot_rep_pcell_r15_present; bool pusch_sps_slot_rep_ps_cell_r15_present; bool pusch_sps_slot_rep_scell_r15_present; bool pusch_sps_sf_rep_pcell_r15_present; bool pusch_sps_sf_rep_ps_cell_r15_present; bool pusch_sps_sf_rep_scell_r15_present; bool pusch_sps_subslot_rep_pcell_r15_present; bool pusch_sps_subslot_rep_ps_cell_r15_present; bool pusch_sps_subslot_rep_scell_r15_present; bool semi_static_cfi_r15_present; bool semi_static_cfi_pattern_r15_present; uint8_t pusch_sps_multi_cfg_sf_r15; uint8_t pusch_sps_max_cfg_sf_r15; uint8_t pusch_sps_multi_cfg_slot_r15; uint8_t pusch_sps_max_cfg_slot_r15; uint8_t pusch_sps_multi_cfg_subslot_r15; uint8_t pusch_sps_max_cfg_subslot_r15; // sequence methods urllc_capabilities_r15_s_(); }; // member variables bool stti_spt_capabilities_r15_present; bool ce_capabilities_r15_present; bool short_cqi_for_scell_activation_r15_present; bool mimo_cbsr_advanced_csi_r15_present; bool crs_intf_mitig_r15_present; bool ul_pwr_ctrl_enhance_r15_present; bool urllc_capabilities_r15_present; bool alt_mcs_table_r15_present; stti_spt_capabilities_r15_s_ stti_spt_capabilities_r15; ce_capabilities_r15_s_ ce_capabilities_r15; urllc_capabilities_r15_s_ urllc_capabilities_r15; // sequence methods phy_layer_params_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandEUTRA ::= SEQUENCE struct supported_band_eutra_s { // member variables uint8_t band_eutra; bool half_duplex; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandListEUTRA ::= SEQUENCE (SIZE (1..maxBands)) OF SupportedBandEUTRA typedef dyn_array supported_band_list_eutra_l; // RF-Parameters ::= SEQUENCE struct rf_params_s { // member variables supported_band_list_eutra_l supported_band_list_eutra; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandCombination-r10 ::= SEQUENCE (SIZE (1..maxBandComb-r10)) OF BandCombinationParameters-r10 typedef dyn_array supported_band_combination_r10_l; // RF-Parameters-v1020 ::= SEQUENCE struct rf_params_v1020_s { // member variables supported_band_combination_r10_l supported_band_combination_r10; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandCombinationExt-r10 ::= SEQUENCE (SIZE (1..maxBandComb-r10)) OF BandCombinationParametersExt-r10 typedef dyn_array supported_band_combination_ext_r10_l; // RF-Parameters-v1060 ::= SEQUENCE struct rf_params_v1060_s { // member variables supported_band_combination_ext_r10_l supported_band_combination_ext_r10; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandCombination-v1090 ::= SEQUENCE (SIZE (1..maxBandComb-r10)) OF BandCombinationParameters-v1090 typedef dyn_array supported_band_combination_v1090_l; // RF-Parameters-v1090 ::= SEQUENCE struct rf_params_v1090_s { // member variables bool supported_band_combination_v1090_present; supported_band_combination_v1090_l supported_band_combination_v1090; // sequence methods rf_params_v1090_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandCombination-v10i0 ::= SEQUENCE (SIZE (1..maxBandComb-r10)) OF BandCombinationParameters-v10i0 typedef dyn_array supported_band_combination_v10i0_l; // RF-Parameters-v10i0 ::= SEQUENCE struct rf_params_v10i0_s { // member variables bool supported_band_combination_v10i0_present; supported_band_combination_v10i0_l supported_band_combination_v10i0; // sequence methods rf_params_v10i0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandCombination-v1130 ::= SEQUENCE (SIZE (1..maxBandComb-r10)) OF BandCombinationParameters-v1130 typedef dyn_array supported_band_combination_v1130_l; // RF-Parameters-v1130 ::= SEQUENCE struct rf_params_v1130_s { // member variables bool supported_band_combination_v1130_present; supported_band_combination_v1130_l supported_band_combination_v1130; // sequence methods rf_params_v1130_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandCombinationAdd-r11 ::= SEQUENCE (SIZE (1..maxBandComb-r11)) OF BandCombinationParameters-r11 typedef dyn_array supported_band_combination_add_r11_l; // RF-Parameters-v1180 ::= SEQUENCE struct rf_params_v1180_s { typedef dyn_array requested_bands_r11_l_; // member variables bool freq_band_retrieval_r11_present; bool requested_bands_r11_present; bool supported_band_combination_add_r11_present; requested_bands_r11_l_ requested_bands_r11; supported_band_combination_add_r11_l supported_band_combination_add_r11; // sequence methods rf_params_v1180_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandCombinationAdd-v11d0 ::= SEQUENCE (SIZE (1..maxBandComb-r11)) OF BandCombinationParameters-v10i0 typedef dyn_array supported_band_combination_add_v11d0_l; // RF-Parameters-v11d0 ::= SEQUENCE struct rf_params_v11d0_s { // member variables bool supported_band_combination_add_v11d0_present; supported_band_combination_add_v11d0_l supported_band_combination_add_v11d0; // sequence methods rf_params_v11d0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandEUTRA-v1250 ::= SEQUENCE struct supported_band_eutra_v1250_s { // member variables bool dl_minus256_qam_r12_present; bool ul_minus64_qam_r12_present; // sequence methods supported_band_eutra_v1250_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandCombination-v1250 ::= SEQUENCE (SIZE (1..maxBandComb-r10)) OF BandCombinationParameters-v1250 typedef dyn_array supported_band_combination_v1250_l; // SupportedBandCombinationAdd-v1250 ::= SEQUENCE (SIZE (1..maxBandComb-r11)) OF BandCombinationParameters-v1250 typedef dyn_array supported_band_combination_add_v1250_l; // SupportedBandListEUTRA-v1250 ::= SEQUENCE (SIZE (1..maxBands)) OF SupportedBandEUTRA-v1250 typedef dyn_array supported_band_list_eutra_v1250_l; // RF-Parameters-v1250 ::= SEQUENCE struct rf_params_v1250_s { // member variables bool supported_band_list_eutra_v1250_present; bool supported_band_combination_v1250_present; bool supported_band_combination_add_v1250_present; bool freq_band_prio_adjustment_r12_present; supported_band_list_eutra_v1250_l supported_band_list_eutra_v1250; supported_band_combination_v1250_l supported_band_combination_v1250; supported_band_combination_add_v1250_l supported_band_combination_add_v1250; // sequence methods rf_params_v1250_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandCombination-v1270 ::= SEQUENCE (SIZE (1..maxBandComb-r10)) OF BandCombinationParameters-v1270 typedef dyn_array supported_band_combination_v1270_l; // SupportedBandCombinationAdd-v1270 ::= SEQUENCE (SIZE (1..maxBandComb-r11)) OF BandCombinationParameters-v1270 typedef dyn_array supported_band_combination_add_v1270_l; // RF-Parameters-v1270 ::= SEQUENCE struct rf_params_v1270_s { // member variables bool supported_band_combination_v1270_present; bool supported_band_combination_add_v1270_present; supported_band_combination_v1270_l supported_band_combination_v1270; supported_band_combination_add_v1270_l supported_band_combination_add_v1270; // sequence methods rf_params_v1270_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandEUTRA-v1310 ::= SEQUENCE struct supported_band_eutra_v1310_s { // member variables bool ue_pwr_class_minus5_r13_present; // sequence methods supported_band_eutra_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandCombinationReduced-r13 ::= SEQUENCE (SIZE (1..maxBandComb-r13)) OF BandCombinationParameters-r13 typedef dyn_array supported_band_combination_reduced_r13_l; // SupportedBandListEUTRA-v1310 ::= SEQUENCE (SIZE (1..maxBands)) OF SupportedBandEUTRA-v1310 typedef dyn_array supported_band_list_eutra_v1310_l; // RF-Parameters-v1310 ::= SEQUENCE struct rf_params_v1310_s { struct e_nb_requested_params_r13_s_ { // member variables bool reduced_int_non_cont_comb_requested_r13_present; bool requested_ccs_dl_r13_present; bool requested_ccs_ul_r13_present; bool skip_fallback_comb_requested_r13_present; uint8_t requested_ccs_dl_r13; uint8_t requested_ccs_ul_r13; // sequence methods e_nb_requested_params_r13_s_(); }; // member variables bool e_nb_requested_params_r13_present; bool maximum_ccs_retrieval_r13_present; bool skip_fallback_combinations_r13_present; bool reduced_int_non_cont_comb_r13_present; bool supported_band_list_eutra_v1310_present; bool supported_band_combination_reduced_r13_present; e_nb_requested_params_r13_s_ e_nb_requested_params_r13; supported_band_list_eutra_v1310_l supported_band_list_eutra_v1310; supported_band_combination_reduced_r13_l supported_band_combination_reduced_r13; // sequence methods rf_params_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandEUTRA-v1320 ::= SEQUENCE struct supported_band_eutra_v1320_s { struct ue_pwr_class_n_r13_e_ { enum options { class1, class2, class4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods ue_pwr_class_n_r13_e_() {} ue_pwr_class_n_r13_e_(options v) : value(v) {} ue_pwr_class_n_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool intra_freq_ce_need_for_gaps_r13_present; bool ue_pwr_class_n_r13_present; ue_pwr_class_n_r13_e_ ue_pwr_class_n_r13; // sequence methods supported_band_eutra_v1320_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandCombination-v1320 ::= SEQUENCE (SIZE (1..maxBandComb-r10)) OF BandCombinationParameters-v1320 typedef dyn_array supported_band_combination_v1320_l; // SupportedBandCombinationAdd-v1320 ::= SEQUENCE (SIZE (1..maxBandComb-r11)) OF BandCombinationParameters-v1320 typedef dyn_array supported_band_combination_add_v1320_l; // SupportedBandCombinationReduced-v1320 ::= SEQUENCE (SIZE (1..maxBandComb-r13)) OF BandCombinationParameters-v1320 typedef dyn_array supported_band_combination_reduced_v1320_l; // SupportedBandListEUTRA-v1320 ::= SEQUENCE (SIZE (1..maxBands)) OF SupportedBandEUTRA-v1320 typedef dyn_array supported_band_list_eutra_v1320_l; // RF-Parameters-v1320 ::= SEQUENCE struct rf_params_v1320_s { // member variables bool supported_band_list_eutra_v1320_present; bool supported_band_combination_v1320_present; bool supported_band_combination_add_v1320_present; bool supported_band_combination_reduced_v1320_present; supported_band_list_eutra_v1320_l supported_band_list_eutra_v1320; supported_band_combination_v1320_l supported_band_combination_v1320; supported_band_combination_add_v1320_l supported_band_combination_add_v1320; supported_band_combination_reduced_v1320_l supported_band_combination_reduced_v1320; // sequence methods rf_params_v1320_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandCombination-v1380 ::= SEQUENCE (SIZE (1..maxBandComb-r10)) OF BandCombinationParameters-v1380 typedef dyn_array supported_band_combination_v1380_l; // SupportedBandCombinationAdd-v1380 ::= SEQUENCE (SIZE (1..maxBandComb-r11)) OF BandCombinationParameters-v1380 typedef dyn_array supported_band_combination_add_v1380_l; // SupportedBandCombinationReduced-v1380 ::= SEQUENCE (SIZE (1..maxBandComb-r13)) OF BandCombinationParameters-v1380 typedef dyn_array supported_band_combination_reduced_v1380_l; // RF-Parameters-v1380 ::= SEQUENCE struct rf_params_v1380_s { // member variables bool supported_band_combination_v1380_present; bool supported_band_combination_add_v1380_present; bool supported_band_combination_reduced_v1380_present; supported_band_combination_v1380_l supported_band_combination_v1380; supported_band_combination_add_v1380_l supported_band_combination_add_v1380; supported_band_combination_reduced_v1380_l supported_band_combination_reduced_v1380; // sequence methods rf_params_v1380_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // BandCombinationParameters-v1390 ::= SEQUENCE struct band_combination_params_v1390_s { // member variables bool ue_ca_pwr_class_n_r13_present; // sequence methods band_combination_params_v1390_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandCombination-v1390 ::= SEQUENCE (SIZE (1..maxBandComb-r10)) OF BandCombinationParameters-v1390 typedef dyn_array supported_band_combination_v1390_l; // SupportedBandCombinationAdd-v1390 ::= SEQUENCE (SIZE (1..maxBandComb-r11)) OF BandCombinationParameters-v1390 typedef dyn_array supported_band_combination_add_v1390_l; // SupportedBandCombinationReduced-v1390 ::= SEQUENCE (SIZE (1..maxBandComb-r13)) OF BandCombinationParameters-v1390 typedef dyn_array supported_band_combination_reduced_v1390_l; // RF-Parameters-v1390 ::= SEQUENCE struct rf_params_v1390_s { // member variables bool supported_band_combination_v1390_present; bool supported_band_combination_add_v1390_present; bool supported_band_combination_reduced_v1390_present; supported_band_combination_v1390_l supported_band_combination_v1390; supported_band_combination_add_v1390_l supported_band_combination_add_v1390; supported_band_combination_reduced_v1390_l supported_band_combination_reduced_v1390; // sequence methods rf_params_v1390_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandCombination-v1430 ::= SEQUENCE (SIZE (1..maxBandComb-r10)) OF BandCombinationParameters-v1430 typedef dyn_array supported_band_combination_v1430_l; // SupportedBandCombinationAdd-v1430 ::= SEQUENCE (SIZE (1..maxBandComb-r11)) OF BandCombinationParameters-v1430 typedef dyn_array supported_band_combination_add_v1430_l; // SupportedBandCombinationReduced-v1430 ::= SEQUENCE (SIZE (1..maxBandComb-r13)) OF BandCombinationParameters-v1430 typedef dyn_array supported_band_combination_reduced_v1430_l; // RF-Parameters-v1430 ::= SEQUENCE struct rf_params_v1430_s { struct e_nb_requested_params_v1430_s_ { // member variables band_combination_list_r14_l requested_diff_fallback_comb_list_r14; }; // member variables bool supported_band_combination_v1430_present; bool supported_band_combination_add_v1430_present; bool supported_band_combination_reduced_v1430_present; bool e_nb_requested_params_v1430_present; bool diff_fallback_comb_report_r14_present; supported_band_combination_v1430_l supported_band_combination_v1430; supported_band_combination_add_v1430_l supported_band_combination_add_v1430; supported_band_combination_reduced_v1430_l supported_band_combination_reduced_v1430; e_nb_requested_params_v1430_s_ e_nb_requested_params_v1430; // sequence methods rf_params_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandCombination-v1450 ::= SEQUENCE (SIZE (1..maxBandComb-r10)) OF BandCombinationParameters-v1450 typedef dyn_array supported_band_combination_v1450_l; // SupportedBandCombinationAdd-v1450 ::= SEQUENCE (SIZE (1..maxBandComb-r11)) OF BandCombinationParameters-v1450 typedef dyn_array supported_band_combination_add_v1450_l; // SupportedBandCombinationReduced-v1450 ::= SEQUENCE (SIZE (1..maxBandComb-r13)) OF BandCombinationParameters-v1450 typedef dyn_array supported_band_combination_reduced_v1450_l; // RF-Parameters-v1450 ::= SEQUENCE struct rf_params_v1450_s { // member variables bool supported_band_combination_v1450_present; bool supported_band_combination_add_v1450_present; bool supported_band_combination_reduced_v1450_present; supported_band_combination_v1450_l supported_band_combination_v1450; supported_band_combination_add_v1450_l supported_band_combination_add_v1450; supported_band_combination_reduced_v1450_l supported_band_combination_reduced_v1450; // sequence methods rf_params_v1450_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandCombination-v1470 ::= SEQUENCE (SIZE (1..maxBandComb-r10)) OF BandCombinationParameters-v1470 typedef dyn_array supported_band_combination_v1470_l; // SupportedBandCombinationAdd-v1470 ::= SEQUENCE (SIZE (1..maxBandComb-r11)) OF BandCombinationParameters-v1470 typedef dyn_array supported_band_combination_add_v1470_l; // SupportedBandCombinationReduced-v1470 ::= SEQUENCE (SIZE (1..maxBandComb-r13)) OF BandCombinationParameters-v1470 typedef dyn_array supported_band_combination_reduced_v1470_l; // RF-Parameters-v1470 ::= SEQUENCE struct rf_params_v1470_s { // member variables bool supported_band_combination_v1470_present; bool supported_band_combination_add_v1470_present; bool supported_band_combination_reduced_v1470_present; supported_band_combination_v1470_l supported_band_combination_v1470; supported_band_combination_add_v1470_l supported_band_combination_add_v1470; supported_band_combination_reduced_v1470_l supported_band_combination_reduced_v1470; // sequence methods rf_params_v1470_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandCombination-v1530 ::= SEQUENCE (SIZE (1..maxBandComb-r10)) OF BandCombinationParameters-v1530 typedef dyn_array supported_band_combination_v1530_l; // SupportedBandCombinationAdd-v1530 ::= SEQUENCE (SIZE (1..maxBandComb-r11)) OF BandCombinationParameters-v1530 typedef dyn_array supported_band_combination_add_v1530_l; // SupportedBandCombinationReduced-v1530 ::= SEQUENCE (SIZE (1..maxBandComb-r13)) OF BandCombinationParameters-v1530 typedef dyn_array supported_band_combination_reduced_v1530_l; // RF-Parameters-v1530 ::= SEQUENCE struct rf_params_v1530_s { // member variables bool s_tti_spt_supported_r15_present; bool supported_band_combination_v1530_present; bool supported_band_combination_add_v1530_present; bool supported_band_combination_reduced_v1530_present; bool pwr_class_minus14dbm_r15_present; supported_band_combination_v1530_l supported_band_combination_v1530; supported_band_combination_add_v1530_l supported_band_combination_add_v1530; supported_band_combination_reduced_v1530_l supported_band_combination_reduced_v1530; // sequence methods rf_params_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandEUTRA-v9e0 ::= SEQUENCE struct supported_band_eutra_v9e0_s { // member variables bool band_eutra_v9e0_present; uint16_t band_eutra_v9e0; // sequence methods supported_band_eutra_v9e0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandListEUTRA-v9e0 ::= SEQUENCE (SIZE (1..maxBands)) OF SupportedBandEUTRA-v9e0 typedef dyn_array supported_band_list_eutra_v9e0_l; // RF-Parameters-v9e0 ::= SEQUENCE struct rf_params_v9e0_s { // member variables bool supported_band_list_eutra_v9e0_present; supported_band_list_eutra_v9e0_l supported_band_list_eutra_v9e0; // sequence methods rf_params_v9e0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandInfo-r12 ::= SEQUENCE struct supported_band_info_r12_s { // member variables bool support_r12_present; // sequence methods supported_band_info_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SupportedBandInfoList-r12 ::= SEQUENCE (SIZE (1..maxBands)) OF SupportedBandInfo-r12 typedef dyn_array supported_band_info_list_r12_l; // SL-Parameters-r12 ::= SEQUENCE struct sl_params_r12_s { struct disc_supported_proc_r12_e_ { enum options { n50, n400 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods disc_supported_proc_r12_e_() {} disc_supported_proc_r12_e_(options v) : value(v) {} disc_supported_proc_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool comm_simul_tx_r12_present; bool comm_supported_bands_r12_present; bool disc_supported_bands_r12_present; bool disc_sched_res_alloc_r12_present; bool disc_ue_sel_res_alloc_r12_present; bool disc_slss_r12_present; bool disc_supported_proc_r12_present; freq_band_ind_list_eutra_r12_l comm_supported_bands_r12; supported_band_info_list_r12_l disc_supported_bands_r12; disc_supported_proc_r12_e_ disc_supported_proc_r12; // sequence methods sl_params_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // V2X-BandParameters-r14 ::= SEQUENCE struct v2x_band_params_r14_s { // member variables bool band_params_tx_sl_r14_present; bool band_params_rx_sl_r14_present; uint16_t v2x_freq_band_eutra_r14; band_params_tx_sl_r14_s band_params_tx_sl_r14; band_params_rx_sl_r14_s band_params_rx_sl_r14; // sequence methods v2x_band_params_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // V2X-BandCombinationParameters-r14 ::= SEQUENCE (SIZE (1.. maxSimultaneousBands-r10)) OF V2X-BandParameters-r14 typedef dyn_array v2x_band_combination_params_r14_l; // V2X-SupportedBandCombination-r14 ::= SEQUENCE (SIZE (1..maxBandComb-r13)) OF V2X-BandCombinationParameters-r14 typedef dyn_array v2x_supported_band_combination_r14_l; // SL-Parameters-v1430 ::= SEQUENCE struct sl_params_v1430_s { // member variables bool zone_based_pool_sel_r14_present; bool ue_autonomous_with_full_sensing_r14_present; bool ue_autonomous_with_partial_sensing_r14_present; bool sl_congestion_ctrl_r14_present; bool v2x_tx_with_short_resv_interv_r14_present; bool v2x_num_tx_rx_timing_r14_present; bool v2x_non_adjacent_pscch_pssch_r14_present; bool slss_tx_rx_r14_present; bool v2x_supported_band_combination_list_r14_present; uint8_t v2x_num_tx_rx_timing_r14; v2x_supported_band_combination_r14_l v2x_supported_band_combination_list_r14; // sequence methods sl_params_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // V2X-BandParameters-v1530 ::= SEQUENCE struct v2x_band_params_v1530_s { // member variables bool v2x_enhanced_high_reception_r15_present; // sequence methods v2x_band_params_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // V2X-BandCombinationParameters-v1530 ::= SEQUENCE (SIZE (1.. maxSimultaneousBands-r10)) OF V2X-BandParameters-v1530 typedef dyn_array v2x_band_combination_params_v1530_l; // UE-CategorySL-r15 ::= SEQUENCE struct ue_category_sl_r15_s { // member variables uint8_t ue_category_sl_c_tx_r15; uint8_t ue_category_sl_c_rx_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // V2X-SupportedBandCombination-v1530 ::= SEQUENCE (SIZE (1..maxBandComb-r13)) OF V2X-BandCombinationParameters-v1530 typedef dyn_array v2x_supported_band_combination_v1530_l; // SL-Parameters-v1530 ::= SEQUENCE struct sl_params_v1530_s { struct slss_supported_tx_freq_r15_e_ { enum options { single, multiple }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods slss_supported_tx_freq_r15_e_() {} slss_supported_tx_freq_r15_e_(options v) : value(v) {} slss_supported_tx_freq_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool slss_supported_tx_freq_r15_present; bool sl_minus64_qam_tx_r15_present; bool sl_tx_diversity_r15_present; bool ue_category_sl_r15_present; bool v2x_supported_band_combination_list_v1530_present; slss_supported_tx_freq_r15_e_ slss_supported_tx_freq_r15; ue_category_sl_r15_s ue_category_sl_r15; v2x_supported_band_combination_v1530_l v2x_supported_band_combination_list_v1530; // sequence methods sl_params_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // N1SPUCCH-AN-PersistentList-r15 ::= SEQUENCE (SIZE (1..4)) OF INTEGER typedef bounded_array n1_spucch_an_persistent_list_r15_l; // SPS-ConfigDL-STTI-r15 ::= CHOICE struct sps_cfg_dl_stti_r15_c { struct setup_s_ { struct semi_persist_sched_interv_dl_stti_r15_e_ { enum options { s_tti1, s_tti2, s_tti3, s_tti4, s_tti6, s_tti8, s_tti12, s_tti16, s_tti20, s_tti40, s_tti60, s_tti80, s_tti120, s_tti240, spare2, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods semi_persist_sched_interv_dl_stti_r15_e_() {} semi_persist_sched_interv_dl_stti_r15_e_(options v) : value(v) {} semi_persist_sched_interv_dl_stti_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct two_ant_port_activ_r15_c_ { struct setup_s_ { // member variables n1_spucch_an_persistent_list_r15_l n1_spucch_an_persistent_list_p1_r15; }; typedef setup_e types; // choice methods two_ant_port_activ_r15_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "twoAntennaPortActivated-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "twoAntennaPortActivated-r15"); return c; } private: types type_; setup_s_ c; }; // member variables bool ext; bool two_ant_port_activ_r15_present; bool tpc_pdcch_cfg_pucch_sps_r15_present; semi_persist_sched_interv_dl_stti_r15_e_ semi_persist_sched_interv_dl_stti_r15; uint8_t nof_conf_sps_processes_stti_r15; two_ant_port_activ_r15_c_ two_ant_port_activ_r15; uint8_t s_tti_start_time_dl_r15; tpc_pdcch_cfg_c tpc_pdcch_cfg_pucch_sps_r15; // ... // sequence methods setup_s_(); }; typedef setup_e types; // choice methods sps_cfg_dl_stti_r15_c() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "SPS-ConfigDL-STTI-r15"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "SPS-ConfigDL-STTI-r15"); return c; } private: types type_; setup_s_ c; }; // NeighCellSI-AcquisitionParameters-v1530 ::= SEQUENCE struct neigh_cell_si_acquisition_params_v1530_s { // member variables bool report_cgi_nr_en_dc_r15_present; bool report_cgi_nr_no_en_dc_r15_present; // sequence methods neigh_cell_si_acquisition_params_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // LAA-Parameters-v1530 ::= SEQUENCE struct laa_params_v1530_s { // member variables bool aul_r15_present; bool laa_pusch_mode1_r15_present; bool laa_pusch_mode2_r15_present; bool laa_pusch_mode3_r15_present; // sequence methods laa_params_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasParameters-v1530 ::= SEQUENCE struct meas_params_v1530_s { // member variables bool qoe_meas_report_r15_present; bool qoe_mtsi_meas_report_r15_present; bool ca_idle_mode_meass_r15_present; bool ca_idle_mode_validity_area_r15_present; bool height_meas_r15_present; bool multiple_cells_meas_ext_r15_present; // sequence methods meas_params_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // Other-Parameters-v1530 ::= SEQUENCE struct other_params_v1530_s { // member variables bool assist_info_bit_for_lc_r15_present; bool time_ref_provision_r15_present; bool flight_path_plan_r15_present; // sequence methods other_params_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RLC-Parameters-v1530 ::= SEQUENCE struct rlc_params_v1530_s { // member variables bool flex_um_am_combinations_r15_present; bool rlc_am_ooo_delivery_r15_present; bool rlc_um_ooo_delivery_r15_present; // sequence methods rlc_params_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-BasedNetwPerfMeasParameters-v1530 ::= SEQUENCE struct ue_based_netw_perf_meas_params_v1530_s { // member variables bool logged_meas_bt_r15_present; bool logged_meas_wlan_r15_present; bool imm_meas_bt_r15_present; bool imm_meas_wlan_r15_present; // sequence methods ue_based_netw_perf_meas_params_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-CapabilityAddXDD-Mode-v1530 ::= SEQUENCE struct ue_eutra_cap_add_xdd_mode_v1530_s { // member variables bool neigh_cell_si_acquisition_params_v1530_present; bool reduced_cp_latency_r15_present; neigh_cell_si_acquisition_params_v1530_s neigh_cell_si_acquisition_params_v1530; // sequence methods ue_eutra_cap_add_xdd_mode_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasParameters-v1520 ::= SEQUENCE struct meas_params_v1520_s { // member variables bool meas_gap_patterns_v1520_present; fixed_bitstring<8> meas_gap_patterns_v1520; // sequence methods meas_params_v1520_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v1530-IEs ::= SEQUENCE struct ue_eutra_cap_v1530_ies_s { // member variables bool meas_params_v1530_present; bool other_params_v1530_present; bool neigh_cell_si_acquisition_params_v1530_present; bool mac_params_v1530_present; bool phy_layer_params_v1530_present; bool rf_params_v1530_present; bool pdcp_params_v1530_present; bool ue_category_dl_v1530_present; bool ue_based_netw_perf_meas_params_v1530_present; bool rlc_params_v1530_present; bool sl_params_v1530_present; bool extended_nof_drbs_r15_present; bool reduced_cp_latency_r15_present; bool laa_params_v1530_present; bool ue_category_ul_v1530_present; bool fdd_add_ue_eutra_capabilities_v1530_present; bool tdd_add_ue_eutra_capabilities_v1530_present; bool non_crit_ext_present; meas_params_v1530_s meas_params_v1530; other_params_v1530_s other_params_v1530; neigh_cell_si_acquisition_params_v1530_s neigh_cell_si_acquisition_params_v1530; mac_params_v1530_s mac_params_v1530; phy_layer_params_v1530_s phy_layer_params_v1530; rf_params_v1530_s rf_params_v1530; pdcp_params_v1530_s pdcp_params_v1530; uint8_t ue_category_dl_v1530; ue_based_netw_perf_meas_params_v1530_s ue_based_netw_perf_meas_params_v1530; rlc_params_v1530_s rlc_params_v1530; sl_params_v1530_s sl_params_v1530; laa_params_v1530_s laa_params_v1530; uint8_t ue_category_ul_v1530; ue_eutra_cap_add_xdd_mode_v1530_s fdd_add_ue_eutra_capabilities_v1530; ue_eutra_cap_add_xdd_mode_v1530_s tdd_add_ue_eutra_capabilities_v1530; // sequence methods ue_eutra_cap_v1530_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v1520-IEs ::= SEQUENCE struct ue_eutra_cap_v1520_ies_s { // member variables bool non_crit_ext_present; meas_params_v1520_s meas_params_v1520; ue_eutra_cap_v1530_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v1520_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-CapabilityAddXDD-Mode-v1510 ::= SEQUENCE struct ue_eutra_cap_add_xdd_mode_v1510_s { // member variables bool pdcp_params_nr_r15_present; pdcp_params_nr_r15_s pdcp_params_nr_r15; // sequence methods ue_eutra_cap_add_xdd_mode_v1510_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // Other-Parameters-v1460 ::= SEQUENCE struct other_params_v1460_s { // member variables bool non_csg_si_report_r14_present; // sequence methods other_params_v1460_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v1510-IEs ::= SEQUENCE struct ue_eutra_cap_v1510_ies_s { // member variables bool irat_params_nr_r15_present; bool feature_sets_eutra_r15_present; bool pdcp_params_nr_r15_present; bool fdd_add_ue_eutra_capabilities_v1510_present; bool tdd_add_ue_eutra_capabilities_v1510_present; bool non_crit_ext_present; irat_params_nr_r15_s irat_params_nr_r15; feature_sets_eutra_r15_s feature_sets_eutra_r15; pdcp_params_nr_r15_s pdcp_params_nr_r15; ue_eutra_cap_add_xdd_mode_v1510_s fdd_add_ue_eutra_capabilities_v1510; ue_eutra_cap_add_xdd_mode_v1510_s tdd_add_ue_eutra_capabilities_v1510; ue_eutra_cap_v1520_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v1510_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // OtherParameters-v1450 ::= SEQUENCE struct other_params_v1450_s { // member variables bool overheat_ind_r14_present; // sequence methods other_params_v1450_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PhyLayerParameters-v1450 ::= SEQUENCE struct phy_layer_params_v1450_s { // member variables bool ce_srs_enhancement_without_comb4_r14_present; bool crs_less_dw_pts_r14_present; // sequence methods phy_layer_params_v1450_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v1460-IEs ::= SEQUENCE struct ue_eutra_cap_v1460_ies_s { // member variables bool ue_category_dl_v1460_present; bool non_crit_ext_present; uint8_t ue_category_dl_v1460; other_params_v1460_s other_params_v1460; ue_eutra_cap_v1510_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v1460_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // LWA-Parameters-v1440 ::= SEQUENCE struct lwa_params_v1440_s { // member variables bool lwa_rlc_um_r14_present; // sequence methods lwa_params_v1440_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MAC-Parameters-v1440 ::= SEQUENCE struct mac_params_v1440_s { // member variables bool rai_support_r14_present; // sequence methods mac_params_v1440_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MMTEL-Parameters-r14 ::= SEQUENCE struct mmtel_params_r14_s { // member variables bool delay_budget_report_r14_present; bool pusch_enhance_r14_present; bool recommended_bit_rate_r14_present; bool recommended_bit_rate_query_r14_present; // sequence methods mmtel_params_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v1450-IEs ::= SEQUENCE struct ue_eutra_cap_v1450_ies_s { // member variables bool phy_layer_params_v1450_present; bool rf_params_v1450_present; bool ue_category_dl_v1450_present; bool non_crit_ext_present; phy_layer_params_v1450_s phy_layer_params_v1450; rf_params_v1450_s rf_params_v1450; other_params_v1450_s other_params_v1450; uint8_t ue_category_dl_v1450; ue_eutra_cap_v1460_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v1450_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CE-Parameters-v1430 ::= SEQUENCE struct ce_params_v1430_s { // member variables bool ce_switch_without_ho_r14_present; // sequence methods ce_params_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // HighSpeedEnhParameters-r14 ::= SEQUENCE struct high_speed_enh_params_r14_s { // member variables bool meas_enhance_r14_present; bool demod_enhance_r14_present; bool prach_enhance_r14_present; // sequence methods high_speed_enh_params_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // LAA-Parameters-v1430 ::= SEQUENCE struct laa_params_v1430_s { struct two_step_sched_timing_info_r14_e_ { enum options { n_plus1, n_plus2, n_plus3 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 3, nof_exts = 0; static const bool has_ext = false; // enumerated methods two_step_sched_timing_info_r14_e_() {} two_step_sched_timing_info_r14_e_(options v) : value(v) {} two_step_sched_timing_info_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool cross_carrier_sched_laa_ul_r14_present; bool ul_laa_r14_present; bool two_step_sched_timing_info_r14_present; bool uss_blind_decoding_adjustment_r14_present; bool uss_blind_decoding_reduction_r14_present; bool out_of_seq_grant_handling_r14_present; two_step_sched_timing_info_r14_e_ two_step_sched_timing_info_r14; // sequence methods laa_params_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // LWA-Parameters-v1430 ::= SEQUENCE struct lwa_params_v1430_s { // member variables bool lwa_ho_without_wt_change_r14_present; bool lwa_ul_r14_present; bool wlan_periodic_meas_r14_present; bool wlan_report_any_wlan_r14_present; bool wlan_supported_data_rate_r14_present; uint16_t wlan_supported_data_rate_r14; // sequence methods lwa_params_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // LWIP-Parameters-v1430 ::= SEQUENCE struct lwip_params_v1430_s { // member variables bool lwip_aggregation_dl_r14_present; bool lwip_aggregation_ul_r14_present; // sequence methods lwip_params_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MAC-Parameters-v1430 ::= SEQUENCE struct mac_params_v1430_s { // member variables bool short_sps_interv_fdd_r14_present; bool short_sps_interv_tdd_r14_present; bool skip_ul_dynamic_r14_present; bool skip_ul_sps_r14_present; bool multiple_ul_sps_r14_present; bool data_inact_mon_r14_present; // sequence methods mac_params_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MBMS-Parameters-v1430 ::= SEQUENCE struct mbms_params_v1430_s { // member variables bool fembms_ded_cell_r14_present; bool fembms_mixed_cell_r14_present; bool subcarrier_spacing_mbms_khz7dot5_r14_present; bool subcarrier_spacing_mbms_khz1dot25_r14_present; // sequence methods mbms_params_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasParameters-v1430 ::= SEQUENCE struct meas_params_v1430_s { // member variables bool ce_meass_r14_present; bool ncsg_r14_present; bool short_meas_gap_r14_present; bool per_serving_cell_meas_gap_r14_present; bool non_uniform_gap_r14_present; // sequence methods meas_params_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MobilityParameters-r14 ::= SEQUENCE struct mob_params_r14_s { // member variables bool make_before_break_r14_present; bool rach_less_r14_present; // sequence methods mob_params_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // Other-Parameters-v1430 ::= SEQUENCE struct other_params_v1430_s { // member variables bool bw_pref_ind_r14_present; bool rlm_report_support_r14_present; // sequence methods other_params_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PDCP-Parameters-v1430 ::= SEQUENCE struct pdcp_params_v1430_s { struct supported_ul_only_rohc_profiles_r14_s_ { // member variables bool profile0x0006_r14; }; struct max_num_rohc_context_sessions_r14_e_ { enum options { cs2, cs4, cs8, cs12, cs16, cs24, cs32, cs48, cs64, cs128, cs256, cs512, cs1024, cs16384, spare2, spare1 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods max_num_rohc_context_sessions_r14_e_() {} max_num_rohc_context_sessions_r14_e_(options v) : value(v) {} max_num_rohc_context_sessions_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool max_num_rohc_context_sessions_r14_present; supported_ul_only_rohc_profiles_r14_s_ supported_ul_only_rohc_profiles_r14; max_num_rohc_context_sessions_r14_e_ max_num_rohc_context_sessions_r14; // sequence methods pdcp_params_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RLC-Parameters-v1430 ::= SEQUENCE struct rlc_params_v1430_s { // member variables bool extended_poll_byte_r14_present; // sequence methods rlc_params_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-BasedNetwPerfMeasParameters-v1430 ::= SEQUENCE struct ue_based_netw_perf_meas_params_v1430_s { // member variables bool location_report_r14_present; // sequence methods ue_based_netw_perf_meas_params_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v1440-IEs ::= SEQUENCE struct ue_eutra_cap_v1440_ies_s { // member variables bool non_crit_ext_present; lwa_params_v1440_s lwa_params_v1440; mac_params_v1440_s mac_params_v1440; ue_eutra_cap_v1450_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v1440_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-CapabilityAddXDD-Mode-v1430 ::= SEQUENCE struct ue_eutra_cap_add_xdd_mode_v1430_s { // member variables bool phy_layer_params_v1430_present; bool mmtel_params_r14_present; phy_layer_params_v1430_s phy_layer_params_v1430; mmtel_params_r14_s mmtel_params_r14; // sequence methods ue_eutra_cap_add_xdd_mode_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MBMS-Parameters-v1470 ::= SEQUENCE struct mbms_params_v1470_s { struct mbms_max_bw_r14_c_ { struct types { enum options { implicit_value, explicit_value, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods mbms_max_bw_r14_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint8_t& explicit_value() { assert_choice_type("explicitValue", type_.to_string(), "mbms-MaxBW-r14"); return c; } const uint8_t& explicit_value() const { assert_choice_type("explicitValue", type_.to_string(), "mbms-MaxBW-r14"); return c; } private: types type_; uint8_t c; }; struct mbms_scaling_factor1dot25_r14_e_ { enum options { n3, n6, n9, n12 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods mbms_scaling_factor1dot25_r14_e_() {} mbms_scaling_factor1dot25_r14_e_(options v) : value(v) {} mbms_scaling_factor1dot25_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct mbms_scaling_factor7dot5_r14_e_ { enum options { n1, n2, n3, n4 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods mbms_scaling_factor7dot5_r14_e_() {} mbms_scaling_factor7dot5_r14_e_(options v) : value(v) {} mbms_scaling_factor7dot5_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool mbms_scaling_factor1dot25_r14_present; bool mbms_scaling_factor7dot5_r14_present; mbms_max_bw_r14_c_ mbms_max_bw_r14; mbms_scaling_factor1dot25_r14_e_ mbms_scaling_factor1dot25_r14; mbms_scaling_factor7dot5_r14_e_ mbms_scaling_factor7dot5_r14; // sequence methods mbms_params_v1470_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // Other-Parameters-v1360 ::= SEQUENCE struct other_params_v1360_s { // member variables bool in_dev_coex_ind_hardware_sharing_ind_r13_present; // sequence methods other_params_v1360_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v1430-IEs ::= SEQUENCE struct ue_eutra_cap_v1430_ies_s { struct ue_category_ul_v1430_e_ { enum options { n16, n17, n18, n19, n20, m2 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods ue_category_ul_v1430_e_() {} ue_category_ul_v1430_e_(options v) : value(v) {} ue_category_ul_v1430_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ue_category_dl_v1430_present; bool ue_category_ul_v1430_present; bool ue_category_ul_v1430b_present; bool mac_params_v1430_present; bool meas_params_v1430_present; bool pdcp_params_v1430_present; bool rf_params_v1430_present; bool laa_params_v1430_present; bool lwa_params_v1430_present; bool lwip_params_v1430_present; bool mmtel_params_r14_present; bool mob_params_r14_present; bool fdd_add_ue_eutra_capabilities_v1430_present; bool tdd_add_ue_eutra_capabilities_v1430_present; bool mbms_params_v1430_present; bool sl_params_v1430_present; bool ue_based_netw_perf_meas_params_v1430_present; bool high_speed_enh_params_r14_present; bool non_crit_ext_present; phy_layer_params_v1430_s phy_layer_params_v1430; ue_category_ul_v1430_e_ ue_category_ul_v1430; mac_params_v1430_s mac_params_v1430; meas_params_v1430_s meas_params_v1430; pdcp_params_v1430_s pdcp_params_v1430; rlc_params_v1430_s rlc_params_v1430; rf_params_v1430_s rf_params_v1430; laa_params_v1430_s laa_params_v1430; lwa_params_v1430_s lwa_params_v1430; lwip_params_v1430_s lwip_params_v1430; other_params_v1430_s other_params_v1430; mmtel_params_r14_s mmtel_params_r14; mob_params_r14_s mob_params_r14; ce_params_v1430_s ce_params_v1430; ue_eutra_cap_add_xdd_mode_v1430_s fdd_add_ue_eutra_capabilities_v1430; ue_eutra_cap_add_xdd_mode_v1430_s tdd_add_ue_eutra_capabilities_v1430; mbms_params_v1430_s mbms_params_v1430; sl_params_v1430_s sl_params_v1430; ue_based_netw_perf_meas_params_v1430_s ue_based_netw_perf_meas_params_v1430; high_speed_enh_params_r14_s high_speed_enh_params_r14; ue_eutra_cap_v1440_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v1430_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CE-Parameters-v1350 ::= SEQUENCE struct ce_params_v1350_s { // member variables bool unicast_freq_hop_r13_present; // sequence methods ce_params_v1350_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v1360-IEs ::= SEQUENCE struct ue_eutra_cap_v1360_ies_s { // member variables bool other_params_v1360_present; bool non_crit_ext_present; other_params_v1360_s other_params_v1360; ue_eutra_cap_v1430_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v1360_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v1470-IEs ::= SEQUENCE struct ue_eutra_cap_v1470_ies_s { // member variables bool mbms_params_v1470_present; bool phy_layer_params_v1470_present; bool rf_params_v1470_present; bool non_crit_ext_present; mbms_params_v1470_s mbms_params_v1470; phy_layer_params_v1470_s phy_layer_params_v1470; rf_params_v1470_s rf_params_v1470; // sequence methods ue_eutra_cap_v1470_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CE-Parameters-v1380 ::= SEQUENCE struct ce_params_v1380_s { // member variables bool tm6_ce_mode_a_r13_present; // sequence methods ce_params_v1380_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v1350-IEs ::= SEQUENCE struct ue_eutra_cap_v1350_ies_s { // member variables bool ue_category_dl_v1350_present; bool ue_category_ul_v1350_present; bool non_crit_ext_present; ce_params_v1350_s ce_params_v1350; ue_eutra_cap_v1360_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v1350_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v13x0-IEs ::= SEQUENCE struct ue_eutra_cap_v13x0_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; ue_eutra_cap_v1470_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v13x0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CE-Parameters-v1370 ::= SEQUENCE struct ce_params_v1370_s { // member variables bool tm9_ce_mode_a_r13_present; bool tm9_ce_mode_b_r13_present; // sequence methods ce_params_v1370_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCPTM-Parameters-r13 ::= SEQUENCE struct scptm_params_r13_s { // member variables bool scptm_parallel_reception_r13_present; bool scptm_scell_r13_present; bool scptm_non_serving_cell_r13_present; bool scptm_async_dc_r13_present; // sequence methods scptm_params_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v1340-IEs ::= SEQUENCE struct ue_eutra_cap_v1340_ies_s { // member variables bool ue_category_ul_v1340_present; bool non_crit_ext_present; uint8_t ue_category_ul_v1340; ue_eutra_cap_v1350_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v1340_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v1390-IEs ::= SEQUENCE struct ue_eutra_cap_v1390_ies_s { // member variables bool rf_params_v1390_present; bool non_crit_ext_present; rf_params_v1390_s rf_params_v1390; ue_eutra_cap_v13x0_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v1390_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-CapabilityAddXDD-Mode-v1380 ::= SEQUENCE struct ue_eutra_cap_add_xdd_mode_v1380_s { // member variables ce_params_v1380_s ce_params_v1380; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CE-Parameters-v1320 ::= SEQUENCE struct ce_params_v1320_s { // member variables bool intra_freq_a3_ce_mode_a_r13_present; bool intra_freq_a3_ce_mode_b_r13_present; bool intra_freq_ho_ce_mode_a_r13_present; bool intra_freq_ho_ce_mode_b_r13_present; // sequence methods ce_params_v1320_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PhyLayerParameters-v1310 ::= SEQUENCE struct phy_layer_params_v1310_s { struct supported_blind_decoding_r13_s_ { // member variables bool max_num_decoding_r13_present; bool pdcch_candidate_reductions_r13_present; bool skip_monitoring_dci_format0_minus1_a_r13_present; uint8_t max_num_decoding_r13; // sequence methods supported_blind_decoding_r13_s_(); }; // member variables bool aperiodic_csi_report_r13_present; bool codebook_harq_ack_r13_present; bool cross_carrier_sched_b5_c_r13_present; bool fdd_harq_timing_tdd_r13_present; bool max_num_updated_csi_proc_r13_present; bool pucch_format4_r13_present; bool pucch_format5_r13_present; bool pucch_scell_r13_present; bool spatial_bundling_harq_ack_r13_present; bool supported_blind_decoding_r13_present; bool uci_pusch_ext_r13_present; bool crs_interf_mitigation_tm10_r13_present; bool pdsch_collision_handling_r13_present; fixed_bitstring<2> aperiodic_csi_report_r13; fixed_bitstring<2> codebook_harq_ack_r13; uint8_t max_num_updated_csi_proc_r13; supported_blind_decoding_r13_s_ supported_blind_decoding_r13; // sequence methods phy_layer_params_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v1330-IEs ::= SEQUENCE struct ue_eutra_cap_v1330_ies_s { // member variables bool ue_category_dl_v1330_present; bool phy_layer_params_v1330_present; bool ue_ce_need_ul_gaps_r13_present; bool non_crit_ext_present; uint8_t ue_category_dl_v1330; phy_layer_params_v1330_s phy_layer_params_v1330; ue_eutra_cap_v1340_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v1330_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v1380-IEs ::= SEQUENCE struct ue_eutra_cap_v1380_ies_s { // member variables bool rf_params_v1380_present; bool non_crit_ext_present; rf_params_v1380_s rf_params_v1380; ce_params_v1380_s ce_params_v1380; ue_eutra_cap_add_xdd_mode_v1380_s fdd_add_ue_eutra_capabilities_v1380; ue_eutra_cap_add_xdd_mode_v1380_s tdd_add_ue_eutra_capabilities_v1380; ue_eutra_cap_v1390_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v1380_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-CapabilityAddXDD-Mode-v1320 ::= SEQUENCE struct ue_eutra_cap_add_xdd_mode_v1320_s { // member variables bool phy_layer_params_v1320_present; bool scptm_params_r13_present; phy_layer_params_v1320_s phy_layer_params_v1320; scptm_params_r13_s scptm_params_r13; // sequence methods ue_eutra_cap_add_xdd_mode_v1320_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-CapabilityAddXDD-Mode-v1370 ::= SEQUENCE struct ue_eutra_cap_add_xdd_mode_v1370_s { // member variables bool ce_params_v1370_present; ce_params_v1370_s ce_params_v1370; // sequence methods ue_eutra_cap_add_xdd_mode_v1370_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CE-Parameters-r13 ::= SEQUENCE struct ce_params_r13_s { // member variables bool ce_mode_a_r13_present; bool ce_mode_b_r13_present; // sequence methods ce_params_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DC-Parameters-v1310 ::= SEQUENCE struct dc_params_v1310_s { // member variables bool pdcp_transfer_split_ul_r13_present; bool ue_sstd_meas_r13_present; // sequence methods dc_params_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // LAA-Parameters-r13 ::= SEQUENCE struct laa_params_r13_s { // member variables bool cross_carrier_sched_laa_dl_r13_present; bool csi_rs_drs_rrm_meass_laa_r13_present; bool dl_laa_r13_present; bool ending_dw_pts_r13_present; bool second_slot_start_position_r13_present; bool tm9_laa_r13_present; bool tm10_laa_r13_present; // sequence methods laa_params_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // LWA-Parameters-r13 ::= SEQUENCE struct lwa_params_r13_s { // member variables bool lwa_r13_present; bool lwa_split_bearer_r13_present; bool wlan_mac_address_r13_present; bool lwa_buffer_size_r13_present; fixed_octstring<6> wlan_mac_address_r13; // sequence methods lwa_params_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // LWIP-Parameters-r13 ::= SEQUENCE struct lwip_params_r13_s { // member variables bool lwip_r13_present; // sequence methods lwip_params_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MAC-Parameters-v1310 ::= SEQUENCE struct mac_params_v1310_s { // member variables bool extended_mac_len_field_r13_present; bool extended_long_drx_r13_present; // sequence methods mac_params_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasParameters-v1310 ::= SEQUENCE struct meas_params_v1310_s { // member variables bool rs_sinr_meas_r13_present; bool white_cell_list_r13_present; bool extended_max_obj_id_r13_present; bool ul_pdcp_delay_r13_present; bool extended_freq_priorities_r13_present; bool multi_band_info_report_r13_present; bool rssi_and_ch_occupancy_report_r13_present; // sequence methods meas_params_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PDCP-Parameters-v1310 ::= SEQUENCE struct pdcp_params_v1310_s { // member variables bool pdcp_sn_ext_minus18bits_r13_present; // sequence methods pdcp_params_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RLC-Parameters-v1310 ::= SEQUENCE struct rlc_params_v1310_s { // member variables bool extended_rlc_sn_so_field_r13_present; // sequence methods rlc_params_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-Parameters-v1310 ::= SEQUENCE struct sl_params_v1310_s { // member variables bool disc_sys_info_report_r13_present; bool comm_multiple_tx_r13_present; bool disc_inter_freq_tx_r13_present; bool disc_periodic_slss_r13_present; // sequence methods sl_params_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v1320-IEs ::= SEQUENCE struct ue_eutra_cap_v1320_ies_s { // member variables bool ce_params_v1320_present; bool phy_layer_params_v1320_present; bool rf_params_v1320_present; bool fdd_add_ue_eutra_capabilities_v1320_present; bool tdd_add_ue_eutra_capabilities_v1320_present; bool non_crit_ext_present; ce_params_v1320_s ce_params_v1320; phy_layer_params_v1320_s phy_layer_params_v1320; rf_params_v1320_s rf_params_v1320; ue_eutra_cap_add_xdd_mode_v1320_s fdd_add_ue_eutra_capabilities_v1320; ue_eutra_cap_add_xdd_mode_v1320_s tdd_add_ue_eutra_capabilities_v1320; ue_eutra_cap_v1330_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v1320_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v1370-IEs ::= SEQUENCE struct ue_eutra_cap_v1370_ies_s { // member variables bool ce_params_v1370_present; bool fdd_add_ue_eutra_capabilities_v1370_present; bool tdd_add_ue_eutra_capabilities_v1370_present; bool non_crit_ext_present; ce_params_v1370_s ce_params_v1370; ue_eutra_cap_add_xdd_mode_v1370_s fdd_add_ue_eutra_capabilities_v1370; ue_eutra_cap_add_xdd_mode_v1370_s tdd_add_ue_eutra_capabilities_v1370; ue_eutra_cap_v1380_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v1370_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-CapabilityAddXDD-Mode-v1310 ::= SEQUENCE struct ue_eutra_cap_add_xdd_mode_v1310_s { // member variables bool phy_layer_params_v1310_present; phy_layer_params_v1310_s phy_layer_params_v1310; // sequence methods ue_eutra_cap_add_xdd_mode_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // WLAN-IW-Parameters-v1310 ::= SEQUENCE struct wlan_iw_params_v1310_s { // member variables bool rclwi_r13_present; // sequence methods wlan_iw_params_v1310_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PhyLayerParameters-v1280 ::= SEQUENCE struct phy_layer_params_v1280_s { // member variables bool alternative_tbs_indices_r12_present; // sequence methods phy_layer_params_v1280_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RF-Parameters-v12b0 ::= SEQUENCE struct rf_params_v12b0_s { // member variables bool max_layers_mimo_ind_r12_present; // sequence methods rf_params_v12b0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v12x0-IEs ::= SEQUENCE struct ue_eutra_cap_v12x0_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; ue_eutra_cap_v1370_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v12x0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v1310-IEs ::= SEQUENCE struct ue_eutra_cap_v1310_ies_s { struct ue_category_dl_v1310_e_ { enum options { n17, m1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods ue_category_dl_v1310_e_() {} ue_category_dl_v1310_e_(options v) : value(v) {} ue_category_dl_v1310_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct ue_category_ul_v1310_e_ { enum options { n14, m1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods ue_category_ul_v1310_e_() {} ue_category_ul_v1310_e_(options v) : value(v) {} ue_category_ul_v1310_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ue_category_dl_v1310_present; bool ue_category_ul_v1310_present; bool mac_params_v1310_present; bool phy_layer_params_v1310_present; bool rf_params_v1310_present; bool meas_params_v1310_present; bool dc_params_v1310_present; bool sl_params_v1310_present; bool scptm_params_r13_present; bool ce_params_r13_present; bool laa_params_r13_present; bool lwa_params_r13_present; bool fdd_add_ue_eutra_capabilities_v1310_present; bool tdd_add_ue_eutra_capabilities_v1310_present; bool non_crit_ext_present; ue_category_dl_v1310_e_ ue_category_dl_v1310; ue_category_ul_v1310_e_ ue_category_ul_v1310; pdcp_params_v1310_s pdcp_params_v1310; rlc_params_v1310_s rlc_params_v1310; mac_params_v1310_s mac_params_v1310; phy_layer_params_v1310_s phy_layer_params_v1310; rf_params_v1310_s rf_params_v1310; meas_params_v1310_s meas_params_v1310; dc_params_v1310_s dc_params_v1310; sl_params_v1310_s sl_params_v1310; scptm_params_r13_s scptm_params_r13; ce_params_r13_s ce_params_r13; irat_params_wlan_r13_s inter_rat_params_wlan_r13; laa_params_r13_s laa_params_r13; lwa_params_r13_s lwa_params_r13; wlan_iw_params_v1310_s wlan_iw_params_v1310; lwip_params_r13_s lwip_params_r13; ue_eutra_cap_add_xdd_mode_v1310_s fdd_add_ue_eutra_capabilities_v1310; ue_eutra_cap_add_xdd_mode_v1310_s tdd_add_ue_eutra_capabilities_v1310; ue_eutra_cap_v1320_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v1310_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v1280-IEs ::= SEQUENCE struct ue_eutra_cap_v1280_ies_s { // member variables bool phy_layer_params_v1280_present; bool non_crit_ext_present; phy_layer_params_v1280_s phy_layer_params_v1280; ue_eutra_cap_v1310_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v1280_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v12b0-IEs ::= SEQUENCE struct ue_eutra_cap_v12b0_ies_s { // member variables bool rf_params_v12b0_present; bool non_crit_ext_present; rf_params_v12b0_s rf_params_v12b0; ue_eutra_cap_v12x0_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v12b0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasParameters-v1250 ::= SEQUENCE struct meas_params_v1250_s { // member variables bool timer_t312_r12_present; bool alternative_time_to_trigger_r12_present; bool inc_mon_eutra_r12_present; bool inc_mon_utra_r12_present; bool extended_max_meas_id_r12_present; bool extended_rsrq_lower_range_r12_present; bool rsrq_on_all_symbols_r12_present; bool crs_discovery_signals_meas_r12_present; bool csi_rs_discovery_signals_meas_r12_present; // sequence methods meas_params_v1250_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // Other-Parameters-v11d0 ::= SEQUENCE struct other_params_v11d0_s { // member variables bool in_dev_coex_ind_ul_ca_r11_present; // sequence methods other_params_v11d0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RF-Parameters-v10j0 ::= SEQUENCE struct rf_params_v10j0_s { // member variables bool multi_ns_pmax_r10_present; // sequence methods rf_params_v10j0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v11x0-IEs ::= SEQUENCE struct ue_eutra_cap_v11x0_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; ue_eutra_cap_v12b0_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v11x0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v1270-IEs ::= SEQUENCE struct ue_eutra_cap_v1270_ies_s { // member variables bool rf_params_v1270_present; bool non_crit_ext_present; rf_params_v1270_s rf_params_v1270; ue_eutra_cap_v1280_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v1270_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DC-Parameters-r12 ::= SEQUENCE struct dc_params_r12_s { // member variables bool drb_type_split_r12_present; bool drb_type_scg_r12_present; // sequence methods dc_params_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MAC-Parameters-r12 ::= SEQUENCE struct mac_params_r12_s { // member variables bool lc_ch_sr_prohibit_timer_r12_present; bool long_drx_cmd_r12_present; // sequence methods mac_params_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MBMS-Parameters-v1250 ::= SEQUENCE struct mbms_params_v1250_s { // member variables bool mbms_async_dc_r12_present; // sequence methods mbms_params_v1250_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RLC-Parameters-r12 ::= SEQUENCE struct rlc_params_r12_s { // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-BasedNetwPerfMeasParameters-v1250 ::= SEQUENCE struct ue_based_netw_perf_meas_params_v1250_s { // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v10j0-IEs ::= SEQUENCE struct ue_eutra_cap_v10j0_ies_s { // member variables bool rf_params_v10j0_present; bool non_crit_ext_present; rf_params_v10j0_s rf_params_v10j0; // sequence methods ue_eutra_cap_v10j0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v11d0-IEs ::= SEQUENCE struct ue_eutra_cap_v11d0_ies_s { // member variables bool rf_params_v11d0_present; bool other_params_v11d0_present; bool non_crit_ext_present; rf_params_v11d0_s rf_params_v11d0; other_params_v11d0_s other_params_v11d0; ue_eutra_cap_v11x0_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v11d0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v1260-IEs ::= SEQUENCE struct ue_eutra_cap_v1260_ies_s { // member variables bool ue_category_dl_v1260_present; bool non_crit_ext_present; uint8_t ue_category_dl_v1260; ue_eutra_cap_v1270_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v1260_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-CapabilityAddXDD-Mode-v1250 ::= SEQUENCE struct ue_eutra_cap_add_xdd_mode_v1250_s { // member variables bool phy_layer_params_v1250_present; bool meas_params_v1250_present; phy_layer_params_v1250_s phy_layer_params_v1250; meas_params_v1250_s meas_params_v1250; // sequence methods ue_eutra_cap_add_xdd_mode_v1250_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // WLAN-IW-Parameters-r12 ::= SEQUENCE struct wlan_iw_params_r12_s { // member variables bool wlan_iw_ran_rules_r12_present; bool wlan_iw_andsf_policies_r12_present; // sequence methods wlan_iw_params_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MBMS-Parameters-r11 ::= SEQUENCE struct mbms_params_r11_s { // member variables bool mbms_scell_r11_present; bool mbms_non_serving_cell_r11_present; // sequence methods mbms_params_r11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasParameters-v11a0 ::= SEQUENCE struct meas_params_v11a0_s { // member variables bool benefits_from_interruption_r11_present; // sequence methods meas_params_v11a0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RF-Parameters-v10f0 ::= SEQUENCE struct rf_params_v10f0_s { // member variables bool modified_mpr_behavior_r10_present; fixed_bitstring<32> modified_mpr_behavior_r10; // sequence methods rf_params_v10f0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v10i0-IEs ::= SEQUENCE struct ue_eutra_cap_v10i0_ies_s { // member variables bool rf_params_v10i0_present; bool late_non_crit_ext_present; bool non_crit_ext_present; rf_params_v10i0_s rf_params_v10i0; dyn_octstring late_non_crit_ext; ue_eutra_cap_v11d0_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v10i0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v1250-IEs ::= SEQUENCE struct ue_eutra_cap_v1250_ies_s { // member variables bool phy_layer_params_v1250_present; bool rf_params_v1250_present; bool rlc_params_r12_present; bool ue_based_netw_perf_meas_params_v1250_present; bool ue_category_dl_r12_present; bool ue_category_ul_r12_present; bool wlan_iw_params_r12_present; bool meas_params_v1250_present; bool dc_params_r12_present; bool mbms_params_v1250_present; bool mac_params_r12_present; bool fdd_add_ue_eutra_capabilities_v1250_present; bool tdd_add_ue_eutra_capabilities_v1250_present; bool sl_params_r12_present; bool non_crit_ext_present; phy_layer_params_v1250_s phy_layer_params_v1250; rf_params_v1250_s rf_params_v1250; rlc_params_r12_s rlc_params_r12; ue_based_netw_perf_meas_params_v1250_s ue_based_netw_perf_meas_params_v1250; uint8_t ue_category_dl_r12; uint8_t ue_category_ul_r12; wlan_iw_params_r12_s wlan_iw_params_r12; meas_params_v1250_s meas_params_v1250; dc_params_r12_s dc_params_r12; mbms_params_v1250_s mbms_params_v1250; mac_params_r12_s mac_params_r12; ue_eutra_cap_add_xdd_mode_v1250_s fdd_add_ue_eutra_capabilities_v1250; ue_eutra_cap_add_xdd_mode_v1250_s tdd_add_ue_eutra_capabilities_v1250; sl_params_r12_s sl_params_r12; ue_eutra_cap_v1260_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v1250_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // OTDOA-PositioningCapabilities-r10 ::= SEQUENCE struct otdoa_positioning_capabilities_r10_s { // member variables bool inter_freq_rstd_meas_r10_present; // sequence methods otdoa_positioning_capabilities_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v10f0-IEs ::= SEQUENCE struct ue_eutra_cap_v10f0_ies_s { // member variables bool rf_params_v10f0_present; bool non_crit_ext_present; rf_params_v10f0_s rf_params_v10f0; ue_eutra_cap_v10i0_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v10f0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v11a0-IEs ::= SEQUENCE struct ue_eutra_cap_v11a0_ies_s { // member variables bool ue_category_v11a0_present; bool meas_params_v11a0_present; bool non_crit_ext_present; uint8_t ue_category_v11a0; meas_params_v11a0_s meas_params_v11a0; ue_eutra_cap_v1250_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v11a0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-CapabilityAddXDD-Mode-v1180 ::= SEQUENCE struct ue_eutra_cap_add_xdd_mode_v1180_s { // member variables mbms_params_r11_s mbms_params_r11; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // IRAT-ParametersUTRA-v9h0 ::= SEQUENCE struct irat_params_utra_v9h0_s { // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasParameters-v1130 ::= SEQUENCE struct meas_params_v1130_s { // member variables bool rsrq_meas_wideband_r11_present; // sequence methods meas_params_v1130_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // Other-Parameters-r11 ::= SEQUENCE struct other_params_r11_s { // member variables bool in_dev_coex_ind_r11_present; bool pwr_pref_ind_r11_present; bool ue_rx_tx_time_diff_meass_r11_present; // sequence methods other_params_r11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PhyLayerParameters-v1130 ::= SEQUENCE struct phy_layer_params_v1130_s { // member variables bool crs_interf_handl_r11_present; bool e_pdcch_r11_present; bool multi_ack_csi_report_r11_present; bool ss_cch_interf_handl_r11_present; bool tdd_special_sf_r11_present; bool tx_div_pucch1b_ch_select_r11_present; bool ul_co_mp_r11_present; // sequence methods phy_layer_params_v1130_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PhyLayerParameters-v1170 ::= SEQUENCE struct phy_layer_params_v1170_s { // member variables bool inter_band_tdd_ca_with_different_cfg_r11_present; fixed_bitstring<2> inter_band_tdd_ca_with_different_cfg_r11; // sequence methods phy_layer_params_v1170_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v10c0-IEs ::= SEQUENCE struct ue_eutra_cap_v10c0_ies_s { // member variables bool otdoa_positioning_capabilities_r10_present; bool non_crit_ext_present; otdoa_positioning_capabilities_r10_s otdoa_positioning_capabilities_r10; ue_eutra_cap_v10f0_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v10c0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v1180-IEs ::= SEQUENCE struct ue_eutra_cap_v1180_ies_s { // member variables bool rf_params_v1180_present; bool mbms_params_r11_present; bool fdd_add_ue_eutra_capabilities_v1180_present; bool tdd_add_ue_eutra_capabilities_v1180_present; bool non_crit_ext_present; rf_params_v1180_s rf_params_v1180; mbms_params_r11_s mbms_params_r11; ue_eutra_cap_add_xdd_mode_v1180_s fdd_add_ue_eutra_capabilities_v1180; ue_eutra_cap_add_xdd_mode_v1180_s tdd_add_ue_eutra_capabilities_v1180; ue_eutra_cap_v11a0_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v1180_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // IRAT-ParametersCDMA2000-v1130 ::= SEQUENCE struct irat_params_cdma2000_v1130_s { // member variables bool cdma2000_nw_sharing_r11_present; // sequence methods irat_params_cdma2000_v1130_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PDCP-Parameters-v1130 ::= SEQUENCE struct pdcp_params_v1130_s { // member variables bool pdcp_sn_ext_r11_present; bool support_rohc_context_continue_r11_present; // sequence methods pdcp_params_v1130_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v1170-IEs ::= SEQUENCE struct ue_eutra_cap_v1170_ies_s { // member variables bool phy_layer_params_v1170_present; bool ue_category_v1170_present; bool non_crit_ext_present; phy_layer_params_v1170_s phy_layer_params_v1170; uint8_t ue_category_v1170; ue_eutra_cap_v1180_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v1170_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v9h0-IEs ::= SEQUENCE struct ue_eutra_cap_v9h0_ies_s { // member variables bool inter_rat_params_utra_v9h0_present; bool late_non_crit_ext_present; bool non_crit_ext_present; irat_params_utra_v9h0_s inter_rat_params_utra_v9h0; dyn_octstring late_non_crit_ext; ue_eutra_cap_v10c0_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v9h0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-CapabilityAddXDD-Mode-v1130 ::= SEQUENCE struct ue_eutra_cap_add_xdd_mode_v1130_s { // member variables bool ext; bool phy_layer_params_v1130_present; bool meas_params_v1130_present; bool other_params_r11_present; phy_layer_params_v1130_s phy_layer_params_v1130; meas_params_v1130_s meas_params_v1130; other_params_r11_s other_params_r11; // ... // sequence methods ue_eutra_cap_add_xdd_mode_v1130_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // IRAT-ParametersCDMA2000-1XRTT-v1020 ::= SEQUENCE struct irat_params_cdma2000_minus1_xrtt_v1020_s { // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // IRAT-ParametersUTRA-TDD-v1020 ::= SEQUENCE struct irat_params_utra_tdd_v1020_s { // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PhyLayerParameters-v9d0 ::= SEQUENCE struct phy_layer_params_v9d0_s { // member variables bool tm5_fdd_r9_present; bool tm5_tdd_r9_present; // sequence methods phy_layer_params_v9d0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v1130-IEs ::= SEQUENCE struct ue_eutra_cap_v1130_ies_s { // member variables bool phy_layer_params_v1130_present; bool fdd_add_ue_eutra_capabilities_v1130_present; bool tdd_add_ue_eutra_capabilities_v1130_present; bool non_crit_ext_present; pdcp_params_v1130_s pdcp_params_v1130; phy_layer_params_v1130_s phy_layer_params_v1130; rf_params_v1130_s rf_params_v1130; meas_params_v1130_s meas_params_v1130; irat_params_cdma2000_v1130_s inter_rat_params_cdma2000_v1130; other_params_r11_s other_params_r11; ue_eutra_cap_add_xdd_mode_v1130_s fdd_add_ue_eutra_capabilities_v1130; ue_eutra_cap_add_xdd_mode_v1130_s tdd_add_ue_eutra_capabilities_v1130; ue_eutra_cap_v1170_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v1130_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v9e0-IEs ::= SEQUENCE struct ue_eutra_cap_v9e0_ies_s { // member variables bool rf_params_v9e0_present; bool non_crit_ext_present; rf_params_v9e0_s rf_params_v9e0; ue_eutra_cap_v9h0_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v9e0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // IRAT-ParametersCDMA2000-1XRTT-v920 ::= SEQUENCE struct irat_params_cdma2000_minus1_xrtt_v920_s { // member variables bool e_csfb_conc_ps_mob1_xrtt_r9_present; // sequence methods irat_params_cdma2000_minus1_xrtt_v920_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // IRAT-ParametersUTRA-v920 ::= SEQUENCE struct irat_params_utra_v920_s { // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // IRAT-ParametersUTRA-v9c0 ::= SEQUENCE struct irat_params_utra_v9c0_s { // member variables bool voice_over_ps_hs_utra_fdd_r9_present; bool voice_over_ps_hs_utra_tdd128_r9_present; bool srvcc_from_utra_fdd_to_utra_fdd_r9_present; bool srvcc_from_utra_fdd_to_geran_r9_present; bool srvcc_from_utra_tdd128_to_utra_tdd128_r9_present; bool srvcc_from_utra_tdd128_to_geran_r9_present; // sequence methods irat_params_utra_v9c0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // NeighCellSI-AcquisitionParameters-r9 ::= SEQUENCE struct neigh_cell_si_acquisition_params_r9_s { // member variables bool intra_freq_si_acquisition_for_ho_r9_present; bool inter_freq_si_acquisition_for_ho_r9_present; bool utran_si_acquisition_for_ho_r9_present; // sequence methods neigh_cell_si_acquisition_params_r9_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PhyLayerParameters ::= SEQUENCE struct phy_layer_params_s { // member variables bool ue_tx_ant_sel_supported; bool ue_specific_ref_sigs_supported; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v1090-IEs ::= SEQUENCE struct ue_eutra_cap_v1090_ies_s { // member variables bool rf_params_v1090_present; bool non_crit_ext_present; rf_params_v1090_s rf_params_v1090; ue_eutra_cap_v1130_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v1090_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v9d0-IEs ::= SEQUENCE struct ue_eutra_cap_v9d0_ies_s { // member variables bool phy_layer_params_v9d0_present; bool non_crit_ext_present; phy_layer_params_v9d0_s phy_layer_params_v9d0; ue_eutra_cap_v9e0_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v9d0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-CapabilityAddXDD-Mode-v1060 ::= SEQUENCE struct ue_eutra_cap_add_xdd_mode_v1060_s { // member variables bool ext; bool phy_layer_params_v1060_present; bool feature_group_ind_rel10_v1060_present; bool inter_rat_params_cdma2000_v1060_present; bool inter_rat_params_utra_tdd_v1060_present; phy_layer_params_v1020_s phy_layer_params_v1060; fixed_bitstring<32> feature_group_ind_rel10_v1060; irat_params_cdma2000_minus1_xrtt_v1020_s inter_rat_params_cdma2000_v1060; irat_params_utra_tdd_v1020_s inter_rat_params_utra_tdd_v1060; // ... // group 0 bool otdoa_positioning_capabilities_r10_present; copy_ptr otdoa_positioning_capabilities_r10; // sequence methods ue_eutra_cap_add_xdd_mode_v1060_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-BasedNetwPerfMeasParameters-r10 ::= SEQUENCE struct ue_based_netw_perf_meas_params_r10_s { // member variables bool logged_meass_idle_r10_present; bool standalone_gnss_location_r10_present; // sequence methods ue_based_netw_perf_meas_params_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v1060-IEs ::= SEQUENCE struct ue_eutra_cap_v1060_ies_s { // member variables bool fdd_add_ue_eutra_capabilities_v1060_present; bool tdd_add_ue_eutra_capabilities_v1060_present; bool rf_params_v1060_present; bool non_crit_ext_present; ue_eutra_cap_add_xdd_mode_v1060_s fdd_add_ue_eutra_capabilities_v1060; ue_eutra_cap_add_xdd_mode_v1060_s tdd_add_ue_eutra_capabilities_v1060; rf_params_v1060_s rf_params_v1060; ue_eutra_cap_v1090_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v1060_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v9c0-IEs ::= SEQUENCE struct ue_eutra_cap_v9c0_ies_s { // member variables bool inter_rat_params_utra_v9c0_present; bool non_crit_ext_present; irat_params_utra_v9c0_s inter_rat_params_utra_v9c0; ue_eutra_cap_v9d0_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v9c0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-CapabilityAddXDD-Mode-r9 ::= SEQUENCE struct ue_eutra_cap_add_xdd_mode_r9_s { // member variables bool ext; bool phy_layer_params_r9_present; bool feature_group_inds_r9_present; bool feature_group_ind_rel9_add_r9_present; bool inter_rat_params_geran_r9_present; bool inter_rat_params_utra_r9_present; bool inter_rat_params_cdma2000_r9_present; bool neigh_cell_si_acquisition_params_r9_present; phy_layer_params_s phy_layer_params_r9; fixed_bitstring<32> feature_group_inds_r9; fixed_bitstring<32> feature_group_ind_rel9_add_r9; irat_params_geran_s inter_rat_params_geran_r9; irat_params_utra_v920_s inter_rat_params_utra_r9; irat_params_cdma2000_minus1_xrtt_v920_s inter_rat_params_cdma2000_r9; neigh_cell_si_acquisition_params_r9_s neigh_cell_si_acquisition_params_r9; // ... // sequence methods ue_eutra_cap_add_xdd_mode_r9_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v1020-IEs ::= SEQUENCE struct ue_eutra_cap_v1020_ies_s { // member variables bool ue_category_v1020_present; bool phy_layer_params_v1020_present; bool rf_params_v1020_present; bool meas_params_v1020_present; bool feature_group_ind_rel10_r10_present; bool inter_rat_params_cdma2000_v1020_present; bool ue_based_netw_perf_meas_params_r10_present; bool inter_rat_params_utra_tdd_v1020_present; bool non_crit_ext_present; uint8_t ue_category_v1020; phy_layer_params_v1020_s phy_layer_params_v1020; rf_params_v1020_s rf_params_v1020; meas_params_v1020_s meas_params_v1020; fixed_bitstring<32> feature_group_ind_rel10_r10; irat_params_cdma2000_minus1_xrtt_v1020_s inter_rat_params_cdma2000_v1020; ue_based_netw_perf_meas_params_r10_s ue_based_netw_perf_meas_params_r10; irat_params_utra_tdd_v1020_s inter_rat_params_utra_tdd_v1020; ue_eutra_cap_v1060_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v1020_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v9a0-IEs ::= SEQUENCE struct ue_eutra_cap_v9a0_ies_s { // member variables bool feature_group_ind_rel9_add_r9_present; bool fdd_add_ue_eutra_capabilities_r9_present; bool tdd_add_ue_eutra_capabilities_r9_present; bool non_crit_ext_present; fixed_bitstring<32> feature_group_ind_rel9_add_r9; ue_eutra_cap_add_xdd_mode_r9_s fdd_add_ue_eutra_capabilities_r9; ue_eutra_cap_add_xdd_mode_r9_s tdd_add_ue_eutra_capabilities_r9; ue_eutra_cap_v9c0_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v9a0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSG-ProximityIndicationParameters-r9 ::= SEQUENCE struct csg_proximity_ind_params_r9_s { // member variables bool intra_freq_proximity_ind_r9_present; bool inter_freq_proximity_ind_r9_present; bool utran_proximity_ind_r9_present; // sequence methods csg_proximity_ind_params_r9_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // IRAT-ParametersGERAN-v920 ::= SEQUENCE struct irat_params_geran_v920_s { // member variables bool dtm_r9_present; bool e_redirection_geran_r9_present; // sequence methods irat_params_geran_v920_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // PhyLayerParameters-v920 ::= SEQUENCE struct phy_layer_params_v920_s { // member variables bool enhanced_dual_layer_fdd_r9_present; bool enhanced_dual_layer_tdd_r9_present; // sequence methods phy_layer_params_v920_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SON-Parameters-r9 ::= SEQUENCE struct son_params_r9_s { // member variables bool rach_report_r9_present; // sequence methods son_params_r9_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability-v940-IEs ::= SEQUENCE struct ue_eutra_cap_v940_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; ue_eutra_cap_v1020_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v940_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AccessStratumRelease ::= ENUMERATED struct access_stratum_release_e { enum options { rel8, rel9, rel10, rel11, rel12, rel13, rel14, rel15, /*...*/ }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = true; // enumerated methods access_stratum_release_e() {} access_stratum_release_e(options v) : value(v) {} access_stratum_release_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // UE-EUTRA-Capability-v920-IEs ::= SEQUENCE struct ue_eutra_cap_v920_ies_s { // member variables bool inter_rat_params_utra_v920_present; bool inter_rat_params_cdma2000_v920_present; bool dev_type_r9_present; bool non_crit_ext_present; phy_layer_params_v920_s phy_layer_params_v920; irat_params_geran_v920_s inter_rat_params_geran_v920; irat_params_utra_v920_s inter_rat_params_utra_v920; irat_params_cdma2000_minus1_xrtt_v920_s inter_rat_params_cdma2000_v920; csg_proximity_ind_params_r9_s csg_proximity_ind_params_r9; neigh_cell_si_acquisition_params_r9_s neigh_cell_si_acquisition_params_r9; son_params_r9_s son_params_r9; ue_eutra_cap_v940_ies_s non_crit_ext; // sequence methods ue_eutra_cap_v920_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UE-EUTRA-Capability ::= SEQUENCE struct ue_eutra_cap_s { struct inter_rat_params_s_ { // member variables bool utra_fdd_present; bool utra_tdd128_present; bool utra_tdd384_present; bool utra_tdd768_present; bool geran_present; bool cdma2000_hrpd_present; bool cdma2000_minus1x_rtt_present; irat_params_utra_fdd_s utra_fdd; irat_params_utra_tdd128_s utra_tdd128; irat_params_utra_tdd384_s utra_tdd384; irat_params_utra_tdd768_s utra_tdd768; irat_params_geran_s geran; irat_params_cdma2000_hrpd_s cdma2000_hrpd; irat_params_cdma2000_minus1_xrtt_s cdma2000_minus1x_rtt; // sequence methods inter_rat_params_s_(); }; // member variables bool feature_group_inds_present; bool non_crit_ext_present; access_stratum_release_e access_stratum_release; uint8_t ue_category; pdcp_params_s pdcp_params; phy_layer_params_s phy_layer_params; rf_params_s rf_params; meas_params_s meas_params; fixed_bitstring<32> feature_group_inds; inter_rat_params_s_ inter_rat_params; ue_eutra_cap_v920_ies_s non_crit_ext; // sequence methods ue_eutra_cap_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCG-Config-r12-IEs ::= SEQUENCE struct scg_cfg_r12_ies_s { // member variables bool scg_radio_cfg_r12_present; bool non_crit_ext_present; scg_cfg_part_scg_r12_s scg_radio_cfg_r12; // sequence methods scg_cfg_r12_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AS-ConfigNR-r15 ::= SEQUENCE struct as_cfg_nr_r15_s { // member variables bool source_rb_cfg_nr_r15_present; bool source_rb_cfg_sn_nr_r15_present; bool source_other_cfg_sn_nr_r15_present; dyn_octstring source_rb_cfg_nr_r15; dyn_octstring source_rb_cfg_sn_nr_r15; dyn_octstring source_other_cfg_sn_nr_r15; // sequence methods as_cfg_nr_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCG-Config-r12 ::= SEQUENCE struct scg_cfg_r12_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { scg_cfg_r12, spare7, spare6, spare5, spare4, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters scg_cfg_r12_ies_s& scg_cfg_r12() { assert_choice_type("scg-Config-r12", type_.to_string(), "c1"); return c; } const scg_cfg_r12_ies_s& scg_cfg_r12() const { assert_choice_type("scg-Config-r12", type_.to_string(), "c1"); return c; } private: types type_; scg_cfg_r12_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); 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(bit_ref& bref); void to_json(json_writer& j) const; }; // AS-Config ::= SEQUENCE struct as_cfg_s { // member variables bool ext; meas_cfg_s source_meas_cfg; rr_cfg_ded_s source_rr_cfg; security_algorithm_cfg_s source_security_algorithm_cfg; fixed_bitstring<16> source_ue_id; mib_s source_mib; sib_type1_s source_sib_type1; sib_type2_s source_sib_type2; ant_info_common_s ant_info_common; uint16_t source_dl_carrier_freq; // ... // group 0 bool source_sib_type1_ext_present; dyn_octstring source_sib_type1_ext; copy_ptr source_other_cfg_r9; // group 1 bool source_scell_cfg_list_r10_present; copy_ptr source_scell_cfg_list_r10; // group 2 bool source_cfg_scg_r12_present; copy_ptr source_cfg_scg_r12; // group 3 bool as_cfg_nr_r15_present; copy_ptr as_cfg_nr_r15; // sequence methods as_cfg_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AS-Config-v10j0 ::= SEQUENCE struct as_cfg_v10j0_s { // member variables bool ant_info_ded_pcell_v10i0_present; ant_info_ded_v10i0_s ant_info_ded_pcell_v10i0; // sequence methods as_cfg_v10j0_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AS-Config-v1250 ::= SEQUENCE struct as_cfg_v1250_s { // member variables bool source_wlan_offload_cfg_r12_present; bool source_sl_comm_cfg_r12_present; bool source_sl_disc_cfg_r12_present; wlan_offload_cfg_r12_s source_wlan_offload_cfg_r12; sl_comm_cfg_r12_s source_sl_comm_cfg_r12; sl_disc_cfg_r12_s source_sl_disc_cfg_r12; // sequence methods as_cfg_v1250_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AS-Config-v1320 ::= SEQUENCE struct as_cfg_v1320_s { // member variables bool source_scell_cfg_list_r13_present; bool source_rclwi_cfg_r13_present; scell_to_add_mod_list_ext_r13_l source_scell_cfg_list_r13; rclwi_cfg_r13_c source_rclwi_cfg_r13; // sequence methods as_cfg_v1320_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AS-Config-v1430 ::= SEQUENCE struct as_cfg_v1430_s { // member variables bool source_sl_v2x_comm_cfg_r14_present; bool source_lwa_cfg_r14_present; bool source_wlan_meas_result_r14_present; sl_v2x_cfg_ded_r14_s source_sl_v2x_comm_cfg_r14; lwa_cfg_r13_s source_lwa_cfg_r14; meas_result_list_wlan_r13_l source_wlan_meas_result_r14; // sequence methods as_cfg_v1430_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AS-Config-v9e0 ::= SEQUENCE struct as_cfg_v9e0_s { // member variables uint32_t source_dl_carrier_freq_v9e0; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AdditionalReestabInfo ::= SEQUENCE struct add_reestab_info_s { // member variables fixed_bitstring<28> cell_id; fixed_bitstring<256> key_e_node_b_star; fixed_bitstring<16> short_mac_i; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AdditionalReestabInfoList ::= SEQUENCE (SIZE (1..maxReestabInfo)) OF AdditionalReestabInfo typedef dyn_array add_reestab_info_list_l; // ReestablishmentInfo ::= SEQUENCE struct reest_info_s { // member variables bool ext; bool add_reestab_info_list_present; uint16_t source_pci; fixed_bitstring<16> target_cell_short_mac_i; add_reestab_info_list_l add_reestab_info_list; // ... // sequence methods reest_info_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AS-Context ::= SEQUENCE struct as_context_s { // member variables bool reest_info_present; reest_info_s reest_info; // sequence methods as_context_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AS-Context-v1130 ::= SEQUENCE struct as_context_v1130_s { // member variables bool ext; bool idc_ind_r11_present; bool mbms_interest_ind_r11_present; bool pwr_pref_ind_r11_present; dyn_octstring idc_ind_r11; dyn_octstring mbms_interest_ind_r11; dyn_octstring pwr_pref_ind_r11; // ... // group 0 bool sidelink_ue_info_r12_present; dyn_octstring sidelink_ue_info_r12; // group 1 bool source_context_en_dc_r15_present; dyn_octstring source_context_en_dc_r15; // sequence methods as_context_v1130_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // AS-Context-v1320 ::= SEQUENCE struct as_context_v1320_s { // member variables bool wlan_conn_status_report_r13_present; dyn_octstring wlan_conn_status_report_r13; // sequence methods as_context_v1320_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CSI-RS-TriggeredList-r12 ::= SEQUENCE (SIZE (1..maxCSI-RS-Meas-r12)) OF INTEGER typedef dyn_array csi_rs_triggered_list_r12_l; // CandidateCellInfo-r10 ::= SEQUENCE struct candidate_cell_info_r10_s { // member variables bool ext; bool rsrp_result_r10_present; bool rsrq_result_r10_present; uint16_t pci_r10; uint16_t dl_carrier_freq_r10; uint8_t rsrp_result_r10; uint8_t rsrq_result_r10; // ... // group 0 bool dl_carrier_freq_v1090_present; uint32_t dl_carrier_freq_v1090; // group 1 bool rsrq_result_v1250_present; int8_t rsrq_result_v1250; // group 2 bool rs_sinr_result_r13_present; uint8_t rs_sinr_result_r13; // sequence methods candidate_cell_info_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // CandidateCellInfoList-r10 ::= SEQUENCE (SIZE (1..maxFreq)) OF CandidateCellInfo-r10 typedef dyn_array candidate_cell_info_list_r10_l; // Cell-ToAddMod-r12 ::= SEQUENCE struct cell_to_add_mod_r12_s { struct cell_identif_r12_s_ { // member variables uint16_t pci_r12; uint32_t dl_carrier_freq_r12; }; struct meas_result_cell_to_add_r12_s_ { // member variables uint8_t rsrp_result_r12; uint8_t rsrq_result_r12; }; struct meas_result_cell_to_add_v1310_s_ { // member variables uint8_t rs_sinr_result_r13; }; // member variables bool ext; bool cell_identif_r12_present; bool meas_result_cell_to_add_r12_present; uint8_t s_cell_idx_r12; cell_identif_r12_s_ cell_identif_r12; meas_result_cell_to_add_r12_s_ meas_result_cell_to_add_r12; // ... // group 0 bool s_cell_idx_r13_present; bool meas_result_cell_to_add_v1310_present; uint8_t s_cell_idx_r13; copy_ptr meas_result_cell_to_add_v1310; // sequence methods cell_to_add_mod_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SSB-IndexList-r15 ::= SEQUENCE (SIZE (1..maxRS-Index-r15)) OF INTEGER typedef dyn_array ssb_idx_list_r15_l; struct cells_triggered_list_item_c_ { struct pci_utra_c_ { struct types { enum options { fdd, tdd, nulltype }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods pci_utra_c_() : type_(types::nulltype) {} pci_utra_c_(const pci_utra_c_& other); pci_utra_c_& operator=(const pci_utra_c_& other); ~pci_utra_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint16_t& fdd() { assert_choice_type("fdd", type_.to_string(), "physCellIdUTRA"); return c.get(); } uint8_t& tdd() { assert_choice_type("tdd", type_.to_string(), "physCellIdUTRA"); return c.get(); } const uint16_t& fdd() const { assert_choice_type("fdd", type_.to_string(), "physCellIdUTRA"); return c.get(); } const uint8_t& tdd() const { assert_choice_type("tdd", type_.to_string(), "physCellIdUTRA"); return c.get(); } private: types type_; choice_buffer_t<8> c; void destroy_(); }; struct pci_geran_s_ { // member variables carrier_freq_geran_s carrier_freq; pci_geran_s pci; }; struct pci_nr_r15_s_ { // member variables bool rs_idx_list_r15_present; uint32_t carrier_freq; uint16_t pci; ssb_idx_list_r15_l rs_idx_list_r15; // sequence methods pci_nr_r15_s_(); }; struct types { enum options { pci_eutra, pci_utra, pci_geran, pci_cdma2000, wlan_ids_r13, pci_nr_r15, nulltype }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // choice methods cells_triggered_list_item_c_() : type_(types::nulltype) {} cells_triggered_list_item_c_(const cells_triggered_list_item_c_& other); cells_triggered_list_item_c_& operator=(const cells_triggered_list_item_c_& other); ~cells_triggered_list_item_c_() { destroy_(); } void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters uint16_t& pci_eutra() { assert_choice_type("physCellIdEUTRA", type_.to_string(), "CellsTriggeredList-item"); return c.get(); } pci_utra_c_& pci_utra() { assert_choice_type("physCellIdUTRA", type_.to_string(), "CellsTriggeredList-item"); return c.get(); } pci_geran_s_& pci_geran() { assert_choice_type("physCellIdGERAN", type_.to_string(), "CellsTriggeredList-item"); return c.get(); } uint16_t& pci_cdma2000() { assert_choice_type("physCellIdCDMA2000", type_.to_string(), "CellsTriggeredList-item"); return c.get(); } wlan_ids_r12_s& wlan_ids_r13() { assert_choice_type("wlan-Identifiers-r13", type_.to_string(), "CellsTriggeredList-item"); return c.get(); } pci_nr_r15_s_& pci_nr_r15() { assert_choice_type("physCellIdNR-r15", type_.to_string(), "CellsTriggeredList-item"); return c.get(); } const uint16_t& pci_eutra() const { assert_choice_type("physCellIdEUTRA", type_.to_string(), "CellsTriggeredList-item"); return c.get(); } const pci_utra_c_& pci_utra() const { assert_choice_type("physCellIdUTRA", type_.to_string(), "CellsTriggeredList-item"); return c.get(); } const pci_geran_s_& pci_geran() const { assert_choice_type("physCellIdGERAN", type_.to_string(), "CellsTriggeredList-item"); return c.get(); } const uint16_t& pci_cdma2000() const { assert_choice_type("physCellIdCDMA2000", type_.to_string(), "CellsTriggeredList-item"); return c.get(); } const wlan_ids_r12_s& wlan_ids_r13() const { assert_choice_type("wlan-Identifiers-r13", type_.to_string(), "CellsTriggeredList-item"); return c.get(); } const pci_nr_r15_s_& pci_nr_r15() const { assert_choice_type("physCellIdNR-r15", type_.to_string(), "CellsTriggeredList-item"); return c.get(); } private: types type_; choice_buffer_t c; void destroy_(); }; // CellsTriggeredList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF CellsTriggeredList-item typedef dyn_array cells_triggered_list_l; // DRB-InfoSCG-r12 ::= SEQUENCE struct drb_info_scg_r12_s { struct drb_type_r12_e_ { enum options { split, scg }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods drb_type_r12_e_() {} drb_type_r12_e_(options v) : value(v) {} drb_type_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool ext; bool eps_bearer_id_r12_present; bool drb_type_r12_present; uint8_t eps_bearer_id_r12; uint8_t drb_id_r12; drb_type_r12_e_ drb_type_r12; // ... // sequence methods drb_info_scg_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // DRB-InfoListSCG-r12 ::= SEQUENCE (SIZE (1..maxDRB)) OF DRB-InfoSCG-r12 typedef dyn_array drb_info_list_scg_r12_l; // DRB-InfoListSCG-r15 ::= SEQUENCE (SIZE (1..maxDRB-r15)) OF DRB-InfoSCG-r12 typedef dyn_array drb_info_list_scg_r15_l; // HandoverCommand-r8-IEs ::= SEQUENCE struct ho_cmd_r8_ies_s { // member variables bool non_crit_ext_present; dyn_octstring ho_cmd_msg; // sequence methods ho_cmd_r8_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // HandoverCommand ::= SEQUENCE struct ho_cmd_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { ho_cmd_r8, spare7, spare6, spare5, spare4, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters ho_cmd_r8_ies_s& ho_cmd_r8() { assert_choice_type("handoverCommand-r8", type_.to_string(), "c1"); return c; } const ho_cmd_r8_ies_s& ho_cmd_r8() const { assert_choice_type("handoverCommand-r8", type_.to_string(), "c1"); return c; } private: types type_; ho_cmd_r8_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); 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(bit_ref& bref); void to_json(json_writer& j) const; }; // HandoverPreparationInformation-v1430-IEs ::= SEQUENCE struct ho_prep_info_v1430_ies_s { // member variables bool as_cfg_v1430_present; bool make_before_break_req_r14_present; bool non_crit_ext_present; as_cfg_v1430_s as_cfg_v1430; // sequence methods ho_prep_info_v1430_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // HandoverPreparationInformation-v1320-IEs ::= SEQUENCE struct ho_prep_info_v1320_ies_s { // member variables bool as_cfg_v1320_present; bool as_context_v1320_present; bool non_crit_ext_present; as_cfg_v1320_s as_cfg_v1320; as_context_v1320_s as_context_v1320; ho_prep_info_v1430_ies_s non_crit_ext; // sequence methods ho_prep_info_v1320_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // HandoverPreparationInformation-v1250-IEs ::= SEQUENCE struct ho_prep_info_v1250_ies_s { // member variables bool ue_supported_earfcn_r12_present; bool as_cfg_v1250_present; bool non_crit_ext_present; uint32_t ue_supported_earfcn_r12; as_cfg_v1250_s as_cfg_v1250; ho_prep_info_v1320_ies_s non_crit_ext; // sequence methods ho_prep_info_v1250_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // HandoverPreparationInformation-v10j0-IEs ::= SEQUENCE struct ho_prep_info_v10j0_ies_s { // member variables bool as_cfg_v10j0_present; bool non_crit_ext_present; as_cfg_v10j0_s as_cfg_v10j0; // sequence methods ho_prep_info_v10j0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // HandoverPreparationInformation-v1130-IEs ::= SEQUENCE struct ho_prep_info_v1130_ies_s { // member variables bool as_context_v1130_present; bool non_crit_ext_present; as_context_v1130_s as_context_v1130; ho_prep_info_v1250_ies_s non_crit_ext; // sequence methods ho_prep_info_v1130_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // HandoverPreparationInformation-v9e0-IEs ::= SEQUENCE struct ho_prep_info_v9e0_ies_s { // member variables bool as_cfg_v9e0_present; bool non_crit_ext_present; as_cfg_v9e0_s as_cfg_v9e0; ho_prep_info_v1130_ies_s non_crit_ext; // sequence methods ho_prep_info_v9e0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // HandoverPreparationInformation-v9j0-IEs ::= SEQUENCE struct ho_prep_info_v9j0_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; ho_prep_info_v10j0_ies_s non_crit_ext; // sequence methods ho_prep_info_v9j0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // HandoverPreparationInformation-v9d0-IEs ::= SEQUENCE struct ho_prep_info_v9d0_ies_s { // member variables bool late_non_crit_ext_present; bool non_crit_ext_present; dyn_octstring late_non_crit_ext; ho_prep_info_v9e0_ies_s non_crit_ext; // sequence methods ho_prep_info_v9d0_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // HandoverPreparationInformation-v920-IEs ::= SEQUENCE struct ho_prep_info_v920_ies_s { struct ue_cfg_release_r9_e_ { enum options { rel9, rel10, rel11, rel12, v10j0, v11e0, v1280, rel13, /*...*/ rel14, rel15 }; options value; static const uint32_t nof_types = 10, nof_exts = 2; static const bool has_ext = true; // enumerated methods ue_cfg_release_r9_e_() {} ue_cfg_release_r9_e_(options v) : value(v) {} ue_cfg_release_r9_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool ue_cfg_release_r9_present; bool non_crit_ext_present; ue_cfg_release_r9_e_ ue_cfg_release_r9; ho_prep_info_v9d0_ies_s non_crit_ext; // sequence methods ho_prep_info_v920_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // RRM-Config ::= SEQUENCE struct rrm_cfg_s { struct ue_inactive_time_e_ { enum options { s1, s2, s3, s5, s7, s10, s15, s20, s25, s30, s40, s50, min1, min1s20c, min1s40, min2, min2s30, min3, min3s30, min4, min5, min6, min7, min8, min9, min10, min12, min14, min17, min20, min24, min28, min33, min38, min44, min50, hr1, hr1min30, hr2, hr2min30, hr3, hr3min30, hr4, hr5, hr6, hr8, hr10, hr13, hr16, hr20, day1, day1hr12, day2, day2hr12, day3, day4, day5, day7, day10, day14, day19, day24, day30, day_more_than30 }; options value; static const uint32_t nof_types = 64, nof_exts = 0; static const bool has_ext = false; // enumerated methods ue_inactive_time_e_() {} ue_inactive_time_e_(options v) : value(v) {} ue_inactive_time_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool ext; bool ue_inactive_time_present; ue_inactive_time_e_ ue_inactive_time; // ... // group 0 bool candidate_cell_info_list_r10_present; copy_ptr candidate_cell_info_list_r10; // group 1 bool candidate_cell_info_list_nr_r15_present; copy_ptr candidate_cell_info_list_nr_r15; // sequence methods rrm_cfg_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // HandoverPreparationInformation-r8-IEs ::= SEQUENCE struct ho_prep_info_r8_ies_s { // member variables bool as_cfg_present; bool rrm_cfg_present; bool as_context_present; bool non_crit_ext_present; ue_cap_rat_container_list_l ue_radio_access_cap_info; as_cfg_s as_cfg; rrm_cfg_s rrm_cfg; as_context_s as_context; ho_prep_info_v920_ies_s non_crit_ext; // sequence methods ho_prep_info_r8_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // HandoverPreparationInformation ::= SEQUENCE struct ho_prep_info_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { ho_prep_info_r8, spare7, spare6, spare5, spare4, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters ho_prep_info_r8_ies_s& ho_prep_info_r8() { assert_choice_type("handoverPreparationInformation-r8", type_.to_string(), "c1"); return c; } const ho_prep_info_r8_ies_s& ho_prep_info_r8() const { assert_choice_type("handoverPreparationInformation-r8", type_.to_string(), "c1"); return c; } private: types type_; ho_prep_info_r8_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); 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(bit_ref& bref); void to_json(json_writer& j) const; }; // HandoverPreparationInformation-v1530-IEs ::= SEQUENCE struct ho_prep_info_v1530_ies_s { // member variables bool ran_notif_area_info_r15_present; bool non_crit_ext_present; ran_notif_area_info_r15_c ran_notif_area_info_r15; // sequence methods ho_prep_info_v1530_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // LogMeasInfoList2-r10 ::= SEQUENCE (SIZE (1..maxLogMeas-r10)) OF LogMeasInfo-r10 typedef dyn_array log_meas_info_list2_r10_l; // TDD-ConfigSL-r12 ::= SEQUENCE struct tdd_cfg_sl_r12_s { struct sf_assign_sl_r12_e_ { enum options { none, sa0, sa1, sa2, sa3, sa4, sa5, sa6 }; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods sf_assign_sl_r12_e_() {} sf_assign_sl_r12_e_(options v) : value(v) {} sf_assign_sl_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables sf_assign_sl_r12_e_ sf_assign_sl_r12; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MasterInformationBlock-SL ::= SEQUENCE struct mib_sl_s { struct sl_bw_r12_e_ { enum options { n6, n15, n25, n50, n75, n100 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods sl_bw_r12_e_() {} sl_bw_r12_e_(options v) : value(v) {} sl_bw_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables sl_bw_r12_e_ sl_bw_r12; tdd_cfg_sl_r12_s tdd_cfg_sl_r12; fixed_bitstring<10> direct_frame_num_r12; uint8_t direct_sf_num_r12; bool in_coverage_r12; fixed_bitstring<19> reserved_r12; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MasterInformationBlock-SL-V2X-r14 ::= SEQUENCE struct mib_sl_v2x_r14_s { struct sl_bw_r14_e_ { enum options { n6, n15, n25, n50, n75, n100 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods sl_bw_r14_e_() {} sl_bw_r14_e_(options v) : value(v) {} sl_bw_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables sl_bw_r14_e_ sl_bw_r14; tdd_cfg_sl_r12_s tdd_cfg_sl_r14; fixed_bitstring<10> direct_frame_num_r14; uint8_t direct_sf_num_r14; bool in_coverage_r14; fixed_bitstring<27> reserved_r14; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResultRSSI-SCG-r13 ::= SEQUENCE struct meas_result_rssi_scg_r13_s { // member variables uint8_t serv_cell_id_r13; meas_result_for_rssi_r13_s meas_result_for_rssi_r13; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResultListRSSI-SCG-r13 ::= SEQUENCE (SIZE (1..maxServCell-r13)) OF MeasResultRSSI-SCG-r13 typedef dyn_array meas_result_list_rssi_scg_r13_l; // MeasResultServCellSCG-r12 ::= SEQUENCE struct meas_result_serv_cell_scg_r12_s { struct meas_result_scell_r12_s_ { // member variables uint8_t rsrp_result_scell_r12; uint8_t rsrq_result_scell_r12; }; struct meas_result_scell_v1310_s_ { // member variables uint8_t rs_sinr_result_scell_r13; }; // member variables bool ext; uint8_t serv_cell_id_r12; meas_result_scell_r12_s_ meas_result_scell_r12; // ... // group 0 bool serv_cell_id_r13_present; bool meas_result_scell_v1310_present; uint8_t serv_cell_id_r13; copy_ptr meas_result_scell_v1310; // sequence methods meas_result_serv_cell_scg_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // MeasResultServCellListSCG-Ext-r13 ::= SEQUENCE (SIZE (1..maxServCell-r13)) OF MeasResultServCellSCG-r12 typedef dyn_array meas_result_serv_cell_list_scg_ext_r13_l; // MeasResultServCellListSCG-r12 ::= SEQUENCE (SIZE (1..maxServCell-r10)) OF MeasResultServCellSCG-r12 typedef dyn_array meas_result_serv_cell_list_scg_r12_l; // SBCCH-SL-BCH-MessageType ::= MasterInformationBlock-SL typedef mib_sl_s sbcch_sl_bch_msg_type_s; // SBCCH-SL-BCH-Message ::= SEQUENCE struct sbcch_sl_bch_msg_s { // member variables sbcch_sl_bch_msg_type_s msg; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SBCCH-SL-BCH-MessageType-V2X-r14 ::= MasterInformationBlock-SL-V2X-r14 typedef mib_sl_v2x_r14_s sbcch_sl_bch_msg_type_v2x_r14_s; // SBCCH-SL-BCH-Message-V2X-r14 ::= SEQUENCE struct sbcch_sl_bch_msg_v2x_r14_s { // member variables sbcch_sl_bch_msg_type_v2x_r14_s msg; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCG-ConfigInfo-v1530-IEs ::= SEQUENCE struct scg_cfg_info_v1530_ies_s { // member variables bool drb_to_add_mod_list_scg_r15_present; bool drb_to_release_list_scg_r15_present; bool non_crit_ext_present; drb_info_list_scg_r15_l drb_to_add_mod_list_scg_r15; drb_to_release_list_r15_l drb_to_release_list_scg_r15; // sequence methods scg_cfg_info_v1530_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCG-ConfigInfo-v1430-IEs ::= SEQUENCE struct scg_cfg_info_v1430_ies_s { // member variables bool make_before_break_scg_req_r14_present; bool meas_gap_cfg_per_cc_list_present; bool non_crit_ext_present; meas_gap_cfg_per_cc_list_r14_c meas_gap_cfg_per_cc_list; scg_cfg_info_v1530_ies_s non_crit_ext; // sequence methods scg_cfg_info_v1430_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCG-ConfigInfo-v1330-IEs ::= SEQUENCE struct scg_cfg_info_v1330_ies_s { // member variables bool meas_result_list_rssi_scg_r13_present; bool non_crit_ext_present; meas_result_list_rssi_scg_r13_l meas_result_list_rssi_scg_r13; scg_cfg_info_v1430_ies_s non_crit_ext; // sequence methods scg_cfg_info_v1330_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCellToAddModListSCG-Ext-r13 ::= SEQUENCE (SIZE (1..maxSCell-r13)) OF Cell-ToAddMod-r12 typedef dyn_array scell_to_add_mod_list_scg_ext_r13_l; // SCG-ConfigInfo-v1310-IEs ::= SEQUENCE struct scg_cfg_info_v1310_ies_s { // member variables bool meas_result_sstd_r13_present; bool s_cell_to_add_mod_list_mcg_ext_r13_present; bool meas_result_serv_cell_list_scg_ext_r13_present; bool s_cell_to_add_mod_list_scg_ext_r13_present; bool s_cell_to_release_list_scg_ext_r13_present; bool non_crit_ext_present; meas_result_sstd_r13_s meas_result_sstd_r13; scell_to_add_mod_list_ext_r13_l s_cell_to_add_mod_list_mcg_ext_r13; meas_result_serv_cell_list_scg_ext_r13_l meas_result_serv_cell_list_scg_ext_r13; scell_to_add_mod_list_scg_ext_r13_l s_cell_to_add_mod_list_scg_ext_r13; scell_to_release_list_ext_r13_l s_cell_to_release_list_scg_ext_r13; scg_cfg_info_v1330_ies_s non_crit_ext; // sequence methods scg_cfg_info_v1310_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCG-ConfigRestrictInfo-r12 ::= SEQUENCE struct scg_cfg_restrict_info_r12_s { // member variables uint8_t max_sch_tb_bits_dl_r12; uint8_t max_sch_tb_bits_ul_r12; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCellToAddModListSCG-r12 ::= SEQUENCE (SIZE (1..maxSCell-r10)) OF Cell-ToAddMod-r12 typedef dyn_array scell_to_add_mod_list_scg_r12_l; // SCG-ConfigInfo-r12-IEs ::= SEQUENCE struct scg_cfg_info_r12_ies_s { // member variables bool rr_cfg_ded_mcg_r12_present; bool s_cell_to_add_mod_list_mcg_r12_present; bool meas_gap_cfg_r12_present; bool pwr_coordination_info_r12_present; bool scg_radio_cfg_r12_present; bool eutra_cap_info_r12_present; bool scg_cfg_restrict_info_r12_present; bool mbms_interest_ind_r12_present; bool meas_result_serv_cell_list_scg_r12_present; bool drb_to_add_mod_list_scg_r12_present; bool drb_to_release_list_scg_r12_present; bool s_cell_to_add_mod_list_scg_r12_present; bool s_cell_to_release_list_scg_r12_present; bool p_max_r12_present; bool non_crit_ext_present; rr_cfg_ded_s rr_cfg_ded_mcg_r12; scell_to_add_mod_list_r10_l s_cell_to_add_mod_list_mcg_r12; meas_gap_cfg_c meas_gap_cfg_r12; pwr_coordination_info_r12_s pwr_coordination_info_r12; scg_cfg_part_scg_r12_s scg_radio_cfg_r12; dyn_octstring eutra_cap_info_r12; scg_cfg_restrict_info_r12_s scg_cfg_restrict_info_r12; dyn_octstring mbms_interest_ind_r12; meas_result_serv_cell_list_scg_r12_l meas_result_serv_cell_list_scg_r12; drb_info_list_scg_r12_l drb_to_add_mod_list_scg_r12; drb_to_release_list_l drb_to_release_list_scg_r12; scell_to_add_mod_list_scg_r12_l s_cell_to_add_mod_list_scg_r12; scell_to_release_list_r10_l s_cell_to_release_list_scg_r12; int8_t p_max_r12; scg_cfg_info_v1310_ies_s non_crit_ext; // sequence methods scg_cfg_info_r12_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SCG-ConfigInfo-r12 ::= SEQUENCE struct scg_cfg_info_r12_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { scg_cfg_info_r12, spare7, spare6, spare5, spare4, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters scg_cfg_info_r12_ies_s& scg_cfg_info_r12() { assert_choice_type("scg-ConfigInfo-r12", type_.to_string(), "c1"); return c; } const scg_cfg_info_r12_ies_s& scg_cfg_info_r12() const { assert_choice_type("scg-ConfigInfo-r12", type_.to_string(), "c1"); return c; } private: types type_; scg_cfg_info_r12_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); 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(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-PPPP-TxPreconfigIndex-r14 ::= SEQUENCE struct sl_pppp_tx_precfg_idx_r14_s { typedef bounded_array tx_cfg_idx_list_r14_l_; // member variables uint8_t prio_thres_r14; uint8_t default_tx_cfg_idx_r14; uint8_t cbr_cfg_idx_r14; tx_cfg_idx_list_r14_l_ tx_cfg_idx_list_r14; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-CBR-PPPP-TxPreconfigList-r14 ::= SEQUENCE (SIZE (1..8)) OF SL-PPPP-TxPreconfigIndex-r14 typedef dyn_array sl_cbr_pppp_tx_precfg_list_r14_l; // SL-PPPP-TxPreconfigIndex-v1530 ::= SEQUENCE struct sl_pppp_tx_precfg_idx_v1530_s { typedef dyn_array mcs_pssch_range_r15_l_; // member variables bool mcs_pssch_range_r15_present; mcs_pssch_range_r15_l_ mcs_pssch_range_r15; // sequence methods sl_pppp_tx_precfg_idx_v1530_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-CBR-PPPP-TxPreconfigList-v1530 ::= SEQUENCE (SIZE (1..8)) OF SL-PPPP-TxPreconfigIndex-v1530 typedef dyn_array sl_cbr_pppp_tx_precfg_list_v1530_l; // SL-CBR-PreconfigTxConfigList-r14 ::= SEQUENCE struct sl_cbr_precfg_tx_cfg_list_r14_s { typedef dyn_array cbr_range_common_cfg_list_r14_l_; typedef dyn_array sl_cbr_pssch_tx_cfg_list_r14_l_; // member variables cbr_range_common_cfg_list_r14_l_ cbr_range_common_cfg_list_r14; sl_cbr_pssch_tx_cfg_list_r14_l_ sl_cbr_pssch_tx_cfg_list_r14; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-PreconfigCommPool-r12 ::= SEQUENCE struct sl_precfg_comm_pool_r12_s { // member variables bool ext; sl_cp_len_r12_e sc_cp_len_r12; sl_period_comm_r12_e sc_period_r12; sl_tf_res_cfg_r12_s sc_tf_res_cfg_r12; int8_t sc_tx_params_r12; sl_cp_len_r12_e data_cp_len_r12; sl_tf_res_cfg_r12_s data_tf_res_cfg_r12; sl_hop_cfg_comm_r12_s data_hop_cfg_r12; int8_t data_tx_params_r12; dyn_bitstring trpt_subset_r12; // ... // group 0 bool prio_list_r13_present; copy_ptr prio_list_r13; // sequence methods sl_precfg_comm_pool_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-PreconfigCommPoolList4-r12 ::= SEQUENCE (SIZE (1..maxSL-TxPool-r12)) OF SL-PreconfigCommPool-r12 typedef dyn_array sl_precfg_comm_pool_list4_r12_l; // SL-PreconfigCommRxPoolList-r13 ::= SEQUENCE (SIZE (1..maxSL-CommRxPoolPreconf-v1310)) OF SL-PreconfigCommPool-r12 typedef dyn_array sl_precfg_comm_rx_pool_list_r13_l; // SL-PreconfigCommTxPoolList-r13 ::= SEQUENCE (SIZE (1..maxSL-CommTxPoolPreconf-v1310)) OF SL-PreconfigCommPool-r12 typedef dyn_array sl_precfg_comm_tx_pool_list_r13_l; // SL-PreconfigDiscPool-r13 ::= SEQUENCE struct sl_precfg_disc_pool_r13_s { struct disc_period_r13_e_ { enum options { rf4, rf6, rf7, rf8, rf12, rf14, rf16, rf24, rf28, rf32, rf64, rf128, rf256, rf512, rf1024, spare }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 16, nof_exts = 0; static const bool has_ext = false; // enumerated methods disc_period_r13_e_() {} disc_period_r13_e_(options v) : value(v) {} disc_period_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; struct tx_params_r13_s_ { struct tx_probability_r13_e_ { enum options { p25, p50, p75, p100 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 4, nof_exts = 0; static const bool has_ext = false; // enumerated methods tx_probability_r13_e_() {} tx_probability_r13_e_(options v) : value(v) {} tx_probability_r13_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables int8_t tx_params_general_r13; tx_probability_r13_e_ tx_probability_r13; }; // member variables bool ext; bool tx_params_r13_present; sl_cp_len_r12_e cp_len_r13; disc_period_r13_e_ disc_period_r13; uint8_t num_retx_r13; uint8_t num_repeat_r13; sl_tf_res_cfg_r12_s tf_res_cfg_r13; tx_params_r13_s_ tx_params_r13; // ... // sequence methods sl_precfg_disc_pool_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-PreconfigDiscRxPoolList-r13 ::= SEQUENCE (SIZE (1..maxSL-DiscRxPoolPreconf-r13)) OF SL-PreconfigDiscPool-r13 typedef dyn_array sl_precfg_disc_rx_pool_list_r13_l; // SL-PreconfigDiscTxPoolList-r13 ::= SEQUENCE (SIZE (1..maxSL-DiscTxPoolPreconf-r13)) OF SL-PreconfigDiscPool-r13 typedef dyn_array sl_precfg_disc_tx_pool_list_r13_l; // SL-PreconfigGeneral-r12 ::= SEQUENCE struct sl_precfg_general_r12_s { struct rohc_profiles_r12_s_ { // member variables bool profile0x0001_r12; bool profile0x0002_r12; bool profile0x0004_r12; bool profile0x0006_r12; bool profile0x0101_r12; bool profile0x0102_r12; bool profile0x0104_r12; }; struct sl_bw_r12_e_ { enum options { n6, n15, n25, n50, n75, n100 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods sl_bw_r12_e_() {} sl_bw_r12_e_(options v) : value(v) {} sl_bw_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ext; rohc_profiles_r12_s_ rohc_profiles_r12; uint32_t carrier_freq_r12; int8_t max_tx_pwr_r12; uint8_t add_spec_emission_r12; sl_bw_r12_e_ sl_bw_r12; tdd_cfg_sl_r12_s tdd_cfg_sl_r12; fixed_bitstring<19> reserved_r12; // ... // group 0 bool add_spec_emission_v1440_present; uint16_t add_spec_emission_v1440; // sequence methods sl_precfg_general_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-PreconfigRelay-r13 ::= SEQUENCE struct sl_precfg_relay_r13_s { // member variables resel_info_relay_r13_s resel_info_oo_c_r13; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-PreconfigSync-r12 ::= SEQUENCE struct sl_precfg_sync_r12_s { struct sync_ref_min_hyst_r12_e_ { enum options { db0, db3, db6, db9, db12 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 5, nof_exts = 0; static const bool has_ext = false; // enumerated methods sync_ref_min_hyst_r12_e_() {} sync_ref_min_hyst_r12_e_(options v) : value(v) {} sync_ref_min_hyst_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct sync_ref_diff_hyst_r12_e_ { enum options { db0, db3, db6, db9, db12, dbinf }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods sync_ref_diff_hyst_r12_e_() {} sync_ref_diff_hyst_r12_e_(options v) : value(v) {} sync_ref_diff_hyst_r12_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ext; sl_cp_len_r12_e sync_cp_len_r12; uint8_t sync_offset_ind1_r12; uint8_t sync_offset_ind2_r12; int8_t sync_tx_params_r12; uint8_t sync_tx_thresh_oo_c_r12; filt_coef_e filt_coef_r12; sync_ref_min_hyst_r12_e_ sync_ref_min_hyst_r12; sync_ref_diff_hyst_r12_e_ sync_ref_diff_hyst_r12; // ... // group 0 bool sync_tx_periodic_r13_present; // sequence methods sl_precfg_sync_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-V2X-PreconfigCommPool-r14 ::= SEQUENCE struct sl_v2x_precfg_comm_pool_r14_s { struct size_subch_r14_e_ { enum options { n4, n5, n6, n8, n9, n10, n12, n15, n16, n18, n20, n25, n30, n48, n50, n72, n75, n96, n100, spare13, spare12, spare11, spare10, spare9, spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 32, nof_exts = 0; static const bool has_ext = false; // enumerated methods size_subch_r14_e_() {} size_subch_r14_e_(options v) : value(v) {} size_subch_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct num_subch_r14_e_ { enum options { n1, n3, n5, n8, n10, n15, n20, spare1 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods num_subch_r14_e_() {} num_subch_r14_e_(options v) : value(v) {} num_subch_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ext; bool sl_offset_ind_r14_present; bool start_rb_pscch_pool_r14_present; bool zone_id_r14_present; bool thresh_s_rssi_cbr_r14_present; bool cbr_pssch_tx_cfg_list_r14_present; bool res_sel_cfg_p2_x_r14_present; bool sync_allowed_r14_present; bool restrict_res_reserv_period_r14_present; sl_offset_ind_r12_c sl_offset_ind_r14; sf_bitmap_sl_r14_c sl_sf_r14; bool adjacency_pscch_pssch_r14; size_subch_r14_e_ size_subch_r14; num_subch_r14_e_ num_subch_r14; uint8_t start_rb_subch_r14; uint8_t start_rb_pscch_pool_r14; int8_t data_tx_params_r14; uint8_t zone_id_r14; uint8_t thresh_s_rssi_cbr_r14; sl_cbr_pppp_tx_precfg_list_r14_l cbr_pssch_tx_cfg_list_r14; sl_p2_x_res_sel_cfg_r14_s res_sel_cfg_p2_x_r14; sl_sync_allowed_r14_s sync_allowed_r14; sl_restrict_res_reserv_period_list_r14_l restrict_res_reserv_period_r14; // ... // group 0 bool sl_min_t2_value_list_r15_present; bool cbr_pssch_tx_cfg_list_v1530_present; copy_ptr sl_min_t2_value_list_r15; copy_ptr cbr_pssch_tx_cfg_list_v1530; // sequence methods sl_v2x_precfg_comm_pool_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-PreconfigV2X-RxPoolList-r14 ::= SEQUENCE (SIZE (1..maxSL-V2X-RxPoolPreconf-r14)) OF SL-V2X-PreconfigCommPool-r14 typedef dyn_array sl_precfg_v2x_rx_pool_list_r14_l; // SL-V2X-SyncOffsetIndicators-r14 ::= SEQUENCE struct sl_v2x_sync_offset_inds_r14_s { // member variables bool sync_offset_ind3_r14_present; uint8_t sync_offset_ind1_r14; uint8_t sync_offset_ind2_r14; uint8_t sync_offset_ind3_r14; // sequence methods sl_v2x_sync_offset_inds_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-PreconfigV2X-Sync-r14 ::= SEQUENCE struct sl_precfg_v2x_sync_r14_s { struct sync_ref_min_hyst_r14_e_ { enum options { db0, db3, db6, db9, db12 }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 5, nof_exts = 0; static const bool has_ext = false; // enumerated methods sync_ref_min_hyst_r14_e_() {} sync_ref_min_hyst_r14_e_(options v) : value(v) {} sync_ref_min_hyst_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; struct sync_ref_diff_hyst_r14_e_ { enum options { db0, db3, db6, db9, db12, dbinf }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 6, nof_exts = 0; static const bool has_ext = false; // enumerated methods sync_ref_diff_hyst_r14_e_() {} sync_ref_diff_hyst_r14_e_(options v) : value(v) {} sync_ref_diff_hyst_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // member variables bool ext; sl_v2x_sync_offset_inds_r14_s sync_offset_inds_r14; int8_t sync_tx_params_r14; uint8_t sync_tx_thresh_oo_c_r14; filt_coef_e filt_coef_r14; sync_ref_min_hyst_r14_e_ sync_ref_min_hyst_r14; sync_ref_diff_hyst_r14_e_ sync_ref_diff_hyst_r14; // ... // group 0 bool slss_tx_disabled_r15_present; // sequence methods sl_precfg_v2x_sync_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-PreconfigV2X-TxPoolList-r14 ::= SEQUENCE (SIZE (1..maxSL-V2X-TxPoolPreconf-r14)) OF SL-V2X-PreconfigCommPool-r14 typedef dyn_array sl_precfg_v2x_tx_pool_list_r14_l; // SL-Preconfiguration-r12 ::= SEQUENCE struct sl_precfg_r12_s { struct precfg_comm_v1310_s_ { // member variables bool comm_tx_pool_list_r13_present; sl_precfg_comm_rx_pool_list_r13_l comm_rx_pool_list_r13; sl_precfg_comm_tx_pool_list_r13_l comm_tx_pool_list_r13; // sequence methods precfg_comm_v1310_s_(); }; struct precfg_disc_r13_s_ { // member variables bool disc_tx_pool_list_r13_present; sl_precfg_disc_rx_pool_list_r13_l disc_rx_pool_list_r13; sl_precfg_disc_tx_pool_list_r13_l disc_tx_pool_list_r13; // sequence methods precfg_disc_r13_s_(); }; // member variables bool ext; sl_precfg_general_r12_s precfg_general_r12; sl_precfg_sync_r12_s precfg_sync_r12; sl_precfg_comm_pool_list4_r12_l precfg_comm_r12; // ... // group 0 bool precfg_comm_v1310_present; bool precfg_disc_r13_present; bool precfg_relay_r13_present; copy_ptr precfg_comm_v1310; copy_ptr precfg_disc_r13; copy_ptr precfg_relay_r13; // sequence methods sl_precfg_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-V2X-PreconfigFreqInfo-r14 ::= SEQUENCE struct sl_v2x_precfg_freq_info_r14_s { struct sync_prio_r14_e_ { enum options { gnss, enb }; options value; static const uint32_t nof_types = 2, nof_exts = 0; static const bool has_ext = false; // enumerated methods sync_prio_r14_e_() {} sync_prio_r14_e_(options v) : value(v) {} sync_prio_r14_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // member variables bool ext; bool v2x_comm_precfg_sync_r14_present; bool v2x_res_sel_cfg_r14_present; bool zone_cfg_r14_present; bool thres_sl_tx_prioritization_r14_present; bool offset_dfn_r14_present; sl_precfg_general_r12_s v2x_comm_precfg_general_r14; sl_precfg_v2x_sync_r14_s v2x_comm_precfg_sync_r14; sl_precfg_v2x_rx_pool_list_r14_l v2x_comm_rx_pool_list_r14; sl_precfg_v2x_tx_pool_list_r14_l v2x_comm_tx_pool_list_r14; sl_precfg_v2x_tx_pool_list_r14_l p2x_comm_tx_pool_list_r14; sl_comm_tx_pool_sensing_cfg_r14_s v2x_res_sel_cfg_r14; sl_zone_cfg_r14_s zone_cfg_r14; sync_prio_r14_e_ sync_prio_r14; uint8_t thres_sl_tx_prioritization_r14; uint16_t offset_dfn_r14; // ... // group 0 bool v2x_freq_sel_cfg_list_r15_present; copy_ptr v2x_freq_sel_cfg_list_r15; // sequence methods sl_v2x_precfg_freq_info_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // SL-V2X-PreconfigFreqList-r14 ::= SEQUENCE (SIZE (1..maxFreqV2X-r14)) OF SL-V2X-PreconfigFreqInfo-r14 typedef dyn_array sl_v2x_precfg_freq_list_r14_l; // SL-V2X-TxProfile-r15 ::= ENUMERATED struct sl_v2x_tx_profile_r15_e { enum options { rel14, rel15, spare6, spare5, spare4, spare3, spare2, spare1, /*...*/ }; typedef uint8_t number_type; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = true; // enumerated methods sl_v2x_tx_profile_r15_e() {} sl_v2x_tx_profile_r15_e(options v) : value(v) {} sl_v2x_tx_profile_r15_e& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint8_t to_number() const; }; // SL-V2X-TxProfileList-r15 ::= SEQUENCE (SIZE (1..256)) OF SL-V2X-TxProfile-r15 typedef dyn_array sl_v2x_tx_profile_list_r15_l; // SL-V2X-Preconfiguration-r14 ::= SEQUENCE struct sl_v2x_precfg_r14_s { // member variables bool ext; bool anchor_carrier_freq_list_r14_present; bool cbr_precfg_list_r14_present; sl_v2x_precfg_freq_list_r14_l v2x_precfg_freq_list_r14; sl_anchor_carrier_freq_list_v2x_r14_l anchor_carrier_freq_list_r14; sl_cbr_precfg_tx_cfg_list_r14_s cbr_precfg_list_r14; // ... // group 0 bool v2x_packet_dupl_cfg_r15_present; bool sync_freq_list_r15_present; bool slss_tx_multi_freq_r15_present; bool v2x_tx_profile_list_r15_present; copy_ptr v2x_packet_dupl_cfg_r15; copy_ptr sync_freq_list_r15; copy_ptr v2x_tx_profile_list_r15; // sequence methods sl_v2x_precfg_r14_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UEPagingCoverageInformation-r13-IEs ::= SEQUENCE struct ue_paging_coverage_info_r13_ies_s { // member variables bool mpdcch_num_repeat_r13_present; bool non_crit_ext_present; uint16_t mpdcch_num_repeat_r13; // sequence methods ue_paging_coverage_info_r13_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UEPagingCoverageInformation ::= SEQUENCE struct ue_paging_coverage_info_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { ue_paging_coverage_info_r13, spare7, spare6, spare5, spare4, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters ue_paging_coverage_info_r13_ies_s& ue_paging_coverage_info_r13() { assert_choice_type("uePagingCoverageInformation-r13", type_.to_string(), "c1"); return c; } const ue_paging_coverage_info_r13_ies_s& ue_paging_coverage_info_r13() const { assert_choice_type("uePagingCoverageInformation-r13", type_.to_string(), "c1"); return c; } private: types type_; ue_paging_coverage_info_r13_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); 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(bit_ref& bref); void to_json(json_writer& j) const; }; // UERadioAccessCapabilityInformation-r8-IEs ::= SEQUENCE struct ue_radio_access_cap_info_r8_ies_s { // member variables bool non_crit_ext_present; dyn_octstring ue_radio_access_cap_info; // sequence methods ue_radio_access_cap_info_r8_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UERadioAccessCapabilityInformation ::= SEQUENCE struct ue_radio_access_cap_info_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { ue_radio_access_cap_info_r8, spare7, spare6, spare5, spare4, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters ue_radio_access_cap_info_r8_ies_s& ue_radio_access_cap_info_r8() { assert_choice_type("ueRadioAccessCapabilityInformation-r8", type_.to_string(), "c1"); return c; } const ue_radio_access_cap_info_r8_ies_s& ue_radio_access_cap_info_r8() const { assert_choice_type("ueRadioAccessCapabilityInformation-r8", type_.to_string(), "c1"); return c; } private: types type_; ue_radio_access_cap_info_r8_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); 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(bit_ref& bref); void to_json(json_writer& j) const; }; // UERadioPagingInformation-v1310-IEs ::= SEQUENCE struct ue_radio_paging_info_v1310_ies_s { typedef dyn_array supported_band_list_eutra_for_paging_r13_l_; // member variables bool supported_band_list_eutra_for_paging_r13_present; bool non_crit_ext_present; supported_band_list_eutra_for_paging_r13_l_ supported_band_list_eutra_for_paging_r13; // sequence methods ue_radio_paging_info_v1310_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UERadioPagingInformation-r12-IEs ::= SEQUENCE struct ue_radio_paging_info_r12_ies_s { // member variables bool non_crit_ext_present; dyn_octstring ue_radio_paging_info_r12; ue_radio_paging_info_v1310_ies_s non_crit_ext; // sequence methods ue_radio_paging_info_r12_ies_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // UERadioPagingInformation ::= SEQUENCE struct ue_radio_paging_info_s { struct crit_exts_c_ { struct c1_c_ { struct types { enum options { ue_radio_paging_info_r12, spare7, spare6, spare5, spare4, spare3, spare2, spare1, nulltype }; options value; static const uint32_t nof_types = 8, nof_exts = 0; static const bool has_ext = false; // enumerated methods types() {} types(options v) : value(v) {} types& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; }; // choice methods c1_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters ue_radio_paging_info_r12_ies_s& ue_radio_paging_info_r12() { assert_choice_type("ueRadioPagingInformation-r12", type_.to_string(), "c1"); return c; } const ue_radio_paging_info_r12_ies_s& ue_radio_paging_info_r12() const { assert_choice_type("ueRadioPagingInformation-r12", type_.to_string(), "c1"); return c; } private: types type_; ue_radio_paging_info_r12_ies_s c; }; typedef c1_or_crit_ext_e types; // choice methods crit_exts_c_() : type_(types::nulltype) {} 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(bit_ref& bref); void to_json(json_writer& j) const; // getters c1_c_& c1() { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); return c.get(); } const c1_c_& c1() const { assert_choice_type("c1", type_.to_string(), "criticalExtensions"); 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(bit_ref& bref); void to_json(json_writer& j) const; }; // VarConnEstFailReport-r11 ::= SEQUENCE struct var_conn_est_fail_report_r11_s { // member variables conn_est_fail_report_r11_s conn_est_fail_report_r11; plmn_id_s plmn_id_r11; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // VarLogMeasConfig-r10 ::= SEQUENCE struct var_log_meas_cfg_r10_s { // member variables bool area_cfg_r10_present; area_cfg_r10_c area_cfg_r10; logging_dur_r10_e logging_dur_r10; logging_interv_r10_e logging_interv_r10; // sequence methods var_log_meas_cfg_r10_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // VarLogMeasConfig-r11 ::= SEQUENCE struct var_log_meas_cfg_r11_s { // member variables bool area_cfg_r10_present; bool area_cfg_v1130_present; area_cfg_r10_c area_cfg_r10; area_cfg_v1130_s area_cfg_v1130; logging_dur_r10_e logging_dur_r10; logging_interv_r10_e logging_interv_r10; // sequence methods var_log_meas_cfg_r11_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // VarLogMeasConfig-r12 ::= SEQUENCE struct var_log_meas_cfg_r12_s { // member variables bool area_cfg_r10_present; bool area_cfg_v1130_present; bool target_mbsfn_area_list_r12_present; area_cfg_r10_c area_cfg_r10; area_cfg_v1130_s area_cfg_v1130; logging_dur_r10_e logging_dur_r10; logging_interv_r10_e logging_interv_r10; target_mbsfn_area_list_r12_l target_mbsfn_area_list_r12; // sequence methods var_log_meas_cfg_r12_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // VarLogMeasConfig-r15 ::= SEQUENCE struct var_log_meas_cfg_r15_s { // member variables bool area_cfg_r10_present; bool area_cfg_v1130_present; bool target_mbsfn_area_list_r12_present; bool bt_name_list_r15_present; bool wlan_name_list_r15_present; area_cfg_r10_c area_cfg_r10; area_cfg_v1130_s area_cfg_v1130; logging_dur_r10_e logging_dur_r10; logging_interv_r10_e logging_interv_r10; target_mbsfn_area_list_r12_l target_mbsfn_area_list_r12; bt_name_list_r15_l bt_name_list_r15; wlan_name_list_r15_l wlan_name_list_r15; // sequence methods var_log_meas_cfg_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // VarLogMeasReport-r10 ::= SEQUENCE struct var_log_meas_report_r10_s { // member variables trace_ref_r10_s trace_ref_r10; fixed_octstring<2> trace_recording_session_ref_r10; fixed_octstring<1> tce_id_r10; plmn_id_s plmn_id_r10; fixed_bitstring<48> absolute_time_info_r10; log_meas_info_list2_r10_l log_meas_info_list_r10; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // VarLogMeasReport-r11 ::= SEQUENCE struct var_log_meas_report_r11_s { // member variables trace_ref_r10_s trace_ref_r10; fixed_octstring<2> trace_recording_session_ref_r10; fixed_octstring<1> tce_id_r10; plmn_id_list3_r11_l plmn_id_list_r11; fixed_bitstring<48> absolute_time_info_r10; log_meas_info_list2_r10_l log_meas_info_list_r10; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // VarMeasConfig ::= SEQUENCE struct var_meas_cfg_s { struct speed_state_pars_c_ { struct setup_s_ { // member variables mob_state_params_s mob_state_params; speed_state_scale_factors_s time_to_trigger_sf; }; typedef setup_e types; // choice methods speed_state_pars_c_() : type_(types::nulltype) {} void set(types::options e = types::nulltype); types type() const { return type_; } SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; // getters setup_s_& setup() { assert_choice_type("setup", type_.to_string(), "speedStatePars"); return c; } const setup_s_& setup() const { assert_choice_type("setup", type_.to_string(), "speedStatePars"); return c; } private: types type_; setup_s_ c; }; // member variables bool meas_id_list_present; bool meas_id_list_ext_r12_present; bool meas_id_list_v1310_present; bool meas_id_list_ext_v1310_present; bool meas_obj_list_present; bool meas_obj_list_ext_r13_present; bool meas_obj_list_v9i0_present; bool report_cfg_list_present; bool quant_cfg_present; bool meas_scale_factor_r12_present; bool s_measure_present; bool speed_state_pars_present; bool allow_interruptions_r11_present; meas_id_to_add_mod_list_l meas_id_list; meas_id_to_add_mod_list_ext_r12_l meas_id_list_ext_r12; meas_id_to_add_mod_list_v1310_l meas_id_list_v1310; meas_id_to_add_mod_list_ext_v1310_l meas_id_list_ext_v1310; meas_obj_to_add_mod_list_l meas_obj_list; meas_obj_to_add_mod_list_ext_r13_l meas_obj_list_ext_r13; meas_obj_to_add_mod_list_v9e0_l meas_obj_list_v9i0; report_cfg_to_add_mod_list_l report_cfg_list; quant_cfg_s quant_cfg; meas_scale_factor_r12_e meas_scale_factor_r12; int16_t s_measure; speed_state_pars_c_ speed_state_pars; bool allow_interruptions_r11; // sequence methods var_meas_cfg_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // VarMeasIdleConfig-r15 ::= SEQUENCE struct var_meas_idle_cfg_r15_s { struct meas_idle_dur_r15_e_ { enum options { sec10, sec30, sec60, sec120, sec180, sec240, sec300 }; typedef uint16_t number_type; options value; static const uint32_t nof_types = 7, nof_exts = 0; static const bool has_ext = false; // enumerated methods meas_idle_dur_r15_e_() {} meas_idle_dur_r15_e_(options v) : value(v) {} meas_idle_dur_r15_e_& operator=(options v) { value = v; return *this; } operator options() const { return value; } std::string to_string() const; uint16_t to_number() const; }; // member variables bool meas_idle_carrier_list_eutra_r15_present; eutra_carrier_list_r15_l meas_idle_carrier_list_eutra_r15; meas_idle_dur_r15_e_ meas_idle_dur_r15; // sequence methods var_meas_idle_cfg_r15_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // VarMeasIdleReport-r15 ::= SEQUENCE struct var_meas_idle_report_r15_s { // member variables meas_result_list_idle_r15_l meas_report_idle_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // VarMeasReport ::= SEQUENCE struct var_meas_report_s { // member variables bool meas_id_v1250_present; bool cells_triggered_list_present; bool csi_rs_triggered_list_r12_present; bool pools_triggered_list_r14_present; uint8_t meas_id; uint8_t meas_id_v1250; cells_triggered_list_l cells_triggered_list; csi_rs_triggered_list_r12_l csi_rs_triggered_list_r12; tx_res_pool_meas_list_r14_l pools_triggered_list_r14; int64_t nof_reports_sent; // sequence methods var_meas_report_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // VarMeasReportList ::= SEQUENCE (SIZE (1..maxMeasId)) OF VarMeasReport typedef dyn_array var_meas_report_list_l; // VarMeasReportList-r12 ::= SEQUENCE (SIZE (1..maxMeasId-r12)) OF VarMeasReport typedef dyn_array var_meas_report_list_r12_l; // VarMobilityHistoryReport-r12 ::= VisitedCellInfoList-r12 typedef visited_cell_info_list_r12_l var_mob_history_report_r12_l; // VarRLF-Report-r10 ::= SEQUENCE struct var_rlf_report_r10_s { // member variables rlf_report_r9_s rlf_report_r10; plmn_id_s plmn_id_r10; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // VarRLF-Report-r11 ::= SEQUENCE struct var_rlf_report_r11_s { // member variables rlf_report_r9_s rlf_report_r10; plmn_id_list3_r11_l plmn_id_list_r11; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // VarShortINACTIVE-MAC-Input-r15 ::= SEQUENCE struct var_short_inactive_mac_input_r15_s { // member variables fixed_bitstring<28> cell_id_r15; uint16_t pci_r15; fixed_bitstring<16> c_rnti_r15; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // VarShortMAC-Input ::= SEQUENCE struct var_short_mac_input_s { // member variables fixed_bitstring<28> cell_id; uint16_t pci; fixed_bitstring<16> c_rnti; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // VarShortMAC-Input-NB-r13 ::= VarShortMAC-Input typedef var_short_mac_input_s var_short_mac_input_nb_r13_s; // VarShortResumeMAC-Input-r13 ::= SEQUENCE struct var_short_resume_mac_input_r13_s { // member variables fixed_bitstring<28> cell_id_r13; uint16_t pci_r13; fixed_bitstring<16> c_rnti_r13; fixed_bitstring<1> resume_discriminator_r13; // sequence methods SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // VarShortResumeMAC-Input-NB-r13 ::= VarShortResumeMAC-Input-r13 typedef var_short_resume_mac_input_r13_s var_short_resume_mac_input_nb_r13_s; // VarWLAN-MobilityConfig ::= SEQUENCE struct var_wlan_mob_cfg_s { // member variables bool wlan_mob_set_r13_present; bool success_report_requested_present; bool wlan_suspend_cfg_r14_present; wlan_id_list_r13_l wlan_mob_set_r13; wlan_suspend_cfg_r14_s wlan_suspend_cfg_r14; // sequence methods var_wlan_mob_cfg_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; // VarWLAN-Status-r13 ::= SEQUENCE struct var_wlan_status_r13_s { // member variables bool status_r14_present; wlan_status_r13_e status_r13; wlan_status_v1430_e status_r14; // sequence methods var_wlan_status_r13_s(); SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE unpack(bit_ref& bref); void to_json(json_writer& j) const; }; } // namespace rrc } // namespace asn1 #endif // SRSASN1_RRC_H