mirror of https://github.com/pvnis/srsRAN_4G.git
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.
2519 lines
86 KiB
C++
2519 lines
86 KiB
C++
/**
|
|
*
|
|
* \section COPYRIGHT
|
|
*
|
|
* Copyright 2013-2021 Software Radio Systems Limited
|
|
*
|
|
* By using this file, you agree to the terms and conditions set
|
|
* forth in the LICENSE file which can be found at the top level of
|
|
* the distribution.
|
|
*
|
|
*/
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* 3GPP TS ASN1 RRC v15.11.0 (2020-09)
|
|
*
|
|
******************************************************************************/
|
|
|
|
#ifndef SRSASN1_RRC_RR_COMMON_H
|
|
#define SRSASN1_RRC_RR_COMMON_H
|
|
|
|
#include "common.h"
|
|
|
|
namespace asn1 {
|
|
namespace rrc {
|
|
|
|
/*******************************************************************************
|
|
* Struct Definitions
|
|
******************************************************************************/
|
|
|
|
// PHICH-Config ::= SEQUENCE
|
|
struct phich_cfg_s {
|
|
struct phich_dur_opts {
|
|
enum options { normal, extended, nulltype } value;
|
|
|
|
const char* to_string() const;
|
|
};
|
|
typedef enumerated<phich_dur_opts> phich_dur_e_;
|
|
struct phich_res_opts {
|
|
enum options { one_sixth, half, one, two, nulltype } value;
|
|
typedef float number_type;
|
|
|
|
const char* to_string() const;
|
|
float to_number() const;
|
|
const char* to_number_string() const;
|
|
};
|
|
typedef enumerated<phich_res_opts> phich_res_e_;
|
|
|
|
// member variables
|
|
phich_dur_e_ phich_dur;
|
|
phich_res_e_ phich_res;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
bool operator==(const phich_cfg_s& other) const;
|
|
bool operator!=(const phich_cfg_s& other) const { return not(*this == other); }
|
|
};
|
|
|
|
// PLMN-IdentityInfo-r15 ::= SEQUENCE
|
|
struct plmn_id_info_r15_s {
|
|
struct plmn_id_minus5_gc_r15_c_ {
|
|
struct types_opts {
|
|
enum options { plmn_id_r15, plmn_idx_r15, nulltype } value;
|
|
|
|
const char* to_string() const;
|
|
};
|
|
typedef enumerated<types_opts> types;
|
|
|
|
// choice methods
|
|
plmn_id_minus5_gc_r15_c_() = default;
|
|
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(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
// getters
|
|
plmn_id_s& plmn_id_r15()
|
|
{
|
|
assert_choice_type(types::plmn_id_r15, type_, "plmn-Identity-5GC-r15");
|
|
return c.get<plmn_id_s>();
|
|
}
|
|
uint8_t& plmn_idx_r15()
|
|
{
|
|
assert_choice_type(types::plmn_idx_r15, type_, "plmn-Identity-5GC-r15");
|
|
return c.get<uint8_t>();
|
|
}
|
|
const plmn_id_s& plmn_id_r15() const
|
|
{
|
|
assert_choice_type(types::plmn_id_r15, type_, "plmn-Identity-5GC-r15");
|
|
return c.get<plmn_id_s>();
|
|
}
|
|
const uint8_t& plmn_idx_r15() const
|
|
{
|
|
assert_choice_type(types::plmn_idx_r15, type_, "plmn-Identity-5GC-r15");
|
|
return c.get<uint8_t>();
|
|
}
|
|
plmn_id_s& set_plmn_id_r15();
|
|
uint8_t& set_plmn_idx_r15();
|
|
|
|
private:
|
|
types type_;
|
|
choice_buffer_t<plmn_id_s> c;
|
|
|
|
void destroy_();
|
|
};
|
|
struct cell_reserved_for_oper_r15_opts {
|
|
enum options { reserved, not_reserved, nulltype } value;
|
|
|
|
const char* to_string() const;
|
|
};
|
|
typedef enumerated<cell_reserved_for_oper_r15_opts> cell_reserved_for_oper_r15_e_;
|
|
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
|
|
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(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
};
|
|
|
|
// CellIdentity-5GC-r15 ::= CHOICE
|
|
struct cell_id_minus5_gc_r15_c {
|
|
struct types_opts {
|
|
enum options { cell_id_r15, cell_id_idx_r15, nulltype } value;
|
|
|
|
const char* to_string() const;
|
|
};
|
|
typedef enumerated<types_opts> types;
|
|
|
|
// choice methods
|
|
cell_id_minus5_gc_r15_c() = default;
|
|
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(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
// getters
|
|
fixed_bitstring<28>& cell_id_r15()
|
|
{
|
|
assert_choice_type(types::cell_id_r15, type_, "CellIdentity-5GC-r15");
|
|
return c.get<fixed_bitstring<28> >();
|
|
}
|
|
uint8_t& cell_id_idx_r15()
|
|
{
|
|
assert_choice_type(types::cell_id_idx_r15, type_, "CellIdentity-5GC-r15");
|
|
return c.get<uint8_t>();
|
|
}
|
|
const fixed_bitstring<28>& cell_id_r15() const
|
|
{
|
|
assert_choice_type(types::cell_id_r15, type_, "CellIdentity-5GC-r15");
|
|
return c.get<fixed_bitstring<28> >();
|
|
}
|
|
const uint8_t& cell_id_idx_r15() const
|
|
{
|
|
assert_choice_type(types::cell_id_idx_r15, type_, "CellIdentity-5GC-r15");
|
|
return c.get<uint8_t>();
|
|
}
|
|
fixed_bitstring<28>& set_cell_id_r15();
|
|
uint8_t& set_cell_id_idx_r15();
|
|
|
|
private:
|
|
types type_;
|
|
choice_buffer_t<fixed_bitstring<28> > c;
|
|
|
|
void destroy_();
|
|
};
|
|
|
|
// PLMN-IdentityList-r15 ::= SEQUENCE (SIZE (1..6)) OF PLMN-IdentityInfo-r15
|
|
using plmn_id_list_r15_l = dyn_array<plmn_id_info_r15_s>;
|
|
|
|
// CellAccessRelatedInfo-5GC-r15 ::= SEQUENCE
|
|
struct cell_access_related_info_minus5_gc_r15_s {
|
|
bool ran_area_code_r15_present = false;
|
|
plmn_id_list_r15_l plmn_id_list_r15;
|
|
uint16_t ran_area_code_r15 = 0;
|
|
fixed_bitstring<24> tac_minus5_gc_r15;
|
|
cell_id_minus5_gc_r15_c cell_id_minus5_gc_r15;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_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(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
};
|
|
|
|
// TDD-Config ::= SEQUENCE
|
|
struct tdd_cfg_s {
|
|
struct sf_assign_opts {
|
|
enum options { sa0, sa1, sa2, sa3, sa4, sa5, sa6, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<sf_assign_opts> sf_assign_e_;
|
|
struct special_sf_patterns_opts {
|
|
enum options { ssp0, ssp1, ssp2, ssp3, ssp4, ssp5, ssp6, ssp7, ssp8, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<special_sf_patterns_opts> special_sf_patterns_e_;
|
|
|
|
// 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(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
bool operator==(const tdd_cfg_s& other) const;
|
|
bool operator!=(const tdd_cfg_s& other) const { return not(*this == other); }
|
|
};
|
|
|
|
// TDD-Config-v1430 ::= SEQUENCE
|
|
struct tdd_cfg_v1430_s {
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
};
|
|
|
|
// TDD-Config-v1130 ::= SEQUENCE
|
|
struct tdd_cfg_v1130_s {
|
|
struct special_sf_patterns_v1130_opts {
|
|
enum options { ssp7, ssp9, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<special_sf_patterns_v1130_opts> special_sf_patterns_v1130_e_;
|
|
|
|
// member variables
|
|
special_sf_patterns_v1130_e_ special_sf_patterns_v1130;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
bool operator==(const tdd_cfg_v1130_s& other) const;
|
|
bool operator!=(const tdd_cfg_v1130_s& other) const { return not(*this == other); }
|
|
};
|
|
|
|
// PRACH-ParametersCE-r13 ::= SEQUENCE
|
|
struct prach_params_ce_r13_s {
|
|
struct prach_start_sf_r13_opts {
|
|
enum options { sf2, sf4, sf8, sf16, sf32, sf64, sf128, sf256, nulltype } value;
|
|
typedef uint16_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint16_t to_number() const;
|
|
};
|
|
typedef enumerated<prach_start_sf_r13_opts> prach_start_sf_r13_e_;
|
|
struct max_num_preamb_attempt_ce_r13_opts {
|
|
enum options { n3, n4, n5, n6, n7, n8, n10, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<max_num_preamb_attempt_ce_r13_opts> max_num_preamb_attempt_ce_r13_e_;
|
|
struct num_repeat_per_preamb_attempt_r13_opts {
|
|
enum options { n1, n2, n4, n8, n16, n32, n64, n128, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<num_repeat_per_preamb_attempt_r13_opts> num_repeat_per_preamb_attempt_r13_e_;
|
|
using mpdcch_nbs_to_monitor_r13_l_ = bounded_array<uint8_t, 2>;
|
|
struct mpdcch_num_repeat_ra_r13_opts {
|
|
enum options { r1, r2, r4, r8, r16, r32, r64, r128, r256, nulltype } value;
|
|
typedef uint16_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint16_t to_number() const;
|
|
};
|
|
typedef enumerated<mpdcch_num_repeat_ra_r13_opts> mpdcch_num_repeat_ra_r13_e_;
|
|
struct prach_hop_cfg_r13_opts {
|
|
enum options { on, off, nulltype } value;
|
|
|
|
const char* to_string() const;
|
|
};
|
|
typedef enumerated<prach_hop_cfg_r13_opts> prach_hop_cfg_r13_e_;
|
|
|
|
// member variables
|
|
bool prach_start_sf_r13_present = false;
|
|
bool max_num_preamb_attempt_ce_r13_present = false;
|
|
uint8_t prach_cfg_idx_r13 = 0;
|
|
uint8_t prach_freq_offset_r13 = 0;
|
|
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
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_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_ {
|
|
uint8_t first_preamb_r13 = 0;
|
|
uint8_t last_preamb_r13 = 0;
|
|
};
|
|
struct ra_resp_win_size_r13_opts {
|
|
enum options { sf20, sf50, sf80, sf120, sf180, sf240, sf320, sf400, nulltype } value;
|
|
typedef uint16_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint16_t to_number() const;
|
|
};
|
|
typedef enumerated<ra_resp_win_size_r13_opts> ra_resp_win_size_r13_e_;
|
|
struct mac_contention_resolution_timer_r13_opts {
|
|
enum options { sf80, sf100, sf120, sf160, sf200, sf240, sf480, sf960, nulltype } value;
|
|
typedef uint16_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint16_t to_number() const;
|
|
};
|
|
typedef enumerated<mac_contention_resolution_timer_r13_opts> mac_contention_resolution_timer_r13_e_;
|
|
struct rar_hop_cfg_r13_opts {
|
|
enum options { on, off, nulltype } value;
|
|
|
|
const char* to_string() const;
|
|
};
|
|
typedef enumerated<rar_hop_cfg_r13_opts> rar_hop_cfg_r13_e_;
|
|
struct edt_params_r15_s_ {
|
|
struct edt_tbs_r15_opts {
|
|
enum options { b328, b408, b504, b600, b712, b808, b936, b1000or456, nulltype } value;
|
|
typedef uint16_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint16_t to_number() const;
|
|
};
|
|
typedef enumerated<edt_tbs_r15_opts> edt_tbs_r15_e_;
|
|
struct mac_contention_resolution_timer_r15_opts {
|
|
enum options { sf240, sf480, sf960, sf1920, sf3840, sf5760, sf7680, sf10240, nulltype } value;
|
|
typedef uint16_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint16_t to_number() const;
|
|
};
|
|
typedef enumerated<mac_contention_resolution_timer_r15_opts> mac_contention_resolution_timer_r15_e_;
|
|
|
|
// member variables
|
|
bool mac_contention_resolution_timer_r15_present = false;
|
|
uint8_t edt_last_preamb_r15 = 0;
|
|
bool edt_small_tbs_enabled_r15 = false;
|
|
edt_tbs_r15_e_ edt_tbs_r15;
|
|
mac_contention_resolution_timer_r15_e_ mac_contention_resolution_timer_r15;
|
|
};
|
|
|
|
// member variables
|
|
bool ext = false;
|
|
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
|
|
copy_ptr<edt_params_r15_s_> edt_params_r15;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
};
|
|
|
|
// DeltaFList-PUCCH ::= SEQUENCE
|
|
struct delta_flist_pucch_s {
|
|
struct delta_f_pucch_format1_opts {
|
|
enum options { delta_f_minus2, delta_f0, delta_f2, nulltype } value;
|
|
typedef int8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
int8_t to_number() const;
|
|
};
|
|
typedef enumerated<delta_f_pucch_format1_opts> delta_f_pucch_format1_e_;
|
|
struct delta_f_pucch_format1b_opts {
|
|
enum options { delta_f1, delta_f3, delta_f5, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<delta_f_pucch_format1b_opts> delta_f_pucch_format1b_e_;
|
|
struct delta_f_pucch_format2_opts {
|
|
enum options { delta_f_minus2, delta_f0, delta_f1, delta_f2, nulltype } value;
|
|
typedef int8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
int8_t to_number() const;
|
|
};
|
|
typedef enumerated<delta_f_pucch_format2_opts> delta_f_pucch_format2_e_;
|
|
struct delta_f_pucch_format2a_opts {
|
|
enum options { delta_f_minus2, delta_f0, delta_f2, nulltype } value;
|
|
typedef int8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
int8_t to_number() const;
|
|
};
|
|
typedef enumerated<delta_f_pucch_format2a_opts> delta_f_pucch_format2a_e_;
|
|
struct delta_f_pucch_format2b_opts {
|
|
enum options { delta_f_minus2, delta_f0, delta_f2, nulltype } value;
|
|
typedef int8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
int8_t to_number() const;
|
|
};
|
|
typedef enumerated<delta_f_pucch_format2b_opts> delta_f_pucch_format2b_e_;
|
|
|
|
// 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(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
bool operator==(const delta_flist_pucch_s& other) const;
|
|
bool operator!=(const delta_flist_pucch_s& other) const { return not(*this == other); }
|
|
};
|
|
|
|
// DeltaFList-SPUCCH-r15 ::= CHOICE
|
|
struct delta_flist_spucch_r15_c {
|
|
struct setup_s_ {
|
|
struct delta_f_slot_spucch_format1_r15_opts {
|
|
enum options {
|
|
delta_f_minus1,
|
|
delta_f0,
|
|
delta_f1,
|
|
delta_f2,
|
|
delta_f3,
|
|
delta_f4,
|
|
delta_f5,
|
|
delta_f6,
|
|
nulltype
|
|
} value;
|
|
typedef int8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
int8_t to_number() const;
|
|
};
|
|
typedef enumerated<delta_f_slot_spucch_format1_r15_opts> delta_f_slot_spucch_format1_r15_e_;
|
|
struct delta_f_slot_spucch_format1a_r15_opts {
|
|
enum options { delta_f1, delta_f2, delta_f3, delta_f4, delta_f5, delta_f6, delta_f7, delta_f8, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<delta_f_slot_spucch_format1a_r15_opts> delta_f_slot_spucch_format1a_r15_e_;
|
|
struct delta_f_slot_spucch_format1b_r15_opts {
|
|
enum options { delta_f3, delta_f4, delta_f5, delta_f6, delta_f7, delta_f8, delta_f9, delta_f10, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<delta_f_slot_spucch_format1b_r15_opts> delta_f_slot_spucch_format1b_r15_e_;
|
|
struct delta_f_slot_spucch_format3_r15_opts {
|
|
enum options { delta_f4, delta_f5, delta_f6, delta_f7, delta_f8, delta_f9, delta_f10, delta_f11, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<delta_f_slot_spucch_format3_r15_opts> delta_f_slot_spucch_format3_r15_e_;
|
|
struct delta_f_slot_spucch_rm_format4_r15_opts {
|
|
enum options {
|
|
delta_f13,
|
|
delta_f14,
|
|
delta_f15,
|
|
delta_f16,
|
|
delta_f17,
|
|
delta_f18,
|
|
delta_f19,
|
|
delta_f20,
|
|
nulltype
|
|
} value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<delta_f_slot_spucch_rm_format4_r15_opts> delta_f_slot_spucch_rm_format4_r15_e_;
|
|
struct delta_f_slot_spucch_tbcc_format4_r15_opts {
|
|
enum options {
|
|
delta_f10,
|
|
delta_f11,
|
|
delta_f12,
|
|
delta_f13,
|
|
delta_f14,
|
|
delta_f15,
|
|
delta_f16,
|
|
delta_f17,
|
|
nulltype
|
|
} value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<delta_f_slot_spucch_tbcc_format4_r15_opts> delta_f_slot_spucch_tbcc_format4_r15_e_;
|
|
struct delta_f_subslot_spucch_format1and1a_r15_opts {
|
|
enum options {
|
|
delta_f5,
|
|
delta_f6,
|
|
delta_f7,
|
|
delta_f8,
|
|
delta_f9,
|
|
delta_f10,
|
|
delta_f11,
|
|
delta_f12,
|
|
nulltype
|
|
} value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<delta_f_subslot_spucch_format1and1a_r15_opts> delta_f_subslot_spucch_format1and1a_r15_e_;
|
|
struct delta_f_subslot_spucch_format1b_r15_opts {
|
|
enum options {
|
|
delta_f6,
|
|
delta_f7,
|
|
delta_f8,
|
|
delta_f9,
|
|
delta_f10,
|
|
delta_f11,
|
|
delta_f12,
|
|
delta_f13,
|
|
nulltype
|
|
} value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<delta_f_subslot_spucch_format1b_r15_opts> delta_f_subslot_spucch_format1b_r15_e_;
|
|
struct delta_f_subslot_spucch_rm_format4_r15_opts {
|
|
enum options {
|
|
delta_f15,
|
|
delta_f16,
|
|
delta_f17,
|
|
delta_f18,
|
|
delta_f19,
|
|
delta_f20,
|
|
delta_f21,
|
|
delta_f22,
|
|
nulltype
|
|
} value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<delta_f_subslot_spucch_rm_format4_r15_opts> delta_f_subslot_spucch_rm_format4_r15_e_;
|
|
struct delta_f_subslot_spucch_tbcc_format4_r15_opts {
|
|
enum options {
|
|
delta_f10,
|
|
delta_f11,
|
|
delta_f12,
|
|
delta_f13,
|
|
delta_f14,
|
|
delta_f15,
|
|
delta_f16,
|
|
delta_f17,
|
|
nulltype
|
|
} value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<delta_f_subslot_spucch_tbcc_format4_r15_opts> delta_f_subslot_spucch_tbcc_format4_r15_e_;
|
|
|
|
// member variables
|
|
bool ext = false;
|
|
bool delta_f_slot_spucch_format1_r15_present = false;
|
|
bool delta_f_slot_spucch_format1a_r15_present = false;
|
|
bool delta_f_slot_spucch_format1b_r15_present = false;
|
|
bool delta_f_slot_spucch_format3_r15_present = false;
|
|
bool delta_f_slot_spucch_rm_format4_r15_present = false;
|
|
bool delta_f_slot_spucch_tbcc_format4_r15_present = false;
|
|
bool delta_f_subslot_spucch_format1and1a_r15_present = false;
|
|
bool delta_f_subslot_spucch_format1b_r15_present = false;
|
|
bool delta_f_subslot_spucch_rm_format4_r15_present = false;
|
|
bool delta_f_subslot_spucch_tbcc_format4_r15_present = false;
|
|
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;
|
|
// ...
|
|
};
|
|
using types = setup_e;
|
|
|
|
// choice methods
|
|
delta_flist_spucch_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;
|
|
bool operator==(const delta_flist_spucch_r15_c& other) const;
|
|
bool operator!=(const delta_flist_spucch_r15_c& other) const { return not(*this == other); }
|
|
// getters
|
|
setup_s_& setup()
|
|
{
|
|
assert_choice_type(types::setup, type_, "DeltaFList-SPUCCH-r15");
|
|
return c;
|
|
}
|
|
const setup_s_& setup() const
|
|
{
|
|
assert_choice_type(types::setup, type_, "DeltaFList-SPUCCH-r15");
|
|
return c;
|
|
}
|
|
void set_release();
|
|
setup_s_& set_setup();
|
|
|
|
private:
|
|
types type_;
|
|
setup_s_ c;
|
|
};
|
|
|
|
// EDT-PRACH-ParametersCE-r15 ::= SEQUENCE
|
|
struct edt_prach_params_ce_r15_s {
|
|
struct edt_prach_params_ce_r15_s_ {
|
|
struct prach_start_sf_r15_opts {
|
|
enum options { sf2, sf4, sf8, sf16, sf32, sf64, sf128, sf256, nulltype } value;
|
|
typedef uint16_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint16_t to_number() const;
|
|
};
|
|
typedef enumerated<prach_start_sf_r15_opts> prach_start_sf_r15_e_;
|
|
using mpdcch_nbs_to_monitor_r15_l_ = bounded_array<uint8_t, 2>;
|
|
|
|
// member variables
|
|
bool prach_start_sf_r15_present = false;
|
|
uint8_t prach_cfg_idx_r15 = 0;
|
|
uint8_t prach_freq_offset_r15 = 0;
|
|
prach_start_sf_r15_e_ prach_start_sf_r15;
|
|
mpdcch_nbs_to_monitor_r15_l_ mpdcch_nbs_to_monitor_r15;
|
|
};
|
|
|
|
// member variables
|
|
bool edt_prach_params_ce_r15_present = false;
|
|
edt_prach_params_ce_r15_s_ edt_prach_params_ce_r15;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
};
|
|
|
|
// N1PUCCH-AN-InfoList-r13 ::= SEQUENCE (SIZE (1..4)) OF INTEGER (0..2047)
|
|
using n1_pucch_an_info_list_r13_l = bounded_array<uint16_t, 4>;
|
|
|
|
// PRACH-ConfigInfo ::= SEQUENCE
|
|
struct prach_cfg_info_s {
|
|
uint8_t prach_cfg_idx = 0;
|
|
bool high_speed_flag = false;
|
|
uint8_t zero_correlation_zone_cfg = 0;
|
|
uint8_t prach_freq_offset = 0;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
bool operator==(const prach_cfg_info_s& other) const;
|
|
bool operator!=(const prach_cfg_info_s& other) const { return not(*this == other); }
|
|
};
|
|
|
|
// PRACH-ParametersListCE-r13 ::= SEQUENCE (SIZE (1..4)) OF PRACH-ParametersCE-r13
|
|
using prach_params_list_ce_r13_l = dyn_array<prach_params_ce_r13_s>;
|
|
|
|
// PowerRampingParameters ::= SEQUENCE
|
|
struct pwr_ramp_params_s {
|
|
struct pwr_ramp_step_opts {
|
|
enum options { db0, db2, db4, db6, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<pwr_ramp_step_opts> pwr_ramp_step_e_;
|
|
struct preamb_init_rx_target_pwr_opts {
|
|
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,
|
|
nulltype
|
|
} value;
|
|
typedef int8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
int8_t to_number() const;
|
|
};
|
|
typedef enumerated<preamb_init_rx_target_pwr_opts> preamb_init_rx_target_pwr_e_;
|
|
|
|
// 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(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
bool operator==(const pwr_ramp_params_s& other) const;
|
|
bool operator!=(const pwr_ramp_params_s& other) const { return not(*this == other); }
|
|
};
|
|
|
|
// PreambleTransMax ::= ENUMERATED
|
|
struct preamb_trans_max_opts {
|
|
enum options { n3, n4, n5, n6, n7, n8, n10, n20, n50, n100, n200, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<preamb_trans_max_opts> preamb_trans_max_e;
|
|
|
|
// RACH-CE-LevelInfoList-r13 ::= SEQUENCE (SIZE (1..4)) OF RACH-CE-LevelInfo-r13
|
|
using rach_ce_level_info_list_r13_l = dyn_array<rach_ce_level_info_r13_s>;
|
|
|
|
// RSRP-ThresholdsPrachInfoList-r13 ::= SEQUENCE (SIZE (1..3)) OF INTEGER (0..97)
|
|
using rsrp_thress_prach_info_list_r13_l = bounded_array<uint8_t, 3>;
|
|
|
|
// UL-ReferenceSignalsPUSCH ::= SEQUENCE
|
|
struct ul_ref_sigs_pusch_s {
|
|
bool group_hop_enabled = false;
|
|
uint8_t group_assign_pusch = 0;
|
|
bool seq_hop_enabled = false;
|
|
uint8_t cyclic_shift = 0;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
bool operator==(const ul_ref_sigs_pusch_s& other) const;
|
|
bool operator!=(const ul_ref_sigs_pusch_s& other) const { return not(*this == other); }
|
|
};
|
|
|
|
// BCCH-Config ::= SEQUENCE
|
|
struct bcch_cfg_s {
|
|
struct mod_period_coeff_opts {
|
|
enum options { n2, n4, n8, n16, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<mod_period_coeff_opts> mod_period_coeff_e_;
|
|
|
|
// member variables
|
|
mod_period_coeff_e_ mod_period_coeff;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_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(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
};
|
|
|
|
// FreqHoppingParameters-r13 ::= SEQUENCE
|
|
struct freq_hop_params_r13_s {
|
|
struct dummy_opts {
|
|
enum options { nb2, nb4, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<dummy_opts> dummy_e_;
|
|
struct dummy2_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
|
|
dummy2_c_() = default;
|
|
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(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_, "dummy2");
|
|
return c.get<interv_fdd_r13_e_>();
|
|
}
|
|
interv_tdd_r13_e_& interv_tdd_r13()
|
|
{
|
|
assert_choice_type(types::interv_tdd_r13, type_, "dummy2");
|
|
return c.get<interv_tdd_r13_e_>();
|
|
}
|
|
const interv_fdd_r13_e_& interv_fdd_r13() const
|
|
{
|
|
assert_choice_type(types::interv_fdd_r13, type_, "dummy2");
|
|
return c.get<interv_fdd_r13_e_>();
|
|
}
|
|
const interv_tdd_r13_e_& interv_tdd_r13() const
|
|
{
|
|
assert_choice_type(types::interv_tdd_r13, type_, "dummy2");
|
|
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 dummy3_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
|
|
dummy3_c_() = default;
|
|
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(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_, "dummy3");
|
|
return c.get<interv_fdd_r13_e_>();
|
|
}
|
|
interv_tdd_r13_e_& interv_tdd_r13()
|
|
{
|
|
assert_choice_type(types::interv_tdd_r13, type_, "dummy3");
|
|
return c.get<interv_tdd_r13_e_>();
|
|
}
|
|
const interv_fdd_r13_e_& interv_fdd_r13() const
|
|
{
|
|
assert_choice_type(types::interv_fdd_r13, type_, "dummy3");
|
|
return c.get<interv_fdd_r13_e_>();
|
|
}
|
|
const interv_tdd_r13_e_& interv_tdd_r13() const
|
|
{
|
|
assert_choice_type(types::interv_tdd_r13, type_, "dummy3");
|
|
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_ul_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_ul_hop_cfg_common_mode_a_r13_c_() = default;
|
|
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(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-ULHoppingConfigCommonModeA-r13");
|
|
return c.get<interv_fdd_r13_e_>();
|
|
}
|
|
interv_tdd_r13_e_& interv_tdd_r13()
|
|
{
|
|
assert_choice_type(types::interv_tdd_r13, type_, "interval-ULHoppingConfigCommonModeA-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-ULHoppingConfigCommonModeA-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-ULHoppingConfigCommonModeA-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_ul_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_ul_hop_cfg_common_mode_b_r13_c_() = default;
|
|
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(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-ULHoppingConfigCommonModeB-r13");
|
|
return c.get<interv_fdd_r13_e_>();
|
|
}
|
|
interv_tdd_r13_e_& interv_tdd_r13()
|
|
{
|
|
assert_choice_type(types::interv_tdd_r13, type_, "interval-ULHoppingConfigCommonModeB-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-ULHoppingConfigCommonModeB-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-ULHoppingConfigCommonModeB-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 dummy_present = false;
|
|
bool dummy2_present = false;
|
|
bool dummy3_present = false;
|
|
bool interv_ul_hop_cfg_common_mode_a_r13_present = false;
|
|
bool interv_ul_hop_cfg_common_mode_b_r13_present = false;
|
|
bool dummy4_present = false;
|
|
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 = 1;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
};
|
|
|
|
// HighSpeedConfig-r14 ::= SEQUENCE
|
|
struct high_speed_cfg_r14_s {
|
|
bool high_speed_enhanced_meas_flag_r14_present = false;
|
|
bool high_speed_enhanced_demod_flag_r14_present = false;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_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(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
};
|
|
|
|
// PCCH-Config ::= SEQUENCE
|
|
struct pcch_cfg_s {
|
|
struct default_paging_cycle_opts {
|
|
enum options { rf32, rf64, rf128, rf256, nulltype } value;
|
|
typedef uint16_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint16_t to_number() const;
|
|
};
|
|
typedef enumerated<default_paging_cycle_opts> default_paging_cycle_e_;
|
|
struct nb_opts {
|
|
enum options {
|
|
four_t,
|
|
two_t,
|
|
one_t,
|
|
half_t,
|
|
quarter_t,
|
|
one_eighth_t,
|
|
one_sixteenth_t,
|
|
one_thirty_second_t,
|
|
nulltype
|
|
} value;
|
|
typedef float number_type;
|
|
|
|
const char* to_string() const;
|
|
float to_number() const;
|
|
const char* to_number_string() const;
|
|
};
|
|
typedef enumerated<nb_opts> nb_e_;
|
|
|
|
// member variables
|
|
default_paging_cycle_e_ default_paging_cycle;
|
|
nb_e_ nb;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
};
|
|
|
|
// PCCH-Config-v1310 ::= SEQUENCE
|
|
struct pcch_cfg_v1310_s {
|
|
struct mpdcch_num_repeat_paging_r13_opts {
|
|
enum options { r1, r2, r4, r8, r16, r32, r64, r128, r256, nulltype } value;
|
|
typedef uint16_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint16_t to_number() const;
|
|
};
|
|
typedef enumerated<mpdcch_num_repeat_paging_r13_opts> mpdcch_num_repeat_paging_r13_e_;
|
|
struct nb_v1310_opts {
|
|
enum options { one64th_t, one128th_t, one256th_t, nulltype } value;
|
|
typedef uint16_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint16_t to_number() const;
|
|
};
|
|
typedef enumerated<nb_v1310_opts> nb_v1310_e_;
|
|
|
|
// member variables
|
|
bool nb_v1310_present = false;
|
|
uint8_t paging_narrow_bands_r13 = 1;
|
|
mpdcch_num_repeat_paging_r13_e_ mpdcch_num_repeat_paging_r13;
|
|
nb_v1310_e_ nb_v1310;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
};
|
|
|
|
// PDSCH-ConfigCommon ::= SEQUENCE
|
|
struct pdsch_cfg_common_s {
|
|
int8_t ref_sig_pwr = -60;
|
|
uint8_t p_b = 0;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
bool operator==(const pdsch_cfg_common_s& other) const;
|
|
bool operator!=(const pdsch_cfg_common_s& other) const { return not(*this == other); }
|
|
};
|
|
|
|
// PDSCH-ConfigCommon-v1310 ::= SEQUENCE
|
|
struct pdsch_cfg_common_v1310_s {
|
|
struct pdsch_max_num_repeat_cemode_a_r13_opts {
|
|
enum options { r16, r32, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<pdsch_max_num_repeat_cemode_a_r13_opts> pdsch_max_num_repeat_cemode_a_r13_e_;
|
|
struct pdsch_max_num_repeat_cemode_b_r13_opts {
|
|
enum options { r192, r256, r384, r512, r768, r1024, r1536, r2048, nulltype } value;
|
|
typedef uint16_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint16_t to_number() const;
|
|
};
|
|
typedef enumerated<pdsch_max_num_repeat_cemode_b_r13_opts> pdsch_max_num_repeat_cemode_b_r13_e_;
|
|
|
|
// member variables
|
|
bool pdsch_max_num_repeat_cemode_a_r13_present = false;
|
|
bool pdsch_max_num_repeat_cemode_b_r13_present = false;
|
|
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
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
};
|
|
|
|
// PRACH-Config-v1430 ::= SEQUENCE
|
|
struct prach_cfg_v1430_s {
|
|
uint16_t root_seq_idx_high_speed_r14 = 0;
|
|
uint8_t zero_correlation_zone_cfg_high_speed_r14 = 0;
|
|
uint8_t prach_cfg_idx_high_speed_r14 = 0;
|
|
uint8_t prach_freq_offset_high_speed_r14 = 0;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
bool operator==(const prach_cfg_v1430_s& other) const;
|
|
bool operator!=(const prach_cfg_v1430_s& other) const { return not(*this == other); }
|
|
};
|
|
|
|
// PRACH-ConfigSIB ::= SEQUENCE
|
|
struct prach_cfg_sib_s {
|
|
uint16_t root_seq_idx = 0;
|
|
prach_cfg_info_s prach_cfg_info;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_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_opts {
|
|
enum options { v1, v1dot5, v2, v2dot5, v4, v5, v8, v10, nulltype } value;
|
|
typedef float number_type;
|
|
|
|
const char* to_string() const;
|
|
float to_number() const;
|
|
const char* to_number_string() const;
|
|
};
|
|
typedef enumerated<fdd_r13_opts> fdd_r13_e_;
|
|
struct tdd_r13_opts {
|
|
enum options { v1, v2, v4, v5, v8, v10, v20, spare, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<tdd_r13_opts> tdd_r13_e_;
|
|
struct types_opts {
|
|
enum options { fdd_r13, tdd_r13, nulltype } value;
|
|
|
|
const char* to_string() const;
|
|
};
|
|
typedef enumerated<types_opts> types;
|
|
|
|
// choice methods
|
|
mpdcch_start_sf_css_ra_r13_c_() = default;
|
|
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(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
// getters
|
|
fdd_r13_e_& fdd_r13()
|
|
{
|
|
assert_choice_type(types::fdd_r13, type_, "mpdcch-startSF-CSS-RA-r13");
|
|
return c.get<fdd_r13_e_>();
|
|
}
|
|
tdd_r13_e_& tdd_r13()
|
|
{
|
|
assert_choice_type(types::tdd_r13, type_, "mpdcch-startSF-CSS-RA-r13");
|
|
return c.get<tdd_r13_e_>();
|
|
}
|
|
const fdd_r13_e_& fdd_r13() const
|
|
{
|
|
assert_choice_type(types::fdd_r13, type_, "mpdcch-startSF-CSS-RA-r13");
|
|
return c.get<fdd_r13_e_>();
|
|
}
|
|
const tdd_r13_e_& tdd_r13() const
|
|
{
|
|
assert_choice_type(types::tdd_r13, type_, "mpdcch-startSF-CSS-RA-r13");
|
|
return c.get<tdd_r13_e_>();
|
|
}
|
|
fdd_r13_e_& set_fdd_r13();
|
|
tdd_r13_e_& set_tdd_r13();
|
|
|
|
private:
|
|
types type_;
|
|
pod_choice_buffer_t c;
|
|
|
|
void destroy_();
|
|
};
|
|
|
|
// member variables
|
|
bool mpdcch_start_sf_css_ra_r13_present = false;
|
|
bool prach_hop_offset_r13_present = false;
|
|
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 = 0;
|
|
prach_params_list_ce_r13_l prach_params_list_ce_r13;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
};
|
|
|
|
// PRACH-ConfigSIB-v1530 ::= SEQUENCE
|
|
struct prach_cfg_sib_v1530_s {
|
|
using edt_prach_params_list_ce_r15_l_ = dyn_array<edt_prach_params_ce_r15_s>;
|
|
|
|
// 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(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
};
|
|
|
|
// PUCCH-ConfigCommon ::= SEQUENCE
|
|
struct pucch_cfg_common_s {
|
|
struct delta_pucch_shift_opts {
|
|
enum options { ds1, ds2, ds3, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<delta_pucch_shift_opts> delta_pucch_shift_e_;
|
|
|
|
// member variables
|
|
delta_pucch_shift_e_ delta_pucch_shift;
|
|
uint8_t nrb_cqi = 0;
|
|
uint8_t ncs_an = 0;
|
|
uint16_t n1_pucch_an = 0;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
bool operator==(const pucch_cfg_common_s& other) const;
|
|
bool operator!=(const pucch_cfg_common_s& other) const { return not(*this == other); }
|
|
};
|
|
|
|
// PUCCH-ConfigCommon-v1310 ::= SEQUENCE
|
|
struct pucch_cfg_common_v1310_s {
|
|
struct pucch_num_repeat_ce_msg4_level0_r13_opts {
|
|
enum options { n1, n2, n4, n8, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<pucch_num_repeat_ce_msg4_level0_r13_opts> pucch_num_repeat_ce_msg4_level0_r13_e_;
|
|
struct pucch_num_repeat_ce_msg4_level1_r13_opts {
|
|
enum options { n1, n2, n4, n8, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<pucch_num_repeat_ce_msg4_level1_r13_opts> pucch_num_repeat_ce_msg4_level1_r13_e_;
|
|
struct pucch_num_repeat_ce_msg4_level2_r13_opts {
|
|
enum options { n4, n8, n16, n32, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<pucch_num_repeat_ce_msg4_level2_r13_opts> pucch_num_repeat_ce_msg4_level2_r13_e_;
|
|
struct pucch_num_repeat_ce_msg4_level3_r13_opts {
|
|
enum options { n4, n8, n16, n32, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<pucch_num_repeat_ce_msg4_level3_r13_opts> pucch_num_repeat_ce_msg4_level3_r13_e_;
|
|
|
|
// member variables
|
|
bool n1_pucch_an_info_list_r13_present = false;
|
|
bool pucch_num_repeat_ce_msg4_level0_r13_present = false;
|
|
bool pucch_num_repeat_ce_msg4_level1_r13_present = false;
|
|
bool pucch_num_repeat_ce_msg4_level2_r13_present = false;
|
|
bool pucch_num_repeat_ce_msg4_level3_r13_present = false;
|
|
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
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_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_opts {
|
|
enum options { n64, n128, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<pucch_num_repeat_ce_msg4_level3_r14_opts> pucch_num_repeat_ce_msg4_level3_r14_e_;
|
|
|
|
// member variables
|
|
bool pucch_num_repeat_ce_msg4_level3_r14_present = false;
|
|
pucch_num_repeat_ce_msg4_level3_r14_e_ pucch_num_repeat_ce_msg4_level3_r14;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_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_opts {
|
|
enum options { inter_sub_frame, intra_and_inter_sub_frame, nulltype } value;
|
|
|
|
const char* to_string() const;
|
|
};
|
|
typedef enumerated<hop_mode_opts> hop_mode_e_;
|
|
|
|
// member variables
|
|
uint8_t n_sb = 1;
|
|
hop_mode_e_ hop_mode;
|
|
uint8_t pusch_hop_offset = 0;
|
|
bool enable64_qam = false;
|
|
};
|
|
|
|
// 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(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
bool operator==(const pusch_cfg_common_s& other) const;
|
|
bool operator!=(const pusch_cfg_common_s& other) const { return not(*this == other); }
|
|
};
|
|
|
|
// PUSCH-ConfigCommon-v1270 ::= SEQUENCE
|
|
struct pusch_cfg_common_v1270_s {
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
bool operator==(const pusch_cfg_common_v1270_s& other) const;
|
|
bool operator!=(const pusch_cfg_common_v1270_s& other) const { return not(*this == other); }
|
|
};
|
|
|
|
// PUSCH-ConfigCommon-v1310 ::= SEQUENCE
|
|
struct pusch_cfg_common_v1310_s {
|
|
struct pusch_max_num_repeat_cemode_a_r13_opts {
|
|
enum options { r8, r16, r32, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<pusch_max_num_repeat_cemode_a_r13_opts> pusch_max_num_repeat_cemode_a_r13_e_;
|
|
struct pusch_max_num_repeat_cemode_b_r13_opts {
|
|
enum options { r192, r256, r384, r512, r768, r1024, r1536, r2048, nulltype } value;
|
|
typedef uint16_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint16_t to_number() const;
|
|
};
|
|
typedef enumerated<pusch_max_num_repeat_cemode_b_r13_opts> pusch_max_num_repeat_cemode_b_r13_e_;
|
|
|
|
// member variables
|
|
bool pusch_max_num_repeat_cemode_a_r13_present = false;
|
|
bool pusch_max_num_repeat_cemode_b_r13_present = false;
|
|
bool pusch_hop_offset_v1310_present = false;
|
|
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 = 1;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_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_opts {
|
|
enum options { n4, n8, n12, n16, n20, n24, n28, n32, n36, n40, n44, n48, n52, n56, n60, n64, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<nof_ra_preambs_opts> nof_ra_preambs_e_;
|
|
struct preambs_group_a_cfg_s_ {
|
|
struct size_of_ra_preambs_group_a_opts {
|
|
enum options { n4, n8, n12, n16, n20, n24, n28, n32, n36, n40, n44, n48, n52, n56, n60, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<size_of_ra_preambs_group_a_opts> size_of_ra_preambs_group_a_e_;
|
|
struct msg_size_group_a_opts {
|
|
enum options { b56, b144, b208, b256, nulltype } value;
|
|
typedef uint16_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint16_t to_number() const;
|
|
};
|
|
typedef enumerated<msg_size_group_a_opts> msg_size_group_a_e_;
|
|
struct msg_pwr_offset_group_b_opts {
|
|
enum options { minusinfinity, db0, db5, db8, db10, db12, db15, db18, nulltype } value;
|
|
typedef int8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
int8_t to_number() const;
|
|
};
|
|
typedef enumerated<msg_pwr_offset_group_b_opts> msg_pwr_offset_group_b_e_;
|
|
|
|
// member variables
|
|
bool ext = false;
|
|
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;
|
|
// ...
|
|
};
|
|
|
|
// member variables
|
|
bool preambs_group_a_cfg_present = false;
|
|
nof_ra_preambs_e_ nof_ra_preambs;
|
|
preambs_group_a_cfg_s_ preambs_group_a_cfg;
|
|
};
|
|
struct ra_supervision_info_s_ {
|
|
struct ra_resp_win_size_opts {
|
|
enum options { sf2, sf3, sf4, sf5, sf6, sf7, sf8, sf10, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<ra_resp_win_size_opts> ra_resp_win_size_e_;
|
|
struct mac_contention_resolution_timer_opts {
|
|
enum options { sf8, sf16, sf24, sf32, sf40, sf48, sf56, sf64, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<mac_contention_resolution_timer_opts> mac_contention_resolution_timer_e_;
|
|
|
|
// 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 = false;
|
|
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 = 1;
|
|
// ...
|
|
// group 0
|
|
bool preamb_trans_max_ce_r13_present = false;
|
|
preamb_trans_max_e preamb_trans_max_ce_r13;
|
|
copy_ptr<rach_ce_level_info_list_r13_l> rach_ce_level_info_list_r13;
|
|
// group 1
|
|
bool edt_small_tbs_subset_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;
|
|
};
|
|
|
|
// RACH-ConfigCommon-v1250 ::= SEQUENCE
|
|
struct rach_cfg_common_v1250_s {
|
|
struct tx_fail_params_r12_s_ {
|
|
struct conn_est_fail_count_r12_opts {
|
|
enum options { n1, n2, n3, n4, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<conn_est_fail_count_r12_opts> conn_est_fail_count_r12_e_;
|
|
struct conn_est_fail_offset_validity_r12_opts {
|
|
enum options { s30, s60, s120, s240, s300, s420, s600, s900, nulltype } value;
|
|
typedef uint16_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint16_t to_number() const;
|
|
};
|
|
typedef enumerated<conn_est_fail_offset_validity_r12_opts> conn_est_fail_offset_validity_r12_e_;
|
|
|
|
// member variables
|
|
bool conn_est_fail_offset_r12_present = false;
|
|
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 = 0;
|
|
};
|
|
|
|
// member variables
|
|
tx_fail_params_r12_s_ tx_fail_params_r12;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
};
|
|
|
|
// RSS-Config-r15 ::= SEQUENCE
|
|
struct rss_cfg_r15_s {
|
|
struct dur_r15_opts {
|
|
enum options { sf8, sf16, sf32, sf40, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<dur_r15_opts> dur_r15_e_;
|
|
struct periodicity_r15_opts {
|
|
enum options { ms160, ms320, ms640, ms1280, nulltype } value;
|
|
typedef uint16_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint16_t to_number() const;
|
|
};
|
|
typedef enumerated<periodicity_r15_opts> periodicity_r15_e_;
|
|
struct pwr_boost_r15_opts {
|
|
enum options { db0, db3, db4dot8, db6, nulltype } value;
|
|
typedef float number_type;
|
|
|
|
const char* to_string() const;
|
|
float to_number() const;
|
|
const char* to_number_string() const;
|
|
};
|
|
typedef enumerated<pwr_boost_r15_opts> pwr_boost_r15_e_;
|
|
|
|
// member variables
|
|
dur_r15_e_ dur_r15;
|
|
uint8_t freq_location_r15 = 0;
|
|
periodicity_r15_e_ periodicity_r15;
|
|
pwr_boost_r15_e_ pwr_boost_r15;
|
|
uint8_t time_offset_r15 = 0;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
};
|
|
|
|
// SoundingRS-UL-ConfigCommon ::= CHOICE
|
|
struct srs_ul_cfg_common_c {
|
|
struct setup_s_ {
|
|
struct srs_bw_cfg_opts {
|
|
enum options { bw0, bw1, bw2, bw3, bw4, bw5, bw6, bw7, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<srs_bw_cfg_opts> srs_bw_cfg_e_;
|
|
struct srs_sf_cfg_opts {
|
|
enum options {
|
|
sc0,
|
|
sc1,
|
|
sc2,
|
|
sc3,
|
|
sc4,
|
|
sc5,
|
|
sc6,
|
|
sc7,
|
|
sc8,
|
|
sc9,
|
|
sc10,
|
|
sc11,
|
|
sc12,
|
|
sc13,
|
|
sc14,
|
|
sc15,
|
|
nulltype
|
|
} value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<srs_sf_cfg_opts> srs_sf_cfg_e_;
|
|
|
|
// member variables
|
|
bool srs_max_up_pts_present = false;
|
|
srs_bw_cfg_e_ srs_bw_cfg;
|
|
srs_sf_cfg_e_ srs_sf_cfg;
|
|
bool ack_nack_srs_simul_tx = false;
|
|
};
|
|
using types = setup_e;
|
|
|
|
// choice methods
|
|
srs_ul_cfg_common_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;
|
|
bool operator==(const srs_ul_cfg_common_c& other) const;
|
|
bool operator!=(const srs_ul_cfg_common_c& other) const { return not(*this == other); }
|
|
// getters
|
|
setup_s_& setup()
|
|
{
|
|
assert_choice_type(types::setup, type_, "SoundingRS-UL-ConfigCommon");
|
|
return c;
|
|
}
|
|
const setup_s_& setup() const
|
|
{
|
|
assert_choice_type(types::setup, type_, "SoundingRS-UL-ConfigCommon");
|
|
return c;
|
|
}
|
|
void set_release();
|
|
setup_s_& set_setup();
|
|
|
|
private:
|
|
types type_;
|
|
setup_s_ c;
|
|
};
|
|
|
|
// UL-CyclicPrefixLength ::= ENUMERATED
|
|
struct ul_cp_len_opts {
|
|
enum options { len1, len2, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<ul_cp_len_opts> ul_cp_len_e;
|
|
|
|
// UplinkPowerControlCommon ::= SEQUENCE
|
|
struct ul_pwr_ctrl_common_s {
|
|
int8_t p0_nominal_pusch = -126;
|
|
alpha_r12_e alpha;
|
|
int8_t p0_nominal_pucch = -127;
|
|
delta_flist_pucch_s delta_flist_pucch;
|
|
int8_t delta_preamb_msg3 = -1;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_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_opts {
|
|
enum options {
|
|
delta_f_minus1,
|
|
delta_f0,
|
|
delta_f1,
|
|
delta_f2,
|
|
delta_f3,
|
|
delta_f4,
|
|
delta_f5,
|
|
delta_f6,
|
|
nulltype
|
|
} value;
|
|
typedef int8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
int8_t to_number() const;
|
|
};
|
|
typedef enumerated<delta_f_pucch_format3_r10_opts> delta_f_pucch_format3_r10_e_;
|
|
struct delta_f_pucch_format1b_cs_r10_opts {
|
|
enum options { delta_f1, delta_f2, spare2, spare1, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<delta_f_pucch_format1b_cs_r10_opts> delta_f_pucch_format1b_cs_r10_e_;
|
|
|
|
// 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(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
};
|
|
|
|
// UplinkPowerControlCommon-v1530 ::= SEQUENCE
|
|
struct ul_pwr_ctrl_common_v1530_s {
|
|
delta_flist_spucch_r15_c delta_flist_spucch_r15;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
bool operator==(const ul_pwr_ctrl_common_v1530_s& other) const;
|
|
bool operator!=(const ul_pwr_ctrl_common_v1530_s& other) const { return not(*this == other); }
|
|
};
|
|
|
|
// WUS-Config-r15 ::= SEQUENCE
|
|
struct wus_cfg_r15_s {
|
|
struct max_dur_factor_r15_opts {
|
|
enum options { one32th, one16th, one8th, one4th, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<max_dur_factor_r15_opts> max_dur_factor_r15_e_;
|
|
struct num_pos_r15_opts {
|
|
enum options { n1, n2, n4, spare1, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<num_pos_r15_opts> num_pos_r15_e_;
|
|
struct freq_location_r15_opts {
|
|
enum options { n0, n2, n4, spare1, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<freq_location_r15_opts> freq_location_r15_e_;
|
|
struct time_offset_drx_r15_opts {
|
|
enum options { ms40, ms80, ms160, ms240, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<time_offset_drx_r15_opts> time_offset_drx_r15_e_;
|
|
struct time_offset_e_drx_short_r15_opts {
|
|
enum options { ms40, ms80, ms160, ms240, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<time_offset_e_drx_short_r15_opts> time_offset_e_drx_short_r15_e_;
|
|
struct time_offset_e_drx_long_r15_opts {
|
|
enum options { ms1000, ms2000, nulltype } value;
|
|
typedef uint16_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint16_t to_number() const;
|
|
};
|
|
typedef enumerated<time_offset_e_drx_long_r15_opts> time_offset_e_drx_long_r15_e_;
|
|
|
|
// member variables
|
|
bool num_pos_r15_present = false;
|
|
bool time_offset_e_drx_long_r15_present = false;
|
|
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
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
};
|
|
|
|
// WUS-Config-v1560 ::= SEQUENCE
|
|
struct wus_cfg_v1560_s {
|
|
struct pwr_boost_r15_opts {
|
|
enum options { db0, db1dot8, db3, db4dot8, nulltype } value;
|
|
typedef float number_type;
|
|
|
|
const char* to_string() const;
|
|
float to_number() const;
|
|
const char* to_number_string() const;
|
|
};
|
|
typedef enumerated<pwr_boost_r15_opts> pwr_boost_r15_e_;
|
|
|
|
// member variables
|
|
pwr_boost_r15_e_ pwr_boost_r15;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
};
|
|
|
|
// RadioResourceConfigCommonSIB ::= SEQUENCE
|
|
struct rr_cfg_common_sib_s {
|
|
bool ext = false;
|
|
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
|
|
copy_ptr<ul_pwr_ctrl_common_v1020_s> ul_pwr_ctrl_common_v1020;
|
|
// group 1
|
|
copy_ptr<rach_cfg_common_v1250_s> rach_cfg_common_v1250;
|
|
// group 2
|
|
copy_ptr<pusch_cfg_common_v1270_s> pusch_cfg_common_v1270;
|
|
// group 3
|
|
copy_ptr<bcch_cfg_v1310_s> bcch_cfg_v1310;
|
|
copy_ptr<pcch_cfg_v1310_s> pcch_cfg_v1310;
|
|
copy_ptr<freq_hop_params_r13_s> freq_hop_params_r13;
|
|
copy_ptr<pdsch_cfg_common_v1310_s> pdsch_cfg_common_v1310;
|
|
copy_ptr<pusch_cfg_common_v1310_s> pusch_cfg_common_v1310;
|
|
copy_ptr<prach_cfg_sib_v1310_s> prach_cfg_common_v1310;
|
|
copy_ptr<pucch_cfg_common_v1310_s> pucch_cfg_common_v1310;
|
|
// group 4
|
|
copy_ptr<high_speed_cfg_r14_s> high_speed_cfg_r14;
|
|
copy_ptr<prach_cfg_v1430_s> prach_cfg_v1430;
|
|
copy_ptr<pucch_cfg_common_v1430_s> pucch_cfg_common_v1430;
|
|
// group 5
|
|
copy_ptr<prach_cfg_sib_v1530_s> prach_cfg_v1530;
|
|
copy_ptr<rss_cfg_r15_s> ce_rss_cfg_r15;
|
|
copy_ptr<wus_cfg_r15_s> wus_cfg_r15;
|
|
copy_ptr<high_speed_cfg_v1530_s> high_speed_cfg_v1530;
|
|
// group 6
|
|
copy_ptr<ul_pwr_ctrl_common_v1530_s> ul_pwr_ctrl_common_v1540;
|
|
// group 7
|
|
copy_ptr<wus_cfg_v1560_s> wus_cfg_v1560;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
};
|
|
|
|
// TimeAlignmentTimer ::= ENUMERATED
|
|
struct time_align_timer_opts {
|
|
enum options { sf500, sf750, sf1280, sf1920, sf2560, sf5120, sf10240, infinity, nulltype } value;
|
|
typedef int16_t number_type;
|
|
|
|
const char* to_string() const;
|
|
int16_t to_number() const;
|
|
};
|
|
typedef enumerated<time_align_timer_opts> time_align_timer_e;
|
|
|
|
// AntennaInfoCommon ::= SEQUENCE
|
|
struct ant_info_common_s {
|
|
struct ant_ports_count_opts {
|
|
enum options { an1, an2, an4, spare1, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<ant_ports_count_opts> ant_ports_count_e_;
|
|
|
|
// member variables
|
|
ant_ports_count_e_ ant_ports_count;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
bool operator==(const ant_info_common_s& other) const;
|
|
bool operator!=(const ant_info_common_s& other) const { return not(*this == other); }
|
|
};
|
|
|
|
// HighSpeedConfigSCell-r14 ::= SEQUENCE
|
|
struct high_speed_cfg_scell_r14_s {
|
|
bool high_speed_enhanced_demod_flag_r14_present = false;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
bool operator==(const high_speed_cfg_scell_r14_s& other) const;
|
|
bool operator!=(const high_speed_cfg_scell_r14_s& other) const { return not(*this == other); }
|
|
};
|
|
|
|
// PRACH-Config ::= SEQUENCE
|
|
struct prach_cfg_s {
|
|
bool prach_cfg_info_present = false;
|
|
uint16_t root_seq_idx = 0;
|
|
prach_cfg_info_s prach_cfg_info;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
bool operator==(const prach_cfg_s& other) const;
|
|
bool operator!=(const prach_cfg_s& other) const { return not(*this == other); }
|
|
};
|
|
|
|
// PRACH-ConfigSCell-r10 ::= SEQUENCE
|
|
struct prach_cfg_scell_r10_s {
|
|
uint8_t prach_cfg_idx_r10 = 0;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
bool operator==(const prach_cfg_scell_r10_s& other) const;
|
|
bool operator!=(const prach_cfg_scell_r10_s& other) const { return not(*this == other); }
|
|
};
|
|
|
|
// RACH-ConfigCommonSCell-r11 ::= SEQUENCE
|
|
struct rach_cfg_common_scell_r11_s {
|
|
struct ra_supervision_info_r11_s_ {
|
|
preamb_trans_max_e preamb_trans_max_r11;
|
|
};
|
|
|
|
// member variables
|
|
bool ext = false;
|
|
pwr_ramp_params_s pwr_ramp_params_r11;
|
|
ra_supervision_info_r11_s_ ra_supervision_info_r11;
|
|
// ...
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
bool operator==(const rach_cfg_common_scell_r11_s& other) const;
|
|
bool operator!=(const rach_cfg_common_scell_r11_s& other) const { return not(*this == other); }
|
|
};
|
|
|
|
// UplinkPowerControlCommonPUSCH-LessCell-v1430 ::= SEQUENCE
|
|
struct ul_pwr_ctrl_common_pusch_less_cell_v1430_s {
|
|
bool p0_nominal_periodic_srs_r14_present = false;
|
|
bool p0_nominal_aperiodic_srs_r14_present = false;
|
|
bool alpha_srs_r14_present = false;
|
|
int8_t p0_nominal_periodic_srs_r14 = -126;
|
|
int8_t p0_nominal_aperiodic_srs_r14 = -126;
|
|
alpha_r12_e alpha_srs_r14;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
bool operator==(const ul_pwr_ctrl_common_pusch_less_cell_v1430_s& other) const;
|
|
bool operator!=(const ul_pwr_ctrl_common_pusch_less_cell_v1430_s& other) const { return not(*this == other); }
|
|
};
|
|
|
|
// UplinkPowerControlCommonSCell-r10 ::= SEQUENCE
|
|
struct ul_pwr_ctrl_common_scell_r10_s {
|
|
int8_t p0_nominal_pusch_r10 = -126;
|
|
alpha_r12_e alpha_r10;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
bool operator==(const ul_pwr_ctrl_common_scell_r10_s& other) const;
|
|
bool operator!=(const ul_pwr_ctrl_common_scell_r10_s& other) const { return not(*this == other); }
|
|
};
|
|
|
|
// UplinkPowerControlCommonSCell-v1130 ::= SEQUENCE
|
|
struct ul_pwr_ctrl_common_scell_v1130_s {
|
|
int8_t delta_preamb_msg3_r11 = -1;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
bool operator==(const ul_pwr_ctrl_common_scell_v1130_s& other) const;
|
|
bool operator!=(const ul_pwr_ctrl_common_scell_v1130_s& other) const { return not(*this == other); }
|
|
};
|
|
|
|
// UplinkPowerControlCommonSCell-v1310 ::= SEQUENCE
|
|
struct ul_pwr_ctrl_common_scell_v1310_s {
|
|
struct delta_f_pucch_format3_r12_opts {
|
|
enum options {
|
|
delta_f_minus1,
|
|
delta_f0,
|
|
delta_f1,
|
|
delta_f2,
|
|
delta_f3,
|
|
delta_f4,
|
|
delta_f5,
|
|
delta_f6,
|
|
nulltype
|
|
} value;
|
|
typedef int8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
int8_t to_number() const;
|
|
};
|
|
typedef enumerated<delta_f_pucch_format3_r12_opts> delta_f_pucch_format3_r12_e_;
|
|
struct delta_f_pucch_format1b_cs_r12_opts {
|
|
enum options { delta_f1, delta_f2, spare2, spare1, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<delta_f_pucch_format1b_cs_r12_opts> delta_f_pucch_format1b_cs_r12_e_;
|
|
struct delta_f_pucch_format4_r13_opts {
|
|
enum options {
|
|
delta_f16,
|
|
delta_f15,
|
|
delta_f14,
|
|
delta_f13,
|
|
delta_f12,
|
|
delta_f11,
|
|
delta_f10,
|
|
spare1,
|
|
nulltype
|
|
} value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<delta_f_pucch_format4_r13_opts> delta_f_pucch_format4_r13_e_;
|
|
struct delta_f_pucch_format5_minus13_opts {
|
|
enum options { delta_f13, delta_f12, delta_f11, delta_f10, delta_f9, delta_f8, delta_f7, spare1, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<delta_f_pucch_format5_minus13_opts> delta_f_pucch_format5_minus13_e_;
|
|
|
|
// member variables
|
|
bool delta_f_pucch_format3_r12_present = false;
|
|
bool delta_f_pucch_format1b_cs_r12_present = false;
|
|
bool delta_f_pucch_format4_r13_present = false;
|
|
bool delta_f_pucch_format5_minus13_present = false;
|
|
int8_t p0_nominal_pucch = -127;
|
|
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
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
bool operator==(const ul_pwr_ctrl_common_scell_v1310_s& other) const;
|
|
bool operator!=(const ul_pwr_ctrl_common_scell_v1310_s& other) const { return not(*this == other); }
|
|
};
|
|
|
|
// RadioResourceConfigCommonSCell-r10 ::= SEQUENCE
|
|
struct rr_cfg_common_scell_r10_s {
|
|
struct non_ul_cfg_r10_s_ {
|
|
struct dl_bw_r10_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_r10_opts> dl_bw_r10_e_;
|
|
|
|
// member variables
|
|
bool mbsfn_sf_cfg_list_r10_present = false;
|
|
bool tdd_cfg_r10_present = false;
|
|
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;
|
|
};
|
|
struct ul_cfg_r10_s_ {
|
|
struct ul_freq_info_r10_s_ {
|
|
struct ul_bw_r10_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_r10_opts> ul_bw_r10_e_;
|
|
|
|
// member variables
|
|
bool ul_carrier_freq_r10_present = false;
|
|
bool ul_bw_r10_present = false;
|
|
uint32_t ul_carrier_freq_r10 = 0;
|
|
ul_bw_r10_e_ ul_bw_r10;
|
|
uint8_t add_spec_emission_scell_r10 = 1;
|
|
};
|
|
|
|
// member variables
|
|
bool p_max_r10_present = false;
|
|
bool prach_cfg_scell_r10_present = false;
|
|
ul_freq_info_r10_s_ ul_freq_info_r10;
|
|
int8_t p_max_r10 = -30;
|
|
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;
|
|
};
|
|
struct ul_cfg_r14_s_ {
|
|
struct ul_freq_info_r14_s_ {
|
|
struct ul_bw_r14_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_r14_opts> ul_bw_r14_e_;
|
|
|
|
// member variables
|
|
bool ul_carrier_freq_r14_present = false;
|
|
bool ul_bw_r14_present = false;
|
|
uint32_t ul_carrier_freq_r14 = 0;
|
|
ul_bw_r14_e_ ul_bw_r14;
|
|
uint8_t add_spec_emission_scell_r14 = 1;
|
|
};
|
|
|
|
// member variables
|
|
bool p_max_r14_present = false;
|
|
bool prach_cfg_scell_r14_present = false;
|
|
bool ul_pwr_ctrl_common_pusch_less_cell_v1430_present = false;
|
|
ul_freq_info_r14_s_ ul_freq_info_r14;
|
|
int8_t p_max_r14 = -30;
|
|
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;
|
|
};
|
|
struct harq_ref_cfg_r14_opts {
|
|
enum options { sa2, sa4, sa5, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<harq_ref_cfg_r14_opts> harq_ref_cfg_r14_e_;
|
|
|
|
// member variables
|
|
bool ext = false;
|
|
bool ul_cfg_r10_present = false;
|
|
non_ul_cfg_r10_s_ non_ul_cfg_r10;
|
|
ul_cfg_r10_s_ ul_cfg_r10;
|
|
// ...
|
|
// group 0
|
|
bool ul_carrier_freq_v1090_present = false;
|
|
uint32_t ul_carrier_freq_v1090 = 65536;
|
|
// group 1
|
|
copy_ptr<rach_cfg_common_scell_r11_s> rach_cfg_common_scell_r11;
|
|
copy_ptr<prach_cfg_s> prach_cfg_scell_r11;
|
|
copy_ptr<tdd_cfg_v1130_s> tdd_cfg_v1130;
|
|
copy_ptr<ul_pwr_ctrl_common_scell_v1130_s> ul_pwr_ctrl_common_scell_v1130;
|
|
// group 2
|
|
copy_ptr<pusch_cfg_common_v1270_s> pusch_cfg_common_v1270;
|
|
// group 3
|
|
copy_ptr<pucch_cfg_common_s> pucch_cfg_common_r13;
|
|
copy_ptr<ul_pwr_ctrl_common_scell_v1310_s> ul_pwr_ctrl_common_scell_v1310;
|
|
// group 4
|
|
bool harq_ref_cfg_r14_present = false;
|
|
bool srs_flex_timing_r14_present = false;
|
|
copy_ptr<high_speed_cfg_scell_r14_s> high_speed_cfg_scell_r14;
|
|
copy_ptr<prach_cfg_v1430_s> prach_cfg_v1430;
|
|
copy_ptr<ul_cfg_r14_s_> ul_cfg_r14;
|
|
harq_ref_cfg_r14_e_ harq_ref_cfg_r14;
|
|
// group 5
|
|
copy_ptr<mbsfn_sf_cfg_list_v1430_l> mbsfn_sf_cfg_list_v1430;
|
|
// group 6
|
|
copy_ptr<ul_pwr_ctrl_common_v1530_s> ul_pwr_ctrl_common_scell_v1530;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
bool operator==(const rr_cfg_common_scell_r10_s& other) const;
|
|
bool operator!=(const rr_cfg_common_scell_r10_s& other) const { return not(*this == other); }
|
|
};
|
|
|
|
// UplinkPowerControlCommon-v1310 ::= SEQUENCE
|
|
struct ul_pwr_ctrl_common_v1310_s {
|
|
struct delta_f_pucch_format4_r13_opts {
|
|
enum options {
|
|
delta_f16,
|
|
delta_f15,
|
|
delta_f14,
|
|
delta_f13,
|
|
delta_f12,
|
|
delta_f11,
|
|
delta_f10,
|
|
spare1,
|
|
nulltype
|
|
} value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<delta_f_pucch_format4_r13_opts> delta_f_pucch_format4_r13_e_;
|
|
struct delta_f_pucch_format5_minus13_opts {
|
|
enum options { delta_f13, delta_f12, delta_f11, delta_f10, delta_f9, delta_f8, delta_f7, spare1, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<delta_f_pucch_format5_minus13_opts> delta_f_pucch_format5_minus13_e_;
|
|
|
|
// member variables
|
|
bool delta_f_pucch_format4_r13_present = false;
|
|
bool delta_f_pucch_format5_minus13_present = false;
|
|
delta_f_pucch_format4_r13_e_ delta_f_pucch_format4_r13;
|
|
delta_f_pucch_format5_minus13_e_ delta_f_pucch_format5_minus13;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
};
|
|
|
|
// PRACH-Config-v1310 ::= SEQUENCE
|
|
struct prach_cfg_v1310_s {
|
|
struct mpdcch_start_sf_css_ra_r13_c_ {
|
|
struct fdd_r13_opts {
|
|
enum options { v1, v1dot5, v2, v2dot5, v4, v5, v8, v10, nulltype } value;
|
|
typedef float number_type;
|
|
|
|
const char* to_string() const;
|
|
float to_number() const;
|
|
const char* to_number_string() const;
|
|
};
|
|
typedef enumerated<fdd_r13_opts> fdd_r13_e_;
|
|
struct tdd_r13_opts {
|
|
enum options { v1, v2, v4, v5, v8, v10, v20, spare, nulltype } value;
|
|
typedef uint8_t number_type;
|
|
|
|
const char* to_string() const;
|
|
uint8_t to_number() const;
|
|
};
|
|
typedef enumerated<tdd_r13_opts> tdd_r13_e_;
|
|
struct types_opts {
|
|
enum options { fdd_r13, tdd_r13, nulltype } value;
|
|
|
|
const char* to_string() const;
|
|
};
|
|
typedef enumerated<types_opts> types;
|
|
|
|
// choice methods
|
|
mpdcch_start_sf_css_ra_r13_c_() = default;
|
|
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(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
// getters
|
|
fdd_r13_e_& fdd_r13()
|
|
{
|
|
assert_choice_type(types::fdd_r13, type_, "mpdcch-startSF-CSS-RA-r13");
|
|
return c.get<fdd_r13_e_>();
|
|
}
|
|
tdd_r13_e_& tdd_r13()
|
|
{
|
|
assert_choice_type(types::tdd_r13, type_, "mpdcch-startSF-CSS-RA-r13");
|
|
return c.get<tdd_r13_e_>();
|
|
}
|
|
const fdd_r13_e_& fdd_r13() const
|
|
{
|
|
assert_choice_type(types::fdd_r13, type_, "mpdcch-startSF-CSS-RA-r13");
|
|
return c.get<fdd_r13_e_>();
|
|
}
|
|
const tdd_r13_e_& tdd_r13() const
|
|
{
|
|
assert_choice_type(types::tdd_r13, type_, "mpdcch-startSF-CSS-RA-r13");
|
|
return c.get<tdd_r13_e_>();
|
|
}
|
|
fdd_r13_e_& set_fdd_r13();
|
|
tdd_r13_e_& set_tdd_r13();
|
|
|
|
private:
|
|
types type_;
|
|
pod_choice_buffer_t c;
|
|
|
|
void destroy_();
|
|
};
|
|
|
|
// member variables
|
|
bool rsrp_thress_prach_info_list_r13_present = false;
|
|
bool mpdcch_start_sf_css_ra_r13_present = false;
|
|
bool prach_hop_offset_r13_present = false;
|
|
bool prach_params_list_ce_r13_present = false;
|
|
bool init_ce_level_r13_present = false;
|
|
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 = 0;
|
|
prach_params_list_ce_r13_l prach_params_list_ce_r13;
|
|
uint8_t init_ce_level_r13 = 0;
|
|
|
|
// sequence methods
|
|
SRSASN_CODE pack(bit_ref& bref) const;
|
|
SRSASN_CODE unpack(cbit_ref& bref);
|
|
void to_json(json_writer& j) const;
|
|
};
|
|
|
|
// RadioResourceConfigCommon ::= SEQUENCE
|
|
struct rr_cfg_common_s {
|
|
bool ext = false;
|
|
bool rach_cfg_common_present = false;
|
|
bool pdsch_cfg_common_present = false;
|
|
bool phich_cfg_present = false;
|
|
bool pucch_cfg_common_present = false;
|
|
bool srs_ul_cfg_common_present = false;
|
|
bool ul_pwr_ctrl_common_present = false;
|
|
bool ant_info_common_present = false;
|
|
bool p_max_present = false;
|
|
bool tdd_cfg_present = false;
|
|
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 = -30;
|
|
tdd_cfg_s tdd_cfg;
|
|
ul_cp_len_e ul_cp_len;
|
|
// ...
|
|
// group 0
|
|
copy_ptr<ul_pwr_ctrl_common_v1020_s> ul_pwr_ctrl_common_v1020;
|
|
// group 1
|
|
copy_ptr<tdd_cfg_v1130_s> tdd_cfg_v1130;
|
|
// group 2
|
|
copy_ptr<pusch_cfg_common_v1270_s> pusch_cfg_common_v1270;
|
|
// group 3
|
|
copy_ptr<prach_cfg_v1310_s> prach_cfg_v1310;
|
|
copy_ptr<freq_hop_params_r13_s> freq_hop_params_r13;
|
|
copy_ptr<pdsch_cfg_common_v1310_s> pdsch_cfg_common_v1310;
|
|
copy_ptr<pucch_cfg_common_v1310_s> pucch_cfg_common_v1310;
|
|
copy_ptr<pusch_cfg_common_v1310_s> pusch_cfg_common_v1310;
|
|
copy_ptr<ul_pwr_ctrl_common_v1310_s> ul_pwr_ctrl_common_v1310;
|
|
// group 4
|
|
copy_ptr<high_speed_cfg_r14_s> high_speed_cfg_r14;
|
|
copy_ptr<prach_cfg_v1430_s> prach_cfg_v1430;
|
|
copy_ptr<pucch_cfg_common_v1430_s> pucch_cfg_common_v1430;
|
|
copy_ptr<tdd_cfg_v1430_s> tdd_cfg_v1430;
|
|
// group 5
|
|
copy_ptr<tdd_cfg_v1450_s> tdd_cfg_v1450;
|
|
// group 6
|
|
copy_ptr<ul_pwr_ctrl_common_v1530_s> ul_pwr_ctrl_common_v1530;
|
|
copy_ptr<high_speed_cfg_v1530_s> high_speed_cfg_v1530;
|
|
|
|
// 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_RR_COMMON_H
|