You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1342 lines
46 KiB
C

/**
* Copyright 2013-2022 Software Radio Systems Limited
*
* This file is part of srsRAN.
*
* srsRAN is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* srsRAN is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* A copy of the GNU Affero General Public License can be found in
* the LICENSE file in the top-level directory of this distribution
* and at http://www.gnu.org/licenses/.
*
*/
/*******************************************************************************
*
* 3GPP TS ASN1 RRC v15.11.0 (2020-09)
*
******************************************************************************/
#ifndef SRSASN1_RRC_SI_H
#define SRSASN1_RRC_SI_H
#include "rr_common.h"
namespace asn1 {
namespace rrc {
/*******************************************************************************
* Struct Definitions
******************************************************************************/
// MasterInformationBlock ::= SEQUENCE
struct mib_s {
struct dl_bw_opts {
enum options { n6, n15, n25, n50, n75, n100, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<dl_bw_opts> dl_bw_e_;
// 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 = 0;
bool sys_info_unchanged_br_r15 = false;
fixed_bitstring<4> spare;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// GNSS-ID-r15 ::= SEQUENCE
struct gnss_id_r15_s {
struct gnss_id_r15_opts {
enum options { gps, sbas, qzss, galileo, glonass, bds, /*...*/ nulltype } value;
const char* to_string() const;
};
typedef enumerated<gnss_id_r15_opts, true> gnss_id_r15_e_;
// member variables
bool ext = false;
gnss_id_r15_e_ gnss_id_r15;
// ...
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// SBAS-ID-r15 ::= SEQUENCE
struct sbas_id_r15_s {
struct sbas_id_r15_opts {
enum options { waas, egnos, msas, gagan, /*...*/ nulltype } value;
const char* to_string() const;
};
typedef enumerated<sbas_id_r15_opts, true> sbas_id_r15_e_;
// member variables
bool ext = false;
sbas_id_r15_e_ sbas_id_r15;
// ...
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// PosSIB-Type-r15 ::= SEQUENCE
struct pos_sib_type_r15_s {
struct pos_sib_type_r15_opts {
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,
// ...
nulltype
} value;
const char* to_string() const;
};
typedef enumerated<pos_sib_type_r15_opts, true> pos_sib_type_r15_e_;
// member variables
bool ext = false;
bool encrypted_r15_present = false;
bool gnss_id_r15_present = false;
bool sbas_id_r15_present = false;
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
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// PosSIB-MappingInfo-r15 ::= SEQUENCE (SIZE (1..32)) OF PosSIB-Type-r15
using pos_sib_map_info_r15_l = dyn_array<pos_sib_type_r15_s>;
// PLMN-IdentityInfo-v1530 ::= SEQUENCE
struct plmn_id_info_v1530_s {
struct cell_reserved_for_oper_crs_r15_opts {
enum options { reserved, not_reserved, nulltype } value;
const char* to_string() const;
};
typedef enumerated<cell_reserved_for_oper_crs_r15_opts> cell_reserved_for_oper_crs_r15_e_;
// 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(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// PosSchedulingInfo-r15 ::= SEQUENCE
struct pos_sched_info_r15_s {
struct pos_si_periodicity_r15_opts {
enum options { rf8, rf16, rf32, rf64, rf128, rf256, rf512, nulltype } value;
typedef uint16_t number_type;
const char* to_string() const;
uint16_t to_number() const;
};
typedef enumerated<pos_si_periodicity_r15_opts> pos_si_periodicity_r15_e_;
// 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(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// CellSelectionInfoCE-v1530 ::= SEQUENCE
struct cell_sel_info_ce_v1530_s {
struct pwr_class14dbm_offset_r15_opts {
enum options { db_minus6, db_minus3, db3, db6, db9, db12, nulltype } value;
typedef int8_t number_type;
const char* to_string() const;
int8_t to_number() const;
};
typedef enumerated<pwr_class14dbm_offset_r15_opts> pwr_class14dbm_offset_r15_e_;
// member variables
pwr_class14dbm_offset_r15_e_ pwr_class14dbm_offset_r15;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// PLMN-IdentityList-v1530 ::= SEQUENCE (SIZE (1..6)) OF PLMN-IdentityInfo-v1530
using plmn_id_list_v1530_l = dyn_array<plmn_id_info_v1530_s>;
// PosSchedulingInfoList-r15 ::= SEQUENCE (SIZE (1..32)) OF PosSchedulingInfo-r15
using pos_sched_info_list_r15_l = dyn_array<pos_sched_info_r15_s>;
// SystemInformationBlockType1-v1540-IEs ::= SEQUENCE
struct sib_type1_v1540_ies_s {
bool si_pos_offset_r15_present = false;
bool non_crit_ext_present = false;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// SystemInformationBlockType1-v1530-IEs ::= SEQUENCE
struct sib_type1_v1530_ies_s {
struct crs_intf_mitig_cfg_r15_c_ {
struct crs_intf_mitig_num_prbs_opts {
enum options { n6, n24, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<crs_intf_mitig_num_prbs_opts> crs_intf_mitig_num_prbs_e_;
struct types_opts {
enum options { crs_intf_mitig_enabled, crs_intf_mitig_num_prbs, nulltype } value;
const char* to_string() const;
};
typedef enumerated<types_opts> types;
// choice methods
crs_intf_mitig_cfg_r15_c_() = default;
void set(types::options e = types::nulltype);
types type() const { return type_; }
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
// getters
crs_intf_mitig_num_prbs_e_& crs_intf_mitig_num_prbs()
{
assert_choice_type(types::crs_intf_mitig_num_prbs, type_, "crs-IntfMitigConfig-r15");
return c;
}
const crs_intf_mitig_num_prbs_e_& crs_intf_mitig_num_prbs() const
{
assert_choice_type(types::crs_intf_mitig_num_prbs, type_, "crs-IntfMitigConfig-r15");
return c;
}
void set_crs_intf_mitig_enabled();
crs_intf_mitig_num_prbs_e_& set_crs_intf_mitig_num_prbs();
private:
types type_;
crs_intf_mitig_num_prbs_e_ c;
};
struct cell_barred_crs_r15_opts {
enum options { barred, not_barred, nulltype } value;
const char* to_string() const;
};
typedef enumerated<cell_barred_crs_r15_opts> cell_barred_crs_r15_e_;
struct cell_access_related_info_minus5_gc_r15_s_ {
struct cell_barred_minus5_gc_r15_opts {
enum options { barred, not_barred, nulltype } value;
const char* to_string() const;
};
typedef enumerated<cell_barred_minus5_gc_r15_opts> cell_barred_minus5_gc_r15_e_;
struct cell_barred_minus5_gc_crs_r15_opts {
enum options { barred, not_barred, nulltype } value;
const char* to_string() const;
};
typedef enumerated<cell_barred_minus5_gc_crs_r15_opts> cell_barred_minus5_gc_crs_r15_e_;
using cell_access_related_info_list_minus5_gc_r15_l_ = dyn_array<cell_access_related_info_minus5_gc_r15_s>;
// 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 = false;
bool cell_sel_info_ce_v1530_present = false;
bool crs_intf_mitig_cfg_r15_present = false;
bool plmn_id_list_v1530_present = false;
bool pos_sched_info_list_r15_present = false;
bool cell_access_related_info_minus5_gc_r15_present = false;
bool ims_emergency_support5_gc_r15_present = false;
bool ecall_over_ims_support5_gc_r15_present = false;
bool non_crit_ext_present = false;
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;
sib_type1_v1540_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// CellAccessRelatedInfo-r14 ::= SEQUENCE
struct cell_access_related_info_r14_s {
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(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// SystemInformationBlockType1-v1450-IEs ::= SEQUENCE
struct sib_type1_v1450_ies_s {
bool tdd_cfg_v1450_present = false;
bool non_crit_ext_present = false;
tdd_cfg_v1450_s tdd_cfg_v1450;
sib_type1_v1530_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// CellSelectionInfoCE1-v1360 ::= SEQUENCE
struct cell_sel_info_ce1_v1360_s {
int8_t delta_rx_lev_min_ce1_v1360 = -8;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// SystemInformationBlockType1-v1430-IEs ::= SEQUENCE
struct sib_type1_v1430_ies_s {
using cell_access_related_info_list_r14_l_ = dyn_array<cell_access_related_info_r14_s>;
// member variables
bool ecall_over_ims_support_r14_present = false;
bool tdd_cfg_v1430_present = false;
bool cell_access_related_info_list_r14_present = false;
bool non_crit_ext_present = false;
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
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// CellSelectionInfoCE1-r13 ::= SEQUENCE
struct cell_sel_info_ce1_r13_s {
bool q_qual_min_rsrq_ce1_r13_present = false;
int8_t q_rx_lev_min_ce1_r13 = -70;
int8_t q_qual_min_rsrq_ce1_r13 = -34;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// SystemInformationBlockType1-v1360-IEs ::= SEQUENCE
struct sib_type1_v1360_ies_s {
bool cell_sel_info_ce1_v1360_present = false;
bool non_crit_ext_present = false;
cell_sel_info_ce1_v1360_s cell_sel_info_ce1_v1360;
sib_type1_v1430_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// SchedulingInfo-BR-r13 ::= SEQUENCE
struct sched_info_br_r13_s {
struct si_tbs_r13_opts {
enum options { b152, b208, b256, b328, b408, b504, b600, b712, b808, b936, nulltype } value;
typedef uint16_t number_type;
const char* to_string() const;
uint16_t to_number() const;
};
typedef enumerated<si_tbs_r13_opts> si_tbs_r13_e_;
// member variables
uint8_t si_nb_r13 = 1;
si_tbs_r13_e_ si_tbs_r13;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// SystemInformationBlockType1-v1350-IEs ::= SEQUENCE
struct sib_type1_v1350_ies_s {
bool cell_sel_info_ce1_r13_present = false;
bool non_crit_ext_present = false;
cell_sel_info_ce1_r13_s cell_sel_info_ce1_r13;
sib_type1_v1360_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// BarringPerACDC-Category-r13 ::= SEQUENCE
struct barr_per_acdc_category_r13_s {
struct acdc_barr_cfg_r13_s_ {
struct ac_barr_factor_r13_opts {
enum options { p00, p05, p10, p15, p20, p25, p30, p40, p50, p60, p70, p75, p80, p85, p90, p95, nulltype } value;
typedef float number_type;
const char* to_string() const;
float to_number() const;
const char* to_number_string() const;
};
typedef enumerated<ac_barr_factor_r13_opts> ac_barr_factor_r13_e_;
struct ac_barr_time_r13_opts {
enum options { s4, s8, s16, s32, s64, s128, s256, s512, nulltype } value;
typedef uint16_t number_type;
const char* to_string() const;
uint16_t to_number() const;
};
typedef enumerated<ac_barr_time_r13_opts> ac_barr_time_r13_e_;
// 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 = false;
uint8_t acdc_category_r13 = 1;
acdc_barr_cfg_r13_s_ acdc_barr_cfg_r13;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// CellSelectionInfoCE-r13 ::= SEQUENCE
struct cell_sel_info_ce_r13_s {
bool q_qual_min_rsrq_ce_r13_present = false;
int8_t q_rx_lev_min_ce_r13 = -70;
int8_t q_qual_min_rsrq_ce_r13 = -34;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// SchedulingInfoList-BR-r13 ::= SEQUENCE (SIZE (1..32)) OF SchedulingInfo-BR-r13
using sched_info_list_br_r13_l = dyn_array<sched_info_br_r13_s>;
// SystemInfoValueTagList-r13 ::= SEQUENCE (SIZE (1..32)) OF INTEGER (0..3)
using sys_info_value_tag_list_r13_l = bounded_array<uint8_t, 32>;
// SystemInformationBlockType1-v1320-IEs ::= SEQUENCE
struct sib_type1_v1320_ies_s {
struct freq_hop_params_dl_r13_s_ {
struct mpdcch_pdsch_hop_nb_r13_opts {
enum options { nb2, nb4, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<mpdcch_pdsch_hop_nb_r13_opts> mpdcch_pdsch_hop_nb_r13_e_;
struct interv_dl_hop_cfg_common_mode_a_r13_c_ {
struct interv_fdd_r13_opts {
enum options { int1, int2, int4, int8, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<interv_fdd_r13_opts> interv_fdd_r13_e_;
struct interv_tdd_r13_opts {
enum options { int1, int5, int10, int20, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<interv_tdd_r13_opts> interv_tdd_r13_e_;
struct types_opts {
enum options { interv_fdd_r13, interv_tdd_r13, nulltype } value;
const char* to_string() const;
};
typedef enumerated<types_opts> types;
// choice methods
interv_dl_hop_cfg_common_mode_a_r13_c_() = default;
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(cbit_ref& bref);
void to_json(json_writer& j) const;
// getters
interv_fdd_r13_e_& interv_fdd_r13()
{
assert_choice_type(types::interv_fdd_r13, type_, "interval-DLHoppingConfigCommonModeA-r13");
return c.get<interv_fdd_r13_e_>();
}
interv_tdd_r13_e_& interv_tdd_r13()
{
assert_choice_type(types::interv_tdd_r13, type_, "interval-DLHoppingConfigCommonModeA-r13");
return c.get<interv_tdd_r13_e_>();
}
const interv_fdd_r13_e_& interv_fdd_r13() const
{
assert_choice_type(types::interv_fdd_r13, type_, "interval-DLHoppingConfigCommonModeA-r13");
return c.get<interv_fdd_r13_e_>();
}
const interv_tdd_r13_e_& interv_tdd_r13() const
{
assert_choice_type(types::interv_tdd_r13, type_, "interval-DLHoppingConfigCommonModeA-r13");
return c.get<interv_tdd_r13_e_>();
}
interv_fdd_r13_e_& set_interv_fdd_r13();
interv_tdd_r13_e_& set_interv_tdd_r13();
private:
types type_;
pod_choice_buffer_t c;
void destroy_();
};
struct interv_dl_hop_cfg_common_mode_b_r13_c_ {
struct interv_fdd_r13_opts {
enum options { int2, int4, int8, int16, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<interv_fdd_r13_opts> interv_fdd_r13_e_;
struct interv_tdd_r13_opts {
enum options { int5, int10, int20, int40, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<interv_tdd_r13_opts> interv_tdd_r13_e_;
struct types_opts {
enum options { interv_fdd_r13, interv_tdd_r13, nulltype } value;
const char* to_string() const;
};
typedef enumerated<types_opts> types;
// choice methods
interv_dl_hop_cfg_common_mode_b_r13_c_() = default;
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(cbit_ref& bref);
void to_json(json_writer& j) const;
// getters
interv_fdd_r13_e_& interv_fdd_r13()
{
assert_choice_type(types::interv_fdd_r13, type_, "interval-DLHoppingConfigCommonModeB-r13");
return c.get<interv_fdd_r13_e_>();
}
interv_tdd_r13_e_& interv_tdd_r13()
{
assert_choice_type(types::interv_tdd_r13, type_, "interval-DLHoppingConfigCommonModeB-r13");
return c.get<interv_tdd_r13_e_>();
}
const interv_fdd_r13_e_& interv_fdd_r13() const
{
assert_choice_type(types::interv_fdd_r13, type_, "interval-DLHoppingConfigCommonModeB-r13");
return c.get<interv_fdd_r13_e_>();
}
const interv_tdd_r13_e_& interv_tdd_r13() const
{
assert_choice_type(types::interv_tdd_r13, type_, "interval-DLHoppingConfigCommonModeB-r13");
return c.get<interv_tdd_r13_e_>();
}
interv_fdd_r13_e_& set_interv_fdd_r13();
interv_tdd_r13_e_& set_interv_tdd_r13();
private:
types type_;
pod_choice_buffer_t c;
void destroy_();
};
// member variables
bool mpdcch_pdsch_hop_nb_r13_present = false;
bool interv_dl_hop_cfg_common_mode_a_r13_present = false;
bool interv_dl_hop_cfg_common_mode_b_r13_present = false;
bool mpdcch_pdsch_hop_offset_r13_present = false;
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 = 1;
};
// member variables
bool freq_hop_params_dl_r13_present = false;
bool non_crit_ext_present = false;
freq_hop_params_dl_r13_s_ freq_hop_params_dl_r13;
sib_type1_v1350_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// AC-BarringConfig ::= SEQUENCE
struct ac_barr_cfg_s {
struct ac_barr_factor_opts {
enum options { p00, p05, p10, p15, p20, p25, p30, p40, p50, p60, p70, p75, p80, p85, p90, p95, nulltype } value;
typedef float number_type;
const char* to_string() const;
float to_number() const;
const char* to_number_string() const;
};
typedef enumerated<ac_barr_factor_opts> ac_barr_factor_e_;
struct ac_barr_time_opts {
enum options { s4, s8, s16, s32, s64, s128, s256, s512, nulltype } value;
typedef uint16_t number_type;
const char* to_string() const;
uint16_t to_number() const;
};
typedef enumerated<ac_barr_time_opts> ac_barr_time_e_;
// 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(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// BarringPerACDC-CategoryList-r13 ::= SEQUENCE (SIZE (1..16)) OF BarringPerACDC-Category-r13
using barr_per_acdc_category_list_r13_l = dyn_array<barr_per_acdc_category_r13_s>;
// CellSelectionInfo-v1250 ::= SEQUENCE
struct cell_sel_info_v1250_s {
int8_t q_qual_min_rsrq_on_all_symbols_r12 = -34;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_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_opts {
enum options { ms20, ms40, ms60, ms80, ms120, ms160, ms200, spare, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<si_win_len_br_r13_opts> si_win_len_br_r13_e_;
struct si_repeat_pattern_r13_opts {
enum options { every_rf, every2nd_rf, every4th_rf, every8th_rf, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<si_repeat_pattern_r13_opts> si_repeat_pattern_r13_e_;
struct fdd_dl_or_tdd_sf_bitmap_br_r13_c_ {
struct types_opts {
enum options { sf_pattern10_r13, sf_pattern40_r13, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<types_opts> types;
// choice methods
fdd_dl_or_tdd_sf_bitmap_br_r13_c_() = default;
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(cbit_ref& bref);
void to_json(json_writer& j) const;
// getters
fixed_bitstring<10>& sf_pattern10_r13()
{
assert_choice_type(types::sf_pattern10_r13, type_, "fdd-DownlinkOrTddSubframeBitmapBR-r13");
return c.get<fixed_bitstring<10> >();
}
fixed_bitstring<40>& sf_pattern40_r13()
{
assert_choice_type(types::sf_pattern40_r13, type_, "fdd-DownlinkOrTddSubframeBitmapBR-r13");
return c.get<fixed_bitstring<40> >();
}
const fixed_bitstring<10>& sf_pattern10_r13() const
{
assert_choice_type(types::sf_pattern10_r13, type_, "fdd-DownlinkOrTddSubframeBitmapBR-r13");
return c.get<fixed_bitstring<10> >();
}
const fixed_bitstring<40>& sf_pattern40_r13() const
{
assert_choice_type(types::sf_pattern40_r13, type_, "fdd-DownlinkOrTddSubframeBitmapBR-r13");
return c.get<fixed_bitstring<40> >();
}
fixed_bitstring<10>& set_sf_pattern10_r13();
fixed_bitstring<40>& set_sf_pattern40_r13();
private:
types type_;
choice_buffer_t<fixed_bitstring<40> > c;
void destroy_();
};
struct si_hop_cfg_common_r13_opts {
enum options { on, off, nulltype } value;
const char* to_string() const;
};
typedef enumerated<si_hop_cfg_common_r13_opts> si_hop_cfg_common_r13_e_;
// member variables
bool sched_info_list_br_r13_present = false;
bool fdd_dl_or_tdd_sf_bitmap_br_r13_present = false;
bool fdd_ul_sf_bitmap_br_r13_present = false;
bool si_validity_time_r13_present = false;
bool sys_info_value_tag_list_r13_present = false;
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 = 1;
si_hop_cfg_common_r13_e_ si_hop_cfg_common_r13;
sys_info_value_tag_list_r13_l sys_info_value_tag_list_r13;
};
// member variables
bool hyper_sfn_r13_present = false;
bool edrx_allowed_r13_present = false;
bool cell_sel_info_ce_r13_present = false;
bool bw_reduced_access_related_info_r13_present = false;
bool non_crit_ext_present = false;
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
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// UDT-Restricting-r13 ::= SEQUENCE
struct udt_restricting_r13_s {
struct udt_restricting_time_r13_opts {
enum options { s4, s8, s16, s32, s64, s128, s256, s512, nulltype } value;
typedef uint16_t number_type;
const char* to_string() const;
uint16_t to_number() const;
};
typedef enumerated<udt_restricting_time_r13_opts> udt_restricting_time_r13_e_;
// member variables
bool udt_restricting_r13_present = false;
bool udt_restricting_time_r13_present = false;
udt_restricting_time_r13_e_ udt_restricting_time_r13;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// AC-BarringPerPLMN-r12 ::= SEQUENCE
struct ac_barr_per_plmn_r12_s {
struct ac_barr_info_r12_s_ {
bool ac_barr_for_mo_sig_r12_present = false;
bool ac_barr_for_mo_data_r12_present = false;
bool ac_barr_for_emergency_r12 = false;
ac_barr_cfg_s ac_barr_for_mo_sig_r12;
ac_barr_cfg_s ac_barr_for_mo_data_r12;
};
// member variables
bool ac_barr_info_r12_present = false;
bool ac_barr_skip_for_mmtel_voice_r12_present = false;
bool ac_barr_skip_for_mmtel_video_r12_present = false;
bool ac_barr_skip_for_sms_r12_present = false;
bool ac_barr_for_csfb_r12_present = false;
bool ssac_barr_for_mmtel_voice_r12_present = false;
bool ssac_barr_for_mmtel_video_r12_present = false;
uint8_t plmn_id_idx_r12 = 1;
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
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// ACDC-BarringPerPLMN-r13 ::= SEQUENCE
struct acdc_barr_per_plmn_r13_s {
uint8_t plmn_id_idx_r13 = 1;
bool acdc_only_for_hplmn_r13 = false;
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(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// CIOT-OptimisationPLMN-r13 ::= SEQUENCE
struct ciot_optim_plmn_r13_s {
bool up_cio_t_eps_optim_r13_present = false;
bool cp_cio_t_eps_optim_r13_present = false;
bool attach_without_pdn_connect_r13_present = false;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// CellSelectionInfo-v1130 ::= SEQUENCE
struct cell_sel_info_v1130_s {
int8_t q_qual_min_wb_r11 = -34;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// PLMN-Info-r15 ::= SEQUENCE
struct plmn_info_r15_s {
bool upper_layer_ind_r15_present = false;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// SIB-Type ::= ENUMERATED
struct sib_type_opts {
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,
nulltype
} value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<sib_type_opts, true, 6> sib_type_e;
// SystemInformationBlockType1-v1250-IEs ::= SEQUENCE
struct sib_type1_v1250_ies_s {
struct cell_access_related_info_v1250_s_ {
bool category0_allowed_r12_present = false;
};
// member variables
bool cell_sel_info_v1250_present = false;
bool freq_band_ind_prio_r12_present = false;
bool non_crit_ext_present = false;
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
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// UDT-RestrictingPerPLMN-r13 ::= SEQUENCE
struct udt_restricting_per_plmn_r13_s {
bool udt_restricting_r13_present = false;
uint8_t plmn_id_idx_r13 = 1;
udt_restricting_r13_s udt_restricting_r13;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// AC-BarringPerPLMN-List-r12 ::= SEQUENCE (SIZE (1..6)) OF AC-BarringPerPLMN-r12
using ac_barr_per_plmn_list_r12_l = dyn_array<ac_barr_per_plmn_r12_s>;
// ACDC-BarringForCommon-r13 ::= SEQUENCE
struct acdc_barr_for_common_r13_s {
bool acdc_hplm_nonly_r13 = false;
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(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// ACDC-BarringPerPLMN-List-r13 ::= SEQUENCE (SIZE (1..6)) OF ACDC-BarringPerPLMN-r13
using acdc_barr_per_plmn_list_r13_l = dyn_array<acdc_barr_per_plmn_r13_s>;
// CIOT-EPS-OptimisationInfo-r13 ::= SEQUENCE (SIZE (1..6)) OF CIOT-OptimisationPLMN-r13
using ciot_eps_optim_info_r13_l = dyn_array<ciot_optim_plmn_r13_s>;
// CellSelectionInfo-v920 ::= SEQUENCE
struct cell_sel_info_v920_s {
bool q_qual_min_offset_r9_present = false;
int8_t q_qual_min_r9 = -34;
uint8_t q_qual_min_offset_r9 = 1;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// PLMN-InfoList-r15 ::= SEQUENCE (SIZE (1..6)) OF PLMN-Info-r15
using plmn_info_list_r15_l = dyn_array<plmn_info_r15_s>;
// SI-Periodicity-r12 ::= ENUMERATED
struct si_periodicity_r12_opts {
enum options { rf8, rf16, rf32, rf64, rf128, rf256, rf512, nulltype } value;
typedef uint16_t number_type;
const char* to_string() const;
uint16_t to_number() const;
};
typedef enumerated<si_periodicity_r12_opts> si_periodicity_r12_e;
// SIB-MappingInfo ::= SEQUENCE (SIZE (0..31)) OF SIB-Type
using sib_map_info_l = bounded_array<sib_type_e, 31>;
// SystemInformationBlockType1-v1130-IEs ::= SEQUENCE
struct sib_type1_v1130_ies_s {
bool tdd_cfg_v1130_present = false;
bool cell_sel_info_v1130_present = false;
bool non_crit_ext_present = false;
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
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// UDT-RestrictingPerPLMN-List-r13 ::= SEQUENCE (SIZE (1..6)) OF UDT-RestrictingPerPLMN-r13
using udt_restricting_per_plmn_list_r13_l = dyn_array<udt_restricting_per_plmn_r13_s>;
// UE-TimersAndConstants ::= SEQUENCE
struct ue_timers_and_consts_s {
struct t300_opts {
enum options { ms100, ms200, ms300, ms400, ms600, ms1000, ms1500, ms2000, nulltype } value;
typedef uint16_t number_type;
const char* to_string() const;
uint16_t to_number() const;
};
typedef enumerated<t300_opts> t300_e_;
struct t301_opts {
enum options { ms100, ms200, ms300, ms400, ms600, ms1000, ms1500, ms2000, nulltype } value;
typedef uint16_t number_type;
const char* to_string() const;
uint16_t to_number() const;
};
typedef enumerated<t301_opts> t301_e_;
struct t310_opts {
enum options { ms0, ms50, ms100, ms200, ms500, ms1000, ms2000, nulltype } value;
typedef uint16_t number_type;
const char* to_string() const;
uint16_t to_number() const;
};
typedef enumerated<t310_opts> t310_e_;
struct n310_opts {
enum options { n1, n2, n3, n4, n6, n8, n10, n20, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<n310_opts> n310_e_;
struct t311_opts {
enum options { ms1000, ms3000, ms5000, ms10000, ms15000, ms20000, ms30000, nulltype } value;
typedef uint16_t number_type;
const char* to_string() const;
uint16_t to_number() const;
};
typedef enumerated<t311_opts> t311_e_;
struct n311_opts {
enum options { n1, n2, n3, n4, n5, n6, n8, n10, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<n311_opts> n311_e_;
struct t300_v1310_opts {
enum options { ms2500, ms3000, ms3500, ms4000, ms5000, ms6000, ms8000, ms10000, nulltype } value;
typedef uint16_t number_type;
const char* to_string() const;
uint16_t to_number() const;
};
typedef enumerated<t300_v1310_opts> t300_v1310_e_;
struct t301_v1310_opts {
enum options { ms2500, ms3000, ms3500, ms4000, ms5000, ms6000, ms8000, ms10000, nulltype } value;
typedef uint16_t number_type;
const char* to_string() const;
uint16_t to_number() const;
};
typedef enumerated<t301_v1310_opts> t301_v1310_e_;
struct t310_v1330_opts {
enum options { ms4000, ms6000, nulltype } value;
typedef uint16_t number_type;
const char* to_string() const;
uint16_t to_number() const;
};
typedef enumerated<t310_v1330_opts> t310_v1330_e_;
struct t300_r15_opts {
enum options { ms4000, ms6000, ms8000, ms10000, ms15000, ms25000, ms40000, ms60000, nulltype } value;
typedef uint16_t number_type;
const char* to_string() const;
uint16_t to_number() const;
};
typedef enumerated<t300_r15_opts> t300_r15_e_;
// member variables
bool ext = false;
t300_e_ t300;
t301_e_ t301;
t310_e_ t310;
n310_e_ n310;
t311_e_ t311;
n311_e_ n311;
// ...
// group 0
bool t300_v1310_present = false;
bool t301_v1310_present = false;
t300_v1310_e_ t300_v1310;
t301_v1310_e_ t301_v1310;
// group 1
bool t310_v1330_present = false;
t310_v1330_e_ t310_v1330;
// group 2
bool t300_r15_present = false;
t300_r15_e_ t300_r15;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// SchedulingInfo ::= SEQUENCE
struct sched_info_s {
si_periodicity_r12_e si_periodicity;
sib_map_info_l sib_map_info;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// SystemInformationBlockType1-v920-IEs ::= SEQUENCE
struct sib_type1_v920_ies_s {
bool ims_emergency_support_r9_present = false;
bool cell_sel_info_v920_present = false;
bool non_crit_ext_present = false;
cell_sel_info_v920_s cell_sel_info_v920;
sib_type1_v1130_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// SystemInformationBlockType2 ::= SEQUENCE
struct sib_type2_s {
struct ac_barr_info_s_ {
bool ac_barr_for_mo_sig_present = false;
bool ac_barr_for_mo_data_present = false;
bool ac_barr_for_emergency = false;
ac_barr_cfg_s ac_barr_for_mo_sig;
ac_barr_cfg_s ac_barr_for_mo_data;
};
struct freq_info_s_ {
struct ul_bw_opts {
enum options { n6, n15, n25, n50, n75, n100, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<ul_bw_opts> ul_bw_e_;
// member variables
bool ul_carrier_freq_present = false;
bool ul_bw_present = false;
uint32_t ul_carrier_freq = 0;
ul_bw_e_ ul_bw;
uint8_t add_spec_emission = 1;
};
// member variables
bool ext = false;
bool ac_barr_info_present = false;
bool mbsfn_sf_cfg_list_present = false;
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 = false;
dyn_octstring late_non_crit_ext;
// group 0
copy_ptr<ac_barr_cfg_s> ssac_barr_for_mmtel_voice_r9;
copy_ptr<ac_barr_cfg_s> ssac_barr_for_mmtel_video_r9;
// group 1
copy_ptr<ac_barr_cfg_s> ac_barr_for_csfb_r10;
// group 2
bool ac_barr_skip_for_mmtel_voice_r12_present = false;
bool ac_barr_skip_for_mmtel_video_r12_present = false;
bool ac_barr_skip_for_sms_r12_present = false;
copy_ptr<ac_barr_per_plmn_list_r12_l> ac_barr_per_plmn_list_r12;
// group 3
bool voice_service_cause_ind_r12_present = false;
// group 4
copy_ptr<acdc_barr_for_common_r13_s> acdc_barr_for_common_r13;
copy_ptr<acdc_barr_per_plmn_list_r13_l> acdc_barr_per_plmn_list_r13;
// group 5
bool use_full_resume_id_r13_present = false;
copy_ptr<udt_restricting_r13_s> udt_restricting_for_common_r13;
copy_ptr<udt_restricting_per_plmn_list_r13_l> udt_restricting_per_plmn_list_r13;
copy_ptr<ciot_eps_optim_info_r13_l> cio_t_eps_optim_info_r13;
// group 6
bool unicast_freq_hop_ind_r13_present = false;
// group 7
bool video_service_cause_ind_r14_present = false;
copy_ptr<mbsfn_sf_cfg_list_v1430_l> mbsfn_sf_cfg_list_v1430;
// group 8
copy_ptr<plmn_info_list_r15_l> plmn_info_list_r15;
// group 9
bool cp_edt_r15_present = false;
bool up_edt_r15_present = false;
bool idle_mode_meass_r15_present = false;
bool reduced_cp_latency_enabled_r15_present = false;
// group 10
bool mbms_rom_service_ind_r15_present = false;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// SchedulingInfoList ::= SEQUENCE (SIZE (1..32)) OF SchedulingInfo
using sched_info_list_l = dyn_array<sched_info_s>;
// SystemInformationBlockType1-v890-IEs ::= SEQUENCE
struct sib_type1_v890_ies_s {
bool late_non_crit_ext_present = false;
bool non_crit_ext_present = false;
dyn_octstring late_non_crit_ext;
sib_type1_v920_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// SystemInformationBlockType1 ::= SEQUENCE
struct sib_type1_s {
struct cell_access_related_info_s_ {
struct cell_barred_opts {
enum options { barred, not_barred, nulltype } value;
const char* to_string() const;
};
typedef enumerated<cell_barred_opts> cell_barred_e_;
struct intra_freq_resel_opts {
enum options { allowed, not_allowed, nulltype } value;
const char* to_string() const;
};
typedef enumerated<intra_freq_resel_opts> intra_freq_resel_e_;
// member variables
bool csg_id_present = false;
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 = false;
fixed_bitstring<27> csg_id;
};
struct cell_sel_info_s_ {
bool q_rx_lev_min_offset_present = false;
int8_t q_rx_lev_min = -70;
uint8_t q_rx_lev_min_offset = 1;
};
struct si_win_len_opts {
enum options { ms1, ms2, ms5, ms10, ms15, ms20, ms40, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<si_win_len_opts> si_win_len_e_;
// member variables
bool p_max_present = false;
bool tdd_cfg_present = false;
bool non_crit_ext_present = false;
cell_access_related_info_s_ cell_access_related_info;
cell_sel_info_s_ cell_sel_info;
int8_t p_max = -30;
uint8_t freq_band_ind = 1;
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 = 0;
sib_type1_v890_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
} // namespace rrc
} // namespace asn1
#endif // SRSASN1_RRC_SI_H