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.

60101 lines
1.9 MiB

/**
*
* \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.
*
*/
#include "srsran/asn1/rrc_nr.h"
#include <sstream>
using namespace asn1;
using namespace asn1::rrc_nr;
/*******************************************************************************
* Struct Methods
******************************************************************************/
// PDCCH-ConfigSIB1 ::= SEQUENCE
SRSASN_CODE pdcch_cfg_sib1_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, ctrl_res_set_zero, (uint8_t)0u, (uint8_t)15u));
HANDLE_CODE(pack_integer(bref, search_space_zero, (uint8_t)0u, (uint8_t)15u));
return SRSASN_SUCCESS;
}
SRSASN_CODE pdcch_cfg_sib1_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(ctrl_res_set_zero, bref, (uint8_t)0u, (uint8_t)15u));
HANDLE_CODE(unpack_integer(search_space_zero, bref, (uint8_t)0u, (uint8_t)15u));
return SRSASN_SUCCESS;
}
void pdcch_cfg_sib1_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("controlResourceSetZero", ctrl_res_set_zero);
j.write_int("searchSpaceZero", search_space_zero);
j.end_obj();
}
// MIB ::= SEQUENCE
SRSASN_CODE mib_s::pack(bit_ref& bref) const
{
HANDLE_CODE(sys_frame_num.pack(bref));
HANDLE_CODE(sub_carrier_spacing_common.pack(bref));
HANDLE_CODE(pack_integer(bref, ssb_subcarrier_offset, (uint8_t)0u, (uint8_t)15u));
HANDLE_CODE(dmrs_type_a_position.pack(bref));
HANDLE_CODE(pdcch_cfg_sib1.pack(bref));
HANDLE_CODE(cell_barred.pack(bref));
HANDLE_CODE(intra_freq_resel.pack(bref));
HANDLE_CODE(spare.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE mib_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(sys_frame_num.unpack(bref));
HANDLE_CODE(sub_carrier_spacing_common.unpack(bref));
HANDLE_CODE(unpack_integer(ssb_subcarrier_offset, bref, (uint8_t)0u, (uint8_t)15u));
HANDLE_CODE(dmrs_type_a_position.unpack(bref));
HANDLE_CODE(pdcch_cfg_sib1.unpack(bref));
HANDLE_CODE(cell_barred.unpack(bref));
HANDLE_CODE(intra_freq_resel.unpack(bref));
HANDLE_CODE(spare.unpack(bref));
return SRSASN_SUCCESS;
}
void mib_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("systemFrameNumber", sys_frame_num.to_string());
j.write_str("subCarrierSpacingCommon", sub_carrier_spacing_common.to_string());
j.write_int("ssb-SubcarrierOffset", ssb_subcarrier_offset);
j.write_str("dmrs-TypeA-Position", dmrs_type_a_position.to_string());
j.write_fieldname("pdcch-ConfigSIB1");
pdcch_cfg_sib1.to_json(j);
j.write_str("cellBarred", cell_barred.to_string());
j.write_str("intraFreqReselection", intra_freq_resel.to_string());
j.write_str("spare", spare.to_string());
j.end_obj();
}
const char* mib_s::sub_carrier_spacing_common_opts::to_string() const
{
static const char* options[] = {"scs15or60", "scs30or120"};
return convert_enum_idx(options, 2, value, "mib_s::sub_carrier_spacing_common_e_");
}
uint8_t mib_s::sub_carrier_spacing_common_opts::to_number() const
{
static const uint8_t options[] = {15, 30};
return map_enum_number(options, 2, value, "mib_s::sub_carrier_spacing_common_e_");
}
const char* mib_s::dmrs_type_a_position_opts::to_string() const
{
static const char* options[] = {"pos2", "pos3"};
return convert_enum_idx(options, 2, value, "mib_s::dmrs_type_a_position_e_");
}
uint8_t mib_s::dmrs_type_a_position_opts::to_number() const
{
static const uint8_t options[] = {2, 3};
return map_enum_number(options, 2, value, "mib_s::dmrs_type_a_position_e_");
}
const char* mib_s::cell_barred_opts::to_string() const
{
static const char* options[] = {"barred", "notBarred"};
return convert_enum_idx(options, 2, value, "mib_s::cell_barred_e_");
}
const char* mib_s::intra_freq_resel_opts::to_string() const
{
static const char* options[] = {"allowed", "notAllowed"};
return convert_enum_idx(options, 2, value, "mib_s::intra_freq_resel_e_");
}
// BCCH-BCH-MessageType ::= CHOICE
void bcch_bch_msg_type_c::set(types::options e)
{
type_ = e;
}
mib_s& bcch_bch_msg_type_c::set_mib()
{
set(types::mib);
return c;
}
void bcch_bch_msg_type_c::set_msg_class_ext()
{
set(types::msg_class_ext);
}
void bcch_bch_msg_type_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::mib:
j.write_fieldname("mib");
c.to_json(j);
break;
case types::msg_class_ext:
break;
default:
log_invalid_choice_id(type_, "bcch_bch_msg_type_c");
}
j.end_obj();
}
SRSASN_CODE bcch_bch_msg_type_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::mib:
HANDLE_CODE(c.pack(bref));
break;
case types::msg_class_ext:
break;
default:
log_invalid_choice_id(type_, "bcch_bch_msg_type_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE bcch_bch_msg_type_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::mib:
HANDLE_CODE(c.unpack(bref));
break;
case types::msg_class_ext:
break;
default:
log_invalid_choice_id(type_, "bcch_bch_msg_type_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* bcch_bch_msg_type_c::types_opts::to_string() const
{
static const char* options[] = {"mib", "messageClassExtension"};
return convert_enum_idx(options, 2, value, "bcch_bch_msg_type_c::types");
}
// BCCH-BCH-Message ::= SEQUENCE
SRSASN_CODE bcch_bch_msg_s::pack(bit_ref& bref) const
{
HANDLE_CODE(msg.pack(bref));
bref.align_bytes_zero();
return SRSASN_SUCCESS;
}
SRSASN_CODE bcch_bch_msg_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(msg.unpack(bref));
bref.align_bytes();
return SRSASN_SUCCESS;
}
void bcch_bch_msg_s::to_json(json_writer& j) const
{
j.start_array();
j.start_obj();
j.start_obj("BCCH-BCH-Message");
j.write_fieldname("message");
msg.to_json(j);
j.end_obj();
j.end_obj();
j.end_array();
}
// EUTRA-NS-PmaxValue ::= SEQUENCE
SRSASN_CODE eutra_ns_pmax_value_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(add_pmax_present, 1));
HANDLE_CODE(bref.pack(add_spec_emission_present, 1));
if (add_pmax_present) {
HANDLE_CODE(pack_integer(bref, add_pmax, (int8_t)-30, (int8_t)33));
}
if (add_spec_emission_present) {
HANDLE_CODE(pack_integer(bref, add_spec_emission, (uint16_t)1u, (uint16_t)288u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE eutra_ns_pmax_value_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(add_pmax_present, 1));
HANDLE_CODE(bref.unpack(add_spec_emission_present, 1));
if (add_pmax_present) {
HANDLE_CODE(unpack_integer(add_pmax, bref, (int8_t)-30, (int8_t)33));
}
if (add_spec_emission_present) {
HANDLE_CODE(unpack_integer(add_spec_emission, bref, (uint16_t)1u, (uint16_t)288u));
}
return SRSASN_SUCCESS;
}
void eutra_ns_pmax_value_s::to_json(json_writer& j) const
{
j.start_obj();
if (add_pmax_present) {
j.write_int("additionalPmax", add_pmax);
}
if (add_spec_emission_present) {
j.write_int("additionalSpectrumEmission", add_spec_emission);
}
j.end_obj();
}
// NR-NS-PmaxValue ::= SEQUENCE
SRSASN_CODE nr_ns_pmax_value_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(add_pmax_present, 1));
if (add_pmax_present) {
HANDLE_CODE(pack_integer(bref, add_pmax, (int8_t)-30, (int8_t)33));
}
HANDLE_CODE(pack_integer(bref, add_spec_emission, (uint8_t)0u, (uint8_t)7u));
return SRSASN_SUCCESS;
}
SRSASN_CODE nr_ns_pmax_value_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(add_pmax_present, 1));
if (add_pmax_present) {
HANDLE_CODE(unpack_integer(add_pmax, bref, (int8_t)-30, (int8_t)33));
}
HANDLE_CODE(unpack_integer(add_spec_emission, bref, (uint8_t)0u, (uint8_t)7u));
return SRSASN_SUCCESS;
}
void nr_ns_pmax_value_s::to_json(json_writer& j) const
{
j.start_obj();
if (add_pmax_present) {
j.write_int("additionalPmax", add_pmax);
}
j.write_int("additionalSpectrumEmission", add_spec_emission);
j.end_obj();
}
// EUTRA-Q-OffsetRange ::= ENUMERATED
const char* eutra_q_offset_range_opts::to_string() const
{
static const char* options[] = {"dB-24", "dB-22", "dB-20", "dB-18", "dB-16", "dB-14", "dB-12", "dB-10",
"dB-8", "dB-6", "dB-5", "dB-4", "dB-3", "dB-2", "dB-1", "dB0",
"dB1", "dB2", "dB3", "dB4", "dB5", "dB6", "dB8", "dB10",
"dB12", "dB14", "dB16", "dB18", "dB20", "dB22", "dB24"};
return convert_enum_idx(options, 31, value, "eutra_q_offset_range_e");
}
int8_t eutra_q_offset_range_opts::to_number() const
{
static const int8_t options[] = {-24, -22, -20, -18, -16, -14, -12, -10, -8, -6, -5, -4, -3, -2, -1, 0,
1, 2, 3, 4, 5, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24};
return map_enum_number(options, 31, value, "eutra_q_offset_range_e");
}
// Q-OffsetRange ::= ENUMERATED
const char* q_offset_range_opts::to_string() const
{
static const char* options[] = {"dB-24", "dB-22", "dB-20", "dB-18", "dB-16", "dB-14", "dB-12", "dB-10",
"dB-8", "dB-6", "dB-5", "dB-4", "dB-3", "dB-2", "dB-1", "dB0",
"dB1", "dB2", "dB3", "dB4", "dB5", "dB6", "dB8", "dB10",
"dB12", "dB14", "dB16", "dB18", "dB20", "dB22", "dB24"};
return convert_enum_idx(options, 31, value, "q_offset_range_e");
}
int8_t q_offset_range_opts::to_number() const
{
static const int8_t options[] = {-24, -22, -20, -18, -16, -14, -12, -10, -8, -6, -5, -4, -3, -2, -1, 0,
1, 2, 3, 4, 5, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24};
return map_enum_number(options, 31, value, "q_offset_range_e");
}
// EUTRA-FreqNeighCellInfo ::= SEQUENCE
SRSASN_CODE eutra_freq_neigh_cell_info_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(q_rx_lev_min_offset_cell_present, 1));
HANDLE_CODE(bref.pack(q_qual_min_offset_cell_present, 1));
HANDLE_CODE(pack_integer(bref, pci, (uint16_t)0u, (uint16_t)503u));
HANDLE_CODE(dummy.pack(bref));
if (q_rx_lev_min_offset_cell_present) {
HANDLE_CODE(pack_integer(bref, q_rx_lev_min_offset_cell, (uint8_t)1u, (uint8_t)8u));
}
if (q_qual_min_offset_cell_present) {
HANDLE_CODE(pack_integer(bref, q_qual_min_offset_cell, (uint8_t)1u, (uint8_t)8u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE eutra_freq_neigh_cell_info_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(q_rx_lev_min_offset_cell_present, 1));
HANDLE_CODE(bref.unpack(q_qual_min_offset_cell_present, 1));
HANDLE_CODE(unpack_integer(pci, bref, (uint16_t)0u, (uint16_t)503u));
HANDLE_CODE(dummy.unpack(bref));
if (q_rx_lev_min_offset_cell_present) {
HANDLE_CODE(unpack_integer(q_rx_lev_min_offset_cell, bref, (uint8_t)1u, (uint8_t)8u));
}
if (q_qual_min_offset_cell_present) {
HANDLE_CODE(unpack_integer(q_qual_min_offset_cell, bref, (uint8_t)1u, (uint8_t)8u));
}
return SRSASN_SUCCESS;
}
void eutra_freq_neigh_cell_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("physCellId", pci);
j.write_str("dummy", dummy.to_string());
if (q_rx_lev_min_offset_cell_present) {
j.write_int("q-RxLevMinOffsetCell", q_rx_lev_min_offset_cell);
}
if (q_qual_min_offset_cell_present) {
j.write_int("q-QualMinOffsetCell", q_qual_min_offset_cell);
}
j.end_obj();
}
// EUTRA-MultiBandInfo ::= SEQUENCE
SRSASN_CODE eutra_multi_band_info_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(eutra_ns_pmax_list_present, 1));
HANDLE_CODE(pack_integer(bref, eutra_freq_band_ind, (uint16_t)1u, (uint16_t)256u));
if (eutra_ns_pmax_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, eutra_ns_pmax_list, 1, 8));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE eutra_multi_band_info_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(eutra_ns_pmax_list_present, 1));
HANDLE_CODE(unpack_integer(eutra_freq_band_ind, bref, (uint16_t)1u, (uint16_t)256u));
if (eutra_ns_pmax_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(eutra_ns_pmax_list, bref, 1, 8));
}
return SRSASN_SUCCESS;
}
void eutra_multi_band_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("eutra-FreqBandIndicator", eutra_freq_band_ind);
if (eutra_ns_pmax_list_present) {
j.start_array("eutra-NS-PmaxList");
for (const auto& e1 : eutra_ns_pmax_list) {
e1.to_json(j);
}
j.end_array();
}
j.end_obj();
}
// EUTRA-PhysCellIdRange ::= SEQUENCE
SRSASN_CODE eutra_pci_range_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(range_present, 1));
HANDLE_CODE(pack_integer(bref, start, (uint16_t)0u, (uint16_t)503u));
if (range_present) {
HANDLE_CODE(range.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE eutra_pci_range_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(range_present, 1));
HANDLE_CODE(unpack_integer(start, bref, (uint16_t)0u, (uint16_t)503u));
if (range_present) {
HANDLE_CODE(range.unpack(bref));
}
return SRSASN_SUCCESS;
}
void eutra_pci_range_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("start", start);
if (range_present) {
j.write_str("range", range.to_string());
}
j.end_obj();
}
const char* eutra_pci_range_s::range_opts::to_string() const
{
static const char* options[] = {"n4",
"n8",
"n12",
"n16",
"n24",
"n32",
"n48",
"n64",
"n84",
"n96",
"n128",
"n168",
"n252",
"n504",
"spare2",
"spare1"};
return convert_enum_idx(options, 16, value, "eutra_pci_range_s::range_e_");
}
uint16_t eutra_pci_range_s::range_opts::to_number() const
{
static const uint16_t options[] = {4, 8, 12, 16, 24, 32, 48, 64, 84, 96, 128, 168, 252, 504};
return map_enum_number(options, 14, value, "eutra_pci_range_s::range_e_");
}
// InterFreqNeighCellInfo ::= SEQUENCE
SRSASN_CODE inter_freq_neigh_cell_info_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(q_rx_lev_min_offset_cell_present, 1));
HANDLE_CODE(bref.pack(q_rx_lev_min_offset_cell_sul_present, 1));
HANDLE_CODE(bref.pack(q_qual_min_offset_cell_present, 1));
HANDLE_CODE(pack_integer(bref, pci, (uint16_t)0u, (uint16_t)1007u));
HANDLE_CODE(q_offset_cell.pack(bref));
if (q_rx_lev_min_offset_cell_present) {
HANDLE_CODE(pack_integer(bref, q_rx_lev_min_offset_cell, (uint8_t)1u, (uint8_t)8u));
}
if (q_rx_lev_min_offset_cell_sul_present) {
HANDLE_CODE(pack_integer(bref, q_rx_lev_min_offset_cell_sul, (uint8_t)1u, (uint8_t)8u));
}
if (q_qual_min_offset_cell_present) {
HANDLE_CODE(pack_integer(bref, q_qual_min_offset_cell, (uint8_t)1u, (uint8_t)8u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE inter_freq_neigh_cell_info_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(q_rx_lev_min_offset_cell_present, 1));
HANDLE_CODE(bref.unpack(q_rx_lev_min_offset_cell_sul_present, 1));
HANDLE_CODE(bref.unpack(q_qual_min_offset_cell_present, 1));
HANDLE_CODE(unpack_integer(pci, bref, (uint16_t)0u, (uint16_t)1007u));
HANDLE_CODE(q_offset_cell.unpack(bref));
if (q_rx_lev_min_offset_cell_present) {
HANDLE_CODE(unpack_integer(q_rx_lev_min_offset_cell, bref, (uint8_t)1u, (uint8_t)8u));
}
if (q_rx_lev_min_offset_cell_sul_present) {
HANDLE_CODE(unpack_integer(q_rx_lev_min_offset_cell_sul, bref, (uint8_t)1u, (uint8_t)8u));
}
if (q_qual_min_offset_cell_present) {
HANDLE_CODE(unpack_integer(q_qual_min_offset_cell, bref, (uint8_t)1u, (uint8_t)8u));
}
return SRSASN_SUCCESS;
}
void inter_freq_neigh_cell_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("physCellId", pci);
j.write_str("q-OffsetCell", q_offset_cell.to_string());
if (q_rx_lev_min_offset_cell_present) {
j.write_int("q-RxLevMinOffsetCell", q_rx_lev_min_offset_cell);
}
if (q_rx_lev_min_offset_cell_sul_present) {
j.write_int("q-RxLevMinOffsetCellSUL", q_rx_lev_min_offset_cell_sul);
}
if (q_qual_min_offset_cell_present) {
j.write_int("q-QualMinOffsetCell", q_qual_min_offset_cell);
}
j.end_obj();
}
// NR-MultiBandInfo ::= SEQUENCE
SRSASN_CODE nr_multi_band_info_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(freq_band_ind_nr_present, 1));
HANDLE_CODE(bref.pack(nr_ns_pmax_list_present, 1));
if (freq_band_ind_nr_present) {
HANDLE_CODE(pack_integer(bref, freq_band_ind_nr, (uint16_t)1u, (uint16_t)1024u));
}
if (nr_ns_pmax_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, nr_ns_pmax_list, 1, 8));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE nr_multi_band_info_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(freq_band_ind_nr_present, 1));
HANDLE_CODE(bref.unpack(nr_ns_pmax_list_present, 1));
if (freq_band_ind_nr_present) {
HANDLE_CODE(unpack_integer(freq_band_ind_nr, bref, (uint16_t)1u, (uint16_t)1024u));
}
if (nr_ns_pmax_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(nr_ns_pmax_list, bref, 1, 8));
}
return SRSASN_SUCCESS;
}
void nr_multi_band_info_s::to_json(json_writer& j) const
{
j.start_obj();
if (freq_band_ind_nr_present) {
j.write_int("freqBandIndicatorNR", freq_band_ind_nr);
}
if (nr_ns_pmax_list_present) {
j.start_array("nr-NS-PmaxList");
for (const auto& e1 : nr_ns_pmax_list) {
e1.to_json(j);
}
j.end_array();
}
j.end_obj();
}
// PCI-Range ::= SEQUENCE
SRSASN_CODE pci_range_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(range_present, 1));
HANDLE_CODE(pack_integer(bref, start, (uint16_t)0u, (uint16_t)1007u));
if (range_present) {
HANDLE_CODE(range.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pci_range_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(range_present, 1));
HANDLE_CODE(unpack_integer(start, bref, (uint16_t)0u, (uint16_t)1007u));
if (range_present) {
HANDLE_CODE(range.unpack(bref));
}
return SRSASN_SUCCESS;
}
void pci_range_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("start", start);
if (range_present) {
j.write_str("range", range.to_string());
}
j.end_obj();
}
const char* pci_range_s::range_opts::to_string() const
{
static const char* options[] = {"n4",
"n8",
"n12",
"n16",
"n24",
"n32",
"n48",
"n64",
"n84",
"n96",
"n128",
"n168",
"n252",
"n504",
"n1008",
"spare1"};
return convert_enum_idx(options, 16, value, "pci_range_s::range_e_");
}
uint16_t pci_range_s::range_opts::to_number() const
{
static const uint16_t options[] = {4, 8, 12, 16, 24, 32, 48, 64, 84, 96, 128, 168, 252, 504, 1008};
return map_enum_number(options, 15, value, "pci_range_s::range_e_");
}
// PDSCH-TimeDomainResourceAllocation ::= SEQUENCE
SRSASN_CODE pdsch_time_domain_res_alloc_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(k0_present, 1));
if (k0_present) {
HANDLE_CODE(pack_integer(bref, k0, (uint8_t)0u, (uint8_t)32u));
}
HANDLE_CODE(map_type.pack(bref));
HANDLE_CODE(pack_integer(bref, start_symbol_and_len, (uint8_t)0u, (uint8_t)127u));
return SRSASN_SUCCESS;
}
SRSASN_CODE pdsch_time_domain_res_alloc_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(k0_present, 1));
if (k0_present) {
HANDLE_CODE(unpack_integer(k0, bref, (uint8_t)0u, (uint8_t)32u));
}
HANDLE_CODE(map_type.unpack(bref));
HANDLE_CODE(unpack_integer(start_symbol_and_len, bref, (uint8_t)0u, (uint8_t)127u));
return SRSASN_SUCCESS;
}
void pdsch_time_domain_res_alloc_s::to_json(json_writer& j) const
{
j.start_obj();
if (k0_present) {
j.write_int("k0", k0);
}
j.write_str("mappingType", map_type.to_string());
j.write_int("startSymbolAndLength", start_symbol_and_len);
j.end_obj();
}
const char* pdsch_time_domain_res_alloc_s::map_type_opts::to_string() const
{
static const char* options[] = {"typeA", "typeB"};
return convert_enum_idx(options, 2, value, "pdsch_time_domain_res_alloc_s::map_type_e_");
}
// PUSCH-TimeDomainResourceAllocation ::= SEQUENCE
SRSASN_CODE pusch_time_domain_res_alloc_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(k2_present, 1));
if (k2_present) {
HANDLE_CODE(pack_integer(bref, k2, (uint8_t)0u, (uint8_t)32u));
}
HANDLE_CODE(map_type.pack(bref));
HANDLE_CODE(pack_integer(bref, start_symbol_and_len, (uint8_t)0u, (uint8_t)127u));
return SRSASN_SUCCESS;
}
SRSASN_CODE pusch_time_domain_res_alloc_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(k2_present, 1));
if (k2_present) {
HANDLE_CODE(unpack_integer(k2, bref, (uint8_t)0u, (uint8_t)32u));
}
HANDLE_CODE(map_type.unpack(bref));
HANDLE_CODE(unpack_integer(start_symbol_and_len, bref, (uint8_t)0u, (uint8_t)127u));
return SRSASN_SUCCESS;
}
void pusch_time_domain_res_alloc_s::to_json(json_writer& j) const
{
j.start_obj();
if (k2_present) {
j.write_int("k2", k2);
}
j.write_str("mappingType", map_type.to_string());
j.write_int("startSymbolAndLength", start_symbol_and_len);
j.end_obj();
}
const char* pusch_time_domain_res_alloc_s::map_type_opts::to_string() const
{
static const char* options[] = {"typeA", "typeB"};
return convert_enum_idx(options, 2, value, "pusch_time_domain_res_alloc_s::map_type_e_");
}
// CellReselectionSubPriority ::= ENUMERATED
const char* cell_resel_sub_prio_opts::to_string() const
{
static const char* options[] = {"oDot2", "oDot4", "oDot6", "oDot8"};
return convert_enum_idx(options, 4, value, "cell_resel_sub_prio_e");
}
float cell_resel_sub_prio_opts::to_number() const
{
static const float options[] = {0.2, 0.4, 0.6, 0.8};
return map_enum_number(options, 4, value, "cell_resel_sub_prio_e");
}
const char* cell_resel_sub_prio_opts::to_number_string() const
{
static const char* options[] = {"0.2", "0.4", "0.6", "0.8"};
return convert_enum_idx(options, 4, value, "cell_resel_sub_prio_e");
}
// ControlResourceSet ::= SEQUENCE
SRSASN_CODE ctrl_res_set_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(tci_states_pdcch_to_add_list_present, 1));
HANDLE_CODE(bref.pack(tci_states_pdcch_to_release_list_present, 1));
HANDLE_CODE(bref.pack(tci_present_in_dci_present, 1));
HANDLE_CODE(bref.pack(pdcch_dmrs_scrambling_id_present, 1));
HANDLE_CODE(pack_integer(bref, ctrl_res_set_id, (uint8_t)0u, (uint8_t)11u));
HANDLE_CODE(freq_domain_res.pack(bref));
HANDLE_CODE(pack_integer(bref, dur, (uint8_t)1u, (uint8_t)3u));
HANDLE_CODE(cce_reg_map_type.pack(bref));
HANDLE_CODE(precoder_granularity.pack(bref));
if (tci_states_pdcch_to_add_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, tci_states_pdcch_to_add_list, 1, 64, integer_packer<uint8_t>(0, 127)));
}
if (tci_states_pdcch_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, tci_states_pdcch_to_release_list, 1, 64, integer_packer<uint8_t>(0, 127)));
}
if (pdcch_dmrs_scrambling_id_present) {
HANDLE_CODE(pack_integer(bref, pdcch_dmrs_scrambling_id, (uint32_t)0u, (uint32_t)65535u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ctrl_res_set_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(tci_states_pdcch_to_add_list_present, 1));
HANDLE_CODE(bref.unpack(tci_states_pdcch_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(tci_present_in_dci_present, 1));
HANDLE_CODE(bref.unpack(pdcch_dmrs_scrambling_id_present, 1));
HANDLE_CODE(unpack_integer(ctrl_res_set_id, bref, (uint8_t)0u, (uint8_t)11u));
HANDLE_CODE(freq_domain_res.unpack(bref));
HANDLE_CODE(unpack_integer(dur, bref, (uint8_t)1u, (uint8_t)3u));
HANDLE_CODE(cce_reg_map_type.unpack(bref));
HANDLE_CODE(precoder_granularity.unpack(bref));
if (tci_states_pdcch_to_add_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(tci_states_pdcch_to_add_list, bref, 1, 64, integer_packer<uint8_t>(0, 127)));
}
if (tci_states_pdcch_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(tci_states_pdcch_to_release_list, bref, 1, 64, integer_packer<uint8_t>(0, 127)));
}
if (pdcch_dmrs_scrambling_id_present) {
HANDLE_CODE(unpack_integer(pdcch_dmrs_scrambling_id, bref, (uint32_t)0u, (uint32_t)65535u));
}
return SRSASN_SUCCESS;
}
void ctrl_res_set_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("controlResourceSetId", ctrl_res_set_id);
j.write_str("frequencyDomainResources", freq_domain_res.to_string());
j.write_int("duration", dur);
j.write_fieldname("cce-REG-MappingType");
cce_reg_map_type.to_json(j);
j.write_str("precoderGranularity", precoder_granularity.to_string());
if (tci_states_pdcch_to_add_list_present) {
j.start_array("tci-StatesPDCCH-ToAddList");
for (const auto& e1 : tci_states_pdcch_to_add_list) {
j.write_int(e1);
}
j.end_array();
}
if (tci_states_pdcch_to_release_list_present) {
j.start_array("tci-StatesPDCCH-ToReleaseList");
for (const auto& e1 : tci_states_pdcch_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (tci_present_in_dci_present) {
j.write_str("tci-PresentInDCI", "enabled");
}
if (pdcch_dmrs_scrambling_id_present) {
j.write_int("pdcch-DMRS-ScramblingID", pdcch_dmrs_scrambling_id);
}
j.end_obj();
}
void ctrl_res_set_s::cce_reg_map_type_c_::set(types::options e)
{
type_ = e;
}
ctrl_res_set_s::cce_reg_map_type_c_::interleaved_s_& ctrl_res_set_s::cce_reg_map_type_c_::set_interleaved()
{
set(types::interleaved);
return c;
}
void ctrl_res_set_s::cce_reg_map_type_c_::set_non_interleaved()
{
set(types::non_interleaved);
}
void ctrl_res_set_s::cce_reg_map_type_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::interleaved:
j.write_fieldname("interleaved");
j.start_obj();
j.write_str("reg-BundleSize", c.reg_bundle_size.to_string());
j.write_str("interleaverSize", c.interleaver_size.to_string());
if (c.shift_idx_present) {
j.write_int("shiftIndex", c.shift_idx);
}
j.end_obj();
break;
case types::non_interleaved:
break;
default:
log_invalid_choice_id(type_, "ctrl_res_set_s::cce_reg_map_type_c_");
}
j.end_obj();
}
SRSASN_CODE ctrl_res_set_s::cce_reg_map_type_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::interleaved:
HANDLE_CODE(bref.pack(c.shift_idx_present, 1));
HANDLE_CODE(c.reg_bundle_size.pack(bref));
HANDLE_CODE(c.interleaver_size.pack(bref));
if (c.shift_idx_present) {
HANDLE_CODE(pack_integer(bref, c.shift_idx, (uint16_t)0u, (uint16_t)274u));
}
break;
case types::non_interleaved:
break;
default:
log_invalid_choice_id(type_, "ctrl_res_set_s::cce_reg_map_type_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ctrl_res_set_s::cce_reg_map_type_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::interleaved:
HANDLE_CODE(bref.unpack(c.shift_idx_present, 1));
HANDLE_CODE(c.reg_bundle_size.unpack(bref));
HANDLE_CODE(c.interleaver_size.unpack(bref));
if (c.shift_idx_present) {
HANDLE_CODE(unpack_integer(c.shift_idx, bref, (uint16_t)0u, (uint16_t)274u));
}
break;
case types::non_interleaved:
break;
default:
log_invalid_choice_id(type_, "ctrl_res_set_s::cce_reg_map_type_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* ctrl_res_set_s::cce_reg_map_type_c_::interleaved_s_::reg_bundle_size_opts::to_string() const
{
static const char* options[] = {"n2", "n3", "n6"};
return convert_enum_idx(options, 3, value, "ctrl_res_set_s::cce_reg_map_type_c_::interleaved_s_::reg_bundle_size_e_");
}
uint8_t ctrl_res_set_s::cce_reg_map_type_c_::interleaved_s_::reg_bundle_size_opts::to_number() const
{
static const uint8_t options[] = {2, 3, 6};
return map_enum_number(options, 3, value, "ctrl_res_set_s::cce_reg_map_type_c_::interleaved_s_::reg_bundle_size_e_");
}
const char* ctrl_res_set_s::cce_reg_map_type_c_::interleaved_s_::interleaver_size_opts::to_string() const
{
static const char* options[] = {"n2", "n3", "n6"};
return convert_enum_idx(
options, 3, value, "ctrl_res_set_s::cce_reg_map_type_c_::interleaved_s_::interleaver_size_e_");
}
uint8_t ctrl_res_set_s::cce_reg_map_type_c_::interleaved_s_::interleaver_size_opts::to_number() const
{
static const uint8_t options[] = {2, 3, 6};
return map_enum_number(options, 3, value, "ctrl_res_set_s::cce_reg_map_type_c_::interleaved_s_::interleaver_size_e_");
}
const char* ctrl_res_set_s::cce_reg_map_type_c_::types_opts::to_string() const
{
static const char* options[] = {"interleaved", "nonInterleaved"};
return convert_enum_idx(options, 2, value, "ctrl_res_set_s::cce_reg_map_type_c_::types");
}
const char* ctrl_res_set_s::precoder_granularity_opts::to_string() const
{
static const char* options[] = {"sameAsREG-bundle", "allContiguousRBs"};
return convert_enum_idx(options, 2, value, "ctrl_res_set_s::precoder_granularity_e_");
}
// EUTRA-AllowedMeasBandwidth ::= ENUMERATED
const char* eutra_allowed_meas_bw_opts::to_string() const
{
static const char* options[] = {"mbw6", "mbw15", "mbw25", "mbw50", "mbw75", "mbw100"};
return convert_enum_idx(options, 6, value, "eutra_allowed_meas_bw_e");
}
uint8_t eutra_allowed_meas_bw_opts::to_number() const
{
static const uint8_t options[] = {6, 15, 25, 50, 75, 100};
return map_enum_number(options, 6, value, "eutra_allowed_meas_bw_e");
}
// RACH-ConfigGeneric ::= SEQUENCE
SRSASN_CODE rach_cfg_generic_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(pack_integer(bref, prach_cfg_idx, (uint16_t)0u, (uint16_t)255u));
HANDLE_CODE(msg1_fdm.pack(bref));
HANDLE_CODE(pack_integer(bref, msg1_freq_start, (uint16_t)0u, (uint16_t)274u));
HANDLE_CODE(pack_integer(bref, zero_correlation_zone_cfg, (uint8_t)0u, (uint8_t)15u));
HANDLE_CODE(pack_integer(bref, preamb_rx_target_pwr, (int16_t)-202, (int16_t)-60));
HANDLE_CODE(preamb_trans_max.pack(bref));
HANDLE_CODE(pwr_ramp_step.pack(bref));
HANDLE_CODE(ra_resp_win.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE rach_cfg_generic_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(unpack_integer(prach_cfg_idx, bref, (uint16_t)0u, (uint16_t)255u));
HANDLE_CODE(msg1_fdm.unpack(bref));
HANDLE_CODE(unpack_integer(msg1_freq_start, bref, (uint16_t)0u, (uint16_t)274u));
HANDLE_CODE(unpack_integer(zero_correlation_zone_cfg, bref, (uint8_t)0u, (uint8_t)15u));
HANDLE_CODE(unpack_integer(preamb_rx_target_pwr, bref, (int16_t)-202, (int16_t)-60));
HANDLE_CODE(preamb_trans_max.unpack(bref));
HANDLE_CODE(pwr_ramp_step.unpack(bref));
HANDLE_CODE(ra_resp_win.unpack(bref));
return SRSASN_SUCCESS;
}
void rach_cfg_generic_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("prach-ConfigurationIndex", prach_cfg_idx);
j.write_str("msg1-FDM", msg1_fdm.to_string());
j.write_int("msg1-FrequencyStart", msg1_freq_start);
j.write_int("zeroCorrelationZoneConfig", zero_correlation_zone_cfg);
j.write_int("preambleReceivedTargetPower", preamb_rx_target_pwr);
j.write_str("preambleTransMax", preamb_trans_max.to_string());
j.write_str("powerRampingStep", pwr_ramp_step.to_string());
j.write_str("ra-ResponseWindow", ra_resp_win.to_string());
j.end_obj();
}
const char* rach_cfg_generic_s::msg1_fdm_opts::to_string() const
{
static const char* options[] = {"one", "two", "four", "eight"};
return convert_enum_idx(options, 4, value, "rach_cfg_generic_s::msg1_fdm_e_");
}
uint8_t rach_cfg_generic_s::msg1_fdm_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 4, 8};
return map_enum_number(options, 4, value, "rach_cfg_generic_s::msg1_fdm_e_");
}
const char* rach_cfg_generic_s::preamb_trans_max_opts::to_string() const
{
static const char* options[] = {"n3", "n4", "n5", "n6", "n7", "n8", "n10", "n20", "n50", "n100", "n200"};
return convert_enum_idx(options, 11, value, "rach_cfg_generic_s::preamb_trans_max_e_");
}
uint8_t rach_cfg_generic_s::preamb_trans_max_opts::to_number() const
{
static const uint8_t options[] = {3, 4, 5, 6, 7, 8, 10, 20, 50, 100, 200};
return map_enum_number(options, 11, value, "rach_cfg_generic_s::preamb_trans_max_e_");
}
const char* rach_cfg_generic_s::pwr_ramp_step_opts::to_string() const
{
static const char* options[] = {"dB0", "dB2", "dB4", "dB6"};
return convert_enum_idx(options, 4, value, "rach_cfg_generic_s::pwr_ramp_step_e_");
}
uint8_t rach_cfg_generic_s::pwr_ramp_step_opts::to_number() const
{
static const uint8_t options[] = {0, 2, 4, 6};
return map_enum_number(options, 4, value, "rach_cfg_generic_s::pwr_ramp_step_e_");
}
const char* rach_cfg_generic_s::ra_resp_win_opts::to_string() const
{
static const char* options[] = {"sl1", "sl2", "sl4", "sl8", "sl10", "sl20", "sl40", "sl80"};
return convert_enum_idx(options, 8, value, "rach_cfg_generic_s::ra_resp_win_e_");
}
uint8_t rach_cfg_generic_s::ra_resp_win_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 4, 8, 10, 20, 40, 80};
return map_enum_number(options, 8, value, "rach_cfg_generic_s::ra_resp_win_e_");
}
// SS-RSSI-Measurement ::= SEQUENCE
SRSASN_CODE ss_rssi_meas_s::pack(bit_ref& bref) const
{
HANDLE_CODE(meas_slots.pack(bref));
HANDLE_CODE(pack_integer(bref, end_symbol, (uint8_t)0u, (uint8_t)3u));
return SRSASN_SUCCESS;
}
SRSASN_CODE ss_rssi_meas_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(meas_slots.unpack(bref));
HANDLE_CODE(unpack_integer(end_symbol, bref, (uint8_t)0u, (uint8_t)3u));
return SRSASN_SUCCESS;
}
void ss_rssi_meas_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("measurementSlots", meas_slots.to_string());
j.write_int("endSymbol", end_symbol);
j.end_obj();
}
// SSB-MTC ::= SEQUENCE
SRSASN_CODE ssb_mtc_s::pack(bit_ref& bref) const
{
HANDLE_CODE(periodicity_and_offset.pack(bref));
HANDLE_CODE(dur.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE ssb_mtc_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(periodicity_and_offset.unpack(bref));
HANDLE_CODE(dur.unpack(bref));
return SRSASN_SUCCESS;
}
void ssb_mtc_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("periodicityAndOffset");
periodicity_and_offset.to_json(j);
j.write_str("duration", dur.to_string());
j.end_obj();
}
void ssb_mtc_s::periodicity_and_offset_c_::destroy_() {}
void ssb_mtc_s::periodicity_and_offset_c_::set(types::options e)
{
destroy_();
type_ = e;
}
ssb_mtc_s::periodicity_and_offset_c_::periodicity_and_offset_c_(const ssb_mtc_s::periodicity_and_offset_c_& other)
{
type_ = other.type();
switch (type_) {
case types::sf5:
c.init(other.c.get<uint8_t>());
break;
case types::sf10:
c.init(other.c.get<uint8_t>());
break;
case types::sf20:
c.init(other.c.get<uint8_t>());
break;
case types::sf40:
c.init(other.c.get<uint8_t>());
break;
case types::sf80:
c.init(other.c.get<uint8_t>());
break;
case types::sf160:
c.init(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "ssb_mtc_s::periodicity_and_offset_c_");
}
}
ssb_mtc_s::periodicity_and_offset_c_&
ssb_mtc_s::periodicity_and_offset_c_::operator=(const ssb_mtc_s::periodicity_and_offset_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::sf5:
c.set(other.c.get<uint8_t>());
break;
case types::sf10:
c.set(other.c.get<uint8_t>());
break;
case types::sf20:
c.set(other.c.get<uint8_t>());
break;
case types::sf40:
c.set(other.c.get<uint8_t>());
break;
case types::sf80:
c.set(other.c.get<uint8_t>());
break;
case types::sf160:
c.set(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "ssb_mtc_s::periodicity_and_offset_c_");
}
return *this;
}
uint8_t& ssb_mtc_s::periodicity_and_offset_c_::set_sf5()
{
set(types::sf5);
return c.get<uint8_t>();
}
uint8_t& ssb_mtc_s::periodicity_and_offset_c_::set_sf10()
{
set(types::sf10);
return c.get<uint8_t>();
}
uint8_t& ssb_mtc_s::periodicity_and_offset_c_::set_sf20()
{
set(types::sf20);
return c.get<uint8_t>();
}
uint8_t& ssb_mtc_s::periodicity_and_offset_c_::set_sf40()
{
set(types::sf40);
return c.get<uint8_t>();
}
uint8_t& ssb_mtc_s::periodicity_and_offset_c_::set_sf80()
{
set(types::sf80);
return c.get<uint8_t>();
}
uint8_t& ssb_mtc_s::periodicity_and_offset_c_::set_sf160()
{
set(types::sf160);
return c.get<uint8_t>();
}
void ssb_mtc_s::periodicity_and_offset_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::sf5:
j.write_int("sf5", c.get<uint8_t>());
break;
case types::sf10:
j.write_int("sf10", c.get<uint8_t>());
break;
case types::sf20:
j.write_int("sf20", c.get<uint8_t>());
break;
case types::sf40:
j.write_int("sf40", c.get<uint8_t>());
break;
case types::sf80:
j.write_int("sf80", c.get<uint8_t>());
break;
case types::sf160:
j.write_int("sf160", c.get<uint8_t>());
break;
default:
log_invalid_choice_id(type_, "ssb_mtc_s::periodicity_and_offset_c_");
}
j.end_obj();
}
SRSASN_CODE ssb_mtc_s::periodicity_and_offset_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::sf5:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)4u));
break;
case types::sf10:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)9u));
break;
case types::sf20:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)19u));
break;
case types::sf40:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)39u));
break;
case types::sf80:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)79u));
break;
case types::sf160:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)159u));
break;
default:
log_invalid_choice_id(type_, "ssb_mtc_s::periodicity_and_offset_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ssb_mtc_s::periodicity_and_offset_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::sf5:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)4u));
break;
case types::sf10:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)9u));
break;
case types::sf20:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)19u));
break;
case types::sf40:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)39u));
break;
case types::sf80:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)79u));
break;
case types::sf160:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)159u));
break;
default:
log_invalid_choice_id(type_, "ssb_mtc_s::periodicity_and_offset_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* ssb_mtc_s::periodicity_and_offset_c_::types_opts::to_string() const
{
static const char* options[] = {"sf5", "sf10", "sf20", "sf40", "sf80", "sf160"};
return convert_enum_idx(options, 6, value, "ssb_mtc_s::periodicity_and_offset_c_::types");
}
uint8_t ssb_mtc_s::periodicity_and_offset_c_::types_opts::to_number() const
{
static const uint8_t options[] = {5, 10, 20, 40, 80, 160};
return map_enum_number(options, 6, value, "ssb_mtc_s::periodicity_and_offset_c_::types");
}
const char* ssb_mtc_s::dur_opts::to_string() const
{
static const char* options[] = {"sf1", "sf2", "sf3", "sf4", "sf5"};
return convert_enum_idx(options, 5, value, "ssb_mtc_s::dur_e_");
}
uint8_t ssb_mtc_s::dur_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 3, 4, 5};
return map_enum_number(options, 5, value, "ssb_mtc_s::dur_e_");
}
// SSB-ToMeasure ::= CHOICE
void ssb_to_measure_c::destroy_()
{
switch (type_) {
case types::short_bitmap:
c.destroy<fixed_bitstring<4> >();
break;
case types::medium_bitmap:
c.destroy<fixed_bitstring<8> >();
break;
case types::long_bitmap:
c.destroy<fixed_bitstring<64> >();
break;
default:
break;
}
}
void ssb_to_measure_c::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::short_bitmap:
c.init<fixed_bitstring<4> >();
break;
case types::medium_bitmap:
c.init<fixed_bitstring<8> >();
break;
case types::long_bitmap:
c.init<fixed_bitstring<64> >();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "ssb_to_measure_c");
}
}
ssb_to_measure_c::ssb_to_measure_c(const ssb_to_measure_c& other)
{
type_ = other.type();
switch (type_) {
case types::short_bitmap:
c.init(other.c.get<fixed_bitstring<4> >());
break;
case types::medium_bitmap:
c.init(other.c.get<fixed_bitstring<8> >());
break;
case types::long_bitmap:
c.init(other.c.get<fixed_bitstring<64> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "ssb_to_measure_c");
}
}
ssb_to_measure_c& ssb_to_measure_c::operator=(const ssb_to_measure_c& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::short_bitmap:
c.set(other.c.get<fixed_bitstring<4> >());
break;
case types::medium_bitmap:
c.set(other.c.get<fixed_bitstring<8> >());
break;
case types::long_bitmap:
c.set(other.c.get<fixed_bitstring<64> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "ssb_to_measure_c");
}
return *this;
}
fixed_bitstring<4>& ssb_to_measure_c::set_short_bitmap()
{
set(types::short_bitmap);
return c.get<fixed_bitstring<4> >();
}
fixed_bitstring<8>& ssb_to_measure_c::set_medium_bitmap()
{
set(types::medium_bitmap);
return c.get<fixed_bitstring<8> >();
}
fixed_bitstring<64>& ssb_to_measure_c::set_long_bitmap()
{
set(types::long_bitmap);
return c.get<fixed_bitstring<64> >();
}
void ssb_to_measure_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::short_bitmap:
j.write_str("shortBitmap", c.get<fixed_bitstring<4> >().to_string());
break;
case types::medium_bitmap:
j.write_str("mediumBitmap", c.get<fixed_bitstring<8> >().to_string());
break;
case types::long_bitmap:
j.write_str("longBitmap", c.get<fixed_bitstring<64> >().to_string());
break;
default:
log_invalid_choice_id(type_, "ssb_to_measure_c");
}
j.end_obj();
}
SRSASN_CODE ssb_to_measure_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::short_bitmap:
HANDLE_CODE(c.get<fixed_bitstring<4> >().pack(bref));
break;
case types::medium_bitmap:
HANDLE_CODE(c.get<fixed_bitstring<8> >().pack(bref));
break;
case types::long_bitmap:
HANDLE_CODE(c.get<fixed_bitstring<64> >().pack(bref));
break;
default:
log_invalid_choice_id(type_, "ssb_to_measure_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ssb_to_measure_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::short_bitmap:
HANDLE_CODE(c.get<fixed_bitstring<4> >().unpack(bref));
break;
case types::medium_bitmap:
HANDLE_CODE(c.get<fixed_bitstring<8> >().unpack(bref));
break;
case types::long_bitmap:
HANDLE_CODE(c.get<fixed_bitstring<64> >().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "ssb_to_measure_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* ssb_to_measure_c::types_opts::to_string() const
{
static const char* options[] = {"shortBitmap", "mediumBitmap", "longBitmap"};
return convert_enum_idx(options, 3, value, "ssb_to_measure_c::types");
}
// SearchSpace ::= SEQUENCE
SRSASN_CODE search_space_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(ctrl_res_set_id_present, 1));
HANDLE_CODE(bref.pack(monitoring_slot_periodicity_and_offset_present, 1));
HANDLE_CODE(bref.pack(dur_present, 1));
HANDLE_CODE(bref.pack(monitoring_symbols_within_slot_present, 1));
HANDLE_CODE(bref.pack(nrof_candidates_present, 1));
HANDLE_CODE(bref.pack(search_space_type_present, 1));
HANDLE_CODE(pack_integer(bref, search_space_id, (uint8_t)0u, (uint8_t)39u));
if (ctrl_res_set_id_present) {
HANDLE_CODE(pack_integer(bref, ctrl_res_set_id, (uint8_t)0u, (uint8_t)11u));
}
if (monitoring_slot_periodicity_and_offset_present) {
HANDLE_CODE(monitoring_slot_periodicity_and_offset.pack(bref));
}
if (dur_present) {
HANDLE_CODE(pack_integer(bref, dur, (uint16_t)2u, (uint16_t)2559u));
}
if (monitoring_symbols_within_slot_present) {
HANDLE_CODE(monitoring_symbols_within_slot.pack(bref));
}
if (nrof_candidates_present) {
HANDLE_CODE(nrof_candidates.aggregation_level1.pack(bref));
HANDLE_CODE(nrof_candidates.aggregation_level2.pack(bref));
HANDLE_CODE(nrof_candidates.aggregation_level4.pack(bref));
HANDLE_CODE(nrof_candidates.aggregation_level8.pack(bref));
HANDLE_CODE(nrof_candidates.aggregation_level16.pack(bref));
}
if (search_space_type_present) {
HANDLE_CODE(search_space_type.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE search_space_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(ctrl_res_set_id_present, 1));
HANDLE_CODE(bref.unpack(monitoring_slot_periodicity_and_offset_present, 1));
HANDLE_CODE(bref.unpack(dur_present, 1));
HANDLE_CODE(bref.unpack(monitoring_symbols_within_slot_present, 1));
HANDLE_CODE(bref.unpack(nrof_candidates_present, 1));
HANDLE_CODE(bref.unpack(search_space_type_present, 1));
HANDLE_CODE(unpack_integer(search_space_id, bref, (uint8_t)0u, (uint8_t)39u));
if (ctrl_res_set_id_present) {
HANDLE_CODE(unpack_integer(ctrl_res_set_id, bref, (uint8_t)0u, (uint8_t)11u));
}
if (monitoring_slot_periodicity_and_offset_present) {
HANDLE_CODE(monitoring_slot_periodicity_and_offset.unpack(bref));
}
if (dur_present) {
HANDLE_CODE(unpack_integer(dur, bref, (uint16_t)2u, (uint16_t)2559u));
}
if (monitoring_symbols_within_slot_present) {
HANDLE_CODE(monitoring_symbols_within_slot.unpack(bref));
}
if (nrof_candidates_present) {
HANDLE_CODE(nrof_candidates.aggregation_level1.unpack(bref));
HANDLE_CODE(nrof_candidates.aggregation_level2.unpack(bref));
HANDLE_CODE(nrof_candidates.aggregation_level4.unpack(bref));
HANDLE_CODE(nrof_candidates.aggregation_level8.unpack(bref));
HANDLE_CODE(nrof_candidates.aggregation_level16.unpack(bref));
}
if (search_space_type_present) {
HANDLE_CODE(search_space_type.unpack(bref));
}
return SRSASN_SUCCESS;
}
void search_space_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("searchSpaceId", search_space_id);
if (ctrl_res_set_id_present) {
j.write_int("controlResourceSetId", ctrl_res_set_id);
}
if (monitoring_slot_periodicity_and_offset_present) {
j.write_fieldname("monitoringSlotPeriodicityAndOffset");
monitoring_slot_periodicity_and_offset.to_json(j);
}
if (dur_present) {
j.write_int("duration", dur);
}
if (monitoring_symbols_within_slot_present) {
j.write_str("monitoringSymbolsWithinSlot", monitoring_symbols_within_slot.to_string());
}
if (nrof_candidates_present) {
j.write_fieldname("nrofCandidates");
j.start_obj();
j.write_str("aggregationLevel1", nrof_candidates.aggregation_level1.to_string());
j.write_str("aggregationLevel2", nrof_candidates.aggregation_level2.to_string());
j.write_str("aggregationLevel4", nrof_candidates.aggregation_level4.to_string());
j.write_str("aggregationLevel8", nrof_candidates.aggregation_level8.to_string());
j.write_str("aggregationLevel16", nrof_candidates.aggregation_level16.to_string());
j.end_obj();
}
if (search_space_type_present) {
j.write_fieldname("searchSpaceType");
search_space_type.to_json(j);
}
j.end_obj();
}
void search_space_s::monitoring_slot_periodicity_and_offset_c_::destroy_() {}
void search_space_s::monitoring_slot_periodicity_and_offset_c_::set(types::options e)
{
destroy_();
type_ = e;
}
search_space_s::monitoring_slot_periodicity_and_offset_c_::monitoring_slot_periodicity_and_offset_c_(
const search_space_s::monitoring_slot_periodicity_and_offset_c_& other)
{
type_ = other.type();
switch (type_) {
case types::sl1:
break;
case types::sl2:
c.init(other.c.get<uint8_t>());
break;
case types::sl4:
c.init(other.c.get<uint8_t>());
break;
case types::sl5:
c.init(other.c.get<uint8_t>());
break;
case types::sl8:
c.init(other.c.get<uint8_t>());
break;
case types::sl10:
c.init(other.c.get<uint8_t>());
break;
case types::sl16:
c.init(other.c.get<uint8_t>());
break;
case types::sl20:
c.init(other.c.get<uint8_t>());
break;
case types::sl40:
c.init(other.c.get<uint8_t>());
break;
case types::sl80:
c.init(other.c.get<uint8_t>());
break;
case types::sl160:
c.init(other.c.get<uint8_t>());
break;
case types::sl320:
c.init(other.c.get<uint16_t>());
break;
case types::sl640:
c.init(other.c.get<uint16_t>());
break;
case types::sl1280:
c.init(other.c.get<uint16_t>());
break;
case types::sl2560:
c.init(other.c.get<uint16_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "search_space_s::monitoring_slot_periodicity_and_offset_c_");
}
}
search_space_s::monitoring_slot_periodicity_and_offset_c_&
search_space_s::monitoring_slot_periodicity_and_offset_c_::operator=(
const search_space_s::monitoring_slot_periodicity_and_offset_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::sl1:
break;
case types::sl2:
c.set(other.c.get<uint8_t>());
break;
case types::sl4:
c.set(other.c.get<uint8_t>());
break;
case types::sl5:
c.set(other.c.get<uint8_t>());
break;
case types::sl8:
c.set(other.c.get<uint8_t>());
break;
case types::sl10:
c.set(other.c.get<uint8_t>());
break;
case types::sl16:
c.set(other.c.get<uint8_t>());
break;
case types::sl20:
c.set(other.c.get<uint8_t>());
break;
case types::sl40:
c.set(other.c.get<uint8_t>());
break;
case types::sl80:
c.set(other.c.get<uint8_t>());
break;
case types::sl160:
c.set(other.c.get<uint8_t>());
break;
case types::sl320:
c.set(other.c.get<uint16_t>());
break;
case types::sl640:
c.set(other.c.get<uint16_t>());
break;
case types::sl1280:
c.set(other.c.get<uint16_t>());
break;
case types::sl2560:
c.set(other.c.get<uint16_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "search_space_s::monitoring_slot_periodicity_and_offset_c_");
}
return *this;
}
void search_space_s::monitoring_slot_periodicity_and_offset_c_::set_sl1()
{
set(types::sl1);
}
uint8_t& search_space_s::monitoring_slot_periodicity_and_offset_c_::set_sl2()
{
set(types::sl2);
return c.get<uint8_t>();
}
uint8_t& search_space_s::monitoring_slot_periodicity_and_offset_c_::set_sl4()
{
set(types::sl4);
return c.get<uint8_t>();
}
uint8_t& search_space_s::monitoring_slot_periodicity_and_offset_c_::set_sl5()
{
set(types::sl5);
return c.get<uint8_t>();
}
uint8_t& search_space_s::monitoring_slot_periodicity_and_offset_c_::set_sl8()
{
set(types::sl8);
return c.get<uint8_t>();
}
uint8_t& search_space_s::monitoring_slot_periodicity_and_offset_c_::set_sl10()
{
set(types::sl10);
return c.get<uint8_t>();
}
uint8_t& search_space_s::monitoring_slot_periodicity_and_offset_c_::set_sl16()
{
set(types::sl16);
return c.get<uint8_t>();
}
uint8_t& search_space_s::monitoring_slot_periodicity_and_offset_c_::set_sl20()
{
set(types::sl20);
return c.get<uint8_t>();
}
uint8_t& search_space_s::monitoring_slot_periodicity_and_offset_c_::set_sl40()
{
set(types::sl40);
return c.get<uint8_t>();
}
uint8_t& search_space_s::monitoring_slot_periodicity_and_offset_c_::set_sl80()
{
set(types::sl80);
return c.get<uint8_t>();
}
uint8_t& search_space_s::monitoring_slot_periodicity_and_offset_c_::set_sl160()
{
set(types::sl160);
return c.get<uint8_t>();
}
uint16_t& search_space_s::monitoring_slot_periodicity_and_offset_c_::set_sl320()
{
set(types::sl320);
return c.get<uint16_t>();
}
uint16_t& search_space_s::monitoring_slot_periodicity_and_offset_c_::set_sl640()
{
set(types::sl640);
return c.get<uint16_t>();
}
uint16_t& search_space_s::monitoring_slot_periodicity_and_offset_c_::set_sl1280()
{
set(types::sl1280);
return c.get<uint16_t>();
}
uint16_t& search_space_s::monitoring_slot_periodicity_and_offset_c_::set_sl2560()
{
set(types::sl2560);
return c.get<uint16_t>();
}
void search_space_s::monitoring_slot_periodicity_and_offset_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::sl1:
break;
case types::sl2:
j.write_int("sl2", c.get<uint8_t>());
break;
case types::sl4:
j.write_int("sl4", c.get<uint8_t>());
break;
case types::sl5:
j.write_int("sl5", c.get<uint8_t>());
break;
case types::sl8:
j.write_int("sl8", c.get<uint8_t>());
break;
case types::sl10:
j.write_int("sl10", c.get<uint8_t>());
break;
case types::sl16:
j.write_int("sl16", c.get<uint8_t>());
break;
case types::sl20:
j.write_int("sl20", c.get<uint8_t>());
break;
case types::sl40:
j.write_int("sl40", c.get<uint8_t>());
break;
case types::sl80:
j.write_int("sl80", c.get<uint8_t>());
break;
case types::sl160:
j.write_int("sl160", c.get<uint8_t>());
break;
case types::sl320:
j.write_int("sl320", c.get<uint16_t>());
break;
case types::sl640:
j.write_int("sl640", c.get<uint16_t>());
break;
case types::sl1280:
j.write_int("sl1280", c.get<uint16_t>());
break;
case types::sl2560:
j.write_int("sl2560", c.get<uint16_t>());
break;
default:
log_invalid_choice_id(type_, "search_space_s::monitoring_slot_periodicity_and_offset_c_");
}
j.end_obj();
}
SRSASN_CODE search_space_s::monitoring_slot_periodicity_and_offset_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::sl1:
break;
case types::sl2:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)1u));
break;
case types::sl4:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)3u));
break;
case types::sl5:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)4u));
break;
case types::sl8:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)7u));
break;
case types::sl10:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)9u));
break;
case types::sl16:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)15u));
break;
case types::sl20:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)19u));
break;
case types::sl40:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)39u));
break;
case types::sl80:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)79u));
break;
case types::sl160:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)159u));
break;
case types::sl320:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)319u));
break;
case types::sl640:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)639u));
break;
case types::sl1280:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)1279u));
break;
case types::sl2560:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)2559u));
break;
default:
log_invalid_choice_id(type_, "search_space_s::monitoring_slot_periodicity_and_offset_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE search_space_s::monitoring_slot_periodicity_and_offset_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::sl1:
break;
case types::sl2:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)1u));
break;
case types::sl4:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)3u));
break;
case types::sl5:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)4u));
break;
case types::sl8:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)7u));
break;
case types::sl10:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)9u));
break;
case types::sl16:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)15u));
break;
case types::sl20:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)19u));
break;
case types::sl40:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)39u));
break;
case types::sl80:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)79u));
break;
case types::sl160:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)159u));
break;
case types::sl320:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)319u));
break;
case types::sl640:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)639u));
break;
case types::sl1280:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)1279u));
break;
case types::sl2560:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)2559u));
break;
default:
log_invalid_choice_id(type_, "search_space_s::monitoring_slot_periodicity_and_offset_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* search_space_s::monitoring_slot_periodicity_and_offset_c_::types_opts::to_string() const
{
static const char* options[] = {"sl1",
"sl2",
"sl4",
"sl5",
"sl8",
"sl10",
"sl16",
"sl20",
"sl40",
"sl80",
"sl160",
"sl320",
"sl640",
"sl1280",
"sl2560"};
return convert_enum_idx(options, 15, value, "search_space_s::monitoring_slot_periodicity_and_offset_c_::types");
}
uint16_t search_space_s::monitoring_slot_periodicity_and_offset_c_::types_opts::to_number() const
{
static const uint16_t options[] = {1, 2, 4, 5, 8, 10, 16, 20, 40, 80, 160, 320, 640, 1280, 2560};
return map_enum_number(options, 15, value, "search_space_s::monitoring_slot_periodicity_and_offset_c_::types");
}
const char* search_space_s::nrof_candidates_s_::aggregation_level1_opts::to_string() const
{
static const char* options[] = {"n0", "n1", "n2", "n3", "n4", "n5", "n6", "n8"};
return convert_enum_idx(options, 8, value, "search_space_s::nrof_candidates_s_::aggregation_level1_e_");
}
uint8_t search_space_s::nrof_candidates_s_::aggregation_level1_opts::to_number() const
{
static const uint8_t options[] = {0, 1, 2, 3, 4, 5, 6, 8};
return map_enum_number(options, 8, value, "search_space_s::nrof_candidates_s_::aggregation_level1_e_");
}
const char* search_space_s::nrof_candidates_s_::aggregation_level2_opts::to_string() const
{
static const char* options[] = {"n0", "n1", "n2", "n3", "n4", "n5", "n6", "n8"};
return convert_enum_idx(options, 8, value, "search_space_s::nrof_candidates_s_::aggregation_level2_e_");
}
uint8_t search_space_s::nrof_candidates_s_::aggregation_level2_opts::to_number() const
{
static const uint8_t options[] = {0, 1, 2, 3, 4, 5, 6, 8};
return map_enum_number(options, 8, value, "search_space_s::nrof_candidates_s_::aggregation_level2_e_");
}
const char* search_space_s::nrof_candidates_s_::aggregation_level4_opts::to_string() const
{
static const char* options[] = {"n0", "n1", "n2", "n3", "n4", "n5", "n6", "n8"};
return convert_enum_idx(options, 8, value, "search_space_s::nrof_candidates_s_::aggregation_level4_e_");
}
uint8_t search_space_s::nrof_candidates_s_::aggregation_level4_opts::to_number() const
{
static const uint8_t options[] = {0, 1, 2, 3, 4, 5, 6, 8};
return map_enum_number(options, 8, value, "search_space_s::nrof_candidates_s_::aggregation_level4_e_");
}
const char* search_space_s::nrof_candidates_s_::aggregation_level8_opts::to_string() const
{
static const char* options[] = {"n0", "n1", "n2", "n3", "n4", "n5", "n6", "n8"};
return convert_enum_idx(options, 8, value, "search_space_s::nrof_candidates_s_::aggregation_level8_e_");
}
uint8_t search_space_s::nrof_candidates_s_::aggregation_level8_opts::to_number() const
{
static const uint8_t options[] = {0, 1, 2, 3, 4, 5, 6, 8};
return map_enum_number(options, 8, value, "search_space_s::nrof_candidates_s_::aggregation_level8_e_");
}
const char* search_space_s::nrof_candidates_s_::aggregation_level16_opts::to_string() const
{
static const char* options[] = {"n0", "n1", "n2", "n3", "n4", "n5", "n6", "n8"};
return convert_enum_idx(options, 8, value, "search_space_s::nrof_candidates_s_::aggregation_level16_e_");
}
uint8_t search_space_s::nrof_candidates_s_::aggregation_level16_opts::to_number() const
{
static const uint8_t options[] = {0, 1, 2, 3, 4, 5, 6, 8};
return map_enum_number(options, 8, value, "search_space_s::nrof_candidates_s_::aggregation_level16_e_");
}
void search_space_s::search_space_type_c_::destroy_()
{
switch (type_) {
case types::common:
c.destroy<common_s_>();
break;
case types::ue_specific:
c.destroy<ue_specific_s_>();
break;
default:
break;
}
}
void search_space_s::search_space_type_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::common:
c.init<common_s_>();
break;
case types::ue_specific:
c.init<ue_specific_s_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "search_space_s::search_space_type_c_");
}
}
search_space_s::search_space_type_c_::search_space_type_c_(const search_space_s::search_space_type_c_& other)
{
type_ = other.type();
switch (type_) {
case types::common:
c.init(other.c.get<common_s_>());
break;
case types::ue_specific:
c.init(other.c.get<ue_specific_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "search_space_s::search_space_type_c_");
}
}
search_space_s::search_space_type_c_&
search_space_s::search_space_type_c_::operator=(const search_space_s::search_space_type_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::common:
c.set(other.c.get<common_s_>());
break;
case types::ue_specific:
c.set(other.c.get<ue_specific_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "search_space_s::search_space_type_c_");
}
return *this;
}
search_space_s::search_space_type_c_::common_s_& search_space_s::search_space_type_c_::set_common()
{
set(types::common);
return c.get<common_s_>();
}
search_space_s::search_space_type_c_::ue_specific_s_& search_space_s::search_space_type_c_::set_ue_specific()
{
set(types::ue_specific);
return c.get<ue_specific_s_>();
}
void search_space_s::search_space_type_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::common:
j.write_fieldname("common");
j.start_obj();
if (c.get<common_s_>().dci_format0_minus0_and_format1_minus0_present) {
j.write_fieldname("dci-Format0-0-AndFormat1-0");
j.start_obj();
j.end_obj();
}
if (c.get<common_s_>().dci_format2_minus0_present) {
j.write_fieldname("dci-Format2-0");
j.start_obj();
j.write_fieldname("nrofCandidates-SFI");
j.start_obj();
if (c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level1_present) {
j.write_str("aggregationLevel1",
c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level1.to_string());
}
if (c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level2_present) {
j.write_str("aggregationLevel2",
c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level2.to_string());
}
if (c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level4_present) {
j.write_str("aggregationLevel4",
c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level4.to_string());
}
if (c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level8_present) {
j.write_str("aggregationLevel8",
c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level8.to_string());
}
if (c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level16_present) {
j.write_str("aggregationLevel16",
c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level16.to_string());
}
j.end_obj();
j.end_obj();
}
if (c.get<common_s_>().dci_format2_minus1_present) {
j.write_fieldname("dci-Format2-1");
j.start_obj();
j.end_obj();
}
if (c.get<common_s_>().dci_format2_minus2_present) {
j.write_fieldname("dci-Format2-2");
j.start_obj();
j.end_obj();
}
if (c.get<common_s_>().dci_format2_minus3_present) {
j.write_fieldname("dci-Format2-3");
j.start_obj();
if (c.get<common_s_>().dci_format2_minus3.dummy1_present) {
j.write_str("dummy1", c.get<common_s_>().dci_format2_minus3.dummy1.to_string());
}
j.write_str("dummy2", c.get<common_s_>().dci_format2_minus3.dummy2.to_string());
j.end_obj();
}
j.end_obj();
break;
case types::ue_specific:
j.write_fieldname("ue-Specific");
j.start_obj();
j.write_str("dci-Formats", c.get<ue_specific_s_>().dci_formats.to_string());
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "search_space_s::search_space_type_c_");
}
j.end_obj();
}
SRSASN_CODE search_space_s::search_space_type_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::common:
HANDLE_CODE(bref.pack(c.get<common_s_>().dci_format0_minus0_and_format1_minus0_present, 1));
HANDLE_CODE(bref.pack(c.get<common_s_>().dci_format2_minus0_present, 1));
HANDLE_CODE(bref.pack(c.get<common_s_>().dci_format2_minus1_present, 1));
HANDLE_CODE(bref.pack(c.get<common_s_>().dci_format2_minus2_present, 1));
HANDLE_CODE(bref.pack(c.get<common_s_>().dci_format2_minus3_present, 1));
if (c.get<common_s_>().dci_format0_minus0_and_format1_minus0_present) {
bref.pack(c.get<common_s_>().dci_format0_minus0_and_format1_minus0.ext, 1);
}
if (c.get<common_s_>().dci_format2_minus0_present) {
bref.pack(c.get<common_s_>().dci_format2_minus0.ext, 1);
HANDLE_CODE(bref.pack(c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level1_present, 1));
HANDLE_CODE(bref.pack(c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level2_present, 1));
HANDLE_CODE(bref.pack(c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level4_present, 1));
HANDLE_CODE(bref.pack(c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level8_present, 1));
HANDLE_CODE(
bref.pack(c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level16_present, 1));
if (c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level1_present) {
HANDLE_CODE(c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level1.pack(bref));
}
if (c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level2_present) {
HANDLE_CODE(c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level2.pack(bref));
}
if (c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level4_present) {
HANDLE_CODE(c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level4.pack(bref));
}
if (c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level8_present) {
HANDLE_CODE(c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level8.pack(bref));
}
if (c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level16_present) {
HANDLE_CODE(c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level16.pack(bref));
}
}
if (c.get<common_s_>().dci_format2_minus1_present) {
bref.pack(c.get<common_s_>().dci_format2_minus1.ext, 1);
}
if (c.get<common_s_>().dci_format2_minus2_present) {
bref.pack(c.get<common_s_>().dci_format2_minus2.ext, 1);
}
if (c.get<common_s_>().dci_format2_minus3_present) {
bref.pack(c.get<common_s_>().dci_format2_minus3.ext, 1);
HANDLE_CODE(bref.pack(c.get<common_s_>().dci_format2_minus3.dummy1_present, 1));
if (c.get<common_s_>().dci_format2_minus3.dummy1_present) {
HANDLE_CODE(c.get<common_s_>().dci_format2_minus3.dummy1.pack(bref));
}
HANDLE_CODE(c.get<common_s_>().dci_format2_minus3.dummy2.pack(bref));
}
break;
case types::ue_specific:
bref.pack(c.get<ue_specific_s_>().ext, 1);
HANDLE_CODE(c.get<ue_specific_s_>().dci_formats.pack(bref));
break;
default:
log_invalid_choice_id(type_, "search_space_s::search_space_type_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE search_space_s::search_space_type_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::common:
HANDLE_CODE(bref.unpack(c.get<common_s_>().dci_format0_minus0_and_format1_minus0_present, 1));
HANDLE_CODE(bref.unpack(c.get<common_s_>().dci_format2_minus0_present, 1));
HANDLE_CODE(bref.unpack(c.get<common_s_>().dci_format2_minus1_present, 1));
HANDLE_CODE(bref.unpack(c.get<common_s_>().dci_format2_minus2_present, 1));
HANDLE_CODE(bref.unpack(c.get<common_s_>().dci_format2_minus3_present, 1));
if (c.get<common_s_>().dci_format0_minus0_and_format1_minus0_present) {
bref.unpack(c.get<common_s_>().dci_format0_minus0_and_format1_minus0.ext, 1);
}
if (c.get<common_s_>().dci_format2_minus0_present) {
bref.unpack(c.get<common_s_>().dci_format2_minus0.ext, 1);
HANDLE_CODE(
bref.unpack(c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level1_present, 1));
HANDLE_CODE(
bref.unpack(c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level2_present, 1));
HANDLE_CODE(
bref.unpack(c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level4_present, 1));
HANDLE_CODE(
bref.unpack(c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level8_present, 1));
HANDLE_CODE(
bref.unpack(c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level16_present, 1));
if (c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level1_present) {
HANDLE_CODE(c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level1.unpack(bref));
}
if (c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level2_present) {
HANDLE_CODE(c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level2.unpack(bref));
}
if (c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level4_present) {
HANDLE_CODE(c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level4.unpack(bref));
}
if (c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level8_present) {
HANDLE_CODE(c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level8.unpack(bref));
}
if (c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level16_present) {
HANDLE_CODE(c.get<common_s_>().dci_format2_minus0.nrof_candidates_sfi.aggregation_level16.unpack(bref));
}
}
if (c.get<common_s_>().dci_format2_minus1_present) {
bref.unpack(c.get<common_s_>().dci_format2_minus1.ext, 1);
}
if (c.get<common_s_>().dci_format2_minus2_present) {
bref.unpack(c.get<common_s_>().dci_format2_minus2.ext, 1);
}
if (c.get<common_s_>().dci_format2_minus3_present) {
bref.unpack(c.get<common_s_>().dci_format2_minus3.ext, 1);
HANDLE_CODE(bref.unpack(c.get<common_s_>().dci_format2_minus3.dummy1_present, 1));
if (c.get<common_s_>().dci_format2_minus3.dummy1_present) {
HANDLE_CODE(c.get<common_s_>().dci_format2_minus3.dummy1.unpack(bref));
}
HANDLE_CODE(c.get<common_s_>().dci_format2_minus3.dummy2.unpack(bref));
}
break;
case types::ue_specific:
bref.unpack(c.get<ue_specific_s_>().ext, 1);
HANDLE_CODE(c.get<ue_specific_s_>().dci_formats.unpack(bref));
break;
default:
log_invalid_choice_id(type_, "search_space_s::search_space_type_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* search_space_s::search_space_type_c_::common_s_::dci_format2_minus0_s_::nrof_candidates_sfi_s_::
aggregation_level1_opts::to_string() const
{
static const char* options[] = {"n1", "n2"};
return convert_enum_idx(options,
2,
value,
"search_space_s::search_space_type_c_::common_s_::dci_format2_minus0_s_::nrof_candidates_sfi_"
"s_::aggregation_level1_e_");
}
uint8_t search_space_s::search_space_type_c_::common_s_::dci_format2_minus0_s_::nrof_candidates_sfi_s_::
aggregation_level1_opts::to_number() const
{
static const uint8_t options[] = {1, 2};
return map_enum_number(options,
2,
value,
"search_space_s::search_space_type_c_::common_s_::dci_format2_minus0_s_::nrof_candidates_sfi_"
"s_::aggregation_level1_e_");
}
const char* search_space_s::search_space_type_c_::common_s_::dci_format2_minus0_s_::nrof_candidates_sfi_s_::
aggregation_level2_opts::to_string() const
{
static const char* options[] = {"n1", "n2"};
return convert_enum_idx(options,
2,
value,
"search_space_s::search_space_type_c_::common_s_::dci_format2_minus0_s_::nrof_candidates_sfi_"
"s_::aggregation_level2_e_");
}
uint8_t search_space_s::search_space_type_c_::common_s_::dci_format2_minus0_s_::nrof_candidates_sfi_s_::
aggregation_level2_opts::to_number() const
{
static const uint8_t options[] = {1, 2};
return map_enum_number(options,
2,
value,
"search_space_s::search_space_type_c_::common_s_::dci_format2_minus0_s_::nrof_candidates_sfi_"
"s_::aggregation_level2_e_");
}
const char* search_space_s::search_space_type_c_::common_s_::dci_format2_minus0_s_::nrof_candidates_sfi_s_::
aggregation_level4_opts::to_string() const
{
static const char* options[] = {"n1", "n2"};
return convert_enum_idx(options,
2,
value,
"search_space_s::search_space_type_c_::common_s_::dci_format2_minus0_s_::nrof_candidates_sfi_"
"s_::aggregation_level4_e_");
}
uint8_t search_space_s::search_space_type_c_::common_s_::dci_format2_minus0_s_::nrof_candidates_sfi_s_::
aggregation_level4_opts::to_number() const
{
static const uint8_t options[] = {1, 2};
return map_enum_number(options,
2,
value,
"search_space_s::search_space_type_c_::common_s_::dci_format2_minus0_s_::nrof_candidates_sfi_"
"s_::aggregation_level4_e_");
}
const char* search_space_s::search_space_type_c_::common_s_::dci_format2_minus0_s_::nrof_candidates_sfi_s_::
aggregation_level8_opts::to_string() const
{
static const char* options[] = {"n1", "n2"};
return convert_enum_idx(options,
2,
value,
"search_space_s::search_space_type_c_::common_s_::dci_format2_minus0_s_::nrof_candidates_sfi_"
"s_::aggregation_level8_e_");
}
uint8_t search_space_s::search_space_type_c_::common_s_::dci_format2_minus0_s_::nrof_candidates_sfi_s_::
aggregation_level8_opts::to_number() const
{
static const uint8_t options[] = {1, 2};
return map_enum_number(options,
2,
value,
"search_space_s::search_space_type_c_::common_s_::dci_format2_minus0_s_::nrof_candidates_sfi_"
"s_::aggregation_level8_e_");
}
const char* search_space_s::search_space_type_c_::common_s_::dci_format2_minus0_s_::nrof_candidates_sfi_s_::
aggregation_level16_opts::to_string() const
{
static const char* options[] = {"n1", "n2"};
return convert_enum_idx(options,
2,
value,
"search_space_s::search_space_type_c_::common_s_::dci_format2_minus0_s_::nrof_candidates_sfi_"
"s_::aggregation_level16_e_");
}
uint8_t search_space_s::search_space_type_c_::common_s_::dci_format2_minus0_s_::nrof_candidates_sfi_s_::
aggregation_level16_opts::to_number() const
{
static const uint8_t options[] = {1, 2};
return map_enum_number(options,
2,
value,
"search_space_s::search_space_type_c_::common_s_::dci_format2_minus0_s_::nrof_candidates_sfi_"
"s_::aggregation_level16_e_");
}
const char* search_space_s::search_space_type_c_::common_s_::dci_format2_minus3_s_::dummy1_opts::to_string() const
{
static const char* options[] = {"sl1", "sl2", "sl4", "sl5", "sl8", "sl10", "sl16", "sl20"};
return convert_enum_idx(
options, 8, value, "search_space_s::search_space_type_c_::common_s_::dci_format2_minus3_s_::dummy1_e_");
}
uint8_t search_space_s::search_space_type_c_::common_s_::dci_format2_minus3_s_::dummy1_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 4, 5, 8, 10, 16, 20};
return map_enum_number(
options, 8, value, "search_space_s::search_space_type_c_::common_s_::dci_format2_minus3_s_::dummy1_e_");
}
const char* search_space_s::search_space_type_c_::common_s_::dci_format2_minus3_s_::dummy2_opts::to_string() const
{
static const char* options[] = {"n1", "n2"};
return convert_enum_idx(
options, 2, value, "search_space_s::search_space_type_c_::common_s_::dci_format2_minus3_s_::dummy2_e_");
}
uint8_t search_space_s::search_space_type_c_::common_s_::dci_format2_minus3_s_::dummy2_opts::to_number() const
{
static const uint8_t options[] = {1, 2};
return map_enum_number(
options, 2, value, "search_space_s::search_space_type_c_::common_s_::dci_format2_minus3_s_::dummy2_e_");
}
const char* search_space_s::search_space_type_c_::ue_specific_s_::dci_formats_opts::to_string() const
{
static const char* options[] = {"formats0-0-And-1-0", "formats0-1-And-1-1"};
return convert_enum_idx(options, 2, value, "search_space_s::search_space_type_c_::ue_specific_s_::dci_formats_e_");
}
const char* search_space_s::search_space_type_c_::types_opts::to_string() const
{
static const char* options[] = {"common", "ue-Specific"};
return convert_enum_idx(options, 2, value, "search_space_s::search_space_type_c_::types");
}
// SpeedStateScaleFactors ::= SEQUENCE
SRSASN_CODE speed_state_scale_factors_s::pack(bit_ref& bref) const
{
HANDLE_CODE(sf_medium.pack(bref));
HANDLE_CODE(sf_high.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE speed_state_scale_factors_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(sf_medium.unpack(bref));
HANDLE_CODE(sf_high.unpack(bref));
return SRSASN_SUCCESS;
}
void speed_state_scale_factors_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("sf-Medium", sf_medium.to_string());
j.write_str("sf-High", sf_high.to_string());
j.end_obj();
}
const char* speed_state_scale_factors_s::sf_medium_opts::to_string() const
{
static const char* options[] = {"oDot25", "oDot5", "oDot75", "lDot0"};
return convert_enum_idx(options, 4, value, "speed_state_scale_factors_s::sf_medium_e_");
}
float speed_state_scale_factors_s::sf_medium_opts::to_number() const
{
static const float options[] = {0.25, 0.5, 0.75, 1.0};
return map_enum_number(options, 4, value, "speed_state_scale_factors_s::sf_medium_e_");
}
const char* speed_state_scale_factors_s::sf_medium_opts::to_number_string() const
{
static const char* options[] = {"0.25", "0.5", "0.75", "1.0"};
return convert_enum_idx(options, 4, value, "speed_state_scale_factors_s::sf_medium_e_");
}
const char* speed_state_scale_factors_s::sf_high_opts::to_string() const
{
static const char* options[] = {"oDot25", "oDot5", "oDot75", "lDot0"};
return convert_enum_idx(options, 4, value, "speed_state_scale_factors_s::sf_high_e_");
}
float speed_state_scale_factors_s::sf_high_opts::to_number() const
{
static const float options[] = {0.25, 0.5, 0.75, 1.0};
return map_enum_number(options, 4, value, "speed_state_scale_factors_s::sf_high_e_");
}
const char* speed_state_scale_factors_s::sf_high_opts::to_number_string() const
{
static const char* options[] = {"0.25", "0.5", "0.75", "1.0"};
return convert_enum_idx(options, 4, value, "speed_state_scale_factors_s::sf_high_e_");
}
// SubcarrierSpacing ::= ENUMERATED
const char* subcarrier_spacing_opts::to_string() const
{
static const char* options[] = {"kHz15", "kHz30", "kHz60", "kHz120", "kHz240", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 8, value, "subcarrier_spacing_e");
}
uint8_t subcarrier_spacing_opts::to_number() const
{
static const uint8_t options[] = {15, 30, 60, 120, 240};
return map_enum_number(options, 5, value, "subcarrier_spacing_e");
}
// ThresholdNR ::= SEQUENCE
SRSASN_CODE thres_nr_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(thres_rsrp_present, 1));
HANDLE_CODE(bref.pack(thres_rsrq_present, 1));
HANDLE_CODE(bref.pack(thres_sinr_present, 1));
if (thres_rsrp_present) {
HANDLE_CODE(pack_integer(bref, thres_rsrp, (uint8_t)0u, (uint8_t)127u));
}
if (thres_rsrq_present) {
HANDLE_CODE(pack_integer(bref, thres_rsrq, (uint8_t)0u, (uint8_t)127u));
}
if (thres_sinr_present) {
HANDLE_CODE(pack_integer(bref, thres_sinr, (uint8_t)0u, (uint8_t)127u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE thres_nr_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(thres_rsrp_present, 1));
HANDLE_CODE(bref.unpack(thres_rsrq_present, 1));
HANDLE_CODE(bref.unpack(thres_sinr_present, 1));
if (thres_rsrp_present) {
HANDLE_CODE(unpack_integer(thres_rsrp, bref, (uint8_t)0u, (uint8_t)127u));
}
if (thres_rsrq_present) {
HANDLE_CODE(unpack_integer(thres_rsrq, bref, (uint8_t)0u, (uint8_t)127u));
}
if (thres_sinr_present) {
HANDLE_CODE(unpack_integer(thres_sinr, bref, (uint8_t)0u, (uint8_t)127u));
}
return SRSASN_SUCCESS;
}
void thres_nr_s::to_json(json_writer& j) const
{
j.start_obj();
if (thres_rsrp_present) {
j.write_int("thresholdRSRP", thres_rsrp);
}
if (thres_rsrq_present) {
j.write_int("thresholdRSRQ", thres_rsrq);
}
if (thres_sinr_present) {
j.write_int("thresholdSINR", thres_sinr);
}
j.end_obj();
}
// BWP ::= SEQUENCE
SRSASN_CODE bwp_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(cp_present, 1));
HANDLE_CODE(pack_integer(bref, location_and_bw, (uint16_t)0u, (uint16_t)37949u));
HANDLE_CODE(subcarrier_spacing.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE bwp_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(cp_present, 1));
HANDLE_CODE(unpack_integer(location_and_bw, bref, (uint16_t)0u, (uint16_t)37949u));
HANDLE_CODE(subcarrier_spacing.unpack(bref));
return SRSASN_SUCCESS;
}
void bwp_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("locationAndBandwidth", location_and_bw);
j.write_str("subcarrierSpacing", subcarrier_spacing.to_string());
if (cp_present) {
j.write_str("cyclicPrefix", "extended");
}
j.end_obj();
}
// CarrierFreqEUTRA ::= SEQUENCE
SRSASN_CODE carrier_freq_eutra_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(eutra_multi_band_info_list_present, 1));
HANDLE_CODE(bref.pack(eutra_freq_neigh_cell_list_present, 1));
HANDLE_CODE(bref.pack(eutra_black_cell_list_present, 1));
HANDLE_CODE(bref.pack(cell_resel_prio_present, 1));
HANDLE_CODE(bref.pack(cell_resel_sub_prio_present, 1));
HANDLE_CODE(bref.pack(thresh_x_q_present, 1));
HANDLE_CODE(pack_integer(bref, carrier_freq, (uint32_t)0u, (uint32_t)262143u));
if (eutra_multi_band_info_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, eutra_multi_band_info_list, 1, 8));
}
if (eutra_freq_neigh_cell_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, eutra_freq_neigh_cell_list, 1, 8));
}
if (eutra_black_cell_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, eutra_black_cell_list, 1, 16));
}
HANDLE_CODE(allowed_meas_bw.pack(bref));
HANDLE_CODE(bref.pack(presence_ant_port1, 1));
if (cell_resel_prio_present) {
HANDLE_CODE(pack_integer(bref, cell_resel_prio, (uint8_t)0u, (uint8_t)7u));
}
if (cell_resel_sub_prio_present) {
HANDLE_CODE(cell_resel_sub_prio.pack(bref));
}
HANDLE_CODE(pack_integer(bref, thresh_x_high, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(pack_integer(bref, thresh_x_low, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(pack_integer(bref, q_rx_lev_min, (int8_t)-70, (int8_t)-22));
HANDLE_CODE(pack_integer(bref, q_qual_min, (int8_t)-34, (int8_t)-3));
HANDLE_CODE(pack_integer(bref, p_max_eutra, (int8_t)-30, (int8_t)33));
if (thresh_x_q_present) {
HANDLE_CODE(pack_integer(bref, thresh_x_q.thresh_x_high_q, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(pack_integer(bref, thresh_x_q.thresh_x_low_q, (uint8_t)0u, (uint8_t)31u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE carrier_freq_eutra_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(eutra_multi_band_info_list_present, 1));
HANDLE_CODE(bref.unpack(eutra_freq_neigh_cell_list_present, 1));
HANDLE_CODE(bref.unpack(eutra_black_cell_list_present, 1));
HANDLE_CODE(bref.unpack(cell_resel_prio_present, 1));
HANDLE_CODE(bref.unpack(cell_resel_sub_prio_present, 1));
HANDLE_CODE(bref.unpack(thresh_x_q_present, 1));
HANDLE_CODE(unpack_integer(carrier_freq, bref, (uint32_t)0u, (uint32_t)262143u));
if (eutra_multi_band_info_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(eutra_multi_band_info_list, bref, 1, 8));
}
if (eutra_freq_neigh_cell_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(eutra_freq_neigh_cell_list, bref, 1, 8));
}
if (eutra_black_cell_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(eutra_black_cell_list, bref, 1, 16));
}
HANDLE_CODE(allowed_meas_bw.unpack(bref));
HANDLE_CODE(bref.unpack(presence_ant_port1, 1));
if (cell_resel_prio_present) {
HANDLE_CODE(unpack_integer(cell_resel_prio, bref, (uint8_t)0u, (uint8_t)7u));
}
if (cell_resel_sub_prio_present) {
HANDLE_CODE(cell_resel_sub_prio.unpack(bref));
}
HANDLE_CODE(unpack_integer(thresh_x_high, bref, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(unpack_integer(thresh_x_low, bref, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(unpack_integer(q_rx_lev_min, bref, (int8_t)-70, (int8_t)-22));
HANDLE_CODE(unpack_integer(q_qual_min, bref, (int8_t)-34, (int8_t)-3));
HANDLE_CODE(unpack_integer(p_max_eutra, bref, (int8_t)-30, (int8_t)33));
if (thresh_x_q_present) {
HANDLE_CODE(unpack_integer(thresh_x_q.thresh_x_high_q, bref, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(unpack_integer(thresh_x_q.thresh_x_low_q, bref, (uint8_t)0u, (uint8_t)31u));
}
return SRSASN_SUCCESS;
}
void carrier_freq_eutra_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("carrierFreq", carrier_freq);
if (eutra_multi_band_info_list_present) {
j.start_array("eutra-multiBandInfoList");
for (const auto& e1 : eutra_multi_band_info_list) {
e1.to_json(j);
}
j.end_array();
}
if (eutra_freq_neigh_cell_list_present) {
j.start_array("eutra-FreqNeighCellList");
for (const auto& e1 : eutra_freq_neigh_cell_list) {
e1.to_json(j);
}
j.end_array();
}
if (eutra_black_cell_list_present) {
j.start_array("eutra-BlackCellList");
for (const auto& e1 : eutra_black_cell_list) {
e1.to_json(j);
}
j.end_array();
}
j.write_str("allowedMeasBandwidth", allowed_meas_bw.to_string());
j.write_bool("presenceAntennaPort1", presence_ant_port1);
if (cell_resel_prio_present) {
j.write_int("cellReselectionPriority", cell_resel_prio);
}
if (cell_resel_sub_prio_present) {
j.write_str("cellReselectionSubPriority", cell_resel_sub_prio.to_string());
}
j.write_int("threshX-High", thresh_x_high);
j.write_int("threshX-Low", thresh_x_low);
j.write_int("q-RxLevMin", q_rx_lev_min);
j.write_int("q-QualMin", q_qual_min);
j.write_int("p-MaxEUTRA", p_max_eutra);
if (thresh_x_q_present) {
j.write_fieldname("threshX-Q");
j.start_obj();
j.write_int("threshX-HighQ", thresh_x_q.thresh_x_high_q);
j.write_int("threshX-LowQ", thresh_x_q.thresh_x_low_q);
j.end_obj();
}
j.end_obj();
}
// InterFreqCarrierFreqInfo ::= SEQUENCE
SRSASN_CODE inter_freq_carrier_freq_info_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(freq_band_list_present, 1));
HANDLE_CODE(bref.pack(freq_band_list_sul_present, 1));
HANDLE_CODE(bref.pack(nrof_ss_blocks_to_average_present, 1));
HANDLE_CODE(bref.pack(abs_thresh_ss_blocks_consolidation_present, 1));
HANDLE_CODE(bref.pack(smtc_present, 1));
HANDLE_CODE(bref.pack(ssb_to_measure_present, 1));
HANDLE_CODE(bref.pack(ss_rssi_meas_present, 1));
HANDLE_CODE(bref.pack(q_rx_lev_min_sul_present, 1));
HANDLE_CODE(bref.pack(q_qual_min_present, 1));
HANDLE_CODE(bref.pack(p_max_present, 1));
HANDLE_CODE(bref.pack(t_resel_nr_sf_present, 1));
HANDLE_CODE(bref.pack(thresh_x_q_present, 1));
HANDLE_CODE(bref.pack(cell_resel_prio_present, 1));
HANDLE_CODE(bref.pack(cell_resel_sub_prio_present, 1));
HANDLE_CODE(bref.pack(q_offset_freq_present, 1));
HANDLE_CODE(bref.pack(inter_freq_neigh_cell_list_present, 1));
HANDLE_CODE(bref.pack(inter_freq_black_cell_list_present, 1));
HANDLE_CODE(pack_integer(bref, dl_carrier_freq, (uint32_t)0u, (uint32_t)3279165u));
if (freq_band_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, freq_band_list, 1, 8));
}
if (freq_band_list_sul_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, freq_band_list_sul, 1, 8));
}
if (nrof_ss_blocks_to_average_present) {
HANDLE_CODE(pack_integer(bref, nrof_ss_blocks_to_average, (uint8_t)2u, (uint8_t)16u));
}
if (abs_thresh_ss_blocks_consolidation_present) {
HANDLE_CODE(abs_thresh_ss_blocks_consolidation.pack(bref));
}
if (smtc_present) {
HANDLE_CODE(smtc.pack(bref));
}
HANDLE_CODE(ssb_subcarrier_spacing.pack(bref));
if (ssb_to_measure_present) {
HANDLE_CODE(ssb_to_measure.pack(bref));
}
HANDLE_CODE(bref.pack(derive_ssb_idx_from_cell, 1));
if (ss_rssi_meas_present) {
HANDLE_CODE(ss_rssi_meas.pack(bref));
}
HANDLE_CODE(pack_integer(bref, q_rx_lev_min, (int8_t)-70, (int8_t)-22));
if (q_rx_lev_min_sul_present) {
HANDLE_CODE(pack_integer(bref, q_rx_lev_min_sul, (int8_t)-70, (int8_t)-22));
}
if (q_qual_min_present) {
HANDLE_CODE(pack_integer(bref, q_qual_min, (int8_t)-43, (int8_t)-12));
}
if (p_max_present) {
HANDLE_CODE(pack_integer(bref, p_max, (int8_t)-30, (int8_t)33));
}
HANDLE_CODE(pack_integer(bref, t_resel_nr, (uint8_t)0u, (uint8_t)7u));
if (t_resel_nr_sf_present) {
HANDLE_CODE(t_resel_nr_sf.pack(bref));
}
HANDLE_CODE(pack_integer(bref, thresh_x_high_p, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(pack_integer(bref, thresh_x_low_p, (uint8_t)0u, (uint8_t)31u));
if (thresh_x_q_present) {
HANDLE_CODE(pack_integer(bref, thresh_x_q.thresh_x_high_q, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(pack_integer(bref, thresh_x_q.thresh_x_low_q, (uint8_t)0u, (uint8_t)31u));
}
if (cell_resel_prio_present) {
HANDLE_CODE(pack_integer(bref, cell_resel_prio, (uint8_t)0u, (uint8_t)7u));
}
if (cell_resel_sub_prio_present) {
HANDLE_CODE(cell_resel_sub_prio.pack(bref));
}
if (q_offset_freq_present) {
HANDLE_CODE(q_offset_freq.pack(bref));
}
if (inter_freq_neigh_cell_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, inter_freq_neigh_cell_list, 1, 16));
}
if (inter_freq_black_cell_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, inter_freq_black_cell_list, 1, 16));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE inter_freq_carrier_freq_info_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(freq_band_list_present, 1));
HANDLE_CODE(bref.unpack(freq_band_list_sul_present, 1));
HANDLE_CODE(bref.unpack(nrof_ss_blocks_to_average_present, 1));
HANDLE_CODE(bref.unpack(abs_thresh_ss_blocks_consolidation_present, 1));
HANDLE_CODE(bref.unpack(smtc_present, 1));
HANDLE_CODE(bref.unpack(ssb_to_measure_present, 1));
HANDLE_CODE(bref.unpack(ss_rssi_meas_present, 1));
HANDLE_CODE(bref.unpack(q_rx_lev_min_sul_present, 1));
HANDLE_CODE(bref.unpack(q_qual_min_present, 1));
HANDLE_CODE(bref.unpack(p_max_present, 1));
HANDLE_CODE(bref.unpack(t_resel_nr_sf_present, 1));
HANDLE_CODE(bref.unpack(thresh_x_q_present, 1));
HANDLE_CODE(bref.unpack(cell_resel_prio_present, 1));
HANDLE_CODE(bref.unpack(cell_resel_sub_prio_present, 1));
HANDLE_CODE(bref.unpack(q_offset_freq_present, 1));
HANDLE_CODE(bref.unpack(inter_freq_neigh_cell_list_present, 1));
HANDLE_CODE(bref.unpack(inter_freq_black_cell_list_present, 1));
HANDLE_CODE(unpack_integer(dl_carrier_freq, bref, (uint32_t)0u, (uint32_t)3279165u));
if (freq_band_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(freq_band_list, bref, 1, 8));
}
if (freq_band_list_sul_present) {
HANDLE_CODE(unpack_dyn_seq_of(freq_band_list_sul, bref, 1, 8));
}
if (nrof_ss_blocks_to_average_present) {
HANDLE_CODE(unpack_integer(nrof_ss_blocks_to_average, bref, (uint8_t)2u, (uint8_t)16u));
}
if (abs_thresh_ss_blocks_consolidation_present) {
HANDLE_CODE(abs_thresh_ss_blocks_consolidation.unpack(bref));
}
if (smtc_present) {
HANDLE_CODE(smtc.unpack(bref));
}
HANDLE_CODE(ssb_subcarrier_spacing.unpack(bref));
if (ssb_to_measure_present) {
HANDLE_CODE(ssb_to_measure.unpack(bref));
}
HANDLE_CODE(bref.unpack(derive_ssb_idx_from_cell, 1));
if (ss_rssi_meas_present) {
HANDLE_CODE(ss_rssi_meas.unpack(bref));
}
HANDLE_CODE(unpack_integer(q_rx_lev_min, bref, (int8_t)-70, (int8_t)-22));
if (q_rx_lev_min_sul_present) {
HANDLE_CODE(unpack_integer(q_rx_lev_min_sul, bref, (int8_t)-70, (int8_t)-22));
}
if (q_qual_min_present) {
HANDLE_CODE(unpack_integer(q_qual_min, bref, (int8_t)-43, (int8_t)-12));
}
if (p_max_present) {
HANDLE_CODE(unpack_integer(p_max, bref, (int8_t)-30, (int8_t)33));
}
HANDLE_CODE(unpack_integer(t_resel_nr, bref, (uint8_t)0u, (uint8_t)7u));
if (t_resel_nr_sf_present) {
HANDLE_CODE(t_resel_nr_sf.unpack(bref));
}
HANDLE_CODE(unpack_integer(thresh_x_high_p, bref, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(unpack_integer(thresh_x_low_p, bref, (uint8_t)0u, (uint8_t)31u));
if (thresh_x_q_present) {
HANDLE_CODE(unpack_integer(thresh_x_q.thresh_x_high_q, bref, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(unpack_integer(thresh_x_q.thresh_x_low_q, bref, (uint8_t)0u, (uint8_t)31u));
}
if (cell_resel_prio_present) {
HANDLE_CODE(unpack_integer(cell_resel_prio, bref, (uint8_t)0u, (uint8_t)7u));
}
if (cell_resel_sub_prio_present) {
HANDLE_CODE(cell_resel_sub_prio.unpack(bref));
}
if (q_offset_freq_present) {
HANDLE_CODE(q_offset_freq.unpack(bref));
}
if (inter_freq_neigh_cell_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(inter_freq_neigh_cell_list, bref, 1, 16));
}
if (inter_freq_black_cell_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(inter_freq_black_cell_list, bref, 1, 16));
}
return SRSASN_SUCCESS;
}
void inter_freq_carrier_freq_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("dl-CarrierFreq", dl_carrier_freq);
if (freq_band_list_present) {
j.start_array("frequencyBandList");
for (const auto& e1 : freq_band_list) {
e1.to_json(j);
}
j.end_array();
}
if (freq_band_list_sul_present) {
j.start_array("frequencyBandListSUL");
for (const auto& e1 : freq_band_list_sul) {
e1.to_json(j);
}
j.end_array();
}
if (nrof_ss_blocks_to_average_present) {
j.write_int("nrofSS-BlocksToAverage", nrof_ss_blocks_to_average);
}
if (abs_thresh_ss_blocks_consolidation_present) {
j.write_fieldname("absThreshSS-BlocksConsolidation");
abs_thresh_ss_blocks_consolidation.to_json(j);
}
if (smtc_present) {
j.write_fieldname("smtc");
smtc.to_json(j);
}
j.write_str("ssbSubcarrierSpacing", ssb_subcarrier_spacing.to_string());
if (ssb_to_measure_present) {
j.write_fieldname("ssb-ToMeasure");
ssb_to_measure.to_json(j);
}
j.write_bool("deriveSSB-IndexFromCell", derive_ssb_idx_from_cell);
if (ss_rssi_meas_present) {
j.write_fieldname("ss-RSSI-Measurement");
ss_rssi_meas.to_json(j);
}
j.write_int("q-RxLevMin", q_rx_lev_min);
if (q_rx_lev_min_sul_present) {
j.write_int("q-RxLevMinSUL", q_rx_lev_min_sul);
}
if (q_qual_min_present) {
j.write_int("q-QualMin", q_qual_min);
}
if (p_max_present) {
j.write_int("p-Max", p_max);
}
j.write_int("t-ReselectionNR", t_resel_nr);
if (t_resel_nr_sf_present) {
j.write_fieldname("t-ReselectionNR-SF");
t_resel_nr_sf.to_json(j);
}
j.write_int("threshX-HighP", thresh_x_high_p);
j.write_int("threshX-LowP", thresh_x_low_p);
if (thresh_x_q_present) {
j.write_fieldname("threshX-Q");
j.start_obj();
j.write_int("threshX-HighQ", thresh_x_q.thresh_x_high_q);
j.write_int("threshX-LowQ", thresh_x_q.thresh_x_low_q);
j.end_obj();
}
if (cell_resel_prio_present) {
j.write_int("cellReselectionPriority", cell_resel_prio);
}
if (cell_resel_sub_prio_present) {
j.write_str("cellReselectionSubPriority", cell_resel_sub_prio.to_string());
}
if (q_offset_freq_present) {
j.write_str("q-OffsetFreq", q_offset_freq.to_string());
}
if (inter_freq_neigh_cell_list_present) {
j.start_array("interFreqNeighCellList");
for (const auto& e1 : inter_freq_neigh_cell_list) {
e1.to_json(j);
}
j.end_array();
}
if (inter_freq_black_cell_list_present) {
j.start_array("interFreqBlackCellList");
for (const auto& e1 : inter_freq_black_cell_list) {
e1.to_json(j);
}
j.end_array();
}
j.end_obj();
}
// IntraFreqNeighCellInfo ::= SEQUENCE
SRSASN_CODE intra_freq_neigh_cell_info_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(q_rx_lev_min_offset_cell_present, 1));
HANDLE_CODE(bref.pack(q_rx_lev_min_offset_cell_sul_present, 1));
HANDLE_CODE(bref.pack(q_qual_min_offset_cell_present, 1));
HANDLE_CODE(pack_integer(bref, pci, (uint16_t)0u, (uint16_t)1007u));
HANDLE_CODE(q_offset_cell.pack(bref));
if (q_rx_lev_min_offset_cell_present) {
HANDLE_CODE(pack_integer(bref, q_rx_lev_min_offset_cell, (uint8_t)1u, (uint8_t)8u));
}
if (q_rx_lev_min_offset_cell_sul_present) {
HANDLE_CODE(pack_integer(bref, q_rx_lev_min_offset_cell_sul, (uint8_t)1u, (uint8_t)8u));
}
if (q_qual_min_offset_cell_present) {
HANDLE_CODE(pack_integer(bref, q_qual_min_offset_cell, (uint8_t)1u, (uint8_t)8u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE intra_freq_neigh_cell_info_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(q_rx_lev_min_offset_cell_present, 1));
HANDLE_CODE(bref.unpack(q_rx_lev_min_offset_cell_sul_present, 1));
HANDLE_CODE(bref.unpack(q_qual_min_offset_cell_present, 1));
HANDLE_CODE(unpack_integer(pci, bref, (uint16_t)0u, (uint16_t)1007u));
HANDLE_CODE(q_offset_cell.unpack(bref));
if (q_rx_lev_min_offset_cell_present) {
HANDLE_CODE(unpack_integer(q_rx_lev_min_offset_cell, bref, (uint8_t)1u, (uint8_t)8u));
}
if (q_rx_lev_min_offset_cell_sul_present) {
HANDLE_CODE(unpack_integer(q_rx_lev_min_offset_cell_sul, bref, (uint8_t)1u, (uint8_t)8u));
}
if (q_qual_min_offset_cell_present) {
HANDLE_CODE(unpack_integer(q_qual_min_offset_cell, bref, (uint8_t)1u, (uint8_t)8u));
}
return SRSASN_SUCCESS;
}
void intra_freq_neigh_cell_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("physCellId", pci);
j.write_str("q-OffsetCell", q_offset_cell.to_string());
if (q_rx_lev_min_offset_cell_present) {
j.write_int("q-RxLevMinOffsetCell", q_rx_lev_min_offset_cell);
}
if (q_rx_lev_min_offset_cell_sul_present) {
j.write_int("q-RxLevMinOffsetCellSUL", q_rx_lev_min_offset_cell_sul);
}
if (q_qual_min_offset_cell_present) {
j.write_int("q-QualMinOffsetCell", q_qual_min_offset_cell);
}
j.end_obj();
}
// PDCCH-ConfigCommon ::= SEQUENCE
SRSASN_CODE pdcch_cfg_common_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(ctrl_res_set_zero_present, 1));
HANDLE_CODE(bref.pack(common_ctrl_res_set_present, 1));
HANDLE_CODE(bref.pack(search_space_zero_present, 1));
HANDLE_CODE(bref.pack(common_search_space_list_present, 1));
HANDLE_CODE(bref.pack(search_space_sib1_present, 1));
HANDLE_CODE(bref.pack(search_space_other_sys_info_present, 1));
HANDLE_CODE(bref.pack(paging_search_space_present, 1));
HANDLE_CODE(bref.pack(ra_search_space_present, 1));
if (ctrl_res_set_zero_present) {
HANDLE_CODE(pack_integer(bref, ctrl_res_set_zero, (uint8_t)0u, (uint8_t)15u));
}
if (common_ctrl_res_set_present) {
HANDLE_CODE(common_ctrl_res_set.pack(bref));
}
if (search_space_zero_present) {
HANDLE_CODE(pack_integer(bref, search_space_zero, (uint8_t)0u, (uint8_t)15u));
}
if (common_search_space_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, common_search_space_list, 1, 4));
}
if (search_space_sib1_present) {
HANDLE_CODE(pack_integer(bref, search_space_sib1, (uint8_t)0u, (uint8_t)39u));
}
if (search_space_other_sys_info_present) {
HANDLE_CODE(pack_integer(bref, search_space_other_sys_info, (uint8_t)0u, (uint8_t)39u));
}
if (paging_search_space_present) {
HANDLE_CODE(pack_integer(bref, paging_search_space, (uint8_t)0u, (uint8_t)39u));
}
if (ra_search_space_present) {
HANDLE_CODE(pack_integer(bref, ra_search_space, (uint8_t)0u, (uint8_t)39u));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= first_pdcch_monitoring_occasion_of_po.is_present();
HANDLE_CODE(group_flags.pack(bref));
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(first_pdcch_monitoring_occasion_of_po.is_present(), 1));
if (first_pdcch_monitoring_occasion_of_po.is_present()) {
HANDLE_CODE(first_pdcch_monitoring_occasion_of_po->pack(bref));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pdcch_cfg_common_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(ctrl_res_set_zero_present, 1));
HANDLE_CODE(bref.unpack(common_ctrl_res_set_present, 1));
HANDLE_CODE(bref.unpack(search_space_zero_present, 1));
HANDLE_CODE(bref.unpack(common_search_space_list_present, 1));
HANDLE_CODE(bref.unpack(search_space_sib1_present, 1));
HANDLE_CODE(bref.unpack(search_space_other_sys_info_present, 1));
HANDLE_CODE(bref.unpack(paging_search_space_present, 1));
HANDLE_CODE(bref.unpack(ra_search_space_present, 1));
if (ctrl_res_set_zero_present) {
HANDLE_CODE(unpack_integer(ctrl_res_set_zero, bref, (uint8_t)0u, (uint8_t)15u));
}
if (common_ctrl_res_set_present) {
HANDLE_CODE(common_ctrl_res_set.unpack(bref));
}
if (search_space_zero_present) {
HANDLE_CODE(unpack_integer(search_space_zero, bref, (uint8_t)0u, (uint8_t)15u));
}
if (common_search_space_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(common_search_space_list, bref, 1, 4));
}
if (search_space_sib1_present) {
HANDLE_CODE(unpack_integer(search_space_sib1, bref, (uint8_t)0u, (uint8_t)39u));
}
if (search_space_other_sys_info_present) {
HANDLE_CODE(unpack_integer(search_space_other_sys_info, bref, (uint8_t)0u, (uint8_t)39u));
}
if (paging_search_space_present) {
HANDLE_CODE(unpack_integer(paging_search_space, bref, (uint8_t)0u, (uint8_t)39u));
}
if (ra_search_space_present) {
HANDLE_CODE(unpack_integer(ra_search_space, bref, (uint8_t)0u, (uint8_t)39u));
}
if (ext) {
ext_groups_unpacker_guard group_flags(1);
HANDLE_CODE(group_flags.unpack(bref));
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool first_pdcch_monitoring_occasion_of_po_present;
HANDLE_CODE(bref.unpack(first_pdcch_monitoring_occasion_of_po_present, 1));
first_pdcch_monitoring_occasion_of_po.set_present(first_pdcch_monitoring_occasion_of_po_present);
if (first_pdcch_monitoring_occasion_of_po.is_present()) {
HANDLE_CODE(first_pdcch_monitoring_occasion_of_po->unpack(bref));
}
}
}
return SRSASN_SUCCESS;
}
void pdcch_cfg_common_s::to_json(json_writer& j) const
{
j.start_obj();
if (ctrl_res_set_zero_present) {
j.write_int("controlResourceSetZero", ctrl_res_set_zero);
}
if (common_ctrl_res_set_present) {
j.write_fieldname("commonControlResourceSet");
common_ctrl_res_set.to_json(j);
}
if (search_space_zero_present) {
j.write_int("searchSpaceZero", search_space_zero);
}
if (common_search_space_list_present) {
j.start_array("commonSearchSpaceList");
for (const auto& e1 : common_search_space_list) {
e1.to_json(j);
}
j.end_array();
}
if (search_space_sib1_present) {
j.write_int("searchSpaceSIB1", search_space_sib1);
}
if (search_space_other_sys_info_present) {
j.write_int("searchSpaceOtherSystemInformation", search_space_other_sys_info);
}
if (paging_search_space_present) {
j.write_int("pagingSearchSpace", paging_search_space);
}
if (ra_search_space_present) {
j.write_int("ra-SearchSpace", ra_search_space);
}
if (ext) {
if (first_pdcch_monitoring_occasion_of_po.is_present()) {
j.write_fieldname("firstPDCCH-MonitoringOccasionOfPO");
first_pdcch_monitoring_occasion_of_po->to_json(j);
}
}
j.end_obj();
}
void pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_::destroy_()
{
switch (type_) {
case types::scs15_kh_zone_t:
c.destroy<scs15_kh_zone_t_l_>();
break;
case types::scs30_kh_zone_t_scs15_kh_zhalf_t:
c.destroy<scs30_kh_zone_t_scs15_kh_zhalf_t_l_>();
break;
case types::scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t:
c.destroy<scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t_l_>();
break;
case types::scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t:
c.destroy<scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t_l_>();
break;
case types::scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t:
c.destroy<scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t_l_>();
break;
case types::scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t:
c.destroy<scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t_l_>();
break;
case types::scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t:
c.destroy<scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t_l_>();
break;
case types::scs120_kh_zone_sixteenth_t:
c.destroy<scs120_kh_zone_sixteenth_t_l_>();
break;
default:
break;
}
}
void pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::scs15_kh_zone_t:
c.init<scs15_kh_zone_t_l_>();
break;
case types::scs30_kh_zone_t_scs15_kh_zhalf_t:
c.init<scs30_kh_zone_t_scs15_kh_zhalf_t_l_>();
break;
case types::scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t:
c.init<scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t_l_>();
break;
case types::scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t:
c.init<scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t_l_>();
break;
case types::scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t:
c.init<scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t_l_>();
break;
case types::scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t:
c.init<scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t_l_>();
break;
case types::scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t:
c.init<scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t_l_>();
break;
case types::scs120_kh_zone_sixteenth_t:
c.init<scs120_kh_zone_sixteenth_t_l_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_");
}
}
pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_::first_pdcch_monitoring_occasion_of_po_c_(
const pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_& other)
{
type_ = other.type();
switch (type_) {
case types::scs15_kh_zone_t:
c.init(other.c.get<scs15_kh_zone_t_l_>());
break;
case types::scs30_kh_zone_t_scs15_kh_zhalf_t:
c.init(other.c.get<scs30_kh_zone_t_scs15_kh_zhalf_t_l_>());
break;
case types::scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t:
c.init(other.c.get<scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t_l_>());
break;
case types::scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t:
c.init(other.c.get<scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t_l_>());
break;
case types::scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t:
c.init(other.c.get<scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t_l_>());
break;
case types::scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t:
c.init(other.c.get<scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t_l_>());
break;
case types::scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t:
c.init(other.c.get<scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t_l_>());
break;
case types::scs120_kh_zone_sixteenth_t:
c.init(other.c.get<scs120_kh_zone_sixteenth_t_l_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_");
}
}
pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_&
pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_::operator=(
const pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::scs15_kh_zone_t:
c.set(other.c.get<scs15_kh_zone_t_l_>());
break;
case types::scs30_kh_zone_t_scs15_kh_zhalf_t:
c.set(other.c.get<scs30_kh_zone_t_scs15_kh_zhalf_t_l_>());
break;
case types::scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t:
c.set(other.c.get<scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t_l_>());
break;
case types::scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t:
c.set(other.c.get<scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t_l_>());
break;
case types::scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t:
c.set(other.c.get<scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t_l_>());
break;
case types::scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t:
c.set(other.c.get<scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t_l_>());
break;
case types::scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t:
c.set(other.c.get<scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t_l_>());
break;
case types::scs120_kh_zone_sixteenth_t:
c.set(other.c.get<scs120_kh_zone_sixteenth_t_l_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_");
}
return *this;
}
pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_::scs15_kh_zone_t_l_&
pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_::set_scs15_kh_zone_t()
{
set(types::scs15_kh_zone_t);
return c.get<scs15_kh_zone_t_l_>();
}
pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_::scs30_kh_zone_t_scs15_kh_zhalf_t_l_&
pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_::set_scs30_kh_zone_t_scs15_kh_zhalf_t()
{
set(types::scs30_kh_zone_t_scs15_kh_zhalf_t);
return c.get<scs30_kh_zone_t_scs15_kh_zhalf_t_l_>();
}
pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_::scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t_l_&
pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_::set_scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t()
{
set(types::scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t);
return c.get<scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t_l_>();
}
pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_::
scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t_l_&
pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_::
set_scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t()
{
set(types::scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t);
return c.get<scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t_l_>();
}
pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_::
scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t_l_&
pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_::
set_scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t()
{
set(types::scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t);
return c.get<scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t_l_>();
}
pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_::
scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t_l_&
pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_::
set_scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t()
{
set(types::scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t);
return c.get<scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t_l_>();
}
pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_::scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t_l_&
pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_::set_scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t()
{
set(types::scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t);
return c.get<scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t_l_>();
}
pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_::scs120_kh_zone_sixteenth_t_l_&
pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_::set_scs120_kh_zone_sixteenth_t()
{
set(types::scs120_kh_zone_sixteenth_t);
return c.get<scs120_kh_zone_sixteenth_t_l_>();
}
void pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::scs15_kh_zone_t:
j.start_array("sCS15KHZoneT");
for (const auto& e1 : c.get<scs15_kh_zone_t_l_>()) {
j.write_int(e1);
}
j.end_array();
break;
case types::scs30_kh_zone_t_scs15_kh_zhalf_t:
j.start_array("sCS30KHZoneT-SCS15KHZhalfT");
for (const auto& e1 : c.get<scs30_kh_zone_t_scs15_kh_zhalf_t_l_>()) {
j.write_int(e1);
}
j.end_array();
break;
case types::scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t:
j.start_array("sCS60KHZoneT-SCS30KHZhalfT-SCS15KHZquarterT");
for (const auto& e1 : c.get<scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t_l_>()) {
j.write_int(e1);
}
j.end_array();
break;
case types::scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t:
j.start_array("sCS120KHZoneT-SCS60KHZhalfT-SCS30KHZquarterT-SCS15KHZoneEighthT");
for (const auto& e1 : c.get<scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t_l_>()) {
j.write_int(e1);
}
j.end_array();
break;
case types::scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t:
j.start_array("sCS120KHZhalfT-SCS60KHZquarterT-SCS30KHZoneEighthT-SCS15KHZoneSixteenthT");
for (const auto& e1 :
c.get<scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t_l_>()) {
j.write_int(e1);
}
j.end_array();
break;
case types::scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t:
j.start_array("sCS120KHZquarterT-SCS60KHZoneEighthT-SCS30KHZoneSixteenthT");
for (const auto& e1 : c.get<scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t_l_>()) {
j.write_int(e1);
}
j.end_array();
break;
case types::scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t:
j.start_array("sCS120KHZoneEighthT-SCS60KHZoneSixteenthT");
for (const auto& e1 : c.get<scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t_l_>()) {
j.write_int(e1);
}
j.end_array();
break;
case types::scs120_kh_zone_sixteenth_t:
j.start_array("sCS120KHZoneSixteenthT");
for (const auto& e1 : c.get<scs120_kh_zone_sixteenth_t_l_>()) {
j.write_int(e1);
}
j.end_array();
break;
default:
log_invalid_choice_id(type_, "pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_");
}
j.end_obj();
}
SRSASN_CODE pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::scs15_kh_zone_t:
HANDLE_CODE(pack_dyn_seq_of(bref, c.get<scs15_kh_zone_t_l_>(), 1, 4, integer_packer<uint8_t>(0, 139)));
break;
case types::scs30_kh_zone_t_scs15_kh_zhalf_t:
HANDLE_CODE(
pack_dyn_seq_of(bref, c.get<scs30_kh_zone_t_scs15_kh_zhalf_t_l_>(), 1, 4, integer_packer<uint16_t>(0, 279)));
break;
case types::scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t:
HANDLE_CODE(pack_dyn_seq_of(bref,
c.get<scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t_l_>(),
1,
4,
integer_packer<uint16_t>(0, 559)));
break;
case types::scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t:
HANDLE_CODE(
pack_dyn_seq_of(bref,
c.get<scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t_l_>(),
1,
4,
integer_packer<uint16_t>(0, 1119)));
break;
case types::scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t:
HANDLE_CODE(pack_dyn_seq_of(
bref,
c.get<scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t_l_>(),
1,
4,
integer_packer<uint16_t>(0, 2239)));
break;
case types::scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t:
HANDLE_CODE(pack_dyn_seq_of(bref,
c.get<scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t_l_>(),
1,
4,
integer_packer<uint16_t>(0, 4479)));
break;
case types::scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t:
HANDLE_CODE(pack_dyn_seq_of(bref,
c.get<scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t_l_>(),
1,
4,
integer_packer<uint16_t>(0, 8959)));
break;
case types::scs120_kh_zone_sixteenth_t:
HANDLE_CODE(
pack_dyn_seq_of(bref, c.get<scs120_kh_zone_sixteenth_t_l_>(), 1, 4, integer_packer<uint16_t>(0, 17919)));
break;
default:
log_invalid_choice_id(type_, "pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::scs15_kh_zone_t:
HANDLE_CODE(unpack_dyn_seq_of(c.get<scs15_kh_zone_t_l_>(), bref, 1, 4, integer_packer<uint8_t>(0, 139)));
break;
case types::scs30_kh_zone_t_scs15_kh_zhalf_t:
HANDLE_CODE(unpack_dyn_seq_of(
c.get<scs30_kh_zone_t_scs15_kh_zhalf_t_l_>(), bref, 1, 4, integer_packer<uint16_t>(0, 279)));
break;
case types::scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t:
HANDLE_CODE(unpack_dyn_seq_of(c.get<scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t_l_>(),
bref,
1,
4,
integer_packer<uint16_t>(0, 559)));
break;
case types::scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t:
HANDLE_CODE(
unpack_dyn_seq_of(c.get<scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t_l_>(),
bref,
1,
4,
integer_packer<uint16_t>(0, 1119)));
break;
case types::scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t:
HANDLE_CODE(unpack_dyn_seq_of(
c.get<scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t_l_>(),
bref,
1,
4,
integer_packer<uint16_t>(0, 2239)));
break;
case types::scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t:
HANDLE_CODE(unpack_dyn_seq_of(c.get<scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t_l_>(),
bref,
1,
4,
integer_packer<uint16_t>(0, 4479)));
break;
case types::scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t:
HANDLE_CODE(unpack_dyn_seq_of(c.get<scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t_l_>(),
bref,
1,
4,
integer_packer<uint16_t>(0, 8959)));
break;
case types::scs120_kh_zone_sixteenth_t:
HANDLE_CODE(
unpack_dyn_seq_of(c.get<scs120_kh_zone_sixteenth_t_l_>(), bref, 1, 4, integer_packer<uint16_t>(0, 17919)));
break;
default:
log_invalid_choice_id(type_, "pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_::types_opts::to_string() const
{
static const char* options[] = {"sCS15KHZoneT",
"sCS30KHZoneT-SCS15KHZhalfT",
"sCS60KHZoneT-SCS30KHZhalfT-SCS15KHZquarterT",
"sCS120KHZoneT-SCS60KHZhalfT-SCS30KHZquarterT-SCS15KHZoneEighthT",
"sCS120KHZhalfT-SCS60KHZquarterT-SCS30KHZoneEighthT-SCS15KHZoneSixteenthT",
"sCS120KHZquarterT-SCS60KHZoneEighthT-SCS30KHZoneSixteenthT",
"sCS120KHZoneEighthT-SCS60KHZoneSixteenthT",
"sCS120KHZoneSixteenthT"};
return convert_enum_idx(options, 8, value, "pdcch_cfg_common_s::first_pdcch_monitoring_occasion_of_po_c_::types");
}
// PDSCH-ConfigCommon ::= SEQUENCE
SRSASN_CODE pdsch_cfg_common_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(pdsch_time_domain_alloc_list_present, 1));
if (pdsch_time_domain_alloc_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, pdsch_time_domain_alloc_list, 1, 16));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pdsch_cfg_common_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(pdsch_time_domain_alloc_list_present, 1));
if (pdsch_time_domain_alloc_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(pdsch_time_domain_alloc_list, bref, 1, 16));
}
return SRSASN_SUCCESS;
}
void pdsch_cfg_common_s::to_json(json_writer& j) const
{
j.start_obj();
if (pdsch_time_domain_alloc_list_present) {
j.start_array("pdsch-TimeDomainAllocationList");
for (const auto& e1 : pdsch_time_domain_alloc_list) {
e1.to_json(j);
}
j.end_array();
}
j.end_obj();
}
// PLMN-Identity ::= SEQUENCE
SRSASN_CODE plmn_id_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(mcc_present, 1));
if (mcc_present) {
HANDLE_CODE(pack_fixed_seq_of(bref, &(mcc)[0], mcc.size(), integer_packer<uint8_t>(0, 9)));
}
HANDLE_CODE(pack_dyn_seq_of(bref, mnc, 2, 3, integer_packer<uint8_t>(0, 9)));
return SRSASN_SUCCESS;
}
SRSASN_CODE plmn_id_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(mcc_present, 1));
if (mcc_present) {
HANDLE_CODE(unpack_fixed_seq_of(&(mcc)[0], bref, mcc.size(), integer_packer<uint8_t>(0, 9)));
}
HANDLE_CODE(unpack_dyn_seq_of(mnc, bref, 2, 3, integer_packer<uint8_t>(0, 9)));
return SRSASN_SUCCESS;
}
void plmn_id_s::to_json(json_writer& j) const
{
j.start_obj();
if (mcc_present) {
j.start_array("mcc");
for (const auto& e1 : mcc) {
j.write_int(e1);
}
j.end_array();
}
j.start_array("mnc");
for (const auto& e1 : mnc) {
j.write_int(e1);
}
j.end_array();
j.end_obj();
}
// PUCCH-ConfigCommon ::= SEQUENCE
SRSASN_CODE pucch_cfg_common_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(pucch_res_common_present, 1));
HANDLE_CODE(bref.pack(hop_id_present, 1));
HANDLE_CODE(bref.pack(p0_nominal_present, 1));
if (pucch_res_common_present) {
HANDLE_CODE(pack_integer(bref, pucch_res_common, (uint8_t)0u, (uint8_t)15u));
}
HANDLE_CODE(pucch_group_hop.pack(bref));
if (hop_id_present) {
HANDLE_CODE(pack_integer(bref, hop_id, (uint16_t)0u, (uint16_t)1023u));
}
if (p0_nominal_present) {
HANDLE_CODE(pack_integer(bref, p0_nominal, (int16_t)-202, (int16_t)24));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pucch_cfg_common_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(pucch_res_common_present, 1));
HANDLE_CODE(bref.unpack(hop_id_present, 1));
HANDLE_CODE(bref.unpack(p0_nominal_present, 1));
if (pucch_res_common_present) {
HANDLE_CODE(unpack_integer(pucch_res_common, bref, (uint8_t)0u, (uint8_t)15u));
}
HANDLE_CODE(pucch_group_hop.unpack(bref));
if (hop_id_present) {
HANDLE_CODE(unpack_integer(hop_id, bref, (uint16_t)0u, (uint16_t)1023u));
}
if (p0_nominal_present) {
HANDLE_CODE(unpack_integer(p0_nominal, bref, (int16_t)-202, (int16_t)24));
}
return SRSASN_SUCCESS;
}
void pucch_cfg_common_s::to_json(json_writer& j) const
{
j.start_obj();
if (pucch_res_common_present) {
j.write_int("pucch-ResourceCommon", pucch_res_common);
}
j.write_str("pucch-GroupHopping", pucch_group_hop.to_string());
if (hop_id_present) {
j.write_int("hoppingId", hop_id);
}
if (p0_nominal_present) {
j.write_int("p0-nominal", p0_nominal);
}
j.end_obj();
}
const char* pucch_cfg_common_s::pucch_group_hop_opts::to_string() const
{
static const char* options[] = {"neither", "enable", "disable"};
return convert_enum_idx(options, 3, value, "pucch_cfg_common_s::pucch_group_hop_e_");
}
// PUSCH-ConfigCommon ::= SEQUENCE
SRSASN_CODE pusch_cfg_common_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(group_hop_enabled_transform_precoding_present, 1));
HANDLE_CODE(bref.pack(pusch_time_domain_alloc_list_present, 1));
HANDLE_CODE(bref.pack(msg3_delta_preamb_present, 1));
HANDLE_CODE(bref.pack(p0_nominal_with_grant_present, 1));
if (pusch_time_domain_alloc_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, pusch_time_domain_alloc_list, 1, 16));
}
if (msg3_delta_preamb_present) {
HANDLE_CODE(pack_integer(bref, msg3_delta_preamb, (int8_t)-1, (int8_t)6));
}
if (p0_nominal_with_grant_present) {
HANDLE_CODE(pack_integer(bref, p0_nominal_with_grant, (int16_t)-202, (int16_t)24));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pusch_cfg_common_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(group_hop_enabled_transform_precoding_present, 1));
HANDLE_CODE(bref.unpack(pusch_time_domain_alloc_list_present, 1));
HANDLE_CODE(bref.unpack(msg3_delta_preamb_present, 1));
HANDLE_CODE(bref.unpack(p0_nominal_with_grant_present, 1));
if (pusch_time_domain_alloc_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(pusch_time_domain_alloc_list, bref, 1, 16));
}
if (msg3_delta_preamb_present) {
HANDLE_CODE(unpack_integer(msg3_delta_preamb, bref, (int8_t)-1, (int8_t)6));
}
if (p0_nominal_with_grant_present) {
HANDLE_CODE(unpack_integer(p0_nominal_with_grant, bref, (int16_t)-202, (int16_t)24));
}
return SRSASN_SUCCESS;
}
void pusch_cfg_common_s::to_json(json_writer& j) const
{
j.start_obj();
if (group_hop_enabled_transform_precoding_present) {
j.write_str("groupHoppingEnabledTransformPrecoding", "enabled");
}
if (pusch_time_domain_alloc_list_present) {
j.start_array("pusch-TimeDomainAllocationList");
for (const auto& e1 : pusch_time_domain_alloc_list) {
e1.to_json(j);
}
j.end_array();
}
if (msg3_delta_preamb_present) {
j.write_int("msg3-DeltaPreamble", msg3_delta_preamb);
}
if (p0_nominal_with_grant_present) {
j.write_int("p0-NominalWithGrant", p0_nominal_with_grant);
}
j.end_obj();
}
// PagingCycle ::= ENUMERATED
const char* paging_cycle_opts::to_string() const
{
static const char* options[] = {"rf32", "rf64", "rf128", "rf256"};
return convert_enum_idx(options, 4, value, "paging_cycle_e");
}
uint16_t paging_cycle_opts::to_number() const
{
static const uint16_t options[] = {32, 64, 128, 256};
return map_enum_number(options, 4, value, "paging_cycle_e");
}
// RACH-ConfigCommon ::= SEQUENCE
SRSASN_CODE rach_cfg_common_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(total_nof_ra_preambs_present, 1));
HANDLE_CODE(bref.pack(ssb_per_rach_occasion_and_cb_preambs_per_ssb_present, 1));
HANDLE_CODE(bref.pack(group_bcfgured_present, 1));
HANDLE_CODE(bref.pack(rsrp_thres_ssb_present, 1));
HANDLE_CODE(bref.pack(rsrp_thres_ssb_sul_present, 1));
HANDLE_CODE(bref.pack(msg1_subcarrier_spacing_present, 1));
HANDLE_CODE(bref.pack(msg3_transform_precoder_present, 1));
HANDLE_CODE(rach_cfg_generic.pack(bref));
if (total_nof_ra_preambs_present) {
HANDLE_CODE(pack_integer(bref, total_nof_ra_preambs, (uint8_t)1u, (uint8_t)63u));
}
if (ssb_per_rach_occasion_and_cb_preambs_per_ssb_present) {
HANDLE_CODE(ssb_per_rach_occasion_and_cb_preambs_per_ssb.pack(bref));
}
if (group_bcfgured_present) {
HANDLE_CODE(group_bcfgured.ra_msg3_size_group_a.pack(bref));
HANDLE_CODE(group_bcfgured.msg_pwr_offset_group_b.pack(bref));
HANDLE_CODE(pack_integer(bref, group_bcfgured.nof_ra_preambs_group_a, (uint8_t)1u, (uint8_t)64u));
}
HANDLE_CODE(ra_contention_resolution_timer.pack(bref));
if (rsrp_thres_ssb_present) {
HANDLE_CODE(pack_integer(bref, rsrp_thres_ssb, (uint8_t)0u, (uint8_t)127u));
}
if (rsrp_thres_ssb_sul_present) {
HANDLE_CODE(pack_integer(bref, rsrp_thres_ssb_sul, (uint8_t)0u, (uint8_t)127u));
}
HANDLE_CODE(prach_root_seq_idx.pack(bref));
if (msg1_subcarrier_spacing_present) {
HANDLE_CODE(msg1_subcarrier_spacing.pack(bref));
}
HANDLE_CODE(restricted_set_cfg.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE rach_cfg_common_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(total_nof_ra_preambs_present, 1));
HANDLE_CODE(bref.unpack(ssb_per_rach_occasion_and_cb_preambs_per_ssb_present, 1));
HANDLE_CODE(bref.unpack(group_bcfgured_present, 1));
HANDLE_CODE(bref.unpack(rsrp_thres_ssb_present, 1));
HANDLE_CODE(bref.unpack(rsrp_thres_ssb_sul_present, 1));
HANDLE_CODE(bref.unpack(msg1_subcarrier_spacing_present, 1));
HANDLE_CODE(bref.unpack(msg3_transform_precoder_present, 1));
HANDLE_CODE(rach_cfg_generic.unpack(bref));
if (total_nof_ra_preambs_present) {
HANDLE_CODE(unpack_integer(total_nof_ra_preambs, bref, (uint8_t)1u, (uint8_t)63u));
}
if (ssb_per_rach_occasion_and_cb_preambs_per_ssb_present) {
HANDLE_CODE(ssb_per_rach_occasion_and_cb_preambs_per_ssb.unpack(bref));
}
if (group_bcfgured_present) {
HANDLE_CODE(group_bcfgured.ra_msg3_size_group_a.unpack(bref));
HANDLE_CODE(group_bcfgured.msg_pwr_offset_group_b.unpack(bref));
HANDLE_CODE(unpack_integer(group_bcfgured.nof_ra_preambs_group_a, bref, (uint8_t)1u, (uint8_t)64u));
}
HANDLE_CODE(ra_contention_resolution_timer.unpack(bref));
if (rsrp_thres_ssb_present) {
HANDLE_CODE(unpack_integer(rsrp_thres_ssb, bref, (uint8_t)0u, (uint8_t)127u));
}
if (rsrp_thres_ssb_sul_present) {
HANDLE_CODE(unpack_integer(rsrp_thres_ssb_sul, bref, (uint8_t)0u, (uint8_t)127u));
}
HANDLE_CODE(prach_root_seq_idx.unpack(bref));
if (msg1_subcarrier_spacing_present) {
HANDLE_CODE(msg1_subcarrier_spacing.unpack(bref));
}
HANDLE_CODE(restricted_set_cfg.unpack(bref));
return SRSASN_SUCCESS;
}
void rach_cfg_common_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("rach-ConfigGeneric");
rach_cfg_generic.to_json(j);
if (total_nof_ra_preambs_present) {
j.write_int("totalNumberOfRA-Preambles", total_nof_ra_preambs);
}
if (ssb_per_rach_occasion_and_cb_preambs_per_ssb_present) {
j.write_fieldname("ssb-perRACH-OccasionAndCB-PreamblesPerSSB");
ssb_per_rach_occasion_and_cb_preambs_per_ssb.to_json(j);
}
if (group_bcfgured_present) {
j.write_fieldname("groupBconfigured");
j.start_obj();
j.write_str("ra-Msg3SizeGroupA", group_bcfgured.ra_msg3_size_group_a.to_string());
j.write_str("messagePowerOffsetGroupB", group_bcfgured.msg_pwr_offset_group_b.to_string());
j.write_int("numberOfRA-PreamblesGroupA", group_bcfgured.nof_ra_preambs_group_a);
j.end_obj();
}
j.write_str("ra-ContentionResolutionTimer", ra_contention_resolution_timer.to_string());
if (rsrp_thres_ssb_present) {
j.write_int("rsrp-ThresholdSSB", rsrp_thres_ssb);
}
if (rsrp_thres_ssb_sul_present) {
j.write_int("rsrp-ThresholdSSB-SUL", rsrp_thres_ssb_sul);
}
j.write_fieldname("prach-RootSequenceIndex");
prach_root_seq_idx.to_json(j);
if (msg1_subcarrier_spacing_present) {
j.write_str("msg1-SubcarrierSpacing", msg1_subcarrier_spacing.to_string());
}
j.write_str("restrictedSetConfig", restricted_set_cfg.to_string());
if (msg3_transform_precoder_present) {
j.write_str("msg3-transformPrecoder", "enabled");
}
j.end_obj();
}
void rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::destroy_() {}
void rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::set(types::options e)
{
destroy_();
type_ = e;
}
rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_(
const rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_& other)
{
type_ = other.type();
switch (type_) {
case types::one_eighth:
c.init(other.c.get<one_eighth_e_>());
break;
case types::one_fourth:
c.init(other.c.get<one_fourth_e_>());
break;
case types::one_half:
c.init(other.c.get<one_half_e_>());
break;
case types::one:
c.init(other.c.get<one_e_>());
break;
case types::two:
c.init(other.c.get<two_e_>());
break;
case types::four:
c.init(other.c.get<uint8_t>());
break;
case types::eight:
c.init(other.c.get<uint8_t>());
break;
case types::sixteen:
c.init(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_");
}
}
rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_&
rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::operator=(
const rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::one_eighth:
c.set(other.c.get<one_eighth_e_>());
break;
case types::one_fourth:
c.set(other.c.get<one_fourth_e_>());
break;
case types::one_half:
c.set(other.c.get<one_half_e_>());
break;
case types::one:
c.set(other.c.get<one_e_>());
break;
case types::two:
c.set(other.c.get<two_e_>());
break;
case types::four:
c.set(other.c.get<uint8_t>());
break;
case types::eight:
c.set(other.c.get<uint8_t>());
break;
case types::sixteen:
c.set(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_");
}
return *this;
}
rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::one_eighth_e_&
rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::set_one_eighth()
{
set(types::one_eighth);
return c.get<one_eighth_e_>();
}
rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::one_fourth_e_&
rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::set_one_fourth()
{
set(types::one_fourth);
return c.get<one_fourth_e_>();
}
rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::one_half_e_&
rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::set_one_half()
{
set(types::one_half);
return c.get<one_half_e_>();
}
rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::one_e_&
rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::set_one()
{
set(types::one);
return c.get<one_e_>();
}
rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::two_e_&
rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::set_two()
{
set(types::two);
return c.get<two_e_>();
}
uint8_t& rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::set_four()
{
set(types::four);
return c.get<uint8_t>();
}
uint8_t& rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::set_eight()
{
set(types::eight);
return c.get<uint8_t>();
}
uint8_t& rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::set_sixteen()
{
set(types::sixteen);
return c.get<uint8_t>();
}
void rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::one_eighth:
j.write_str("oneEighth", c.get<one_eighth_e_>().to_string());
break;
case types::one_fourth:
j.write_str("oneFourth", c.get<one_fourth_e_>().to_string());
break;
case types::one_half:
j.write_str("oneHalf", c.get<one_half_e_>().to_string());
break;
case types::one:
j.write_str("one", c.get<one_e_>().to_string());
break;
case types::two:
j.write_str("two", c.get<two_e_>().to_string());
break;
case types::four:
j.write_int("four", c.get<uint8_t>());
break;
case types::eight:
j.write_int("eight", c.get<uint8_t>());
break;
case types::sixteen:
j.write_int("sixteen", c.get<uint8_t>());
break;
default:
log_invalid_choice_id(type_, "rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_");
}
j.end_obj();
}
SRSASN_CODE rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::one_eighth:
HANDLE_CODE(c.get<one_eighth_e_>().pack(bref));
break;
case types::one_fourth:
HANDLE_CODE(c.get<one_fourth_e_>().pack(bref));
break;
case types::one_half:
HANDLE_CODE(c.get<one_half_e_>().pack(bref));
break;
case types::one:
HANDLE_CODE(c.get<one_e_>().pack(bref));
break;
case types::two:
HANDLE_CODE(c.get<two_e_>().pack(bref));
break;
case types::four:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)1u, (uint8_t)16u));
break;
case types::eight:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)1u, (uint8_t)8u));
break;
case types::sixteen:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)1u, (uint8_t)4u));
break;
default:
log_invalid_choice_id(type_, "rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::one_eighth:
HANDLE_CODE(c.get<one_eighth_e_>().unpack(bref));
break;
case types::one_fourth:
HANDLE_CODE(c.get<one_fourth_e_>().unpack(bref));
break;
case types::one_half:
HANDLE_CODE(c.get<one_half_e_>().unpack(bref));
break;
case types::one:
HANDLE_CODE(c.get<one_e_>().unpack(bref));
break;
case types::two:
HANDLE_CODE(c.get<two_e_>().unpack(bref));
break;
case types::four:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)1u, (uint8_t)16u));
break;
case types::eight:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)1u, (uint8_t)8u));
break;
case types::sixteen:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)1u, (uint8_t)4u));
break;
default:
log_invalid_choice_id(type_, "rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::one_eighth_opts::to_string() const
{
static const char* options[] = {
"n4", "n8", "n12", "n16", "n20", "n24", "n28", "n32", "n36", "n40", "n44", "n48", "n52", "n56", "n60", "n64"};
return convert_enum_idx(
options, 16, value, "rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::one_eighth_e_");
}
uint8_t rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::one_eighth_opts::to_number() const
{
static const uint8_t options[] = {4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64};
return map_enum_number(
options, 16, value, "rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::one_eighth_e_");
}
const char* rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::one_fourth_opts::to_string() const
{
static const char* options[] = {
"n4", "n8", "n12", "n16", "n20", "n24", "n28", "n32", "n36", "n40", "n44", "n48", "n52", "n56", "n60", "n64"};
return convert_enum_idx(
options, 16, value, "rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::one_fourth_e_");
}
uint8_t rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::one_fourth_opts::to_number() const
{
static const uint8_t options[] = {4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64};
return map_enum_number(
options, 16, value, "rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::one_fourth_e_");
}
const char* rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::one_half_opts::to_string() const
{
static const char* options[] = {
"n4", "n8", "n12", "n16", "n20", "n24", "n28", "n32", "n36", "n40", "n44", "n48", "n52", "n56", "n60", "n64"};
return convert_enum_idx(
options, 16, value, "rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::one_half_e_");
}
uint8_t rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::one_half_opts::to_number() const
{
static const uint8_t options[] = {4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64};
return map_enum_number(
options, 16, value, "rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::one_half_e_");
}
const char* rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::one_opts::to_string() const
{
static const char* options[] = {
"n4", "n8", "n12", "n16", "n20", "n24", "n28", "n32", "n36", "n40", "n44", "n48", "n52", "n56", "n60", "n64"};
return convert_enum_idx(
options, 16, value, "rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::one_e_");
}
uint8_t rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::one_opts::to_number() const
{
static const uint8_t options[] = {4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64};
return map_enum_number(
options, 16, value, "rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::one_e_");
}
const char* rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::two_opts::to_string() const
{
static const char* options[] = {"n4", "n8", "n12", "n16", "n20", "n24", "n28", "n32"};
return convert_enum_idx(
options, 8, value, "rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::two_e_");
}
uint8_t rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::two_opts::to_number() const
{
static const uint8_t options[] = {4, 8, 12, 16, 20, 24, 28, 32};
return map_enum_number(
options, 8, value, "rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::two_e_");
}
const char* rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::types_opts::to_string() const
{
static const char* options[] = {"oneEighth", "oneFourth", "oneHalf", "one", "two", "four", "eight", "sixteen"};
return convert_enum_idx(
options, 8, value, "rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::types");
}
float rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::types_opts::to_number() const
{
static const float options[] = {0.125, 0.25, 0.5, 1.0, 2.0, 4.0, 8.0, 6.0};
return map_enum_number(
options, 8, value, "rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::types");
}
const char* rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::types_opts::to_number_string() const
{
static const char* options[] = {"1/8", "1/4", "1/2", "1", "2", "4", "8", "6"};
return convert_enum_idx(
options, 8, value, "rach_cfg_common_s::ssb_per_rach_occasion_and_cb_preambs_per_ssb_c_::types");
}
const char* rach_cfg_common_s::group_bcfgured_s_::ra_msg3_size_group_a_opts::to_string() const
{
static const char* options[] = {"b56",
"b144",
"b208",
"b256",
"b282",
"b480",
"b640",
"b800",
"b1000",
"b72",
"spare6",
"spare5",
"spare4",
"spare3",
"spare2",
"spare1"};
return convert_enum_idx(options, 16, value, "rach_cfg_common_s::group_bcfgured_s_::ra_msg3_size_group_a_e_");
}
uint16_t rach_cfg_common_s::group_bcfgured_s_::ra_msg3_size_group_a_opts::to_number() const
{
static const uint16_t options[] = {56, 144, 208, 256, 282, 480, 640, 800, 1000, 72};
return map_enum_number(options, 10, value, "rach_cfg_common_s::group_bcfgured_s_::ra_msg3_size_group_a_e_");
}
const char* rach_cfg_common_s::group_bcfgured_s_::msg_pwr_offset_group_b_opts::to_string() const
{
static const char* options[] = {"minusinfinity", "dB0", "dB5", "dB8", "dB10", "dB12", "dB15", "dB18"};
return convert_enum_idx(options, 8, value, "rach_cfg_common_s::group_bcfgured_s_::msg_pwr_offset_group_b_e_");
}
int8_t rach_cfg_common_s::group_bcfgured_s_::msg_pwr_offset_group_b_opts::to_number() const
{
static const int8_t options[] = {-1, 0, 5, 8, 10, 12, 15, 18};
return map_enum_number(options, 8, value, "rach_cfg_common_s::group_bcfgured_s_::msg_pwr_offset_group_b_e_");
}
const char* rach_cfg_common_s::ra_contention_resolution_timer_opts::to_string() const
{
static const char* options[] = {"sf8", "sf16", "sf24", "sf32", "sf40", "sf48", "sf56", "sf64"};
return convert_enum_idx(options, 8, value, "rach_cfg_common_s::ra_contention_resolution_timer_e_");
}
uint8_t rach_cfg_common_s::ra_contention_resolution_timer_opts::to_number() const
{
static const uint8_t options[] = {8, 16, 24, 32, 40, 48, 56, 64};
return map_enum_number(options, 8, value, "rach_cfg_common_s::ra_contention_resolution_timer_e_");
}
void rach_cfg_common_s::prach_root_seq_idx_c_::destroy_() {}
void rach_cfg_common_s::prach_root_seq_idx_c_::set(types::options e)
{
destroy_();
type_ = e;
}
rach_cfg_common_s::prach_root_seq_idx_c_::prach_root_seq_idx_c_(const rach_cfg_common_s::prach_root_seq_idx_c_& other)
{
type_ = other.type();
switch (type_) {
case types::l839:
c.init(other.c.get<uint16_t>());
break;
case types::l139:
c.init(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rach_cfg_common_s::prach_root_seq_idx_c_");
}
}
rach_cfg_common_s::prach_root_seq_idx_c_&
rach_cfg_common_s::prach_root_seq_idx_c_::operator=(const rach_cfg_common_s::prach_root_seq_idx_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::l839:
c.set(other.c.get<uint16_t>());
break;
case types::l139:
c.set(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rach_cfg_common_s::prach_root_seq_idx_c_");
}
return *this;
}
uint16_t& rach_cfg_common_s::prach_root_seq_idx_c_::set_l839()
{
set(types::l839);
return c.get<uint16_t>();
}
uint8_t& rach_cfg_common_s::prach_root_seq_idx_c_::set_l139()
{
set(types::l139);
return c.get<uint8_t>();
}
void rach_cfg_common_s::prach_root_seq_idx_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::l839:
j.write_int("l839", c.get<uint16_t>());
break;
case types::l139:
j.write_int("l139", c.get<uint8_t>());
break;
default:
log_invalid_choice_id(type_, "rach_cfg_common_s::prach_root_seq_idx_c_");
}
j.end_obj();
}
SRSASN_CODE rach_cfg_common_s::prach_root_seq_idx_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::l839:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)837u));
break;
case types::l139:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)137u));
break;
default:
log_invalid_choice_id(type_, "rach_cfg_common_s::prach_root_seq_idx_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rach_cfg_common_s::prach_root_seq_idx_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::l839:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)837u));
break;
case types::l139:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)137u));
break;
default:
log_invalid_choice_id(type_, "rach_cfg_common_s::prach_root_seq_idx_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* rach_cfg_common_s::prach_root_seq_idx_c_::types_opts::to_string() const
{
static const char* options[] = {"l839", "l139"};
return convert_enum_idx(options, 2, value, "rach_cfg_common_s::prach_root_seq_idx_c_::types");
}
uint16_t rach_cfg_common_s::prach_root_seq_idx_c_::types_opts::to_number() const
{
static const uint16_t options[] = {839, 139};
return map_enum_number(options, 2, value, "rach_cfg_common_s::prach_root_seq_idx_c_::types");
}
const char* rach_cfg_common_s::restricted_set_cfg_opts::to_string() const
{
static const char* options[] = {"unrestrictedSet", "restrictedSetTypeA", "restrictedSetTypeB"};
return convert_enum_idx(options, 3, value, "rach_cfg_common_s::restricted_set_cfg_e_");
}
// SCS-SpecificCarrier ::= SEQUENCE
SRSASN_CODE scs_specific_carrier_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(pack_integer(bref, offset_to_carrier, (uint16_t)0u, (uint16_t)2199u));
HANDLE_CODE(subcarrier_spacing.pack(bref));
HANDLE_CODE(pack_integer(bref, carrier_bw, (uint16_t)1u, (uint16_t)275u));
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= tx_direct_current_location_present;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(tx_direct_current_location_present, 1));
if (tx_direct_current_location_present) {
HANDLE_CODE(pack_integer(bref, tx_direct_current_location, (uint16_t)0u, (uint16_t)4095u));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE scs_specific_carrier_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(unpack_integer(offset_to_carrier, bref, (uint16_t)0u, (uint16_t)2199u));
HANDLE_CODE(subcarrier_spacing.unpack(bref));
HANDLE_CODE(unpack_integer(carrier_bw, bref, (uint16_t)1u, (uint16_t)275u));
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(tx_direct_current_location_present, 1));
if (tx_direct_current_location_present) {
HANDLE_CODE(unpack_integer(tx_direct_current_location, bref, (uint16_t)0u, (uint16_t)4095u));
}
}
}
return SRSASN_SUCCESS;
}
void scs_specific_carrier_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("offsetToCarrier", offset_to_carrier);
j.write_str("subcarrierSpacing", subcarrier_spacing.to_string());
j.write_int("carrierBandwidth", carrier_bw);
if (ext) {
if (tx_direct_current_location_present) {
j.write_int("txDirectCurrentLocation", tx_direct_current_location);
}
}
j.end_obj();
}
// SIB-TypeInfo ::= SEQUENCE
SRSASN_CODE sib_type_info_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(value_tag_present, 1));
HANDLE_CODE(bref.pack(area_scope_present, 1));
HANDLE_CODE(type.pack(bref));
if (value_tag_present) {
HANDLE_CODE(pack_integer(bref, value_tag, (uint8_t)0u, (uint8_t)31u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE sib_type_info_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(value_tag_present, 1));
HANDLE_CODE(bref.unpack(area_scope_present, 1));
HANDLE_CODE(type.unpack(bref));
if (value_tag_present) {
HANDLE_CODE(unpack_integer(value_tag, bref, (uint8_t)0u, (uint8_t)31u));
}
return SRSASN_SUCCESS;
}
void sib_type_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("type", type.to_string());
if (value_tag_present) {
j.write_int("valueTag", value_tag);
}
if (area_scope_present) {
j.write_str("areaScope", "true");
}
j.end_obj();
}
const char* sib_type_info_s::type_opts::to_string() const
{
static const char* options[] = {"sibType2",
"sibType3",
"sibType4",
"sibType5",
"sibType6",
"sibType7",
"sibType8",
"sibType9",
"spare8",
"spare7",
"spare6",
"spare5",
"spare4",
"spare3",
"spare2",
"spare1"};
return convert_enum_idx(options, 16, value, "sib_type_info_s::type_e_");
}
uint8_t sib_type_info_s::type_opts::to_number() const
{
static const uint8_t options[] = {2, 3, 4, 5, 6, 7, 8, 9};
return map_enum_number(options, 8, value, "sib_type_info_s::type_e_");
}
// UAC-BarringPerCat ::= SEQUENCE
SRSASN_CODE uac_barr_per_cat_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, access_category, (uint8_t)1u, (uint8_t)63u));
HANDLE_CODE(pack_integer(bref, uac_barr_info_set_idx, (uint8_t)1u, (uint8_t)8u));
return SRSASN_SUCCESS;
}
SRSASN_CODE uac_barr_per_cat_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(access_category, bref, (uint8_t)1u, (uint8_t)63u));
HANDLE_CODE(unpack_integer(uac_barr_info_set_idx, bref, (uint8_t)1u, (uint8_t)8u));
return SRSASN_SUCCESS;
}
void uac_barr_per_cat_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("accessCategory", access_category);
j.write_int("uac-barringInfoSetIndex", uac_barr_info_set_idx);
j.end_obj();
}
// BCCH-Config ::= SEQUENCE
SRSASN_CODE bcch_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(mod_period_coeff.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE bcch_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(mod_period_coeff.unpack(bref));
return SRSASN_SUCCESS;
}
void bcch_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("modificationPeriodCoeff", mod_period_coeff.to_string());
j.end_obj();
}
const char* bcch_cfg_s::mod_period_coeff_opts::to_string() const
{
static const char* options[] = {"n2", "n4", "n8", "n16"};
return convert_enum_idx(options, 4, value, "bcch_cfg_s::mod_period_coeff_e_");
}
uint8_t bcch_cfg_s::mod_period_coeff_opts::to_number() const
{
static const uint8_t options[] = {2, 4, 8, 16};
return map_enum_number(options, 4, value, "bcch_cfg_s::mod_period_coeff_e_");
}
// BWP-DownlinkCommon ::= SEQUENCE
SRSASN_CODE bwp_dl_common_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(pdcch_cfg_common_present, 1));
HANDLE_CODE(bref.pack(pdsch_cfg_common_present, 1));
HANDLE_CODE(generic_params.pack(bref));
if (pdcch_cfg_common_present) {
HANDLE_CODE(pdcch_cfg_common.pack(bref));
}
if (pdsch_cfg_common_present) {
HANDLE_CODE(pdsch_cfg_common.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE bwp_dl_common_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(pdcch_cfg_common_present, 1));
HANDLE_CODE(bref.unpack(pdsch_cfg_common_present, 1));
HANDLE_CODE(generic_params.unpack(bref));
if (pdcch_cfg_common_present) {
HANDLE_CODE(pdcch_cfg_common.unpack(bref));
}
if (pdsch_cfg_common_present) {
HANDLE_CODE(pdsch_cfg_common.unpack(bref));
}
return SRSASN_SUCCESS;
}
void bwp_dl_common_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("genericParameters");
generic_params.to_json(j);
if (pdcch_cfg_common_present) {
j.write_fieldname("pdcch-ConfigCommon");
pdcch_cfg_common.to_json(j);
}
if (pdsch_cfg_common_present) {
j.write_fieldname("pdsch-ConfigCommon");
pdsch_cfg_common.to_json(j);
}
j.end_obj();
}
// BWP-UplinkCommon ::= SEQUENCE
SRSASN_CODE bwp_ul_common_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(rach_cfg_common_present, 1));
HANDLE_CODE(bref.pack(pusch_cfg_common_present, 1));
HANDLE_CODE(bref.pack(pucch_cfg_common_present, 1));
HANDLE_CODE(generic_params.pack(bref));
if (rach_cfg_common_present) {
HANDLE_CODE(rach_cfg_common.pack(bref));
}
if (pusch_cfg_common_present) {
HANDLE_CODE(pusch_cfg_common.pack(bref));
}
if (pucch_cfg_common_present) {
HANDLE_CODE(pucch_cfg_common.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE bwp_ul_common_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(rach_cfg_common_present, 1));
HANDLE_CODE(bref.unpack(pusch_cfg_common_present, 1));
HANDLE_CODE(bref.unpack(pucch_cfg_common_present, 1));
HANDLE_CODE(generic_params.unpack(bref));
if (rach_cfg_common_present) {
HANDLE_CODE(rach_cfg_common.unpack(bref));
}
if (pusch_cfg_common_present) {
HANDLE_CODE(pusch_cfg_common.unpack(bref));
}
if (pucch_cfg_common_present) {
HANDLE_CODE(pucch_cfg_common.unpack(bref));
}
return SRSASN_SUCCESS;
}
void bwp_ul_common_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("genericParameters");
generic_params.to_json(j);
if (rach_cfg_common_present) {
j.write_fieldname("rach-ConfigCommon");
rach_cfg_common.to_json(j);
}
if (pusch_cfg_common_present) {
j.write_fieldname("pusch-ConfigCommon");
pusch_cfg_common.to_json(j);
}
if (pucch_cfg_common_present) {
j.write_fieldname("pucch-ConfigCommon");
pucch_cfg_common.to_json(j);
}
j.end_obj();
}
// FrequencyInfoDL-SIB ::= SEQUENCE
SRSASN_CODE freq_info_dl_sib_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_dyn_seq_of(bref, freq_band_list, 1, 8));
HANDLE_CODE(pack_integer(bref, offset_to_point_a, (uint16_t)0u, (uint16_t)2199u));
HANDLE_CODE(pack_dyn_seq_of(bref, scs_specific_carrier_list, 1, 5));
return SRSASN_SUCCESS;
}
SRSASN_CODE freq_info_dl_sib_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_dyn_seq_of(freq_band_list, bref, 1, 8));
HANDLE_CODE(unpack_integer(offset_to_point_a, bref, (uint16_t)0u, (uint16_t)2199u));
HANDLE_CODE(unpack_dyn_seq_of(scs_specific_carrier_list, bref, 1, 5));
return SRSASN_SUCCESS;
}
void freq_info_dl_sib_s::to_json(json_writer& j) const
{
j.start_obj();
j.start_array("frequencyBandList");
for (const auto& e1 : freq_band_list) {
e1.to_json(j);
}
j.end_array();
j.write_int("offsetToPointA", offset_to_point_a);
j.start_array("scs-SpecificCarrierList");
for (const auto& e1 : scs_specific_carrier_list) {
e1.to_json(j);
}
j.end_array();
j.end_obj();
}
// FrequencyInfoUL-SIB ::= SEQUENCE
SRSASN_CODE freq_info_ul_sib_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(freq_band_list_present, 1));
HANDLE_CODE(bref.pack(absolute_freq_point_a_present, 1));
HANDLE_CODE(bref.pack(p_max_present, 1));
HANDLE_CODE(bref.pack(freq_shift7p5khz_present, 1));
if (freq_band_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, freq_band_list, 1, 8));
}
if (absolute_freq_point_a_present) {
HANDLE_CODE(pack_integer(bref, absolute_freq_point_a, (uint32_t)0u, (uint32_t)3279165u));
}
HANDLE_CODE(pack_dyn_seq_of(bref, scs_specific_carrier_list, 1, 5));
if (p_max_present) {
HANDLE_CODE(pack_integer(bref, p_max, (int8_t)-30, (int8_t)33));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE freq_info_ul_sib_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(freq_band_list_present, 1));
HANDLE_CODE(bref.unpack(absolute_freq_point_a_present, 1));
HANDLE_CODE(bref.unpack(p_max_present, 1));
HANDLE_CODE(bref.unpack(freq_shift7p5khz_present, 1));
if (freq_band_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(freq_band_list, bref, 1, 8));
}
if (absolute_freq_point_a_present) {
HANDLE_CODE(unpack_integer(absolute_freq_point_a, bref, (uint32_t)0u, (uint32_t)3279165u));
}
HANDLE_CODE(unpack_dyn_seq_of(scs_specific_carrier_list, bref, 1, 5));
if (p_max_present) {
HANDLE_CODE(unpack_integer(p_max, bref, (int8_t)-30, (int8_t)33));
}
return SRSASN_SUCCESS;
}
void freq_info_ul_sib_s::to_json(json_writer& j) const
{
j.start_obj();
if (freq_band_list_present) {
j.start_array("frequencyBandList");
for (const auto& e1 : freq_band_list) {
e1.to_json(j);
}
j.end_array();
}
if (absolute_freq_point_a_present) {
j.write_int("absoluteFrequencyPointA", absolute_freq_point_a);
}
j.start_array("scs-SpecificCarrierList");
for (const auto& e1 : scs_specific_carrier_list) {
e1.to_json(j);
}
j.end_array();
if (p_max_present) {
j.write_int("p-Max", p_max);
}
if (freq_shift7p5khz_present) {
j.write_str("frequencyShift7p5khz", "true");
}
j.end_obj();
}
// MobilityStateParameters ::= SEQUENCE
SRSASN_CODE mob_state_params_s::pack(bit_ref& bref) const
{
HANDLE_CODE(t_eval.pack(bref));
HANDLE_CODE(t_hyst_normal.pack(bref));
HANDLE_CODE(pack_integer(bref, n_cell_change_medium, (uint8_t)1u, (uint8_t)16u));
HANDLE_CODE(pack_integer(bref, n_cell_change_high, (uint8_t)1u, (uint8_t)16u));
return SRSASN_SUCCESS;
}
SRSASN_CODE mob_state_params_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(t_eval.unpack(bref));
HANDLE_CODE(t_hyst_normal.unpack(bref));
HANDLE_CODE(unpack_integer(n_cell_change_medium, bref, (uint8_t)1u, (uint8_t)16u));
HANDLE_CODE(unpack_integer(n_cell_change_high, bref, (uint8_t)1u, (uint8_t)16u));
return SRSASN_SUCCESS;
}
void mob_state_params_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("t-Evaluation", t_eval.to_string());
j.write_str("t-HystNormal", t_hyst_normal.to_string());
j.write_int("n-CellChangeMedium", n_cell_change_medium);
j.write_int("n-CellChangeHigh", n_cell_change_high);
j.end_obj();
}
const char* mob_state_params_s::t_eval_opts::to_string() const
{
static const char* options[] = {"s30", "s60", "s120", "s180", "s240", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 8, value, "mob_state_params_s::t_eval_e_");
}
uint8_t mob_state_params_s::t_eval_opts::to_number() const
{
static const uint8_t options[] = {30, 60, 120, 180, 240};
return map_enum_number(options, 5, value, "mob_state_params_s::t_eval_e_");
}
const char* mob_state_params_s::t_hyst_normal_opts::to_string() const
{
static const char* options[] = {"s30", "s60", "s120", "s180", "s240", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 8, value, "mob_state_params_s::t_hyst_normal_e_");
}
uint8_t mob_state_params_s::t_hyst_normal_opts::to_number() const
{
static const uint8_t options[] = {30, 60, 120, 180, 240};
return map_enum_number(options, 5, value, "mob_state_params_s::t_hyst_normal_e_");
}
// PCCH-Config ::= SEQUENCE
SRSASN_CODE pcch_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(first_pdcch_monitoring_occasion_of_po_present, 1));
HANDLE_CODE(default_paging_cycle.pack(bref));
HANDLE_CODE(nand_paging_frame_offset.pack(bref));
HANDLE_CODE(ns.pack(bref));
if (first_pdcch_monitoring_occasion_of_po_present) {
HANDLE_CODE(first_pdcch_monitoring_occasion_of_po.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pcch_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(first_pdcch_monitoring_occasion_of_po_present, 1));
HANDLE_CODE(default_paging_cycle.unpack(bref));
HANDLE_CODE(nand_paging_frame_offset.unpack(bref));
HANDLE_CODE(ns.unpack(bref));
if (first_pdcch_monitoring_occasion_of_po_present) {
HANDLE_CODE(first_pdcch_monitoring_occasion_of_po.unpack(bref));
}
return SRSASN_SUCCESS;
}
void pcch_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("defaultPagingCycle", default_paging_cycle.to_string());
j.write_fieldname("nAndPagingFrameOffset");
nand_paging_frame_offset.to_json(j);
j.write_str("ns", ns.to_string());
if (first_pdcch_monitoring_occasion_of_po_present) {
j.write_fieldname("firstPDCCH-MonitoringOccasionOfPO");
first_pdcch_monitoring_occasion_of_po.to_json(j);
}
j.end_obj();
}
void pcch_cfg_s::nand_paging_frame_offset_c_::destroy_() {}
void pcch_cfg_s::nand_paging_frame_offset_c_::set(types::options e)
{
destroy_();
type_ = e;
}
pcch_cfg_s::nand_paging_frame_offset_c_::nand_paging_frame_offset_c_(
const pcch_cfg_s::nand_paging_frame_offset_c_& other)
{
type_ = other.type();
switch (type_) {
case types::one_t:
break;
case types::half_t:
c.init(other.c.get<uint8_t>());
break;
case types::quarter_t:
c.init(other.c.get<uint8_t>());
break;
case types::one_eighth_t:
c.init(other.c.get<uint8_t>());
break;
case types::one_sixteenth_t:
c.init(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "pcch_cfg_s::nand_paging_frame_offset_c_");
}
}
pcch_cfg_s::nand_paging_frame_offset_c_&
pcch_cfg_s::nand_paging_frame_offset_c_::operator=(const pcch_cfg_s::nand_paging_frame_offset_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::one_t:
break;
case types::half_t:
c.set(other.c.get<uint8_t>());
break;
case types::quarter_t:
c.set(other.c.get<uint8_t>());
break;
case types::one_eighth_t:
c.set(other.c.get<uint8_t>());
break;
case types::one_sixteenth_t:
c.set(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "pcch_cfg_s::nand_paging_frame_offset_c_");
}
return *this;
}
void pcch_cfg_s::nand_paging_frame_offset_c_::set_one_t()
{
set(types::one_t);
}
uint8_t& pcch_cfg_s::nand_paging_frame_offset_c_::set_half_t()
{
set(types::half_t);
return c.get<uint8_t>();
}
uint8_t& pcch_cfg_s::nand_paging_frame_offset_c_::set_quarter_t()
{
set(types::quarter_t);
return c.get<uint8_t>();
}
uint8_t& pcch_cfg_s::nand_paging_frame_offset_c_::set_one_eighth_t()
{
set(types::one_eighth_t);
return c.get<uint8_t>();
}
uint8_t& pcch_cfg_s::nand_paging_frame_offset_c_::set_one_sixteenth_t()
{
set(types::one_sixteenth_t);
return c.get<uint8_t>();
}
void pcch_cfg_s::nand_paging_frame_offset_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::one_t:
break;
case types::half_t:
j.write_int("halfT", c.get<uint8_t>());
break;
case types::quarter_t:
j.write_int("quarterT", c.get<uint8_t>());
break;
case types::one_eighth_t:
j.write_int("oneEighthT", c.get<uint8_t>());
break;
case types::one_sixteenth_t:
j.write_int("oneSixteenthT", c.get<uint8_t>());
break;
default:
log_invalid_choice_id(type_, "pcch_cfg_s::nand_paging_frame_offset_c_");
}
j.end_obj();
}
SRSASN_CODE pcch_cfg_s::nand_paging_frame_offset_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::one_t:
break;
case types::half_t:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)1u));
break;
case types::quarter_t:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)3u));
break;
case types::one_eighth_t:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)7u));
break;
case types::one_sixteenth_t:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)15u));
break;
default:
log_invalid_choice_id(type_, "pcch_cfg_s::nand_paging_frame_offset_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pcch_cfg_s::nand_paging_frame_offset_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::one_t:
break;
case types::half_t:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)1u));
break;
case types::quarter_t:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)3u));
break;
case types::one_eighth_t:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)7u));
break;
case types::one_sixteenth_t:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)15u));
break;
default:
log_invalid_choice_id(type_, "pcch_cfg_s::nand_paging_frame_offset_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* pcch_cfg_s::nand_paging_frame_offset_c_::types_opts::to_string() const
{
static const char* options[] = {"oneT", "halfT", "quarterT", "oneEighthT", "oneSixteenthT"};
return convert_enum_idx(options, 5, value, "pcch_cfg_s::nand_paging_frame_offset_c_::types");
}
float pcch_cfg_s::nand_paging_frame_offset_c_::types_opts::to_number() const
{
static const float options[] = {1.0, 0.5, 0.25, 0.125, 0.0625};
return map_enum_number(options, 5, value, "pcch_cfg_s::nand_paging_frame_offset_c_::types");
}
const char* pcch_cfg_s::nand_paging_frame_offset_c_::types_opts::to_number_string() const
{
static const char* options[] = {"1", "0.5", "0.25", "1/8", "1/16"};
return convert_enum_idx(options, 5, value, "pcch_cfg_s::nand_paging_frame_offset_c_::types");
}
const char* pcch_cfg_s::ns_opts::to_string() const
{
static const char* options[] = {"four", "two", "one"};
return convert_enum_idx(options, 3, value, "pcch_cfg_s::ns_e_");
}
uint8_t pcch_cfg_s::ns_opts::to_number() const
{
static const uint8_t options[] = {4, 2, 1};
return map_enum_number(options, 3, value, "pcch_cfg_s::ns_e_");
}
void pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_::destroy_()
{
switch (type_) {
case types::scs15_kh_zone_t:
c.destroy<scs15_kh_zone_t_l_>();
break;
case types::scs30_kh_zone_t_scs15_kh_zhalf_t:
c.destroy<scs30_kh_zone_t_scs15_kh_zhalf_t_l_>();
break;
case types::scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t:
c.destroy<scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t_l_>();
break;
case types::scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t:
c.destroy<scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t_l_>();
break;
case types::scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t:
c.destroy<scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t_l_>();
break;
case types::scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t:
c.destroy<scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t_l_>();
break;
case types::scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t:
c.destroy<scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t_l_>();
break;
case types::scs120_kh_zone_sixteenth_t:
c.destroy<scs120_kh_zone_sixteenth_t_l_>();
break;
default:
break;
}
}
void pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::scs15_kh_zone_t:
c.init<scs15_kh_zone_t_l_>();
break;
case types::scs30_kh_zone_t_scs15_kh_zhalf_t:
c.init<scs30_kh_zone_t_scs15_kh_zhalf_t_l_>();
break;
case types::scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t:
c.init<scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t_l_>();
break;
case types::scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t:
c.init<scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t_l_>();
break;
case types::scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t:
c.init<scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t_l_>();
break;
case types::scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t:
c.init<scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t_l_>();
break;
case types::scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t:
c.init<scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t_l_>();
break;
case types::scs120_kh_zone_sixteenth_t:
c.init<scs120_kh_zone_sixteenth_t_l_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_");
}
}
pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_::first_pdcch_monitoring_occasion_of_po_c_(
const pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_& other)
{
type_ = other.type();
switch (type_) {
case types::scs15_kh_zone_t:
c.init(other.c.get<scs15_kh_zone_t_l_>());
break;
case types::scs30_kh_zone_t_scs15_kh_zhalf_t:
c.init(other.c.get<scs30_kh_zone_t_scs15_kh_zhalf_t_l_>());
break;
case types::scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t:
c.init(other.c.get<scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t_l_>());
break;
case types::scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t:
c.init(other.c.get<scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t_l_>());
break;
case types::scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t:
c.init(other.c.get<scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t_l_>());
break;
case types::scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t:
c.init(other.c.get<scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t_l_>());
break;
case types::scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t:
c.init(other.c.get<scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t_l_>());
break;
case types::scs120_kh_zone_sixteenth_t:
c.init(other.c.get<scs120_kh_zone_sixteenth_t_l_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_");
}
}
pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_& pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_::operator=(
const pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::scs15_kh_zone_t:
c.set(other.c.get<scs15_kh_zone_t_l_>());
break;
case types::scs30_kh_zone_t_scs15_kh_zhalf_t:
c.set(other.c.get<scs30_kh_zone_t_scs15_kh_zhalf_t_l_>());
break;
case types::scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t:
c.set(other.c.get<scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t_l_>());
break;
case types::scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t:
c.set(other.c.get<scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t_l_>());
break;
case types::scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t:
c.set(other.c.get<scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t_l_>());
break;
case types::scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t:
c.set(other.c.get<scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t_l_>());
break;
case types::scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t:
c.set(other.c.get<scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t_l_>());
break;
case types::scs120_kh_zone_sixteenth_t:
c.set(other.c.get<scs120_kh_zone_sixteenth_t_l_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_");
}
return *this;
}
pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_::scs15_kh_zone_t_l_&
pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_::set_scs15_kh_zone_t()
{
set(types::scs15_kh_zone_t);
return c.get<scs15_kh_zone_t_l_>();
}
pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_::scs30_kh_zone_t_scs15_kh_zhalf_t_l_&
pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_::set_scs30_kh_zone_t_scs15_kh_zhalf_t()
{
set(types::scs30_kh_zone_t_scs15_kh_zhalf_t);
return c.get<scs30_kh_zone_t_scs15_kh_zhalf_t_l_>();
}
pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_::scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t_l_&
pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_::set_scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t()
{
set(types::scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t);
return c.get<scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t_l_>();
}
pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_::
scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t_l_&
pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_::
set_scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t()
{
set(types::scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t);
return c.get<scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t_l_>();
}
pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_::
scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t_l_&
pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_::
set_scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t()
{
set(types::scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t);
return c.get<scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t_l_>();
}
pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_::
scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t_l_&
pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_::
set_scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t()
{
set(types::scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t);
return c.get<scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t_l_>();
}
pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_::scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t_l_&
pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_::set_scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t()
{
set(types::scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t);
return c.get<scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t_l_>();
}
pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_::scs120_kh_zone_sixteenth_t_l_&
pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_::set_scs120_kh_zone_sixteenth_t()
{
set(types::scs120_kh_zone_sixteenth_t);
return c.get<scs120_kh_zone_sixteenth_t_l_>();
}
void pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::scs15_kh_zone_t:
j.start_array("sCS15KHZoneT");
for (const auto& e1 : c.get<scs15_kh_zone_t_l_>()) {
j.write_int(e1);
}
j.end_array();
break;
case types::scs30_kh_zone_t_scs15_kh_zhalf_t:
j.start_array("sCS30KHZoneT-SCS15KHZhalfT");
for (const auto& e1 : c.get<scs30_kh_zone_t_scs15_kh_zhalf_t_l_>()) {
j.write_int(e1);
}
j.end_array();
break;
case types::scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t:
j.start_array("sCS60KHZoneT-SCS30KHZhalfT-SCS15KHZquarterT");
for (const auto& e1 : c.get<scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t_l_>()) {
j.write_int(e1);
}
j.end_array();
break;
case types::scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t:
j.start_array("sCS120KHZoneT-SCS60KHZhalfT-SCS30KHZquarterT-SCS15KHZoneEighthT");
for (const auto& e1 : c.get<scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t_l_>()) {
j.write_int(e1);
}
j.end_array();
break;
case types::scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t:
j.start_array("sCS120KHZhalfT-SCS60KHZquarterT-SCS30KHZoneEighthT-SCS15KHZoneSixteenthT");
for (const auto& e1 :
c.get<scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t_l_>()) {
j.write_int(e1);
}
j.end_array();
break;
case types::scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t:
j.start_array("sCS120KHZquarterT-SCS60KHZoneEighthT-SCS30KHZoneSixteenthT");
for (const auto& e1 : c.get<scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t_l_>()) {
j.write_int(e1);
}
j.end_array();
break;
case types::scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t:
j.start_array("sCS120KHZoneEighthT-SCS60KHZoneSixteenthT");
for (const auto& e1 : c.get<scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t_l_>()) {
j.write_int(e1);
}
j.end_array();
break;
case types::scs120_kh_zone_sixteenth_t:
j.start_array("sCS120KHZoneSixteenthT");
for (const auto& e1 : c.get<scs120_kh_zone_sixteenth_t_l_>()) {
j.write_int(e1);
}
j.end_array();
break;
default:
log_invalid_choice_id(type_, "pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_");
}
j.end_obj();
}
SRSASN_CODE pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::scs15_kh_zone_t:
HANDLE_CODE(pack_dyn_seq_of(bref, c.get<scs15_kh_zone_t_l_>(), 1, 4, integer_packer<uint8_t>(0, 139)));
break;
case types::scs30_kh_zone_t_scs15_kh_zhalf_t:
HANDLE_CODE(
pack_dyn_seq_of(bref, c.get<scs30_kh_zone_t_scs15_kh_zhalf_t_l_>(), 1, 4, integer_packer<uint16_t>(0, 279)));
break;
case types::scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t:
HANDLE_CODE(pack_dyn_seq_of(bref,
c.get<scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t_l_>(),
1,
4,
integer_packer<uint16_t>(0, 559)));
break;
case types::scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t:
HANDLE_CODE(
pack_dyn_seq_of(bref,
c.get<scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t_l_>(),
1,
4,
integer_packer<uint16_t>(0, 1119)));
break;
case types::scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t:
HANDLE_CODE(pack_dyn_seq_of(
bref,
c.get<scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t_l_>(),
1,
4,
integer_packer<uint16_t>(0, 2239)));
break;
case types::scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t:
HANDLE_CODE(pack_dyn_seq_of(bref,
c.get<scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t_l_>(),
1,
4,
integer_packer<uint16_t>(0, 4479)));
break;
case types::scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t:
HANDLE_CODE(pack_dyn_seq_of(bref,
c.get<scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t_l_>(),
1,
4,
integer_packer<uint16_t>(0, 8959)));
break;
case types::scs120_kh_zone_sixteenth_t:
HANDLE_CODE(
pack_dyn_seq_of(bref, c.get<scs120_kh_zone_sixteenth_t_l_>(), 1, 4, integer_packer<uint16_t>(0, 17919)));
break;
default:
log_invalid_choice_id(type_, "pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::scs15_kh_zone_t:
HANDLE_CODE(unpack_dyn_seq_of(c.get<scs15_kh_zone_t_l_>(), bref, 1, 4, integer_packer<uint8_t>(0, 139)));
break;
case types::scs30_kh_zone_t_scs15_kh_zhalf_t:
HANDLE_CODE(unpack_dyn_seq_of(
c.get<scs30_kh_zone_t_scs15_kh_zhalf_t_l_>(), bref, 1, 4, integer_packer<uint16_t>(0, 279)));
break;
case types::scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t:
HANDLE_CODE(unpack_dyn_seq_of(c.get<scs60_kh_zone_t_scs30_kh_zhalf_t_scs15_kh_zquarter_t_l_>(),
bref,
1,
4,
integer_packer<uint16_t>(0, 559)));
break;
case types::scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t:
HANDLE_CODE(
unpack_dyn_seq_of(c.get<scs120_kh_zone_t_scs60_kh_zhalf_t_scs30_kh_zquarter_t_scs15_kh_zone_eighth_t_l_>(),
bref,
1,
4,
integer_packer<uint16_t>(0, 1119)));
break;
case types::scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t:
HANDLE_CODE(unpack_dyn_seq_of(
c.get<scs120_kh_zhalf_t_scs60_kh_zquarter_t_scs30_kh_zone_eighth_t_scs15_kh_zone_sixteenth_t_l_>(),
bref,
1,
4,
integer_packer<uint16_t>(0, 2239)));
break;
case types::scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t:
HANDLE_CODE(unpack_dyn_seq_of(c.get<scs120_kh_zquarter_t_scs60_kh_zone_eighth_t_scs30_kh_zone_sixteenth_t_l_>(),
bref,
1,
4,
integer_packer<uint16_t>(0, 4479)));
break;
case types::scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t:
HANDLE_CODE(unpack_dyn_seq_of(c.get<scs120_kh_zone_eighth_t_scs60_kh_zone_sixteenth_t_l_>(),
bref,
1,
4,
integer_packer<uint16_t>(0, 8959)));
break;
case types::scs120_kh_zone_sixteenth_t:
HANDLE_CODE(
unpack_dyn_seq_of(c.get<scs120_kh_zone_sixteenth_t_l_>(), bref, 1, 4, integer_packer<uint16_t>(0, 17919)));
break;
default:
log_invalid_choice_id(type_, "pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_::types_opts::to_string() const
{
static const char* options[] = {"sCS15KHZoneT",
"sCS30KHZoneT-SCS15KHZhalfT",
"sCS60KHZoneT-SCS30KHZhalfT-SCS15KHZquarterT",
"sCS120KHZoneT-SCS60KHZhalfT-SCS30KHZquarterT-SCS15KHZoneEighthT",
"sCS120KHZhalfT-SCS60KHZquarterT-SCS30KHZoneEighthT-SCS15KHZoneSixteenthT",
"sCS120KHZquarterT-SCS60KHZoneEighthT-SCS30KHZoneSixteenthT",
"sCS120KHZoneEighthT-SCS60KHZoneSixteenthT",
"sCS120KHZoneSixteenthT"};
return convert_enum_idx(options, 8, value, "pcch_cfg_s::first_pdcch_monitoring_occasion_of_po_c_::types");
}
// PLMN-IdentityInfo ::= SEQUENCE
SRSASN_CODE plmn_id_info_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(tac_present, 1));
HANDLE_CODE(bref.pack(ranac_present, 1));
HANDLE_CODE(pack_dyn_seq_of(bref, plmn_id_list, 1, 12));
if (tac_present) {
HANDLE_CODE(tac.pack(bref));
}
if (ranac_present) {
HANDLE_CODE(pack_integer(bref, ranac, (uint16_t)0u, (uint16_t)255u));
}
HANDLE_CODE(cell_id.pack(bref));
HANDLE_CODE(cell_reserved_for_oper.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE plmn_id_info_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(tac_present, 1));
HANDLE_CODE(bref.unpack(ranac_present, 1));
HANDLE_CODE(unpack_dyn_seq_of(plmn_id_list, bref, 1, 12));
if (tac_present) {
HANDLE_CODE(tac.unpack(bref));
}
if (ranac_present) {
HANDLE_CODE(unpack_integer(ranac, bref, (uint16_t)0u, (uint16_t)255u));
}
HANDLE_CODE(cell_id.unpack(bref));
HANDLE_CODE(cell_reserved_for_oper.unpack(bref));
return SRSASN_SUCCESS;
}
void plmn_id_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.start_array("plmn-IdentityList");
for (const auto& e1 : plmn_id_list) {
e1.to_json(j);
}
j.end_array();
if (tac_present) {
j.write_str("trackingAreaCode", tac.to_string());
}
if (ranac_present) {
j.write_int("ranac", ranac);
}
j.write_str("cellIdentity", cell_id.to_string());
j.write_str("cellReservedForOperatorUse", cell_reserved_for_oper.to_string());
j.end_obj();
}
const char* plmn_id_info_s::cell_reserved_for_oper_opts::to_string() const
{
static const char* options[] = {"reserved", "notReserved"};
return convert_enum_idx(options, 2, value, "plmn_id_info_s::cell_reserved_for_oper_e_");
}
// SI-RequestResources ::= SEQUENCE
SRSASN_CODE si_request_res_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(ra_assoc_period_idx_present, 1));
HANDLE_CODE(bref.pack(ra_ssb_occasion_mask_idx_present, 1));
HANDLE_CODE(pack_integer(bref, ra_preamb_start_idx, (uint8_t)0u, (uint8_t)63u));
if (ra_assoc_period_idx_present) {
HANDLE_CODE(pack_integer(bref, ra_assoc_period_idx, (uint8_t)0u, (uint8_t)15u));
}
if (ra_ssb_occasion_mask_idx_present) {
HANDLE_CODE(pack_integer(bref, ra_ssb_occasion_mask_idx, (uint8_t)0u, (uint8_t)15u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE si_request_res_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(ra_assoc_period_idx_present, 1));
HANDLE_CODE(bref.unpack(ra_ssb_occasion_mask_idx_present, 1));
HANDLE_CODE(unpack_integer(ra_preamb_start_idx, bref, (uint8_t)0u, (uint8_t)63u));
if (ra_assoc_period_idx_present) {
HANDLE_CODE(unpack_integer(ra_assoc_period_idx, bref, (uint8_t)0u, (uint8_t)15u));
}
if (ra_ssb_occasion_mask_idx_present) {
HANDLE_CODE(unpack_integer(ra_ssb_occasion_mask_idx, bref, (uint8_t)0u, (uint8_t)15u));
}
return SRSASN_SUCCESS;
}
void si_request_res_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("ra-PreambleStartIndex", ra_preamb_start_idx);
if (ra_assoc_period_idx_present) {
j.write_int("ra-AssociationPeriodIndex", ra_assoc_period_idx);
}
if (ra_ssb_occasion_mask_idx_present) {
j.write_int("ra-ssb-OccasionMaskIndex", ra_ssb_occasion_mask_idx);
}
j.end_obj();
}
// TDD-UL-DL-Pattern ::= SEQUENCE
SRSASN_CODE tdd_ul_dl_pattern_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(dl_ul_tx_periodicity.pack(bref));
HANDLE_CODE(pack_integer(bref, nrof_dl_slots, (uint16_t)0u, (uint16_t)320u));
HANDLE_CODE(pack_integer(bref, nrof_dl_symbols, (uint8_t)0u, (uint8_t)13u));
HANDLE_CODE(pack_integer(bref, nrof_ul_slots, (uint16_t)0u, (uint16_t)320u));
HANDLE_CODE(pack_integer(bref, nrof_ul_symbols, (uint8_t)0u, (uint8_t)13u));
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= dl_ul_tx_periodicity_v1530_present;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(dl_ul_tx_periodicity_v1530_present, 1));
if (dl_ul_tx_periodicity_v1530_present) {
HANDLE_CODE(dl_ul_tx_periodicity_v1530.pack(bref));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE tdd_ul_dl_pattern_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(dl_ul_tx_periodicity.unpack(bref));
HANDLE_CODE(unpack_integer(nrof_dl_slots, bref, (uint16_t)0u, (uint16_t)320u));
HANDLE_CODE(unpack_integer(nrof_dl_symbols, bref, (uint8_t)0u, (uint8_t)13u));
HANDLE_CODE(unpack_integer(nrof_ul_slots, bref, (uint16_t)0u, (uint16_t)320u));
HANDLE_CODE(unpack_integer(nrof_ul_symbols, bref, (uint8_t)0u, (uint8_t)13u));
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(dl_ul_tx_periodicity_v1530_present, 1));
if (dl_ul_tx_periodicity_v1530_present) {
HANDLE_CODE(dl_ul_tx_periodicity_v1530.unpack(bref));
}
}
}
return SRSASN_SUCCESS;
}
void tdd_ul_dl_pattern_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("dl-UL-TransmissionPeriodicity", dl_ul_tx_periodicity.to_string());
j.write_int("nrofDownlinkSlots", nrof_dl_slots);
j.write_int("nrofDownlinkSymbols", nrof_dl_symbols);
j.write_int("nrofUplinkSlots", nrof_ul_slots);
j.write_int("nrofUplinkSymbols", nrof_ul_symbols);
if (ext) {
if (dl_ul_tx_periodicity_v1530_present) {
j.write_str("dl-UL-TransmissionPeriodicity-v1530", dl_ul_tx_periodicity_v1530.to_string());
}
}
j.end_obj();
}
const char* tdd_ul_dl_pattern_s::dl_ul_tx_periodicity_opts::to_string() const
{
static const char* options[] = {"ms0p5", "ms0p625", "ms1", "ms1p25", "ms2", "ms2p5", "ms5", "ms10"};
return convert_enum_idx(options, 8, value, "tdd_ul_dl_pattern_s::dl_ul_tx_periodicity_e_");
}
const char* tdd_ul_dl_pattern_s::dl_ul_tx_periodicity_v1530_opts::to_string() const
{
static const char* options[] = {"ms3", "ms4"};
return convert_enum_idx(options, 2, value, "tdd_ul_dl_pattern_s::dl_ul_tx_periodicity_v1530_e_");
}
uint8_t tdd_ul_dl_pattern_s::dl_ul_tx_periodicity_v1530_opts::to_number() const
{
static const uint8_t options[] = {3, 4};
return map_enum_number(options, 2, value, "tdd_ul_dl_pattern_s::dl_ul_tx_periodicity_v1530_e_");
}
// TimeAlignmentTimer ::= ENUMERATED
const char* time_align_timer_opts::to_string() const
{
static const char* options[] = {"ms500", "ms750", "ms1280", "ms1920", "ms2560", "ms5120", "ms10240", "infinity"};
return convert_enum_idx(options, 8, value, "time_align_timer_e");
}
int16_t time_align_timer_opts::to_number() const
{
static const int16_t options[] = {500, 750, 1280, 1920, 2560, 5120, 10240, -1};
return map_enum_number(options, 8, value, "time_align_timer_e");
}
// DownlinkConfigCommonSIB ::= SEQUENCE
SRSASN_CODE dl_cfg_common_sib_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(freq_info_dl.pack(bref));
HANDLE_CODE(init_dl_bwp.pack(bref));
HANDLE_CODE(bcch_cfg.pack(bref));
HANDLE_CODE(pcch_cfg.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE dl_cfg_common_sib_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(freq_info_dl.unpack(bref));
HANDLE_CODE(init_dl_bwp.unpack(bref));
HANDLE_CODE(bcch_cfg.unpack(bref));
HANDLE_CODE(pcch_cfg.unpack(bref));
return SRSASN_SUCCESS;
}
void dl_cfg_common_sib_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("frequencyInfoDL");
freq_info_dl.to_json(j);
j.write_fieldname("initialDownlinkBWP");
init_dl_bwp.to_json(j);
j.write_fieldname("bcch-Config");
bcch_cfg.to_json(j);
j.write_fieldname("pcch-Config");
pcch_cfg.to_json(j);
j.end_obj();
}
// SI-RequestConfig ::= SEQUENCE
SRSASN_CODE si_request_cfg_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(rach_occasions_si_present, 1));
HANDLE_CODE(bref.pack(si_request_period_present, 1));
if (rach_occasions_si_present) {
HANDLE_CODE(rach_occasions_si.rach_cfg_si.pack(bref));
HANDLE_CODE(rach_occasions_si.ssb_per_rach_occasion.pack(bref));
}
if (si_request_period_present) {
HANDLE_CODE(si_request_period.pack(bref));
}
HANDLE_CODE(pack_dyn_seq_of(bref, si_request_res, 1, 32));
return SRSASN_SUCCESS;
}
SRSASN_CODE si_request_cfg_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(rach_occasions_si_present, 1));
HANDLE_CODE(bref.unpack(si_request_period_present, 1));
if (rach_occasions_si_present) {
HANDLE_CODE(rach_occasions_si.rach_cfg_si.unpack(bref));
HANDLE_CODE(rach_occasions_si.ssb_per_rach_occasion.unpack(bref));
}
if (si_request_period_present) {
HANDLE_CODE(si_request_period.unpack(bref));
}
HANDLE_CODE(unpack_dyn_seq_of(si_request_res, bref, 1, 32));
return SRSASN_SUCCESS;
}
void si_request_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (rach_occasions_si_present) {
j.write_fieldname("rach-OccasionsSI");
j.start_obj();
j.write_fieldname("rach-ConfigSI");
rach_occasions_si.rach_cfg_si.to_json(j);
j.write_str("ssb-perRACH-Occasion", rach_occasions_si.ssb_per_rach_occasion.to_string());
j.end_obj();
}
if (si_request_period_present) {
j.write_str("si-RequestPeriod", si_request_period.to_string());
}
j.start_array("si-RequestResources");
for (const auto& e1 : si_request_res) {
e1.to_json(j);
}
j.end_array();
j.end_obj();
}
const char* si_request_cfg_s::rach_occasions_si_s_::ssb_per_rach_occasion_opts::to_string() const
{
static const char* options[] = {"oneEighth", "oneFourth", "oneHalf", "one", "two", "four", "eight", "sixteen"};
return convert_enum_idx(options, 8, value, "si_request_cfg_s::rach_occasions_si_s_::ssb_per_rach_occasion_e_");
}
float si_request_cfg_s::rach_occasions_si_s_::ssb_per_rach_occasion_opts::to_number() const
{
static const float options[] = {0.125, 0.25, 0.5, 1.0, 2.0, 4.0, 8.0, 6.0};
return map_enum_number(options, 8, value, "si_request_cfg_s::rach_occasions_si_s_::ssb_per_rach_occasion_e_");
}
const char* si_request_cfg_s::rach_occasions_si_s_::ssb_per_rach_occasion_opts::to_number_string() const
{
static const char* options[] = {"1/8", "1/4", "1/2", "1", "2", "4", "8", "6"};
return convert_enum_idx(options, 8, value, "si_request_cfg_s::rach_occasions_si_s_::ssb_per_rach_occasion_e_");
}
const char* si_request_cfg_s::si_request_period_opts::to_string() const
{
static const char* options[] = {"one", "two", "four", "six", "eight", "ten", "twelve", "sixteen"};
return convert_enum_idx(options, 8, value, "si_request_cfg_s::si_request_period_e_");
}
// SIB2 ::= SEQUENCE
SRSASN_CODE sib2_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
bref.pack(cell_resel_info_common.ext, 1);
HANDLE_CODE(bref.pack(cell_resel_info_common.nrof_ss_blocks_to_average_present, 1));
HANDLE_CODE(bref.pack(cell_resel_info_common.abs_thresh_ss_blocks_consolidation_present, 1));
HANDLE_CODE(bref.pack(cell_resel_info_common.range_to_best_cell_present, 1));
HANDLE_CODE(bref.pack(cell_resel_info_common.speed_state_resel_pars_present, 1));
if (cell_resel_info_common.nrof_ss_blocks_to_average_present) {
HANDLE_CODE(pack_integer(bref, cell_resel_info_common.nrof_ss_blocks_to_average, (uint8_t)2u, (uint8_t)16u));
}
if (cell_resel_info_common.abs_thresh_ss_blocks_consolidation_present) {
HANDLE_CODE(cell_resel_info_common.abs_thresh_ss_blocks_consolidation.pack(bref));
}
if (cell_resel_info_common.range_to_best_cell_present) {
HANDLE_CODE(cell_resel_info_common.range_to_best_cell.pack(bref));
}
HANDLE_CODE(cell_resel_info_common.q_hyst.pack(bref));
if (cell_resel_info_common.speed_state_resel_pars_present) {
HANDLE_CODE(cell_resel_info_common.speed_state_resel_pars.mob_state_params.pack(bref));
HANDLE_CODE(cell_resel_info_common.speed_state_resel_pars.q_hyst_sf.sf_medium.pack(bref));
HANDLE_CODE(cell_resel_info_common.speed_state_resel_pars.q_hyst_sf.sf_high.pack(bref));
}
bref.pack(cell_resel_serving_freq_info.ext, 1);
HANDLE_CODE(bref.pack(cell_resel_serving_freq_info.s_non_intra_search_p_present, 1));
HANDLE_CODE(bref.pack(cell_resel_serving_freq_info.s_non_intra_search_q_present, 1));
HANDLE_CODE(bref.pack(cell_resel_serving_freq_info.thresh_serving_low_q_present, 1));
HANDLE_CODE(bref.pack(cell_resel_serving_freq_info.cell_resel_sub_prio_present, 1));
if (cell_resel_serving_freq_info.s_non_intra_search_p_present) {
HANDLE_CODE(pack_integer(bref, cell_resel_serving_freq_info.s_non_intra_search_p, (uint8_t)0u, (uint8_t)31u));
}
if (cell_resel_serving_freq_info.s_non_intra_search_q_present) {
HANDLE_CODE(pack_integer(bref, cell_resel_serving_freq_info.s_non_intra_search_q, (uint8_t)0u, (uint8_t)31u));
}
HANDLE_CODE(pack_integer(bref, cell_resel_serving_freq_info.thresh_serving_low_p, (uint8_t)0u, (uint8_t)31u));
if (cell_resel_serving_freq_info.thresh_serving_low_q_present) {
HANDLE_CODE(pack_integer(bref, cell_resel_serving_freq_info.thresh_serving_low_q, (uint8_t)0u, (uint8_t)31u));
}
HANDLE_CODE(pack_integer(bref, cell_resel_serving_freq_info.cell_resel_prio, (uint8_t)0u, (uint8_t)7u));
if (cell_resel_serving_freq_info.cell_resel_sub_prio_present) {
HANDLE_CODE(cell_resel_serving_freq_info.cell_resel_sub_prio.pack(bref));
}
HANDLE_CODE(intra_freq_cell_resel_info.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE sib2_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
bref.unpack(cell_resel_info_common.ext, 1);
HANDLE_CODE(bref.unpack(cell_resel_info_common.nrof_ss_blocks_to_average_present, 1));
HANDLE_CODE(bref.unpack(cell_resel_info_common.abs_thresh_ss_blocks_consolidation_present, 1));
HANDLE_CODE(bref.unpack(cell_resel_info_common.range_to_best_cell_present, 1));
HANDLE_CODE(bref.unpack(cell_resel_info_common.speed_state_resel_pars_present, 1));
if (cell_resel_info_common.nrof_ss_blocks_to_average_present) {
HANDLE_CODE(unpack_integer(cell_resel_info_common.nrof_ss_blocks_to_average, bref, (uint8_t)2u, (uint8_t)16u));
}
if (cell_resel_info_common.abs_thresh_ss_blocks_consolidation_present) {
HANDLE_CODE(cell_resel_info_common.abs_thresh_ss_blocks_consolidation.unpack(bref));
}
if (cell_resel_info_common.range_to_best_cell_present) {
HANDLE_CODE(cell_resel_info_common.range_to_best_cell.unpack(bref));
}
HANDLE_CODE(cell_resel_info_common.q_hyst.unpack(bref));
if (cell_resel_info_common.speed_state_resel_pars_present) {
HANDLE_CODE(cell_resel_info_common.speed_state_resel_pars.mob_state_params.unpack(bref));
HANDLE_CODE(cell_resel_info_common.speed_state_resel_pars.q_hyst_sf.sf_medium.unpack(bref));
HANDLE_CODE(cell_resel_info_common.speed_state_resel_pars.q_hyst_sf.sf_high.unpack(bref));
}
bref.unpack(cell_resel_serving_freq_info.ext, 1);
HANDLE_CODE(bref.unpack(cell_resel_serving_freq_info.s_non_intra_search_p_present, 1));
HANDLE_CODE(bref.unpack(cell_resel_serving_freq_info.s_non_intra_search_q_present, 1));
HANDLE_CODE(bref.unpack(cell_resel_serving_freq_info.thresh_serving_low_q_present, 1));
HANDLE_CODE(bref.unpack(cell_resel_serving_freq_info.cell_resel_sub_prio_present, 1));
if (cell_resel_serving_freq_info.s_non_intra_search_p_present) {
HANDLE_CODE(unpack_integer(cell_resel_serving_freq_info.s_non_intra_search_p, bref, (uint8_t)0u, (uint8_t)31u));
}
if (cell_resel_serving_freq_info.s_non_intra_search_q_present) {
HANDLE_CODE(unpack_integer(cell_resel_serving_freq_info.s_non_intra_search_q, bref, (uint8_t)0u, (uint8_t)31u));
}
HANDLE_CODE(unpack_integer(cell_resel_serving_freq_info.thresh_serving_low_p, bref, (uint8_t)0u, (uint8_t)31u));
if (cell_resel_serving_freq_info.thresh_serving_low_q_present) {
HANDLE_CODE(unpack_integer(cell_resel_serving_freq_info.thresh_serving_low_q, bref, (uint8_t)0u, (uint8_t)31u));
}
HANDLE_CODE(unpack_integer(cell_resel_serving_freq_info.cell_resel_prio, bref, (uint8_t)0u, (uint8_t)7u));
if (cell_resel_serving_freq_info.cell_resel_sub_prio_present) {
HANDLE_CODE(cell_resel_serving_freq_info.cell_resel_sub_prio.unpack(bref));
}
HANDLE_CODE(intra_freq_cell_resel_info.unpack(bref));
return SRSASN_SUCCESS;
}
void sib2_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("cellReselectionInfoCommon");
j.start_obj();
if (cell_resel_info_common.nrof_ss_blocks_to_average_present) {
j.write_int("nrofSS-BlocksToAverage", cell_resel_info_common.nrof_ss_blocks_to_average);
}
if (cell_resel_info_common.abs_thresh_ss_blocks_consolidation_present) {
j.write_fieldname("absThreshSS-BlocksConsolidation");
cell_resel_info_common.abs_thresh_ss_blocks_consolidation.to_json(j);
}
if (cell_resel_info_common.range_to_best_cell_present) {
j.write_str("rangeToBestCell", cell_resel_info_common.range_to_best_cell.to_string());
}
j.write_str("q-Hyst", cell_resel_info_common.q_hyst.to_string());
if (cell_resel_info_common.speed_state_resel_pars_present) {
j.write_fieldname("speedStateReselectionPars");
j.start_obj();
j.write_fieldname("mobilityStateParameters");
cell_resel_info_common.speed_state_resel_pars.mob_state_params.to_json(j);
j.write_fieldname("q-HystSF");
j.start_obj();
j.write_str("sf-Medium", cell_resel_info_common.speed_state_resel_pars.q_hyst_sf.sf_medium.to_string());
j.write_str("sf-High", cell_resel_info_common.speed_state_resel_pars.q_hyst_sf.sf_high.to_string());
j.end_obj();
j.end_obj();
}
j.end_obj();
j.write_fieldname("cellReselectionServingFreqInfo");
j.start_obj();
if (cell_resel_serving_freq_info.s_non_intra_search_p_present) {
j.write_int("s-NonIntraSearchP", cell_resel_serving_freq_info.s_non_intra_search_p);
}
if (cell_resel_serving_freq_info.s_non_intra_search_q_present) {
j.write_int("s-NonIntraSearchQ", cell_resel_serving_freq_info.s_non_intra_search_q);
}
j.write_int("threshServingLowP", cell_resel_serving_freq_info.thresh_serving_low_p);
if (cell_resel_serving_freq_info.thresh_serving_low_q_present) {
j.write_int("threshServingLowQ", cell_resel_serving_freq_info.thresh_serving_low_q);
}
j.write_int("cellReselectionPriority", cell_resel_serving_freq_info.cell_resel_prio);
if (cell_resel_serving_freq_info.cell_resel_sub_prio_present) {
j.write_str("cellReselectionSubPriority", cell_resel_serving_freq_info.cell_resel_sub_prio.to_string());
}
j.end_obj();
j.write_fieldname("intraFreqCellReselectionInfo");
intra_freq_cell_resel_info.to_json(j);
j.end_obj();
}
const char* sib2_s::cell_resel_info_common_s_::q_hyst_opts::to_string() const
{
static const char* options[] = {"dB0",
"dB1",
"dB2",
"dB3",
"dB4",
"dB5",
"dB6",
"dB8",
"dB10",
"dB12",
"dB14",
"dB16",
"dB18",
"dB20",
"dB22",
"dB24"};
return convert_enum_idx(options, 16, value, "sib2_s::cell_resel_info_common_s_::q_hyst_e_");
}
uint8_t sib2_s::cell_resel_info_common_s_::q_hyst_opts::to_number() const
{
static const uint8_t options[] = {0, 1, 2, 3, 4, 5, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24};
return map_enum_number(options, 16, value, "sib2_s::cell_resel_info_common_s_::q_hyst_e_");
}
const char*
sib2_s::cell_resel_info_common_s_::speed_state_resel_pars_s_::q_hyst_sf_s_::sf_medium_opts::to_string() const
{
static const char* options[] = {"dB-6", "dB-4", "dB-2", "dB0"};
return convert_enum_idx(
options, 4, value, "sib2_s::cell_resel_info_common_s_::speed_state_resel_pars_s_::q_hyst_sf_s_::sf_medium_e_");
}
int8_t sib2_s::cell_resel_info_common_s_::speed_state_resel_pars_s_::q_hyst_sf_s_::sf_medium_opts::to_number() const
{
static const int8_t options[] = {-6, -4, -2, 0};
return map_enum_number(
options, 4, value, "sib2_s::cell_resel_info_common_s_::speed_state_resel_pars_s_::q_hyst_sf_s_::sf_medium_e_");
}
const char* sib2_s::cell_resel_info_common_s_::speed_state_resel_pars_s_::q_hyst_sf_s_::sf_high_opts::to_string() const
{
static const char* options[] = {"dB-6", "dB-4", "dB-2", "dB0"};
return convert_enum_idx(
options, 4, value, "sib2_s::cell_resel_info_common_s_::speed_state_resel_pars_s_::q_hyst_sf_s_::sf_high_e_");
}
int8_t sib2_s::cell_resel_info_common_s_::speed_state_resel_pars_s_::q_hyst_sf_s_::sf_high_opts::to_number() const
{
static const int8_t options[] = {-6, -4, -2, 0};
return map_enum_number(
options, 4, value, "sib2_s::cell_resel_info_common_s_::speed_state_resel_pars_s_::q_hyst_sf_s_::sf_high_e_");
}
SRSASN_CODE sib2_s::intra_freq_cell_resel_info_s_::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(q_rx_lev_min_sul_present, 1));
HANDLE_CODE(bref.pack(q_qual_min_present, 1));
HANDLE_CODE(bref.pack(s_intra_search_q_present, 1));
HANDLE_CODE(bref.pack(freq_band_list_present, 1));
HANDLE_CODE(bref.pack(freq_band_list_sul_present, 1));
HANDLE_CODE(bref.pack(p_max_present, 1));
HANDLE_CODE(bref.pack(smtc_present, 1));
HANDLE_CODE(bref.pack(ss_rssi_meas_present, 1));
HANDLE_CODE(bref.pack(ssb_to_measure_present, 1));
HANDLE_CODE(pack_integer(bref, q_rx_lev_min, (int8_t)-70, (int8_t)-22));
if (q_rx_lev_min_sul_present) {
HANDLE_CODE(pack_integer(bref, q_rx_lev_min_sul, (int8_t)-70, (int8_t)-22));
}
if (q_qual_min_present) {
HANDLE_CODE(pack_integer(bref, q_qual_min, (int8_t)-43, (int8_t)-12));
}
HANDLE_CODE(pack_integer(bref, s_intra_search_p, (uint8_t)0u, (uint8_t)31u));
if (s_intra_search_q_present) {
HANDLE_CODE(pack_integer(bref, s_intra_search_q, (uint8_t)0u, (uint8_t)31u));
}
HANDLE_CODE(pack_integer(bref, t_resel_nr, (uint8_t)0u, (uint8_t)7u));
if (freq_band_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, freq_band_list, 1, 8));
}
if (freq_band_list_sul_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, freq_band_list_sul, 1, 8));
}
if (p_max_present) {
HANDLE_CODE(pack_integer(bref, p_max, (int8_t)-30, (int8_t)33));
}
if (smtc_present) {
HANDLE_CODE(smtc.pack(bref));
}
if (ss_rssi_meas_present) {
HANDLE_CODE(ss_rssi_meas.pack(bref));
}
if (ssb_to_measure_present) {
HANDLE_CODE(ssb_to_measure.pack(bref));
}
HANDLE_CODE(bref.pack(derive_ssb_idx_from_cell, 1));
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= t_resel_nr_sf.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(t_resel_nr_sf.is_present(), 1));
if (t_resel_nr_sf.is_present()) {
HANDLE_CODE(t_resel_nr_sf->pack(bref));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE sib2_s::intra_freq_cell_resel_info_s_::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(q_rx_lev_min_sul_present, 1));
HANDLE_CODE(bref.unpack(q_qual_min_present, 1));
HANDLE_CODE(bref.unpack(s_intra_search_q_present, 1));
HANDLE_CODE(bref.unpack(freq_band_list_present, 1));
HANDLE_CODE(bref.unpack(freq_band_list_sul_present, 1));
HANDLE_CODE(bref.unpack(p_max_present, 1));
HANDLE_CODE(bref.unpack(smtc_present, 1));
HANDLE_CODE(bref.unpack(ss_rssi_meas_present, 1));
HANDLE_CODE(bref.unpack(ssb_to_measure_present, 1));
HANDLE_CODE(unpack_integer(q_rx_lev_min, bref, (int8_t)-70, (int8_t)-22));
if (q_rx_lev_min_sul_present) {
HANDLE_CODE(unpack_integer(q_rx_lev_min_sul, bref, (int8_t)-70, (int8_t)-22));
}
if (q_qual_min_present) {
HANDLE_CODE(unpack_integer(q_qual_min, bref, (int8_t)-43, (int8_t)-12));
}
HANDLE_CODE(unpack_integer(s_intra_search_p, bref, (uint8_t)0u, (uint8_t)31u));
if (s_intra_search_q_present) {
HANDLE_CODE(unpack_integer(s_intra_search_q, bref, (uint8_t)0u, (uint8_t)31u));
}
HANDLE_CODE(unpack_integer(t_resel_nr, bref, (uint8_t)0u, (uint8_t)7u));
if (freq_band_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(freq_band_list, bref, 1, 8));
}
if (freq_band_list_sul_present) {
HANDLE_CODE(unpack_dyn_seq_of(freq_band_list_sul, bref, 1, 8));
}
if (p_max_present) {
HANDLE_CODE(unpack_integer(p_max, bref, (int8_t)-30, (int8_t)33));
}
if (smtc_present) {
HANDLE_CODE(smtc.unpack(bref));
}
if (ss_rssi_meas_present) {
HANDLE_CODE(ss_rssi_meas.unpack(bref));
}
if (ssb_to_measure_present) {
HANDLE_CODE(ssb_to_measure.unpack(bref));
}
HANDLE_CODE(bref.unpack(derive_ssb_idx_from_cell, 1));
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool t_resel_nr_sf_present;
HANDLE_CODE(bref.unpack(t_resel_nr_sf_present, 1));
t_resel_nr_sf.set_present(t_resel_nr_sf_present);
if (t_resel_nr_sf.is_present()) {
HANDLE_CODE(t_resel_nr_sf->unpack(bref));
}
}
}
return SRSASN_SUCCESS;
}
void sib2_s::intra_freq_cell_resel_info_s_::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("q-RxLevMin", q_rx_lev_min);
if (q_rx_lev_min_sul_present) {
j.write_int("q-RxLevMinSUL", q_rx_lev_min_sul);
}
if (q_qual_min_present) {
j.write_int("q-QualMin", q_qual_min);
}
j.write_int("s-IntraSearchP", s_intra_search_p);
if (s_intra_search_q_present) {
j.write_int("s-IntraSearchQ", s_intra_search_q);
}
j.write_int("t-ReselectionNR", t_resel_nr);
if (freq_band_list_present) {
j.start_array("frequencyBandList");
for (const auto& e1 : freq_band_list) {
e1.to_json(j);
}
j.end_array();
}
if (freq_band_list_sul_present) {
j.start_array("frequencyBandListSUL");
for (const auto& e1 : freq_band_list_sul) {
e1.to_json(j);
}
j.end_array();
}
if (p_max_present) {
j.write_int("p-Max", p_max);
}
if (smtc_present) {
j.write_fieldname("smtc");
smtc.to_json(j);
}
if (ss_rssi_meas_present) {
j.write_fieldname("ss-RSSI-Measurement");
ss_rssi_meas.to_json(j);
}
if (ssb_to_measure_present) {
j.write_fieldname("ssb-ToMeasure");
ssb_to_measure.to_json(j);
}
j.write_bool("deriveSSB-IndexFromCell", derive_ssb_idx_from_cell);
if (ext) {
if (t_resel_nr_sf.is_present()) {
j.write_fieldname("t-ReselectionNR-SF");
t_resel_nr_sf->to_json(j);
}
}
j.end_obj();
}
// SIB3 ::= SEQUENCE
SRSASN_CODE sib3_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(intra_freq_neigh_cell_list_present, 1));
HANDLE_CODE(bref.pack(intra_freq_black_cell_list_present, 1));
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
if (intra_freq_neigh_cell_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, intra_freq_neigh_cell_list, 1, 16));
}
if (intra_freq_black_cell_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, intra_freq_black_cell_list, 1, 16));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE sib3_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(intra_freq_neigh_cell_list_present, 1));
HANDLE_CODE(bref.unpack(intra_freq_black_cell_list_present, 1));
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
if (intra_freq_neigh_cell_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(intra_freq_neigh_cell_list, bref, 1, 16));
}
if (intra_freq_black_cell_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(intra_freq_black_cell_list, bref, 1, 16));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void sib3_s::to_json(json_writer& j) const
{
j.start_obj();
if (intra_freq_neigh_cell_list_present) {
j.start_array("intraFreqNeighCellList");
for (const auto& e1 : intra_freq_neigh_cell_list) {
e1.to_json(j);
}
j.end_array();
}
if (intra_freq_black_cell_list_present) {
j.start_array("intraFreqBlackCellList");
for (const auto& e1 : intra_freq_black_cell_list) {
e1.to_json(j);
}
j.end_array();
}
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
j.end_obj();
}
// SIB4 ::= SEQUENCE
SRSASN_CODE sib4_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(pack_dyn_seq_of(bref, inter_freq_carrier_freq_list, 1, 8));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE sib4_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(unpack_dyn_seq_of(inter_freq_carrier_freq_list, bref, 1, 8));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void sib4_s::to_json(json_writer& j) const
{
j.start_obj();
j.start_array("interFreqCarrierFreqList");
for (const auto& e1 : inter_freq_carrier_freq_list) {
e1.to_json(j);
}
j.end_array();
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
j.end_obj();
}
// SIB5 ::= SEQUENCE
SRSASN_CODE sib5_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(carrier_freq_list_eutra_present, 1));
HANDLE_CODE(bref.pack(t_resel_eutra_sf_present, 1));
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
if (carrier_freq_list_eutra_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, carrier_freq_list_eutra, 1, 8));
}
HANDLE_CODE(pack_integer(bref, t_resel_eutra, (uint8_t)0u, (uint8_t)7u));
if (t_resel_eutra_sf_present) {
HANDLE_CODE(t_resel_eutra_sf.pack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE sib5_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(carrier_freq_list_eutra_present, 1));
HANDLE_CODE(bref.unpack(t_resel_eutra_sf_present, 1));
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
if (carrier_freq_list_eutra_present) {
HANDLE_CODE(unpack_dyn_seq_of(carrier_freq_list_eutra, bref, 1, 8));
}
HANDLE_CODE(unpack_integer(t_resel_eutra, bref, (uint8_t)0u, (uint8_t)7u));
if (t_resel_eutra_sf_present) {
HANDLE_CODE(t_resel_eutra_sf.unpack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void sib5_s::to_json(json_writer& j) const
{
j.start_obj();
if (carrier_freq_list_eutra_present) {
j.start_array("carrierFreqListEUTRA");
for (const auto& e1 : carrier_freq_list_eutra) {
e1.to_json(j);
}
j.end_array();
}
j.write_int("t-ReselectionEUTRA", t_resel_eutra);
if (t_resel_eutra_sf_present) {
j.write_fieldname("t-ReselectionEUTRA-SF");
t_resel_eutra_sf.to_json(j);
}
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
j.end_obj();
}
// SIB6 ::= SEQUENCE
SRSASN_CODE sib6_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(msg_id.pack(bref));
HANDLE_CODE(serial_num.pack(bref));
HANDLE_CODE(warning_type.pack(bref));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE sib6_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(msg_id.unpack(bref));
HANDLE_CODE(serial_num.unpack(bref));
HANDLE_CODE(warning_type.unpack(bref));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void sib6_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("messageIdentifier", msg_id.to_string());
j.write_str("serialNumber", serial_num.to_string());
j.write_str("warningType", warning_type.to_string());
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
j.end_obj();
}
// SIB7 ::= SEQUENCE
SRSASN_CODE sib7_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(data_coding_scheme_present, 1));
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(msg_id.pack(bref));
HANDLE_CODE(serial_num.pack(bref));
HANDLE_CODE(warning_msg_segment_type.pack(bref));
HANDLE_CODE(pack_integer(bref, warning_msg_segment_num, (uint8_t)0u, (uint8_t)63u));
HANDLE_CODE(warning_msg_segment.pack(bref));
if (data_coding_scheme_present) {
HANDLE_CODE(data_coding_scheme.pack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE sib7_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(data_coding_scheme_present, 1));
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(msg_id.unpack(bref));
HANDLE_CODE(serial_num.unpack(bref));
HANDLE_CODE(warning_msg_segment_type.unpack(bref));
HANDLE_CODE(unpack_integer(warning_msg_segment_num, bref, (uint8_t)0u, (uint8_t)63u));
HANDLE_CODE(warning_msg_segment.unpack(bref));
if (data_coding_scheme_present) {
HANDLE_CODE(data_coding_scheme.unpack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void sib7_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("messageIdentifier", msg_id.to_string());
j.write_str("serialNumber", serial_num.to_string());
j.write_str("warningMessageSegmentType", warning_msg_segment_type.to_string());
j.write_int("warningMessageSegmentNumber", warning_msg_segment_num);
j.write_str("warningMessageSegment", warning_msg_segment.to_string());
if (data_coding_scheme_present) {
j.write_str("dataCodingScheme", data_coding_scheme.to_string());
}
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
j.end_obj();
}
const char* sib7_s::warning_msg_segment_type_opts::to_string() const
{
static const char* options[] = {"notLastSegment", "lastSegment"};
return convert_enum_idx(options, 2, value, "sib7_s::warning_msg_segment_type_e_");
}
// SIB8 ::= SEQUENCE
SRSASN_CODE sib8_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(data_coding_scheme_present, 1));
HANDLE_CODE(bref.pack(warning_area_coordinates_segment_present, 1));
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(msg_id.pack(bref));
HANDLE_CODE(serial_num.pack(bref));
HANDLE_CODE(warning_msg_segment_type.pack(bref));
HANDLE_CODE(pack_integer(bref, warning_msg_segment_num, (uint8_t)0u, (uint8_t)63u));
HANDLE_CODE(warning_msg_segment.pack(bref));
if (data_coding_scheme_present) {
HANDLE_CODE(data_coding_scheme.pack(bref));
}
if (warning_area_coordinates_segment_present) {
HANDLE_CODE(warning_area_coordinates_segment.pack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE sib8_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(data_coding_scheme_present, 1));
HANDLE_CODE(bref.unpack(warning_area_coordinates_segment_present, 1));
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(msg_id.unpack(bref));
HANDLE_CODE(serial_num.unpack(bref));
HANDLE_CODE(warning_msg_segment_type.unpack(bref));
HANDLE_CODE(unpack_integer(warning_msg_segment_num, bref, (uint8_t)0u, (uint8_t)63u));
HANDLE_CODE(warning_msg_segment.unpack(bref));
if (data_coding_scheme_present) {
HANDLE_CODE(data_coding_scheme.unpack(bref));
}
if (warning_area_coordinates_segment_present) {
HANDLE_CODE(warning_area_coordinates_segment.unpack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void sib8_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("messageIdentifier", msg_id.to_string());
j.write_str("serialNumber", serial_num.to_string());
j.write_str("warningMessageSegmentType", warning_msg_segment_type.to_string());
j.write_int("warningMessageSegmentNumber", warning_msg_segment_num);
j.write_str("warningMessageSegment", warning_msg_segment.to_string());
if (data_coding_scheme_present) {
j.write_str("dataCodingScheme", data_coding_scheme.to_string());
}
if (warning_area_coordinates_segment_present) {
j.write_str("warningAreaCoordinatesSegment", warning_area_coordinates_segment.to_string());
}
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
j.end_obj();
}
const char* sib8_s::warning_msg_segment_type_opts::to_string() const
{
static const char* options[] = {"notLastSegment", "lastSegment"};
return convert_enum_idx(options, 2, value, "sib8_s::warning_msg_segment_type_e_");
}
// SIB9 ::= SEQUENCE
SRSASN_CODE sib9_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(time_info_present, 1));
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
if (time_info_present) {
HANDLE_CODE(bref.pack(time_info.day_light_saving_time_present, 1));
HANDLE_CODE(bref.pack(time_info.leap_seconds_present, 1));
HANDLE_CODE(bref.pack(time_info.local_time_offset_present, 1));
HANDLE_CODE(pack_integer(bref, time_info.time_info_utc, (uint64_t)0u, (uint64_t)549755813887u));
if (time_info.day_light_saving_time_present) {
HANDLE_CODE(time_info.day_light_saving_time.pack(bref));
}
if (time_info.leap_seconds_present) {
HANDLE_CODE(pack_integer(bref, time_info.leap_seconds, (int16_t)-127, (int16_t)128));
}
if (time_info.local_time_offset_present) {
HANDLE_CODE(pack_integer(bref, time_info.local_time_offset, (int8_t)-63, (int8_t)64));
}
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE sib9_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(time_info_present, 1));
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
if (time_info_present) {
HANDLE_CODE(bref.unpack(time_info.day_light_saving_time_present, 1));
HANDLE_CODE(bref.unpack(time_info.leap_seconds_present, 1));
HANDLE_CODE(bref.unpack(time_info.local_time_offset_present, 1));
HANDLE_CODE(unpack_integer(time_info.time_info_utc, bref, (uint64_t)0u, (uint64_t)549755813887u));
if (time_info.day_light_saving_time_present) {
HANDLE_CODE(time_info.day_light_saving_time.unpack(bref));
}
if (time_info.leap_seconds_present) {
HANDLE_CODE(unpack_integer(time_info.leap_seconds, bref, (int16_t)-127, (int16_t)128));
}
if (time_info.local_time_offset_present) {
HANDLE_CODE(unpack_integer(time_info.local_time_offset, bref, (int8_t)-63, (int8_t)64));
}
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void sib9_s::to_json(json_writer& j) const
{
j.start_obj();
if (time_info_present) {
j.write_fieldname("timeInfo");
j.start_obj();
j.write_int("timeInfoUTC", time_info.time_info_utc);
if (time_info.day_light_saving_time_present) {
j.write_str("dayLightSavingTime", time_info.day_light_saving_time.to_string());
}
if (time_info.leap_seconds_present) {
j.write_int("leapSeconds", time_info.leap_seconds);
}
if (time_info.local_time_offset_present) {
j.write_int("localTimeOffset", time_info.local_time_offset);
}
j.end_obj();
}
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
j.end_obj();
}
// SchedulingInfo ::= SEQUENCE
SRSASN_CODE sched_info_s::pack(bit_ref& bref) const
{
HANDLE_CODE(si_broadcast_status.pack(bref));
HANDLE_CODE(si_periodicity.pack(bref));
HANDLE_CODE(pack_dyn_seq_of(bref, sib_map_info, 1, 32));
return SRSASN_SUCCESS;
}
SRSASN_CODE sched_info_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(si_broadcast_status.unpack(bref));
HANDLE_CODE(si_periodicity.unpack(bref));
HANDLE_CODE(unpack_dyn_seq_of(sib_map_info, bref, 1, 32));
return SRSASN_SUCCESS;
}
void sched_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("si-BroadcastStatus", si_broadcast_status.to_string());
j.write_str("si-Periodicity", si_periodicity.to_string());
j.start_array("sib-MappingInfo");
for (const auto& e1 : sib_map_info) {
e1.to_json(j);
}
j.end_array();
j.end_obj();
}
const char* sched_info_s::si_broadcast_status_opts::to_string() const
{
static const char* options[] = {"broadcasting", "notBroadcasting"};
return convert_enum_idx(options, 2, value, "sched_info_s::si_broadcast_status_e_");
}
const char* sched_info_s::si_periodicity_opts::to_string() const
{
static const char* options[] = {"rf8", "rf16", "rf32", "rf64", "rf128", "rf256", "rf512"};
return convert_enum_idx(options, 7, value, "sched_info_s::si_periodicity_e_");
}
uint16_t sched_info_s::si_periodicity_opts::to_number() const
{
static const uint16_t options[] = {8, 16, 32, 64, 128, 256, 512};
return map_enum_number(options, 7, value, "sched_info_s::si_periodicity_e_");
}
// TDD-UL-DL-ConfigCommon ::= SEQUENCE
SRSASN_CODE tdd_ul_dl_cfg_common_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(pattern2_present, 1));
HANDLE_CODE(ref_subcarrier_spacing.pack(bref));
HANDLE_CODE(pattern1.pack(bref));
if (pattern2_present) {
HANDLE_CODE(pattern2.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE tdd_ul_dl_cfg_common_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(pattern2_present, 1));
HANDLE_CODE(ref_subcarrier_spacing.unpack(bref));
HANDLE_CODE(pattern1.unpack(bref));
if (pattern2_present) {
HANDLE_CODE(pattern2.unpack(bref));
}
return SRSASN_SUCCESS;
}
void tdd_ul_dl_cfg_common_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("referenceSubcarrierSpacing", ref_subcarrier_spacing.to_string());
j.write_fieldname("pattern1");
pattern1.to_json(j);
if (pattern2_present) {
j.write_fieldname("pattern2");
pattern2.to_json(j);
}
j.end_obj();
}
// UAC-BarringInfoSet ::= SEQUENCE
SRSASN_CODE uac_barr_info_set_s::pack(bit_ref& bref) const
{
HANDLE_CODE(uac_barr_factor.pack(bref));
HANDLE_CODE(uac_barr_time.pack(bref));
HANDLE_CODE(uac_barr_for_access_id.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE uac_barr_info_set_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(uac_barr_factor.unpack(bref));
HANDLE_CODE(uac_barr_time.unpack(bref));
HANDLE_CODE(uac_barr_for_access_id.unpack(bref));
return SRSASN_SUCCESS;
}
void uac_barr_info_set_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("uac-BarringFactor", uac_barr_factor.to_string());
j.write_str("uac-BarringTime", uac_barr_time.to_string());
j.write_str("uac-BarringForAccessIdentity", uac_barr_for_access_id.to_string());
j.end_obj();
}
const char* uac_barr_info_set_s::uac_barr_factor_opts::to_string() const
{
static const char* options[] = {
"p00", "p05", "p10", "p15", "p20", "p25", "p30", "p40", "p50", "p60", "p70", "p75", "p80", "p85", "p90", "p95"};
return convert_enum_idx(options, 16, value, "uac_barr_info_set_s::uac_barr_factor_e_");
}
float uac_barr_info_set_s::uac_barr_factor_opts::to_number() const
{
static const float options[] = {0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 4.0, 5.0, 6.0, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5};
return map_enum_number(options, 16, value, "uac_barr_info_set_s::uac_barr_factor_e_");
}
const char* uac_barr_info_set_s::uac_barr_factor_opts::to_number_string() const
{
static const char* options[] = {
"0.0", "0.5", "1.0", "1.5", "2.0", "2.5", "3.0", "4.0", "5.0", "6.0", "7.0", "7.5", "8.0", "8.5", "9.0", "9.5"};
return convert_enum_idx(options, 16, value, "uac_barr_info_set_s::uac_barr_factor_e_");
}
const char* uac_barr_info_set_s::uac_barr_time_opts::to_string() const
{
static const char* options[] = {"s4", "s8", "s16", "s32", "s64", "s128", "s256", "s512"};
return convert_enum_idx(options, 8, value, "uac_barr_info_set_s::uac_barr_time_e_");
}
uint16_t uac_barr_info_set_s::uac_barr_time_opts::to_number() const
{
static const uint16_t options[] = {4, 8, 16, 32, 64, 128, 256, 512};
return map_enum_number(options, 8, value, "uac_barr_info_set_s::uac_barr_time_e_");
}
// UAC-BarringPerPLMN ::= SEQUENCE
SRSASN_CODE uac_barr_per_plmn_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(uac_ac_barr_list_type_present, 1));
HANDLE_CODE(pack_integer(bref, plmn_id_idx, (uint8_t)1u, (uint8_t)12u));
if (uac_ac_barr_list_type_present) {
HANDLE_CODE(uac_ac_barr_list_type.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE uac_barr_per_plmn_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(uac_ac_barr_list_type_present, 1));
HANDLE_CODE(unpack_integer(plmn_id_idx, bref, (uint8_t)1u, (uint8_t)12u));
if (uac_ac_barr_list_type_present) {
HANDLE_CODE(uac_ac_barr_list_type.unpack(bref));
}
return SRSASN_SUCCESS;
}
void uac_barr_per_plmn_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("plmn-IdentityIndex", plmn_id_idx);
if (uac_ac_barr_list_type_present) {
j.write_fieldname("uac-ACBarringListType");
uac_ac_barr_list_type.to_json(j);
}
j.end_obj();
}
void uac_barr_per_plmn_s::uac_ac_barr_list_type_c_::destroy_()
{
switch (type_) {
case types::uac_implicit_ac_barr_list:
c.destroy<uac_implicit_ac_barr_list_l_>();
break;
case types::uac_explicit_ac_barr_list:
c.destroy<uac_barr_per_cat_list_l>();
break;
default:
break;
}
}
void uac_barr_per_plmn_s::uac_ac_barr_list_type_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::uac_implicit_ac_barr_list:
c.init<uac_implicit_ac_barr_list_l_>();
break;
case types::uac_explicit_ac_barr_list:
c.init<uac_barr_per_cat_list_l>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "uac_barr_per_plmn_s::uac_ac_barr_list_type_c_");
}
}
uac_barr_per_plmn_s::uac_ac_barr_list_type_c_::uac_ac_barr_list_type_c_(
const uac_barr_per_plmn_s::uac_ac_barr_list_type_c_& other)
{
type_ = other.type();
switch (type_) {
case types::uac_implicit_ac_barr_list:
c.init(other.c.get<uac_implicit_ac_barr_list_l_>());
break;
case types::uac_explicit_ac_barr_list:
c.init(other.c.get<uac_barr_per_cat_list_l>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "uac_barr_per_plmn_s::uac_ac_barr_list_type_c_");
}
}
uac_barr_per_plmn_s::uac_ac_barr_list_type_c_&
uac_barr_per_plmn_s::uac_ac_barr_list_type_c_::operator=(const uac_barr_per_plmn_s::uac_ac_barr_list_type_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::uac_implicit_ac_barr_list:
c.set(other.c.get<uac_implicit_ac_barr_list_l_>());
break;
case types::uac_explicit_ac_barr_list:
c.set(other.c.get<uac_barr_per_cat_list_l>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "uac_barr_per_plmn_s::uac_ac_barr_list_type_c_");
}
return *this;
}
uac_barr_per_plmn_s::uac_ac_barr_list_type_c_::uac_implicit_ac_barr_list_l_&
uac_barr_per_plmn_s::uac_ac_barr_list_type_c_::set_uac_implicit_ac_barr_list()
{
set(types::uac_implicit_ac_barr_list);
return c.get<uac_implicit_ac_barr_list_l_>();
}
uac_barr_per_cat_list_l& uac_barr_per_plmn_s::uac_ac_barr_list_type_c_::set_uac_explicit_ac_barr_list()
{
set(types::uac_explicit_ac_barr_list);
return c.get<uac_barr_per_cat_list_l>();
}
void uac_barr_per_plmn_s::uac_ac_barr_list_type_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::uac_implicit_ac_barr_list:
j.start_array("uac-ImplicitACBarringList");
for (const auto& e1 : c.get<uac_implicit_ac_barr_list_l_>()) {
j.write_int(e1);
}
j.end_array();
break;
case types::uac_explicit_ac_barr_list:
j.start_array("uac-ExplicitACBarringList");
for (const auto& e1 : c.get<uac_barr_per_cat_list_l>()) {
e1.to_json(j);
}
j.end_array();
break;
default:
log_invalid_choice_id(type_, "uac_barr_per_plmn_s::uac_ac_barr_list_type_c_");
}
j.end_obj();
}
SRSASN_CODE uac_barr_per_plmn_s::uac_ac_barr_list_type_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::uac_implicit_ac_barr_list:
HANDLE_CODE(pack_fixed_seq_of(bref,
&(c.get<uac_implicit_ac_barr_list_l_>())[0],
c.get<uac_implicit_ac_barr_list_l_>().size(),
integer_packer<uint8_t>(1, 8)));
break;
case types::uac_explicit_ac_barr_list:
HANDLE_CODE(pack_dyn_seq_of(bref, c.get<uac_barr_per_cat_list_l>(), 1, 63));
break;
default:
log_invalid_choice_id(type_, "uac_barr_per_plmn_s::uac_ac_barr_list_type_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE uac_barr_per_plmn_s::uac_ac_barr_list_type_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::uac_implicit_ac_barr_list:
HANDLE_CODE(unpack_fixed_seq_of(&(c.get<uac_implicit_ac_barr_list_l_>())[0],
bref,
c.get<uac_implicit_ac_barr_list_l_>().size(),
integer_packer<uint8_t>(1, 8)));
break;
case types::uac_explicit_ac_barr_list:
HANDLE_CODE(unpack_dyn_seq_of(c.get<uac_barr_per_cat_list_l>(), bref, 1, 63));
break;
default:
log_invalid_choice_id(type_, "uac_barr_per_plmn_s::uac_ac_barr_list_type_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* uac_barr_per_plmn_s::uac_ac_barr_list_type_c_::types_opts::to_string() const
{
static const char* options[] = {"uac-ImplicitACBarringList", "uac-ExplicitACBarringList"};
return convert_enum_idx(options, 2, value, "uac_barr_per_plmn_s::uac_ac_barr_list_type_c_::types");
}
// UplinkConfigCommonSIB ::= SEQUENCE
SRSASN_CODE ul_cfg_common_sib_s::pack(bit_ref& bref) const
{
HANDLE_CODE(freq_info_ul.pack(bref));
HANDLE_CODE(init_ul_bwp.pack(bref));
HANDLE_CODE(time_align_timer_common.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE ul_cfg_common_sib_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(freq_info_ul.unpack(bref));
HANDLE_CODE(init_ul_bwp.unpack(bref));
HANDLE_CODE(time_align_timer_common.unpack(bref));
return SRSASN_SUCCESS;
}
void ul_cfg_common_sib_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("frequencyInfoUL");
freq_info_ul.to_json(j);
j.write_fieldname("initialUplinkBWP");
init_ul_bwp.to_json(j);
j.write_str("timeAlignmentTimerCommon", time_align_timer_common.to_string());
j.end_obj();
}
// CellAccessRelatedInfo ::= SEQUENCE
SRSASN_CODE cell_access_related_info_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(cell_reserved_for_other_use_present, 1));
HANDLE_CODE(pack_dyn_seq_of(bref, plmn_id_list, 1, 12));
return SRSASN_SUCCESS;
}
SRSASN_CODE cell_access_related_info_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(cell_reserved_for_other_use_present, 1));
HANDLE_CODE(unpack_dyn_seq_of(plmn_id_list, bref, 1, 12));
return SRSASN_SUCCESS;
}
void cell_access_related_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.start_array("plmn-IdentityList");
for (const auto& e1 : plmn_id_list) {
e1.to_json(j);
}
j.end_array();
if (cell_reserved_for_other_use_present) {
j.write_str("cellReservedForOtherUse", "true");
}
j.end_obj();
}
// ConnEstFailureControl ::= SEQUENCE
SRSASN_CODE conn_est_fail_ctrl_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(conn_est_fail_offset_present, 1));
HANDLE_CODE(conn_est_fail_count.pack(bref));
HANDLE_CODE(conn_est_fail_offset_validity.pack(bref));
if (conn_est_fail_offset_present) {
HANDLE_CODE(pack_integer(bref, conn_est_fail_offset, (uint8_t)0u, (uint8_t)15u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE conn_est_fail_ctrl_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(conn_est_fail_offset_present, 1));
HANDLE_CODE(conn_est_fail_count.unpack(bref));
HANDLE_CODE(conn_est_fail_offset_validity.unpack(bref));
if (conn_est_fail_offset_present) {
HANDLE_CODE(unpack_integer(conn_est_fail_offset, bref, (uint8_t)0u, (uint8_t)15u));
}
return SRSASN_SUCCESS;
}
void conn_est_fail_ctrl_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("connEstFailCount", conn_est_fail_count.to_string());
j.write_str("connEstFailOffsetValidity", conn_est_fail_offset_validity.to_string());
if (conn_est_fail_offset_present) {
j.write_int("connEstFailOffset", conn_est_fail_offset);
}
j.end_obj();
}
const char* conn_est_fail_ctrl_s::conn_est_fail_count_opts::to_string() const
{
static const char* options[] = {"n1", "n2", "n3", "n4"};
return convert_enum_idx(options, 4, value, "conn_est_fail_ctrl_s::conn_est_fail_count_e_");
}
uint8_t conn_est_fail_ctrl_s::conn_est_fail_count_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 3, 4};
return map_enum_number(options, 4, value, "conn_est_fail_ctrl_s::conn_est_fail_count_e_");
}
const char* conn_est_fail_ctrl_s::conn_est_fail_offset_validity_opts::to_string() const
{
static const char* options[] = {"s30", "s60", "s120", "s240", "s300", "s420", "s600", "s900"};
return convert_enum_idx(options, 8, value, "conn_est_fail_ctrl_s::conn_est_fail_offset_validity_e_");
}
uint16_t conn_est_fail_ctrl_s::conn_est_fail_offset_validity_opts::to_number() const
{
static const uint16_t options[] = {30, 60, 120, 240, 300, 420, 600, 900};
return map_enum_number(options, 8, value, "conn_est_fail_ctrl_s::conn_est_fail_offset_validity_e_");
}
// SI-SchedulingInfo ::= SEQUENCE
SRSASN_CODE si_sched_info_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(si_request_cfg_present, 1));
HANDLE_CODE(bref.pack(si_request_cfg_sul_present, 1));
HANDLE_CODE(bref.pack(sys_info_area_id_present, 1));
HANDLE_CODE(pack_dyn_seq_of(bref, sched_info_list, 1, 32));
HANDLE_CODE(si_win_len.pack(bref));
if (si_request_cfg_present) {
HANDLE_CODE(si_request_cfg.pack(bref));
}
if (si_request_cfg_sul_present) {
HANDLE_CODE(si_request_cfg_sul.pack(bref));
}
if (sys_info_area_id_present) {
HANDLE_CODE(sys_info_area_id.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE si_sched_info_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(si_request_cfg_present, 1));
HANDLE_CODE(bref.unpack(si_request_cfg_sul_present, 1));
HANDLE_CODE(bref.unpack(sys_info_area_id_present, 1));
HANDLE_CODE(unpack_dyn_seq_of(sched_info_list, bref, 1, 32));
HANDLE_CODE(si_win_len.unpack(bref));
if (si_request_cfg_present) {
HANDLE_CODE(si_request_cfg.unpack(bref));
}
if (si_request_cfg_sul_present) {
HANDLE_CODE(si_request_cfg_sul.unpack(bref));
}
if (sys_info_area_id_present) {
HANDLE_CODE(sys_info_area_id.unpack(bref));
}
return SRSASN_SUCCESS;
}
void si_sched_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.start_array("schedulingInfoList");
for (const auto& e1 : sched_info_list) {
e1.to_json(j);
}
j.end_array();
j.write_str("si-WindowLength", si_win_len.to_string());
if (si_request_cfg_present) {
j.write_fieldname("si-RequestConfig");
si_request_cfg.to_json(j);
}
if (si_request_cfg_sul_present) {
j.write_fieldname("si-RequestConfigSUL");
si_request_cfg_sul.to_json(j);
}
if (sys_info_area_id_present) {
j.write_str("systemInformationAreaID", sys_info_area_id.to_string());
}
j.end_obj();
}
const char* si_sched_info_s::si_win_len_opts::to_string() const
{
static const char* options[] = {"s5", "s10", "s20", "s40", "s80", "s160", "s320", "s640", "s1280"};
return convert_enum_idx(options, 9, value, "si_sched_info_s::si_win_len_e_");
}
uint16_t si_sched_info_s::si_win_len_opts::to_number() const
{
static const uint16_t options[] = {5, 10, 20, 40, 80, 160, 320, 640, 1280};
return map_enum_number(options, 9, value, "si_sched_info_s::si_win_len_e_");
}
// ServingCellConfigCommonSIB ::= SEQUENCE
SRSASN_CODE serving_cell_cfg_common_sib_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(ul_cfg_common_present, 1));
HANDLE_CODE(bref.pack(supplementary_ul_present, 1));
HANDLE_CODE(bref.pack(n_timing_advance_offset_present, 1));
HANDLE_CODE(bref.pack(tdd_ul_dl_cfg_common_present, 1));
HANDLE_CODE(dl_cfg_common.pack(bref));
if (ul_cfg_common_present) {
HANDLE_CODE(ul_cfg_common.pack(bref));
}
if (supplementary_ul_present) {
HANDLE_CODE(supplementary_ul.pack(bref));
}
if (n_timing_advance_offset_present) {
HANDLE_CODE(n_timing_advance_offset.pack(bref));
}
HANDLE_CODE(bref.pack(ssb_positions_in_burst.group_presence_present, 1));
HANDLE_CODE(ssb_positions_in_burst.in_one_group.pack(bref));
if (ssb_positions_in_burst.group_presence_present) {
HANDLE_CODE(ssb_positions_in_burst.group_presence.pack(bref));
}
HANDLE_CODE(ssb_periodicity_serving_cell.pack(bref));
if (tdd_ul_dl_cfg_common_present) {
HANDLE_CODE(tdd_ul_dl_cfg_common.pack(bref));
}
HANDLE_CODE(pack_integer(bref, ss_pbch_block_pwr, (int8_t)-60, (int8_t)50));
return SRSASN_SUCCESS;
}
SRSASN_CODE serving_cell_cfg_common_sib_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(ul_cfg_common_present, 1));
HANDLE_CODE(bref.unpack(supplementary_ul_present, 1));
HANDLE_CODE(bref.unpack(n_timing_advance_offset_present, 1));
HANDLE_CODE(bref.unpack(tdd_ul_dl_cfg_common_present, 1));
HANDLE_CODE(dl_cfg_common.unpack(bref));
if (ul_cfg_common_present) {
HANDLE_CODE(ul_cfg_common.unpack(bref));
}
if (supplementary_ul_present) {
HANDLE_CODE(supplementary_ul.unpack(bref));
}
if (n_timing_advance_offset_present) {
HANDLE_CODE(n_timing_advance_offset.unpack(bref));
}
HANDLE_CODE(bref.unpack(ssb_positions_in_burst.group_presence_present, 1));
HANDLE_CODE(ssb_positions_in_burst.in_one_group.unpack(bref));
if (ssb_positions_in_burst.group_presence_present) {
HANDLE_CODE(ssb_positions_in_burst.group_presence.unpack(bref));
}
HANDLE_CODE(ssb_periodicity_serving_cell.unpack(bref));
if (tdd_ul_dl_cfg_common_present) {
HANDLE_CODE(tdd_ul_dl_cfg_common.unpack(bref));
}
HANDLE_CODE(unpack_integer(ss_pbch_block_pwr, bref, (int8_t)-60, (int8_t)50));
return SRSASN_SUCCESS;
}
void serving_cell_cfg_common_sib_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("downlinkConfigCommon");
dl_cfg_common.to_json(j);
if (ul_cfg_common_present) {
j.write_fieldname("uplinkConfigCommon");
ul_cfg_common.to_json(j);
}
if (supplementary_ul_present) {
j.write_fieldname("supplementaryUplink");
supplementary_ul.to_json(j);
}
if (n_timing_advance_offset_present) {
j.write_str("n-TimingAdvanceOffset", n_timing_advance_offset.to_string());
}
j.write_fieldname("ssb-PositionsInBurst");
j.start_obj();
j.write_str("inOneGroup", ssb_positions_in_burst.in_one_group.to_string());
if (ssb_positions_in_burst.group_presence_present) {
j.write_str("groupPresence", ssb_positions_in_burst.group_presence.to_string());
}
j.end_obj();
j.write_str("ssb-PeriodicityServingCell", ssb_periodicity_serving_cell.to_string());
if (tdd_ul_dl_cfg_common_present) {
j.write_fieldname("tdd-UL-DL-ConfigurationCommon");
tdd_ul_dl_cfg_common.to_json(j);
}
j.write_int("ss-PBCH-BlockPower", ss_pbch_block_pwr);
j.end_obj();
}
const char* serving_cell_cfg_common_sib_s::n_timing_advance_offset_opts::to_string() const
{
static const char* options[] = {"n0", "n25600", "n39936"};
return convert_enum_idx(options, 3, value, "serving_cell_cfg_common_sib_s::n_timing_advance_offset_e_");
}
uint16_t serving_cell_cfg_common_sib_s::n_timing_advance_offset_opts::to_number() const
{
static const uint16_t options[] = {0, 25600, 39936};
return map_enum_number(options, 3, value, "serving_cell_cfg_common_sib_s::n_timing_advance_offset_e_");
}
const char* serving_cell_cfg_common_sib_s::ssb_periodicity_serving_cell_opts::to_string() const
{
static const char* options[] = {"ms5", "ms10", "ms20", "ms40", "ms80", "ms160"};
return convert_enum_idx(options, 6, value, "serving_cell_cfg_common_sib_s::ssb_periodicity_serving_cell_e_");
}
uint8_t serving_cell_cfg_common_sib_s::ssb_periodicity_serving_cell_opts::to_number() const
{
static const uint8_t options[] = {5, 10, 20, 40, 80, 160};
return map_enum_number(options, 6, value, "serving_cell_cfg_common_sib_s::ssb_periodicity_serving_cell_e_");
}
// SystemInformation-IEs ::= SEQUENCE
SRSASN_CODE sys_info_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
HANDLE_CODE(pack_dyn_seq_of(bref, sib_type_and_info, 1, 32));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE sys_info_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
HANDLE_CODE(unpack_dyn_seq_of(sib_type_and_info, bref, 1, 32));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void sys_info_ies_s::to_json(json_writer& j) const
{
j.start_obj();
j.start_array("sib-TypeAndInfo");
for (const auto& e1 : sib_type_and_info) {
e1.to_json(j);
}
j.end_array();
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
void sys_info_ies_s::sib_type_and_info_item_c_::destroy_()
{
switch (type_) {
case types::sib2:
c.destroy<sib2_s>();
break;
case types::sib3:
c.destroy<sib3_s>();
break;
case types::sib4:
c.destroy<sib4_s>();
break;
case types::sib5:
c.destroy<sib5_s>();
break;
case types::sib6:
c.destroy<sib6_s>();
break;
case types::sib7:
c.destroy<sib7_s>();
break;
case types::sib8:
c.destroy<sib8_s>();
break;
case types::sib9:
c.destroy<sib9_s>();
break;
default:
break;
}
}
void sys_info_ies_s::sib_type_and_info_item_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::sib2:
c.init<sib2_s>();
break;
case types::sib3:
c.init<sib3_s>();
break;
case types::sib4:
c.init<sib4_s>();
break;
case types::sib5:
c.init<sib5_s>();
break;
case types::sib6:
c.init<sib6_s>();
break;
case types::sib7:
c.init<sib7_s>();
break;
case types::sib8:
c.init<sib8_s>();
break;
case types::sib9:
c.init<sib9_s>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "sys_info_ies_s::sib_type_and_info_item_c_");
}
}
sys_info_ies_s::sib_type_and_info_item_c_::sib_type_and_info_item_c_(
const sys_info_ies_s::sib_type_and_info_item_c_& other)
{
type_ = other.type();
switch (type_) {
case types::sib2:
c.init(other.c.get<sib2_s>());
break;
case types::sib3:
c.init(other.c.get<sib3_s>());
break;
case types::sib4:
c.init(other.c.get<sib4_s>());
break;
case types::sib5:
c.init(other.c.get<sib5_s>());
break;
case types::sib6:
c.init(other.c.get<sib6_s>());
break;
case types::sib7:
c.init(other.c.get<sib7_s>());
break;
case types::sib8:
c.init(other.c.get<sib8_s>());
break;
case types::sib9:
c.init(other.c.get<sib9_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "sys_info_ies_s::sib_type_and_info_item_c_");
}
}
sys_info_ies_s::sib_type_and_info_item_c_&
sys_info_ies_s::sib_type_and_info_item_c_::operator=(const sys_info_ies_s::sib_type_and_info_item_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::sib2:
c.set(other.c.get<sib2_s>());
break;
case types::sib3:
c.set(other.c.get<sib3_s>());
break;
case types::sib4:
c.set(other.c.get<sib4_s>());
break;
case types::sib5:
c.set(other.c.get<sib5_s>());
break;
case types::sib6:
c.set(other.c.get<sib6_s>());
break;
case types::sib7:
c.set(other.c.get<sib7_s>());
break;
case types::sib8:
c.set(other.c.get<sib8_s>());
break;
case types::sib9:
c.set(other.c.get<sib9_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "sys_info_ies_s::sib_type_and_info_item_c_");
}
return *this;
}
sib2_s& sys_info_ies_s::sib_type_and_info_item_c_::set_sib2()
{
set(types::sib2);
return c.get<sib2_s>();
}
sib3_s& sys_info_ies_s::sib_type_and_info_item_c_::set_sib3()
{
set(types::sib3);
return c.get<sib3_s>();
}
sib4_s& sys_info_ies_s::sib_type_and_info_item_c_::set_sib4()
{
set(types::sib4);
return c.get<sib4_s>();
}
sib5_s& sys_info_ies_s::sib_type_and_info_item_c_::set_sib5()
{
set(types::sib5);
return c.get<sib5_s>();
}
sib6_s& sys_info_ies_s::sib_type_and_info_item_c_::set_sib6()
{
set(types::sib6);
return c.get<sib6_s>();
}
sib7_s& sys_info_ies_s::sib_type_and_info_item_c_::set_sib7()
{
set(types::sib7);
return c.get<sib7_s>();
}
sib8_s& sys_info_ies_s::sib_type_and_info_item_c_::set_sib8()
{
set(types::sib8);
return c.get<sib8_s>();
}
sib9_s& sys_info_ies_s::sib_type_and_info_item_c_::set_sib9()
{
set(types::sib9);
return c.get<sib9_s>();
}
void sys_info_ies_s::sib_type_and_info_item_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::sib2:
j.write_fieldname("sib2");
c.get<sib2_s>().to_json(j);
break;
case types::sib3:
j.write_fieldname("sib3");
c.get<sib3_s>().to_json(j);
break;
case types::sib4:
j.write_fieldname("sib4");
c.get<sib4_s>().to_json(j);
break;
case types::sib5:
j.write_fieldname("sib5");
c.get<sib5_s>().to_json(j);
break;
case types::sib6:
j.write_fieldname("sib6");
c.get<sib6_s>().to_json(j);
break;
case types::sib7:
j.write_fieldname("sib7");
c.get<sib7_s>().to_json(j);
break;
case types::sib8:
j.write_fieldname("sib8");
c.get<sib8_s>().to_json(j);
break;
case types::sib9:
j.write_fieldname("sib9");
c.get<sib9_s>().to_json(j);
break;
default:
log_invalid_choice_id(type_, "sys_info_ies_s::sib_type_and_info_item_c_");
}
j.end_obj();
}
SRSASN_CODE sys_info_ies_s::sib_type_and_info_item_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::sib2:
HANDLE_CODE(c.get<sib2_s>().pack(bref));
break;
case types::sib3:
HANDLE_CODE(c.get<sib3_s>().pack(bref));
break;
case types::sib4:
HANDLE_CODE(c.get<sib4_s>().pack(bref));
break;
case types::sib5:
HANDLE_CODE(c.get<sib5_s>().pack(bref));
break;
case types::sib6:
HANDLE_CODE(c.get<sib6_s>().pack(bref));
break;
case types::sib7:
HANDLE_CODE(c.get<sib7_s>().pack(bref));
break;
case types::sib8:
HANDLE_CODE(c.get<sib8_s>().pack(bref));
break;
case types::sib9:
HANDLE_CODE(c.get<sib9_s>().pack(bref));
break;
default:
log_invalid_choice_id(type_, "sys_info_ies_s::sib_type_and_info_item_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE sys_info_ies_s::sib_type_and_info_item_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::sib2:
HANDLE_CODE(c.get<sib2_s>().unpack(bref));
break;
case types::sib3:
HANDLE_CODE(c.get<sib3_s>().unpack(bref));
break;
case types::sib4:
HANDLE_CODE(c.get<sib4_s>().unpack(bref));
break;
case types::sib5:
HANDLE_CODE(c.get<sib5_s>().unpack(bref));
break;
case types::sib6:
HANDLE_CODE(c.get<sib6_s>().unpack(bref));
break;
case types::sib7:
HANDLE_CODE(c.get<sib7_s>().unpack(bref));
break;
case types::sib8:
HANDLE_CODE(c.get<sib8_s>().unpack(bref));
break;
case types::sib9:
HANDLE_CODE(c.get<sib9_s>().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "sys_info_ies_s::sib_type_and_info_item_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* sys_info_ies_s::sib_type_and_info_item_c_::types_opts::to_string() const
{
static const char* options[] = {"sib2", "sib3", "sib4", "sib5", "sib6", "sib7", "sib8", "sib9"};
return convert_enum_idx(options, 8, value, "sys_info_ies_s::sib_type_and_info_item_c_::types");
}
uint8_t sys_info_ies_s::sib_type_and_info_item_c_::types_opts::to_number() const
{
static const uint8_t options[] = {2, 3, 4, 5, 6, 7, 8, 9};
return map_enum_number(options, 8, value, "sys_info_ies_s::sib_type_and_info_item_c_::types");
}
// UAC-AccessCategory1-SelectionAssistanceInfo ::= ENUMERATED
const char* uac_access_category1_sel_assist_info_opts::to_string() const
{
static const char* options[] = {"a", "b", "c"};
return convert_enum_idx(options, 3, value, "uac_access_category1_sel_assist_info_e");
}
// UE-TimersAndConstants ::= SEQUENCE
SRSASN_CODE ue_timers_and_consts_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(t300.pack(bref));
HANDLE_CODE(t301.pack(bref));
HANDLE_CODE(t310.pack(bref));
HANDLE_CODE(n310.pack(bref));
HANDLE_CODE(t311.pack(bref));
HANDLE_CODE(n311.pack(bref));
HANDLE_CODE(t319.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_timers_and_consts_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(t300.unpack(bref));
HANDLE_CODE(t301.unpack(bref));
HANDLE_CODE(t310.unpack(bref));
HANDLE_CODE(n310.unpack(bref));
HANDLE_CODE(t311.unpack(bref));
HANDLE_CODE(n311.unpack(bref));
HANDLE_CODE(t319.unpack(bref));
return SRSASN_SUCCESS;
}
void ue_timers_and_consts_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("t300", t300.to_string());
j.write_str("t301", t301.to_string());
j.write_str("t310", t310.to_string());
j.write_str("n310", n310.to_string());
j.write_str("t311", t311.to_string());
j.write_str("n311", n311.to_string());
j.write_str("t319", t319.to_string());
j.end_obj();
}
const char* ue_timers_and_consts_s::t300_opts::to_string() const
{
static const char* options[] = {"ms100", "ms200", "ms300", "ms400", "ms600", "ms1000", "ms1500", "ms2000"};
return convert_enum_idx(options, 8, value, "ue_timers_and_consts_s::t300_e_");
}
uint16_t ue_timers_and_consts_s::t300_opts::to_number() const
{
static const uint16_t options[] = {100, 200, 300, 400, 600, 1000, 1500, 2000};
return map_enum_number(options, 8, value, "ue_timers_and_consts_s::t300_e_");
}
const char* ue_timers_and_consts_s::t301_opts::to_string() const
{
static const char* options[] = {"ms100", "ms200", "ms300", "ms400", "ms600", "ms1000", "ms1500", "ms2000"};
return convert_enum_idx(options, 8, value, "ue_timers_and_consts_s::t301_e_");
}
uint16_t ue_timers_and_consts_s::t301_opts::to_number() const
{
static const uint16_t options[] = {100, 200, 300, 400, 600, 1000, 1500, 2000};
return map_enum_number(options, 8, value, "ue_timers_and_consts_s::t301_e_");
}
const char* ue_timers_and_consts_s::t310_opts::to_string() const
{
static const char* options[] = {"ms0", "ms50", "ms100", "ms200", "ms500", "ms1000", "ms2000"};
return convert_enum_idx(options, 7, value, "ue_timers_and_consts_s::t310_e_");
}
uint16_t ue_timers_and_consts_s::t310_opts::to_number() const
{
static const uint16_t options[] = {0, 50, 100, 200, 500, 1000, 2000};
return map_enum_number(options, 7, value, "ue_timers_and_consts_s::t310_e_");
}
const char* ue_timers_and_consts_s::n310_opts::to_string() const
{
static const char* options[] = {"n1", "n2", "n3", "n4", "n6", "n8", "n10", "n20"};
return convert_enum_idx(options, 8, value, "ue_timers_and_consts_s::n310_e_");
}
uint8_t ue_timers_and_consts_s::n310_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 3, 4, 6, 8, 10, 20};
return map_enum_number(options, 8, value, "ue_timers_and_consts_s::n310_e_");
}
const char* ue_timers_and_consts_s::t311_opts::to_string() const
{
static const char* options[] = {"ms1000", "ms3000", "ms5000", "ms10000", "ms15000", "ms20000", "ms30000"};
return convert_enum_idx(options, 7, value, "ue_timers_and_consts_s::t311_e_");
}
uint16_t ue_timers_and_consts_s::t311_opts::to_number() const
{
static const uint16_t options[] = {1000, 3000, 5000, 10000, 15000, 20000, 30000};
return map_enum_number(options, 7, value, "ue_timers_and_consts_s::t311_e_");
}
const char* ue_timers_and_consts_s::n311_opts::to_string() const
{
static const char* options[] = {"n1", "n2", "n3", "n4", "n5", "n6", "n8", "n10"};
return convert_enum_idx(options, 8, value, "ue_timers_and_consts_s::n311_e_");
}
uint8_t ue_timers_and_consts_s::n311_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 3, 4, 5, 6, 8, 10};
return map_enum_number(options, 8, value, "ue_timers_and_consts_s::n311_e_");
}
const char* ue_timers_and_consts_s::t319_opts::to_string() const
{
static const char* options[] = {"ms100", "ms200", "ms300", "ms400", "ms600", "ms1000", "ms1500", "ms2000"};
return convert_enum_idx(options, 8, value, "ue_timers_and_consts_s::t319_e_");
}
uint16_t ue_timers_and_consts_s::t319_opts::to_number() const
{
static const uint16_t options[] = {100, 200, 300, 400, 600, 1000, 1500, 2000};
return map_enum_number(options, 8, value, "ue_timers_and_consts_s::t319_e_");
}
// SIB1 ::= SEQUENCE
SRSASN_CODE sib1_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(cell_sel_info_present, 1));
HANDLE_CODE(bref.pack(conn_est_fail_ctrl_present, 1));
HANDLE_CODE(bref.pack(si_sched_info_present, 1));
HANDLE_CODE(bref.pack(serving_cell_cfg_common_present, 1));
HANDLE_CODE(bref.pack(ims_emergency_support_present, 1));
HANDLE_CODE(bref.pack(ecall_over_ims_support_present, 1));
HANDLE_CODE(bref.pack(ue_timers_and_consts_present, 1));
HANDLE_CODE(bref.pack(uac_barr_info_present, 1));
HANDLE_CODE(bref.pack(use_full_resume_id_present, 1));
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (cell_sel_info_present) {
HANDLE_CODE(bref.pack(cell_sel_info.q_rx_lev_min_offset_present, 1));
HANDLE_CODE(bref.pack(cell_sel_info.q_rx_lev_min_sul_present, 1));
HANDLE_CODE(bref.pack(cell_sel_info.q_qual_min_present, 1));
HANDLE_CODE(bref.pack(cell_sel_info.q_qual_min_offset_present, 1));
HANDLE_CODE(pack_integer(bref, cell_sel_info.q_rx_lev_min, (int8_t)-70, (int8_t)-22));
if (cell_sel_info.q_rx_lev_min_offset_present) {
HANDLE_CODE(pack_integer(bref, cell_sel_info.q_rx_lev_min_offset, (uint8_t)1u, (uint8_t)8u));
}
if (cell_sel_info.q_rx_lev_min_sul_present) {
HANDLE_CODE(pack_integer(bref, cell_sel_info.q_rx_lev_min_sul, (int8_t)-70, (int8_t)-22));
}
if (cell_sel_info.q_qual_min_present) {
HANDLE_CODE(pack_integer(bref, cell_sel_info.q_qual_min, (int8_t)-43, (int8_t)-12));
}
if (cell_sel_info.q_qual_min_offset_present) {
HANDLE_CODE(pack_integer(bref, cell_sel_info.q_qual_min_offset, (uint8_t)1u, (uint8_t)8u));
}
}
HANDLE_CODE(cell_access_related_info.pack(bref));
if (conn_est_fail_ctrl_present) {
HANDLE_CODE(conn_est_fail_ctrl.pack(bref));
}
if (si_sched_info_present) {
HANDLE_CODE(si_sched_info.pack(bref));
}
if (serving_cell_cfg_common_present) {
HANDLE_CODE(serving_cell_cfg_common.pack(bref));
}
if (ue_timers_and_consts_present) {
HANDLE_CODE(ue_timers_and_consts.pack(bref));
}
if (uac_barr_info_present) {
HANDLE_CODE(bref.pack(uac_barr_info.uac_barr_for_common_present, 1));
HANDLE_CODE(bref.pack(uac_barr_info.uac_barr_per_plmn_list_present, 1));
HANDLE_CODE(bref.pack(uac_barr_info.uac_access_category1_sel_assist_info_present, 1));
if (uac_barr_info.uac_barr_for_common_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, uac_barr_info.uac_barr_for_common, 1, 63));
}
if (uac_barr_info.uac_barr_per_plmn_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, uac_barr_info.uac_barr_per_plmn_list, 1, 12));
}
HANDLE_CODE(pack_dyn_seq_of(bref, uac_barr_info.uac_barr_info_set_list, 1, 8));
if (uac_barr_info.uac_access_category1_sel_assist_info_present) {
HANDLE_CODE(uac_barr_info.uac_access_category1_sel_assist_info.pack(bref));
}
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE sib1_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(cell_sel_info_present, 1));
HANDLE_CODE(bref.unpack(conn_est_fail_ctrl_present, 1));
HANDLE_CODE(bref.unpack(si_sched_info_present, 1));
HANDLE_CODE(bref.unpack(serving_cell_cfg_common_present, 1));
HANDLE_CODE(bref.unpack(ims_emergency_support_present, 1));
HANDLE_CODE(bref.unpack(ecall_over_ims_support_present, 1));
HANDLE_CODE(bref.unpack(ue_timers_and_consts_present, 1));
HANDLE_CODE(bref.unpack(uac_barr_info_present, 1));
HANDLE_CODE(bref.unpack(use_full_resume_id_present, 1));
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (cell_sel_info_present) {
HANDLE_CODE(bref.unpack(cell_sel_info.q_rx_lev_min_offset_present, 1));
HANDLE_CODE(bref.unpack(cell_sel_info.q_rx_lev_min_sul_present, 1));
HANDLE_CODE(bref.unpack(cell_sel_info.q_qual_min_present, 1));
HANDLE_CODE(bref.unpack(cell_sel_info.q_qual_min_offset_present, 1));
HANDLE_CODE(unpack_integer(cell_sel_info.q_rx_lev_min, bref, (int8_t)-70, (int8_t)-22));
if (cell_sel_info.q_rx_lev_min_offset_present) {
HANDLE_CODE(unpack_integer(cell_sel_info.q_rx_lev_min_offset, bref, (uint8_t)1u, (uint8_t)8u));
}
if (cell_sel_info.q_rx_lev_min_sul_present) {
HANDLE_CODE(unpack_integer(cell_sel_info.q_rx_lev_min_sul, bref, (int8_t)-70, (int8_t)-22));
}
if (cell_sel_info.q_qual_min_present) {
HANDLE_CODE(unpack_integer(cell_sel_info.q_qual_min, bref, (int8_t)-43, (int8_t)-12));
}
if (cell_sel_info.q_qual_min_offset_present) {
HANDLE_CODE(unpack_integer(cell_sel_info.q_qual_min_offset, bref, (uint8_t)1u, (uint8_t)8u));
}
}
HANDLE_CODE(cell_access_related_info.unpack(bref));
if (conn_est_fail_ctrl_present) {
HANDLE_CODE(conn_est_fail_ctrl.unpack(bref));
}
if (si_sched_info_present) {
HANDLE_CODE(si_sched_info.unpack(bref));
}
if (serving_cell_cfg_common_present) {
HANDLE_CODE(serving_cell_cfg_common.unpack(bref));
}
if (ue_timers_and_consts_present) {
HANDLE_CODE(ue_timers_and_consts.unpack(bref));
}
if (uac_barr_info_present) {
HANDLE_CODE(bref.unpack(uac_barr_info.uac_barr_for_common_present, 1));
HANDLE_CODE(bref.unpack(uac_barr_info.uac_barr_per_plmn_list_present, 1));
HANDLE_CODE(bref.unpack(uac_barr_info.uac_access_category1_sel_assist_info_present, 1));
if (uac_barr_info.uac_barr_for_common_present) {
HANDLE_CODE(unpack_dyn_seq_of(uac_barr_info.uac_barr_for_common, bref, 1, 63));
}
if (uac_barr_info.uac_barr_per_plmn_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(uac_barr_info.uac_barr_per_plmn_list, bref, 1, 12));
}
HANDLE_CODE(unpack_dyn_seq_of(uac_barr_info.uac_barr_info_set_list, bref, 1, 8));
if (uac_barr_info.uac_access_category1_sel_assist_info_present) {
HANDLE_CODE(uac_barr_info.uac_access_category1_sel_assist_info.unpack(bref));
}
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void sib1_s::to_json(json_writer& j) const
{
j.start_obj();
if (cell_sel_info_present) {
j.write_fieldname("cellSelectionInfo");
j.start_obj();
j.write_int("q-RxLevMin", cell_sel_info.q_rx_lev_min);
if (cell_sel_info.q_rx_lev_min_offset_present) {
j.write_int("q-RxLevMinOffset", cell_sel_info.q_rx_lev_min_offset);
}
if (cell_sel_info.q_rx_lev_min_sul_present) {
j.write_int("q-RxLevMinSUL", cell_sel_info.q_rx_lev_min_sul);
}
if (cell_sel_info.q_qual_min_present) {
j.write_int("q-QualMin", cell_sel_info.q_qual_min);
}
if (cell_sel_info.q_qual_min_offset_present) {
j.write_int("q-QualMinOffset", cell_sel_info.q_qual_min_offset);
}
j.end_obj();
}
j.write_fieldname("cellAccessRelatedInfo");
cell_access_related_info.to_json(j);
if (conn_est_fail_ctrl_present) {
j.write_fieldname("connEstFailureControl");
conn_est_fail_ctrl.to_json(j);
}
if (si_sched_info_present) {
j.write_fieldname("si-SchedulingInfo");
si_sched_info.to_json(j);
}
if (serving_cell_cfg_common_present) {
j.write_fieldname("servingCellConfigCommon");
serving_cell_cfg_common.to_json(j);
}
if (ims_emergency_support_present) {
j.write_str("ims-EmergencySupport", "true");
}
if (ecall_over_ims_support_present) {
j.write_str("eCallOverIMS-Support", "true");
}
if (ue_timers_and_consts_present) {
j.write_fieldname("ue-TimersAndConstants");
ue_timers_and_consts.to_json(j);
}
if (uac_barr_info_present) {
j.write_fieldname("uac-BarringInfo");
j.start_obj();
if (uac_barr_info.uac_barr_for_common_present) {
j.start_array("uac-BarringForCommon");
for (const auto& e1 : uac_barr_info.uac_barr_for_common) {
e1.to_json(j);
}
j.end_array();
}
if (uac_barr_info.uac_barr_per_plmn_list_present) {
j.start_array("uac-BarringPerPLMN-List");
for (const auto& e1 : uac_barr_info.uac_barr_per_plmn_list) {
e1.to_json(j);
}
j.end_array();
}
j.start_array("uac-BarringInfoSetList");
for (const auto& e1 : uac_barr_info.uac_barr_info_set_list) {
e1.to_json(j);
}
j.end_array();
if (uac_barr_info.uac_access_category1_sel_assist_info_present) {
j.write_fieldname("uac-AccessCategory1-SelectionAssistanceInfo");
uac_barr_info.uac_access_category1_sel_assist_info.to_json(j);
}
j.end_obj();
}
if (use_full_resume_id_present) {
j.write_str("useFullResumeID", "true");
}
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
void sib1_s::uac_barr_info_s_::uac_access_category1_sel_assist_info_c_::destroy_()
{
switch (type_) {
case types::individual_plmn_list:
c.destroy<individual_plmn_list_l_>();
break;
default:
break;
}
}
void sib1_s::uac_barr_info_s_::uac_access_category1_sel_assist_info_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::plmn_common:
break;
case types::individual_plmn_list:
c.init<individual_plmn_list_l_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "sib1_s::uac_barr_info_s_::uac_access_category1_sel_assist_info_c_");
}
}
sib1_s::uac_barr_info_s_::uac_access_category1_sel_assist_info_c_::uac_access_category1_sel_assist_info_c_(
const sib1_s::uac_barr_info_s_::uac_access_category1_sel_assist_info_c_& other)
{
type_ = other.type();
switch (type_) {
case types::plmn_common:
c.init(other.c.get<uac_access_category1_sel_assist_info_e>());
break;
case types::individual_plmn_list:
c.init(other.c.get<individual_plmn_list_l_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "sib1_s::uac_barr_info_s_::uac_access_category1_sel_assist_info_c_");
}
}
sib1_s::uac_barr_info_s_::uac_access_category1_sel_assist_info_c_&
sib1_s::uac_barr_info_s_::uac_access_category1_sel_assist_info_c_::operator=(
const sib1_s::uac_barr_info_s_::uac_access_category1_sel_assist_info_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::plmn_common:
c.set(other.c.get<uac_access_category1_sel_assist_info_e>());
break;
case types::individual_plmn_list:
c.set(other.c.get<individual_plmn_list_l_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "sib1_s::uac_barr_info_s_::uac_access_category1_sel_assist_info_c_");
}
return *this;
}
uac_access_category1_sel_assist_info_e&
sib1_s::uac_barr_info_s_::uac_access_category1_sel_assist_info_c_::set_plmn_common()
{
set(types::plmn_common);
return c.get<uac_access_category1_sel_assist_info_e>();
}
sib1_s::uac_barr_info_s_::uac_access_category1_sel_assist_info_c_::individual_plmn_list_l_&
sib1_s::uac_barr_info_s_::uac_access_category1_sel_assist_info_c_::set_individual_plmn_list()
{
set(types::individual_plmn_list);
return c.get<individual_plmn_list_l_>();
}
void sib1_s::uac_barr_info_s_::uac_access_category1_sel_assist_info_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::plmn_common:
j.write_str("plmnCommon", c.get<uac_access_category1_sel_assist_info_e>().to_string());
break;
case types::individual_plmn_list:
j.start_array("individualPLMNList");
for (const auto& e1 : c.get<individual_plmn_list_l_>()) {
j.write_str(e1.to_string());
}
j.end_array();
break;
default:
log_invalid_choice_id(type_, "sib1_s::uac_barr_info_s_::uac_access_category1_sel_assist_info_c_");
}
j.end_obj();
}
SRSASN_CODE sib1_s::uac_barr_info_s_::uac_access_category1_sel_assist_info_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::plmn_common:
HANDLE_CODE(c.get<uac_access_category1_sel_assist_info_e>().pack(bref));
break;
case types::individual_plmn_list:
HANDLE_CODE(pack_dyn_seq_of(bref, c.get<individual_plmn_list_l_>(), 2, 12));
break;
default:
log_invalid_choice_id(type_, "sib1_s::uac_barr_info_s_::uac_access_category1_sel_assist_info_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE sib1_s::uac_barr_info_s_::uac_access_category1_sel_assist_info_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::plmn_common:
HANDLE_CODE(c.get<uac_access_category1_sel_assist_info_e>().unpack(bref));
break;
case types::individual_plmn_list:
HANDLE_CODE(unpack_dyn_seq_of(c.get<individual_plmn_list_l_>(), bref, 2, 12));
break;
default:
log_invalid_choice_id(type_, "sib1_s::uac_barr_info_s_::uac_access_category1_sel_assist_info_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* sib1_s::uac_barr_info_s_::uac_access_category1_sel_assist_info_c_::types_opts::to_string() const
{
static const char* options[] = {"plmnCommon", "individualPLMNList"};
return convert_enum_idx(
options, 2, value, "sib1_s::uac_barr_info_s_::uac_access_category1_sel_assist_info_c_::types");
}
// SystemInformation ::= SEQUENCE
SRSASN_CODE sys_info_s::pack(bit_ref& bref) const
{
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE sys_info_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void sys_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void sys_info_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
sys_info_ies_s& sys_info_s::crit_exts_c_::set_sys_info()
{
set(types::sys_info);
return c;
}
void sys_info_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void sys_info_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::sys_info:
j.write_fieldname("systemInformation");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "sys_info_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE sys_info_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::sys_info:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "sys_info_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE sys_info_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::sys_info:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "sys_info_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* sys_info_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"systemInformation", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "sys_info_s::crit_exts_c_::types");
}
// BCCH-DL-SCH-MessageType ::= CHOICE
void bcch_dl_sch_msg_type_c::set(types::options e)
{
type_ = e;
}
bcch_dl_sch_msg_type_c::c1_c_& bcch_dl_sch_msg_type_c::set_c1()
{
set(types::c1);
return c;
}
void bcch_dl_sch_msg_type_c::set_msg_class_ext()
{
set(types::msg_class_ext);
}
void bcch_dl_sch_msg_type_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::c1:
j.write_fieldname("c1");
c.to_json(j);
break;
case types::msg_class_ext:
break;
default:
log_invalid_choice_id(type_, "bcch_dl_sch_msg_type_c");
}
j.end_obj();
}
SRSASN_CODE bcch_dl_sch_msg_type_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::c1:
HANDLE_CODE(c.pack(bref));
break;
case types::msg_class_ext:
break;
default:
log_invalid_choice_id(type_, "bcch_dl_sch_msg_type_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE bcch_dl_sch_msg_type_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::c1:
HANDLE_CODE(c.unpack(bref));
break;
case types::msg_class_ext:
break;
default:
log_invalid_choice_id(type_, "bcch_dl_sch_msg_type_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
void bcch_dl_sch_msg_type_c::c1_c_::destroy_()
{
switch (type_) {
case types::sys_info:
c.destroy<sys_info_s>();
break;
case types::sib_type1:
c.destroy<sib1_s>();
break;
default:
break;
}
}
void bcch_dl_sch_msg_type_c::c1_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::sys_info:
c.init<sys_info_s>();
break;
case types::sib_type1:
c.init<sib1_s>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "bcch_dl_sch_msg_type_c::c1_c_");
}
}
bcch_dl_sch_msg_type_c::c1_c_::c1_c_(const bcch_dl_sch_msg_type_c::c1_c_& other)
{
type_ = other.type();
switch (type_) {
case types::sys_info:
c.init(other.c.get<sys_info_s>());
break;
case types::sib_type1:
c.init(other.c.get<sib1_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "bcch_dl_sch_msg_type_c::c1_c_");
}
}
bcch_dl_sch_msg_type_c::c1_c_& bcch_dl_sch_msg_type_c::c1_c_::operator=(const bcch_dl_sch_msg_type_c::c1_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::sys_info:
c.set(other.c.get<sys_info_s>());
break;
case types::sib_type1:
c.set(other.c.get<sib1_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "bcch_dl_sch_msg_type_c::c1_c_");
}
return *this;
}
sys_info_s& bcch_dl_sch_msg_type_c::c1_c_::set_sys_info()
{
set(types::sys_info);
return c.get<sys_info_s>();
}
sib1_s& bcch_dl_sch_msg_type_c::c1_c_::set_sib_type1()
{
set(types::sib_type1);
return c.get<sib1_s>();
}
void bcch_dl_sch_msg_type_c::c1_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::sys_info:
j.write_fieldname("systemInformation");
c.get<sys_info_s>().to_json(j);
break;
case types::sib_type1:
j.write_fieldname("systemInformationBlockType1");
c.get<sib1_s>().to_json(j);
break;
default:
log_invalid_choice_id(type_, "bcch_dl_sch_msg_type_c::c1_c_");
}
j.end_obj();
}
SRSASN_CODE bcch_dl_sch_msg_type_c::c1_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::sys_info:
HANDLE_CODE(c.get<sys_info_s>().pack(bref));
break;
case types::sib_type1:
HANDLE_CODE(c.get<sib1_s>().pack(bref));
break;
default:
log_invalid_choice_id(type_, "bcch_dl_sch_msg_type_c::c1_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE bcch_dl_sch_msg_type_c::c1_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::sys_info:
HANDLE_CODE(c.get<sys_info_s>().unpack(bref));
break;
case types::sib_type1:
HANDLE_CODE(c.get<sib1_s>().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "bcch_dl_sch_msg_type_c::c1_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* bcch_dl_sch_msg_type_c::c1_c_::types_opts::to_string() const
{
static const char* options[] = {"systemInformation", "systemInformationBlockType1"};
return convert_enum_idx(options, 2, value, "bcch_dl_sch_msg_type_c::c1_c_::types");
}
uint8_t bcch_dl_sch_msg_type_c::c1_c_::types_opts::to_number() const
{
if (value == sib_type1) {
return 1;
}
invalid_enum_number(value, "bcch_dl_sch_msg_type_c::c1_c_::types");
return 0;
}
const char* bcch_dl_sch_msg_type_c::types_opts::to_string() const
{
static const char* options[] = {"c1", "messageClassExtension"};
return convert_enum_idx(options, 2, value, "bcch_dl_sch_msg_type_c::types");
}
uint8_t bcch_dl_sch_msg_type_c::types_opts::to_number() const
{
static const uint8_t options[] = {1};
return map_enum_number(options, 1, value, "bcch_dl_sch_msg_type_c::types");
}
// BCCH-DL-SCH-Message ::= SEQUENCE
SRSASN_CODE bcch_dl_sch_msg_s::pack(bit_ref& bref) const
{
HANDLE_CODE(msg.pack(bref));
bref.align_bytes_zero();
return SRSASN_SUCCESS;
}
SRSASN_CODE bcch_dl_sch_msg_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(msg.unpack(bref));
bref.align_bytes();
return SRSASN_SUCCESS;
}
void bcch_dl_sch_msg_s::to_json(json_writer& j) const
{
j.start_array();
j.start_obj();
j.start_obj("BCCH-DL-SCH-Message");
j.write_fieldname("message");
msg.to_json(j);
j.end_obj();
j.end_obj();
j.end_array();
}
// UL-DataSplitThreshold ::= ENUMERATED
const char* ul_data_split_thres_opts::to_string() const
{
static const char* options[] = {"b0", "b100", "b200", "b400", "b800", "b1600", "b3200",
"b6400", "b12800", "b25600", "b51200", "b102400", "b204800", "b409600",
"b819200", "b1228800", "b1638400", "b2457600", "b3276800", "b4096000", "b4915200",
"b5734400", "b6553600", "infinity", "spare8", "spare7", "spare6", "spare5",
"spare4", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 32, value, "ul_data_split_thres_e");
}
int32_t ul_data_split_thres_opts::to_number() const
{
static const int32_t options[] = {0, 100, 200, 400, 800, 1600, 3200, 6400,
12800, 25600, 51200, 102400, 204800, 409600, 819200, 1228800,
1638400, 2457600, 3276800, 4096000, 4915200, 5734400, 6553600, -1};
return map_enum_number(options, 24, value, "ul_data_split_thres_e");
}
// CipheringAlgorithm ::= ENUMERATED
const char* ciphering_algorithm_opts::to_string() const
{
static const char* options[] = {"nea0", "nea1", "nea2", "nea3", "spare4", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 8, value, "ciphering_algorithm_e");
}
uint8_t ciphering_algorithm_opts::to_number() const
{
static const uint8_t options[] = {0, 1, 2, 3};
return map_enum_number(options, 4, value, "ciphering_algorithm_e");
}
// IntegrityProtAlgorithm ::= ENUMERATED
const char* integrity_prot_algorithm_opts::to_string() const
{
static const char* options[] = {"nia0", "nia1", "nia2", "nia3", "spare4", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 8, value, "integrity_prot_algorithm_e");
}
uint8_t integrity_prot_algorithm_opts::to_number() const
{
static const uint8_t options[] = {0, 1, 2, 3};
return map_enum_number(options, 4, value, "integrity_prot_algorithm_e");
}
// PDCP-Config ::= SEQUENCE
SRSASN_CODE pdcp_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(drb_present, 1));
HANDLE_CODE(bref.pack(more_than_one_rlc_present, 1));
HANDLE_CODE(bref.pack(t_reordering_present, 1));
if (drb_present) {
HANDLE_CODE(bref.pack(drb.discard_timer_present, 1));
HANDLE_CODE(bref.pack(drb.pdcp_sn_size_ul_present, 1));
HANDLE_CODE(bref.pack(drb.pdcp_sn_size_dl_present, 1));
HANDLE_CODE(bref.pack(drb.integrity_protection_present, 1));
HANDLE_CODE(bref.pack(drb.status_report_required_present, 1));
HANDLE_CODE(bref.pack(drb.out_of_order_delivery_present, 1));
if (drb.discard_timer_present) {
HANDLE_CODE(drb.discard_timer.pack(bref));
}
if (drb.pdcp_sn_size_ul_present) {
HANDLE_CODE(drb.pdcp_sn_size_ul.pack(bref));
}
if (drb.pdcp_sn_size_dl_present) {
HANDLE_CODE(drb.pdcp_sn_size_dl.pack(bref));
}
HANDLE_CODE(drb.hdr_compress.pack(bref));
}
if (more_than_one_rlc_present) {
HANDLE_CODE(bref.pack(more_than_one_rlc.ul_data_split_thres_present, 1));
HANDLE_CODE(bref.pack(more_than_one_rlc.pdcp_dupl_present, 1));
HANDLE_CODE(bref.pack(more_than_one_rlc.primary_path.cell_group_present, 1));
HANDLE_CODE(bref.pack(more_than_one_rlc.primary_path.lc_ch_present, 1));
if (more_than_one_rlc.primary_path.cell_group_present) {
HANDLE_CODE(pack_integer(bref, more_than_one_rlc.primary_path.cell_group, (uint8_t)0u, (uint8_t)3u));
}
if (more_than_one_rlc.primary_path.lc_ch_present) {
HANDLE_CODE(pack_integer(bref, more_than_one_rlc.primary_path.lc_ch, (uint8_t)1u, (uint8_t)32u));
}
if (more_than_one_rlc.ul_data_split_thres_present) {
HANDLE_CODE(more_than_one_rlc.ul_data_split_thres.pack(bref));
}
if (more_than_one_rlc.pdcp_dupl_present) {
HANDLE_CODE(bref.pack(more_than_one_rlc.pdcp_dupl, 1));
}
}
if (t_reordering_present) {
HANDLE_CODE(t_reordering.pack(bref));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= ciphering_disabled_present;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(ciphering_disabled_present, 1));
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pdcp_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(drb_present, 1));
HANDLE_CODE(bref.unpack(more_than_one_rlc_present, 1));
HANDLE_CODE(bref.unpack(t_reordering_present, 1));
if (drb_present) {
HANDLE_CODE(bref.unpack(drb.discard_timer_present, 1));
HANDLE_CODE(bref.unpack(drb.pdcp_sn_size_ul_present, 1));
HANDLE_CODE(bref.unpack(drb.pdcp_sn_size_dl_present, 1));
HANDLE_CODE(bref.unpack(drb.integrity_protection_present, 1));
HANDLE_CODE(bref.unpack(drb.status_report_required_present, 1));
HANDLE_CODE(bref.unpack(drb.out_of_order_delivery_present, 1));
if (drb.discard_timer_present) {
HANDLE_CODE(drb.discard_timer.unpack(bref));
}
if (drb.pdcp_sn_size_ul_present) {
HANDLE_CODE(drb.pdcp_sn_size_ul.unpack(bref));
}
if (drb.pdcp_sn_size_dl_present) {
HANDLE_CODE(drb.pdcp_sn_size_dl.unpack(bref));
}
HANDLE_CODE(drb.hdr_compress.unpack(bref));
}
if (more_than_one_rlc_present) {
HANDLE_CODE(bref.unpack(more_than_one_rlc.ul_data_split_thres_present, 1));
HANDLE_CODE(bref.unpack(more_than_one_rlc.pdcp_dupl_present, 1));
HANDLE_CODE(bref.unpack(more_than_one_rlc.primary_path.cell_group_present, 1));
HANDLE_CODE(bref.unpack(more_than_one_rlc.primary_path.lc_ch_present, 1));
if (more_than_one_rlc.primary_path.cell_group_present) {
HANDLE_CODE(unpack_integer(more_than_one_rlc.primary_path.cell_group, bref, (uint8_t)0u, (uint8_t)3u));
}
if (more_than_one_rlc.primary_path.lc_ch_present) {
HANDLE_CODE(unpack_integer(more_than_one_rlc.primary_path.lc_ch, bref, (uint8_t)1u, (uint8_t)32u));
}
if (more_than_one_rlc.ul_data_split_thres_present) {
HANDLE_CODE(more_than_one_rlc.ul_data_split_thres.unpack(bref));
}
if (more_than_one_rlc.pdcp_dupl_present) {
HANDLE_CODE(bref.unpack(more_than_one_rlc.pdcp_dupl, 1));
}
}
if (t_reordering_present) {
HANDLE_CODE(t_reordering.unpack(bref));
}
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(ciphering_disabled_present, 1));
}
}
return SRSASN_SUCCESS;
}
void pdcp_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (drb_present) {
j.write_fieldname("drb");
j.start_obj();
if (drb.discard_timer_present) {
j.write_str("discardTimer", drb.discard_timer.to_string());
}
if (drb.pdcp_sn_size_ul_present) {
j.write_str("pdcp-SN-SizeUL", drb.pdcp_sn_size_ul.to_string());
}
if (drb.pdcp_sn_size_dl_present) {
j.write_str("pdcp-SN-SizeDL", drb.pdcp_sn_size_dl.to_string());
}
j.write_fieldname("headerCompression");
drb.hdr_compress.to_json(j);
if (drb.integrity_protection_present) {
j.write_str("integrityProtection", "enabled");
}
if (drb.status_report_required_present) {
j.write_str("statusReportRequired", "true");
}
if (drb.out_of_order_delivery_present) {
j.write_str("outOfOrderDelivery", "true");
}
j.end_obj();
}
if (more_than_one_rlc_present) {
j.write_fieldname("moreThanOneRLC");
j.start_obj();
j.write_fieldname("primaryPath");
j.start_obj();
if (more_than_one_rlc.primary_path.cell_group_present) {
j.write_int("cellGroup", more_than_one_rlc.primary_path.cell_group);
}
if (more_than_one_rlc.primary_path.lc_ch_present) {
j.write_int("logicalChannel", more_than_one_rlc.primary_path.lc_ch);
}
j.end_obj();
if (more_than_one_rlc.ul_data_split_thres_present) {
j.write_str("ul-DataSplitThreshold", more_than_one_rlc.ul_data_split_thres.to_string());
}
if (more_than_one_rlc.pdcp_dupl_present) {
j.write_bool("pdcp-Duplication", more_than_one_rlc.pdcp_dupl);
}
j.end_obj();
}
if (t_reordering_present) {
j.write_str("t-Reordering", t_reordering.to_string());
}
if (ext) {
if (ciphering_disabled_present) {
j.write_str("cipheringDisabled", "true");
}
}
j.end_obj();
}
const char* pdcp_cfg_s::drb_s_::discard_timer_opts::to_string() const
{
static const char* options[] = {"ms10",
"ms20",
"ms30",
"ms40",
"ms50",
"ms60",
"ms75",
"ms100",
"ms150",
"ms200",
"ms250",
"ms300",
"ms500",
"ms750",
"ms1500",
"infinity"};
return convert_enum_idx(options, 16, value, "pdcp_cfg_s::drb_s_::discard_timer_e_");
}
int16_t pdcp_cfg_s::drb_s_::discard_timer_opts::to_number() const
{
static const int16_t options[] = {10, 20, 30, 40, 50, 60, 75, 100, 150, 200, 250, 300, 500, 750, 1500, -1};
return map_enum_number(options, 16, value, "pdcp_cfg_s::drb_s_::discard_timer_e_");
}
const char* pdcp_cfg_s::drb_s_::pdcp_sn_size_ul_opts::to_string() const
{
static const char* options[] = {"len12bits", "len18bits"};
return convert_enum_idx(options, 2, value, "pdcp_cfg_s::drb_s_::pdcp_sn_size_ul_e_");
}
uint8_t pdcp_cfg_s::drb_s_::pdcp_sn_size_ul_opts::to_number() const
{
static const uint8_t options[] = {12, 18};
return map_enum_number(options, 2, value, "pdcp_cfg_s::drb_s_::pdcp_sn_size_ul_e_");
}
const char* pdcp_cfg_s::drb_s_::pdcp_sn_size_dl_opts::to_string() const
{
static const char* options[] = {"len12bits", "len18bits"};
return convert_enum_idx(options, 2, value, "pdcp_cfg_s::drb_s_::pdcp_sn_size_dl_e_");
}
uint8_t pdcp_cfg_s::drb_s_::pdcp_sn_size_dl_opts::to_number() const
{
static const uint8_t options[] = {12, 18};
return map_enum_number(options, 2, value, "pdcp_cfg_s::drb_s_::pdcp_sn_size_dl_e_");
}
void pdcp_cfg_s::drb_s_::hdr_compress_c_::destroy_()
{
switch (type_) {
case types::rohc:
c.destroy<rohc_s_>();
break;
case types::ul_only_rohc:
c.destroy<ul_only_rohc_s_>();
break;
default:
break;
}
}
void pdcp_cfg_s::drb_s_::hdr_compress_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::not_used:
break;
case types::rohc:
c.init<rohc_s_>();
break;
case types::ul_only_rohc:
c.init<ul_only_rohc_s_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "pdcp_cfg_s::drb_s_::hdr_compress_c_");
}
}
pdcp_cfg_s::drb_s_::hdr_compress_c_::hdr_compress_c_(const pdcp_cfg_s::drb_s_::hdr_compress_c_& other)
{
type_ = other.type();
switch (type_) {
case types::not_used:
break;
case types::rohc:
c.init(other.c.get<rohc_s_>());
break;
case types::ul_only_rohc:
c.init(other.c.get<ul_only_rohc_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "pdcp_cfg_s::drb_s_::hdr_compress_c_");
}
}
pdcp_cfg_s::drb_s_::hdr_compress_c_&
pdcp_cfg_s::drb_s_::hdr_compress_c_::operator=(const pdcp_cfg_s::drb_s_::hdr_compress_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::not_used:
break;
case types::rohc:
c.set(other.c.get<rohc_s_>());
break;
case types::ul_only_rohc:
c.set(other.c.get<ul_only_rohc_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "pdcp_cfg_s::drb_s_::hdr_compress_c_");
}
return *this;
}
void pdcp_cfg_s::drb_s_::hdr_compress_c_::set_not_used()
{
set(types::not_used);
}
pdcp_cfg_s::drb_s_::hdr_compress_c_::rohc_s_& pdcp_cfg_s::drb_s_::hdr_compress_c_::set_rohc()
{
set(types::rohc);
return c.get<rohc_s_>();
}
pdcp_cfg_s::drb_s_::hdr_compress_c_::ul_only_rohc_s_& pdcp_cfg_s::drb_s_::hdr_compress_c_::set_ul_only_rohc()
{
set(types::ul_only_rohc);
return c.get<ul_only_rohc_s_>();
}
void pdcp_cfg_s::drb_s_::hdr_compress_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::not_used:
break;
case types::rohc:
j.write_fieldname("rohc");
j.start_obj();
if (c.get<rohc_s_>().max_cid_present) {
j.write_int("maxCID", c.get<rohc_s_>().max_cid);
}
j.write_fieldname("profiles");
j.start_obj();
j.write_bool("profile0x0001", c.get<rohc_s_>().profiles.profile0x0001);
j.write_bool("profile0x0002", c.get<rohc_s_>().profiles.profile0x0002);
j.write_bool("profile0x0003", c.get<rohc_s_>().profiles.profile0x0003);
j.write_bool("profile0x0004", c.get<rohc_s_>().profiles.profile0x0004);
j.write_bool("profile0x0006", c.get<rohc_s_>().profiles.profile0x0006);
j.write_bool("profile0x0101", c.get<rohc_s_>().profiles.profile0x0101);
j.write_bool("profile0x0102", c.get<rohc_s_>().profiles.profile0x0102);
j.write_bool("profile0x0103", c.get<rohc_s_>().profiles.profile0x0103);
j.write_bool("profile0x0104", c.get<rohc_s_>().profiles.profile0x0104);
j.end_obj();
if (c.get<rohc_s_>().drb_continue_rohc_present) {
j.write_str("drb-ContinueROHC", "true");
}
j.end_obj();
break;
case types::ul_only_rohc:
j.write_fieldname("uplinkOnlyROHC");
j.start_obj();
if (c.get<ul_only_rohc_s_>().max_cid_present) {
j.write_int("maxCID", c.get<ul_only_rohc_s_>().max_cid);
}
j.write_fieldname("profiles");
j.start_obj();
j.write_bool("profile0x0006", c.get<ul_only_rohc_s_>().profiles.profile0x0006);
j.end_obj();
if (c.get<ul_only_rohc_s_>().drb_continue_rohc_present) {
j.write_str("drb-ContinueROHC", "true");
}
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "pdcp_cfg_s::drb_s_::hdr_compress_c_");
}
j.end_obj();
}
SRSASN_CODE pdcp_cfg_s::drb_s_::hdr_compress_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::not_used:
break;
case types::rohc:
HANDLE_CODE(bref.pack(c.get<rohc_s_>().max_cid_present, 1));
HANDLE_CODE(bref.pack(c.get<rohc_s_>().drb_continue_rohc_present, 1));
if (c.get<rohc_s_>().max_cid_present) {
HANDLE_CODE(pack_integer(bref, c.get<rohc_s_>().max_cid, (uint16_t)1u, (uint16_t)16383u));
}
HANDLE_CODE(bref.pack(c.get<rohc_s_>().profiles.profile0x0001, 1));
HANDLE_CODE(bref.pack(c.get<rohc_s_>().profiles.profile0x0002, 1));
HANDLE_CODE(bref.pack(c.get<rohc_s_>().profiles.profile0x0003, 1));
HANDLE_CODE(bref.pack(c.get<rohc_s_>().profiles.profile0x0004, 1));
HANDLE_CODE(bref.pack(c.get<rohc_s_>().profiles.profile0x0006, 1));
HANDLE_CODE(bref.pack(c.get<rohc_s_>().profiles.profile0x0101, 1));
HANDLE_CODE(bref.pack(c.get<rohc_s_>().profiles.profile0x0102, 1));
HANDLE_CODE(bref.pack(c.get<rohc_s_>().profiles.profile0x0103, 1));
HANDLE_CODE(bref.pack(c.get<rohc_s_>().profiles.profile0x0104, 1));
break;
case types::ul_only_rohc:
HANDLE_CODE(bref.pack(c.get<ul_only_rohc_s_>().max_cid_present, 1));
HANDLE_CODE(bref.pack(c.get<ul_only_rohc_s_>().drb_continue_rohc_present, 1));
if (c.get<ul_only_rohc_s_>().max_cid_present) {
HANDLE_CODE(pack_integer(bref, c.get<ul_only_rohc_s_>().max_cid, (uint16_t)1u, (uint16_t)16383u));
}
HANDLE_CODE(bref.pack(c.get<ul_only_rohc_s_>().profiles.profile0x0006, 1));
break;
default:
log_invalid_choice_id(type_, "pdcp_cfg_s::drb_s_::hdr_compress_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pdcp_cfg_s::drb_s_::hdr_compress_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::not_used:
break;
case types::rohc:
HANDLE_CODE(bref.unpack(c.get<rohc_s_>().max_cid_present, 1));
HANDLE_CODE(bref.unpack(c.get<rohc_s_>().drb_continue_rohc_present, 1));
if (c.get<rohc_s_>().max_cid_present) {
HANDLE_CODE(unpack_integer(c.get<rohc_s_>().max_cid, bref, (uint16_t)1u, (uint16_t)16383u));
}
HANDLE_CODE(bref.unpack(c.get<rohc_s_>().profiles.profile0x0001, 1));
HANDLE_CODE(bref.unpack(c.get<rohc_s_>().profiles.profile0x0002, 1));
HANDLE_CODE(bref.unpack(c.get<rohc_s_>().profiles.profile0x0003, 1));
HANDLE_CODE(bref.unpack(c.get<rohc_s_>().profiles.profile0x0004, 1));
HANDLE_CODE(bref.unpack(c.get<rohc_s_>().profiles.profile0x0006, 1));
HANDLE_CODE(bref.unpack(c.get<rohc_s_>().profiles.profile0x0101, 1));
HANDLE_CODE(bref.unpack(c.get<rohc_s_>().profiles.profile0x0102, 1));
HANDLE_CODE(bref.unpack(c.get<rohc_s_>().profiles.profile0x0103, 1));
HANDLE_CODE(bref.unpack(c.get<rohc_s_>().profiles.profile0x0104, 1));
break;
case types::ul_only_rohc:
HANDLE_CODE(bref.unpack(c.get<ul_only_rohc_s_>().max_cid_present, 1));
HANDLE_CODE(bref.unpack(c.get<ul_only_rohc_s_>().drb_continue_rohc_present, 1));
if (c.get<ul_only_rohc_s_>().max_cid_present) {
HANDLE_CODE(unpack_integer(c.get<ul_only_rohc_s_>().max_cid, bref, (uint16_t)1u, (uint16_t)16383u));
}
HANDLE_CODE(bref.unpack(c.get<ul_only_rohc_s_>().profiles.profile0x0006, 1));
break;
default:
log_invalid_choice_id(type_, "pdcp_cfg_s::drb_s_::hdr_compress_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* pdcp_cfg_s::drb_s_::hdr_compress_c_::types_opts::to_string() const
{
static const char* options[] = {"notUsed", "rohc", "uplinkOnlyROHC"};
return convert_enum_idx(options, 3, value, "pdcp_cfg_s::drb_s_::hdr_compress_c_::types");
}
const char* pdcp_cfg_s::t_reordering_opts::to_string() const
{
static const char* options[] = {
"ms0", "ms1", "ms2", "ms4", "ms5", "ms8", "ms10", "ms15", "ms20", "ms30",
"ms40", "ms50", "ms60", "ms80", "ms100", "ms120", "ms140", "ms160", "ms180", "ms200",
"ms220", "ms240", "ms260", "ms280", "ms300", "ms500", "ms750", "ms1000", "ms1250", "ms1500",
"ms1750", "ms2000", "ms2250", "ms2500", "ms2750", "ms3000", "spare28", "spare27", "spare26", "spare25",
"spare24", "spare23", "spare22", "spare21", "spare20", "spare19", "spare18", "spare17", "spare16", "spare15",
"spare14", "spare13", "spare12", "spare11", "spare10", "spare09", "spare08", "spare07", "spare06", "spare05",
"spare04", "spare03", "spare02", "spare01"};
return convert_enum_idx(options, 64, value, "pdcp_cfg_s::t_reordering_e_");
}
uint16_t pdcp_cfg_s::t_reordering_opts::to_number() const
{
static const uint16_t options[] = {0, 1, 2, 4, 5, 8, 10, 15, 20, 30, 40, 50,
60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280,
300, 500, 750, 1000, 1250, 1500, 1750, 2000, 2250, 2500, 2750, 3000};
return map_enum_number(options, 36, value, "pdcp_cfg_s::t_reordering_e_");
}
// SDAP-Config ::= SEQUENCE
SRSASN_CODE sdap_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(mapped_qos_flows_to_add_present, 1));
HANDLE_CODE(bref.pack(mapped_qos_flows_to_release_present, 1));
HANDLE_CODE(pack_integer(bref, pdu_session, (uint16_t)0u, (uint16_t)255u));
HANDLE_CODE(sdap_hdr_dl.pack(bref));
HANDLE_CODE(sdap_hdr_ul.pack(bref));
HANDLE_CODE(bref.pack(default_drb, 1));
if (mapped_qos_flows_to_add_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, mapped_qos_flows_to_add, 1, 64, integer_packer<uint8_t>(0, 63)));
}
if (mapped_qos_flows_to_release_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, mapped_qos_flows_to_release, 1, 64, integer_packer<uint8_t>(0, 63)));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE sdap_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(mapped_qos_flows_to_add_present, 1));
HANDLE_CODE(bref.unpack(mapped_qos_flows_to_release_present, 1));
HANDLE_CODE(unpack_integer(pdu_session, bref, (uint16_t)0u, (uint16_t)255u));
HANDLE_CODE(sdap_hdr_dl.unpack(bref));
HANDLE_CODE(sdap_hdr_ul.unpack(bref));
HANDLE_CODE(bref.unpack(default_drb, 1));
if (mapped_qos_flows_to_add_present) {
HANDLE_CODE(unpack_dyn_seq_of(mapped_qos_flows_to_add, bref, 1, 64, integer_packer<uint8_t>(0, 63)));
}
if (mapped_qos_flows_to_release_present) {
HANDLE_CODE(unpack_dyn_seq_of(mapped_qos_flows_to_release, bref, 1, 64, integer_packer<uint8_t>(0, 63)));
}
return SRSASN_SUCCESS;
}
void sdap_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("pdu-Session", pdu_session);
j.write_str("sdap-HeaderDL", sdap_hdr_dl.to_string());
j.write_str("sdap-HeaderUL", sdap_hdr_ul.to_string());
j.write_bool("defaultDRB", default_drb);
if (mapped_qos_flows_to_add_present) {
j.start_array("mappedQoS-FlowsToAdd");
for (const auto& e1 : mapped_qos_flows_to_add) {
j.write_int(e1);
}
j.end_array();
}
if (mapped_qos_flows_to_release_present) {
j.start_array("mappedQoS-FlowsToRelease");
for (const auto& e1 : mapped_qos_flows_to_release) {
j.write_int(e1);
}
j.end_array();
}
j.end_obj();
}
const char* sdap_cfg_s::sdap_hdr_dl_opts::to_string() const
{
static const char* options[] = {"present", "absent"};
return convert_enum_idx(options, 2, value, "sdap_cfg_s::sdap_hdr_dl_e_");
}
const char* sdap_cfg_s::sdap_hdr_ul_opts::to_string() const
{
static const char* options[] = {"present", "absent"};
return convert_enum_idx(options, 2, value, "sdap_cfg_s::sdap_hdr_ul_e_");
}
// DRB-ToAddMod ::= SEQUENCE
SRSASN_CODE drb_to_add_mod_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(cn_assoc_present, 1));
HANDLE_CODE(bref.pack(reestablish_pdcp_present, 1));
HANDLE_CODE(bref.pack(recover_pdcp_present, 1));
HANDLE_CODE(bref.pack(pdcp_cfg_present, 1));
if (cn_assoc_present) {
HANDLE_CODE(cn_assoc.pack(bref));
}
HANDLE_CODE(pack_integer(bref, drb_id, (uint8_t)1u, (uint8_t)32u));
if (pdcp_cfg_present) {
HANDLE_CODE(pdcp_cfg.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE drb_to_add_mod_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(cn_assoc_present, 1));
HANDLE_CODE(bref.unpack(reestablish_pdcp_present, 1));
HANDLE_CODE(bref.unpack(recover_pdcp_present, 1));
HANDLE_CODE(bref.unpack(pdcp_cfg_present, 1));
if (cn_assoc_present) {
HANDLE_CODE(cn_assoc.unpack(bref));
}
HANDLE_CODE(unpack_integer(drb_id, bref, (uint8_t)1u, (uint8_t)32u));
if (pdcp_cfg_present) {
HANDLE_CODE(pdcp_cfg.unpack(bref));
}
return SRSASN_SUCCESS;
}
void drb_to_add_mod_s::to_json(json_writer& j) const
{
j.start_obj();
if (cn_assoc_present) {
j.write_fieldname("cnAssociation");
cn_assoc.to_json(j);
}
j.write_int("drb-Identity", drb_id);
if (reestablish_pdcp_present) {
j.write_str("reestablishPDCP", "true");
}
if (recover_pdcp_present) {
j.write_str("recoverPDCP", "true");
}
if (pdcp_cfg_present) {
j.write_fieldname("pdcp-Config");
pdcp_cfg.to_json(j);
}
j.end_obj();
}
void drb_to_add_mod_s::cn_assoc_c_::destroy_()
{
switch (type_) {
case types::sdap_cfg:
c.destroy<sdap_cfg_s>();
break;
default:
break;
}
}
void drb_to_add_mod_s::cn_assoc_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::eps_bearer_id:
break;
case types::sdap_cfg:
c.init<sdap_cfg_s>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "drb_to_add_mod_s::cn_assoc_c_");
}
}
drb_to_add_mod_s::cn_assoc_c_::cn_assoc_c_(const drb_to_add_mod_s::cn_assoc_c_& other)
{
type_ = other.type();
switch (type_) {
case types::eps_bearer_id:
c.init(other.c.get<uint8_t>());
break;
case types::sdap_cfg:
c.init(other.c.get<sdap_cfg_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "drb_to_add_mod_s::cn_assoc_c_");
}
}
drb_to_add_mod_s::cn_assoc_c_& drb_to_add_mod_s::cn_assoc_c_::operator=(const drb_to_add_mod_s::cn_assoc_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::eps_bearer_id:
c.set(other.c.get<uint8_t>());
break;
case types::sdap_cfg:
c.set(other.c.get<sdap_cfg_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "drb_to_add_mod_s::cn_assoc_c_");
}
return *this;
}
uint8_t& drb_to_add_mod_s::cn_assoc_c_::set_eps_bearer_id()
{
set(types::eps_bearer_id);
return c.get<uint8_t>();
}
sdap_cfg_s& drb_to_add_mod_s::cn_assoc_c_::set_sdap_cfg()
{
set(types::sdap_cfg);
return c.get<sdap_cfg_s>();
}
void drb_to_add_mod_s::cn_assoc_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::eps_bearer_id:
j.write_int("eps-BearerIdentity", c.get<uint8_t>());
break;
case types::sdap_cfg:
j.write_fieldname("sdap-Config");
c.get<sdap_cfg_s>().to_json(j);
break;
default:
log_invalid_choice_id(type_, "drb_to_add_mod_s::cn_assoc_c_");
}
j.end_obj();
}
SRSASN_CODE drb_to_add_mod_s::cn_assoc_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::eps_bearer_id:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)15u));
break;
case types::sdap_cfg:
HANDLE_CODE(c.get<sdap_cfg_s>().pack(bref));
break;
default:
log_invalid_choice_id(type_, "drb_to_add_mod_s::cn_assoc_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE drb_to_add_mod_s::cn_assoc_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::eps_bearer_id:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)15u));
break;
case types::sdap_cfg:
HANDLE_CODE(c.get<sdap_cfg_s>().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "drb_to_add_mod_s::cn_assoc_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* drb_to_add_mod_s::cn_assoc_c_::types_opts::to_string() const
{
static const char* options[] = {"eps-BearerIdentity", "sdap-Config"};
return convert_enum_idx(options, 2, value, "drb_to_add_mod_s::cn_assoc_c_::types");
}
// SRB-ToAddMod ::= SEQUENCE
SRSASN_CODE srb_to_add_mod_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(reestablish_pdcp_present, 1));
HANDLE_CODE(bref.pack(discard_on_pdcp_present, 1));
HANDLE_CODE(bref.pack(pdcp_cfg_present, 1));
HANDLE_CODE(pack_integer(bref, srb_id, (uint8_t)1u, (uint8_t)3u));
if (pdcp_cfg_present) {
HANDLE_CODE(pdcp_cfg.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE srb_to_add_mod_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(reestablish_pdcp_present, 1));
HANDLE_CODE(bref.unpack(discard_on_pdcp_present, 1));
HANDLE_CODE(bref.unpack(pdcp_cfg_present, 1));
HANDLE_CODE(unpack_integer(srb_id, bref, (uint8_t)1u, (uint8_t)3u));
if (pdcp_cfg_present) {
HANDLE_CODE(pdcp_cfg.unpack(bref));
}
return SRSASN_SUCCESS;
}
void srb_to_add_mod_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("srb-Identity", srb_id);
if (reestablish_pdcp_present) {
j.write_str("reestablishPDCP", "true");
}
if (discard_on_pdcp_present) {
j.write_str("discardOnPDCP", "true");
}
if (pdcp_cfg_present) {
j.write_fieldname("pdcp-Config");
pdcp_cfg.to_json(j);
}
j.end_obj();
}
// SecurityAlgorithmConfig ::= SEQUENCE
SRSASN_CODE security_algorithm_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(integrity_prot_algorithm_present, 1));
HANDLE_CODE(ciphering_algorithm.pack(bref));
if (integrity_prot_algorithm_present) {
HANDLE_CODE(integrity_prot_algorithm.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE security_algorithm_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(integrity_prot_algorithm_present, 1));
HANDLE_CODE(ciphering_algorithm.unpack(bref));
if (integrity_prot_algorithm_present) {
HANDLE_CODE(integrity_prot_algorithm.unpack(bref));
}
return SRSASN_SUCCESS;
}
void security_algorithm_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("cipheringAlgorithm", ciphering_algorithm.to_string());
if (integrity_prot_algorithm_present) {
j.write_str("integrityProtAlgorithm", integrity_prot_algorithm.to_string());
}
j.end_obj();
}
// SecurityConfig ::= SEQUENCE
SRSASN_CODE security_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(security_algorithm_cfg_present, 1));
HANDLE_CODE(bref.pack(key_to_use_present, 1));
if (security_algorithm_cfg_present) {
HANDLE_CODE(security_algorithm_cfg.pack(bref));
}
if (key_to_use_present) {
HANDLE_CODE(key_to_use.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE security_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(security_algorithm_cfg_present, 1));
HANDLE_CODE(bref.unpack(key_to_use_present, 1));
if (security_algorithm_cfg_present) {
HANDLE_CODE(security_algorithm_cfg.unpack(bref));
}
if (key_to_use_present) {
HANDLE_CODE(key_to_use.unpack(bref));
}
return SRSASN_SUCCESS;
}
void security_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (security_algorithm_cfg_present) {
j.write_fieldname("securityAlgorithmConfig");
security_algorithm_cfg.to_json(j);
}
if (key_to_use_present) {
j.write_str("keyToUse", key_to_use.to_string());
}
j.end_obj();
}
const char* security_cfg_s::key_to_use_opts::to_string() const
{
static const char* options[] = {"master", "secondary"};
return convert_enum_idx(options, 2, value, "security_cfg_s::key_to_use_e_");
}
// RadioBearerConfig ::= SEQUENCE
SRSASN_CODE radio_bearer_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(srb_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(srb3_to_release_present, 1));
HANDLE_CODE(bref.pack(drb_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(drb_to_release_list_present, 1));
HANDLE_CODE(bref.pack(security_cfg_present, 1));
if (srb_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, srb_to_add_mod_list, 1, 2));
}
if (drb_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, drb_to_add_mod_list, 1, 29));
}
if (drb_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, drb_to_release_list, 1, 29, integer_packer<uint8_t>(1, 32)));
}
if (security_cfg_present) {
HANDLE_CODE(security_cfg.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE radio_bearer_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(srb_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(srb3_to_release_present, 1));
HANDLE_CODE(bref.unpack(drb_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(drb_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(security_cfg_present, 1));
if (srb_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(srb_to_add_mod_list, bref, 1, 2));
}
if (drb_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(drb_to_add_mod_list, bref, 1, 29));
}
if (drb_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(drb_to_release_list, bref, 1, 29, integer_packer<uint8_t>(1, 32)));
}
if (security_cfg_present) {
HANDLE_CODE(security_cfg.unpack(bref));
}
return SRSASN_SUCCESS;
}
void radio_bearer_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (srb_to_add_mod_list_present) {
j.start_array("srb-ToAddModList");
for (const auto& e1 : srb_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (srb3_to_release_present) {
j.write_str("srb3-ToRelease", "true");
}
if (drb_to_add_mod_list_present) {
j.start_array("drb-ToAddModList");
for (const auto& e1 : drb_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (drb_to_release_list_present) {
j.start_array("drb-ToReleaseList");
for (const auto& e1 : drb_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (security_cfg_present) {
j.write_fieldname("securityConfig");
security_cfg.to_json(j);
}
j.end_obj();
}
// RRCReject-IEs ::= SEQUENCE
SRSASN_CODE rrc_reject_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(wait_time_present, 1));
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (wait_time_present) {
HANDLE_CODE(pack_integer(bref, wait_time, (uint8_t)1u, (uint8_t)16u));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_reject_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(wait_time_present, 1));
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (wait_time_present) {
HANDLE_CODE(unpack_integer(wait_time, bref, (uint8_t)1u, (uint8_t)16u));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void rrc_reject_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (wait_time_present) {
j.write_int("waitTime", wait_time);
}
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// RRCSetup-IEs ::= SEQUENCE
SRSASN_CODE rrc_setup_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
HANDLE_CODE(radio_bearer_cfg.pack(bref));
HANDLE_CODE(master_cell_group.pack(bref));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_setup_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
HANDLE_CODE(radio_bearer_cfg.unpack(bref));
HANDLE_CODE(master_cell_group.unpack(bref));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void rrc_setup_ies_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("radioBearerConfig");
radio_bearer_cfg.to_json(j);
j.write_str("masterCellGroup", master_cell_group.to_string());
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// RRCReject ::= SEQUENCE
SRSASN_CODE rrc_reject_s::pack(bit_ref& bref) const
{
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_reject_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void rrc_reject_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void rrc_reject_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
rrc_reject_ies_s& rrc_reject_s::crit_exts_c_::set_rrc_reject()
{
set(types::rrc_reject);
return c;
}
void rrc_reject_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void rrc_reject_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::rrc_reject:
j.write_fieldname("rrcReject");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_reject_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE rrc_reject_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::rrc_reject:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_reject_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_reject_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::rrc_reject:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_reject_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* rrc_reject_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"rrcReject", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "rrc_reject_s::crit_exts_c_::types");
}
// RRCSetup ::= SEQUENCE
SRSASN_CODE rrc_setup_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_setup_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void rrc_setup_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("rrc-TransactionIdentifier", rrc_transaction_id);
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void rrc_setup_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
rrc_setup_ies_s& rrc_setup_s::crit_exts_c_::set_rrc_setup()
{
set(types::rrc_setup);
return c;
}
void rrc_setup_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void rrc_setup_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::rrc_setup:
j.write_fieldname("rrcSetup");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_setup_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE rrc_setup_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::rrc_setup:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_setup_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_setup_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::rrc_setup:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_setup_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* rrc_setup_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"rrcSetup", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "rrc_setup_s::crit_exts_c_::types");
}
// DL-CCCH-MessageType ::= CHOICE
void dl_ccch_msg_type_c::set(types::options e)
{
type_ = e;
}
dl_ccch_msg_type_c::c1_c_& dl_ccch_msg_type_c::set_c1()
{
set(types::c1);
return c;
}
void dl_ccch_msg_type_c::set_msg_class_ext()
{
set(types::msg_class_ext);
}
void dl_ccch_msg_type_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::c1:
j.write_fieldname("c1");
c.to_json(j);
break;
case types::msg_class_ext:
break;
default:
log_invalid_choice_id(type_, "dl_ccch_msg_type_c");
}
j.end_obj();
}
SRSASN_CODE dl_ccch_msg_type_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::c1:
HANDLE_CODE(c.pack(bref));
break;
case types::msg_class_ext:
break;
default:
log_invalid_choice_id(type_, "dl_ccch_msg_type_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE dl_ccch_msg_type_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::c1:
HANDLE_CODE(c.unpack(bref));
break;
case types::msg_class_ext:
break;
default:
log_invalid_choice_id(type_, "dl_ccch_msg_type_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
void dl_ccch_msg_type_c::c1_c_::destroy_()
{
switch (type_) {
case types::rrc_reject:
c.destroy<rrc_reject_s>();
break;
case types::rrc_setup:
c.destroy<rrc_setup_s>();
break;
default:
break;
}
}
void dl_ccch_msg_type_c::c1_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::rrc_reject:
c.init<rrc_reject_s>();
break;
case types::rrc_setup:
c.init<rrc_setup_s>();
break;
case types::spare2:
break;
case types::spare1:
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "dl_ccch_msg_type_c::c1_c_");
}
}
dl_ccch_msg_type_c::c1_c_::c1_c_(const dl_ccch_msg_type_c::c1_c_& other)
{
type_ = other.type();
switch (type_) {
case types::rrc_reject:
c.init(other.c.get<rrc_reject_s>());
break;
case types::rrc_setup:
c.init(other.c.get<rrc_setup_s>());
break;
case types::spare2:
break;
case types::spare1:
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "dl_ccch_msg_type_c::c1_c_");
}
}
dl_ccch_msg_type_c::c1_c_& dl_ccch_msg_type_c::c1_c_::operator=(const dl_ccch_msg_type_c::c1_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::rrc_reject:
c.set(other.c.get<rrc_reject_s>());
break;
case types::rrc_setup:
c.set(other.c.get<rrc_setup_s>());
break;
case types::spare2:
break;
case types::spare1:
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "dl_ccch_msg_type_c::c1_c_");
}
return *this;
}
rrc_reject_s& dl_ccch_msg_type_c::c1_c_::set_rrc_reject()
{
set(types::rrc_reject);
return c.get<rrc_reject_s>();
}
rrc_setup_s& dl_ccch_msg_type_c::c1_c_::set_rrc_setup()
{
set(types::rrc_setup);
return c.get<rrc_setup_s>();
}
void dl_ccch_msg_type_c::c1_c_::set_spare2()
{
set(types::spare2);
}
void dl_ccch_msg_type_c::c1_c_::set_spare1()
{
set(types::spare1);
}
void dl_ccch_msg_type_c::c1_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::rrc_reject:
j.write_fieldname("rrcReject");
c.get<rrc_reject_s>().to_json(j);
break;
case types::rrc_setup:
j.write_fieldname("rrcSetup");
c.get<rrc_setup_s>().to_json(j);
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "dl_ccch_msg_type_c::c1_c_");
}
j.end_obj();
}
SRSASN_CODE dl_ccch_msg_type_c::c1_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::rrc_reject:
HANDLE_CODE(c.get<rrc_reject_s>().pack(bref));
break;
case types::rrc_setup:
HANDLE_CODE(c.get<rrc_setup_s>().pack(bref));
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "dl_ccch_msg_type_c::c1_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE dl_ccch_msg_type_c::c1_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::rrc_reject:
HANDLE_CODE(c.get<rrc_reject_s>().unpack(bref));
break;
case types::rrc_setup:
HANDLE_CODE(c.get<rrc_setup_s>().unpack(bref));
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "dl_ccch_msg_type_c::c1_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* dl_ccch_msg_type_c::c1_c_::types_opts::to_string() const
{
static const char* options[] = {"rrcReject", "rrcSetup", "spare2", "spare1"};
return convert_enum_idx(options, 4, value, "dl_ccch_msg_type_c::c1_c_::types");
}
const char* dl_ccch_msg_type_c::types_opts::to_string() const
{
static const char* options[] = {"c1", "messageClassExtension"};
return convert_enum_idx(options, 2, value, "dl_ccch_msg_type_c::types");
}
uint8_t dl_ccch_msg_type_c::types_opts::to_number() const
{
static const uint8_t options[] = {1};
return map_enum_number(options, 1, value, "dl_ccch_msg_type_c::types");
}
// DL-CCCH-Message ::= SEQUENCE
SRSASN_CODE dl_ccch_msg_s::pack(bit_ref& bref) const
{
HANDLE_CODE(msg.pack(bref));
bref.align_bytes_zero();
return SRSASN_SUCCESS;
}
SRSASN_CODE dl_ccch_msg_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(msg.unpack(bref));
bref.align_bytes();
return SRSASN_SUCCESS;
}
void dl_ccch_msg_s::to_json(json_writer& j) const
{
j.start_array();
j.start_obj();
j.start_obj("DL-CCCH-Message");
j.write_fieldname("message");
msg.to_json(j);
j.end_obj();
j.end_obj();
j.end_array();
}
// CSI-RS-Resource-Mobility ::= SEQUENCE
SRSASN_CODE csi_rs_res_mob_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(associated_ssb_present, 1));
HANDLE_CODE(pack_integer(bref, csi_rs_idx, (uint8_t)0u, (uint8_t)95u));
HANDLE_CODE(slot_cfg.pack(bref));
if (associated_ssb_present) {
HANDLE_CODE(pack_integer(bref, associated_ssb.ssb_idx, (uint8_t)0u, (uint8_t)63u));
HANDLE_CODE(bref.pack(associated_ssb.is_quasi_colocated, 1));
}
HANDLE_CODE(freq_domain_alloc.pack(bref));
HANDLE_CODE(pack_integer(bref, first_ofdm_symbol_in_time_domain, (uint8_t)0u, (uint8_t)13u));
HANDLE_CODE(pack_integer(bref, seq_generation_cfg, (uint16_t)0u, (uint16_t)1023u));
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_rs_res_mob_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(associated_ssb_present, 1));
HANDLE_CODE(unpack_integer(csi_rs_idx, bref, (uint8_t)0u, (uint8_t)95u));
HANDLE_CODE(slot_cfg.unpack(bref));
if (associated_ssb_present) {
HANDLE_CODE(unpack_integer(associated_ssb.ssb_idx, bref, (uint8_t)0u, (uint8_t)63u));
HANDLE_CODE(bref.unpack(associated_ssb.is_quasi_colocated, 1));
}
HANDLE_CODE(freq_domain_alloc.unpack(bref));
HANDLE_CODE(unpack_integer(first_ofdm_symbol_in_time_domain, bref, (uint8_t)0u, (uint8_t)13u));
HANDLE_CODE(unpack_integer(seq_generation_cfg, bref, (uint16_t)0u, (uint16_t)1023u));
return SRSASN_SUCCESS;
}
void csi_rs_res_mob_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("csi-RS-Index", csi_rs_idx);
j.write_fieldname("slotConfig");
slot_cfg.to_json(j);
if (associated_ssb_present) {
j.write_fieldname("associatedSSB");
j.start_obj();
j.write_int("ssb-Index", associated_ssb.ssb_idx);
j.write_bool("isQuasiColocated", associated_ssb.is_quasi_colocated);
j.end_obj();
}
j.write_fieldname("frequencyDomainAllocation");
freq_domain_alloc.to_json(j);
j.write_int("firstOFDMSymbolInTimeDomain", first_ofdm_symbol_in_time_domain);
j.write_int("sequenceGenerationConfig", seq_generation_cfg);
j.end_obj();
}
void csi_rs_res_mob_s::slot_cfg_c_::destroy_() {}
void csi_rs_res_mob_s::slot_cfg_c_::set(types::options e)
{
destroy_();
type_ = e;
}
csi_rs_res_mob_s::slot_cfg_c_::slot_cfg_c_(const csi_rs_res_mob_s::slot_cfg_c_& other)
{
type_ = other.type();
switch (type_) {
case types::ms4:
c.init(other.c.get<uint8_t>());
break;
case types::ms5:
c.init(other.c.get<uint8_t>());
break;
case types::ms10:
c.init(other.c.get<uint8_t>());
break;
case types::ms20:
c.init(other.c.get<uint8_t>());
break;
case types::ms40:
c.init(other.c.get<uint16_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "csi_rs_res_mob_s::slot_cfg_c_");
}
}
csi_rs_res_mob_s::slot_cfg_c_& csi_rs_res_mob_s::slot_cfg_c_::operator=(const csi_rs_res_mob_s::slot_cfg_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::ms4:
c.set(other.c.get<uint8_t>());
break;
case types::ms5:
c.set(other.c.get<uint8_t>());
break;
case types::ms10:
c.set(other.c.get<uint8_t>());
break;
case types::ms20:
c.set(other.c.get<uint8_t>());
break;
case types::ms40:
c.set(other.c.get<uint16_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "csi_rs_res_mob_s::slot_cfg_c_");
}
return *this;
}
uint8_t& csi_rs_res_mob_s::slot_cfg_c_::set_ms4()
{
set(types::ms4);
return c.get<uint8_t>();
}
uint8_t& csi_rs_res_mob_s::slot_cfg_c_::set_ms5()
{
set(types::ms5);
return c.get<uint8_t>();
}
uint8_t& csi_rs_res_mob_s::slot_cfg_c_::set_ms10()
{
set(types::ms10);
return c.get<uint8_t>();
}
uint8_t& csi_rs_res_mob_s::slot_cfg_c_::set_ms20()
{
set(types::ms20);
return c.get<uint8_t>();
}
uint16_t& csi_rs_res_mob_s::slot_cfg_c_::set_ms40()
{
set(types::ms40);
return c.get<uint16_t>();
}
void csi_rs_res_mob_s::slot_cfg_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::ms4:
j.write_int("ms4", c.get<uint8_t>());
break;
case types::ms5:
j.write_int("ms5", c.get<uint8_t>());
break;
case types::ms10:
j.write_int("ms10", c.get<uint8_t>());
break;
case types::ms20:
j.write_int("ms20", c.get<uint8_t>());
break;
case types::ms40:
j.write_int("ms40", c.get<uint16_t>());
break;
default:
log_invalid_choice_id(type_, "csi_rs_res_mob_s::slot_cfg_c_");
}
j.end_obj();
}
SRSASN_CODE csi_rs_res_mob_s::slot_cfg_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::ms4:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)31u));
break;
case types::ms5:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)39u));
break;
case types::ms10:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)79u));
break;
case types::ms20:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)159u));
break;
case types::ms40:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)319u));
break;
default:
log_invalid_choice_id(type_, "csi_rs_res_mob_s::slot_cfg_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_rs_res_mob_s::slot_cfg_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::ms4:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)31u));
break;
case types::ms5:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)39u));
break;
case types::ms10:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)79u));
break;
case types::ms20:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)159u));
break;
case types::ms40:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)319u));
break;
default:
log_invalid_choice_id(type_, "csi_rs_res_mob_s::slot_cfg_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* csi_rs_res_mob_s::slot_cfg_c_::types_opts::to_string() const
{
static const char* options[] = {"ms4", "ms5", "ms10", "ms20", "ms40"};
return convert_enum_idx(options, 5, value, "csi_rs_res_mob_s::slot_cfg_c_::types");
}
uint8_t csi_rs_res_mob_s::slot_cfg_c_::types_opts::to_number() const
{
static const uint8_t options[] = {4, 5, 10, 20, 40};
return map_enum_number(options, 5, value, "csi_rs_res_mob_s::slot_cfg_c_::types");
}
void csi_rs_res_mob_s::freq_domain_alloc_c_::destroy_()
{
switch (type_) {
case types::row1:
c.destroy<fixed_bitstring<4> >();
break;
case types::row2:
c.destroy<fixed_bitstring<12> >();
break;
default:
break;
}
}
void csi_rs_res_mob_s::freq_domain_alloc_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::row1:
c.init<fixed_bitstring<4> >();
break;
case types::row2:
c.init<fixed_bitstring<12> >();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "csi_rs_res_mob_s::freq_domain_alloc_c_");
}
}
csi_rs_res_mob_s::freq_domain_alloc_c_::freq_domain_alloc_c_(const csi_rs_res_mob_s::freq_domain_alloc_c_& other)
{
type_ = other.type();
switch (type_) {
case types::row1:
c.init(other.c.get<fixed_bitstring<4> >());
break;
case types::row2:
c.init(other.c.get<fixed_bitstring<12> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "csi_rs_res_mob_s::freq_domain_alloc_c_");
}
}
csi_rs_res_mob_s::freq_domain_alloc_c_&
csi_rs_res_mob_s::freq_domain_alloc_c_::operator=(const csi_rs_res_mob_s::freq_domain_alloc_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::row1:
c.set(other.c.get<fixed_bitstring<4> >());
break;
case types::row2:
c.set(other.c.get<fixed_bitstring<12> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "csi_rs_res_mob_s::freq_domain_alloc_c_");
}
return *this;
}
fixed_bitstring<4>& csi_rs_res_mob_s::freq_domain_alloc_c_::set_row1()
{
set(types::row1);
return c.get<fixed_bitstring<4> >();
}
fixed_bitstring<12>& csi_rs_res_mob_s::freq_domain_alloc_c_::set_row2()
{
set(types::row2);
return c.get<fixed_bitstring<12> >();
}
void csi_rs_res_mob_s::freq_domain_alloc_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::row1:
j.write_str("row1", c.get<fixed_bitstring<4> >().to_string());
break;
case types::row2:
j.write_str("row2", c.get<fixed_bitstring<12> >().to_string());
break;
default:
log_invalid_choice_id(type_, "csi_rs_res_mob_s::freq_domain_alloc_c_");
}
j.end_obj();
}
SRSASN_CODE csi_rs_res_mob_s::freq_domain_alloc_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::row1:
HANDLE_CODE(c.get<fixed_bitstring<4> >().pack(bref));
break;
case types::row2:
HANDLE_CODE(c.get<fixed_bitstring<12> >().pack(bref));
break;
default:
log_invalid_choice_id(type_, "csi_rs_res_mob_s::freq_domain_alloc_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_rs_res_mob_s::freq_domain_alloc_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::row1:
HANDLE_CODE(c.get<fixed_bitstring<4> >().unpack(bref));
break;
case types::row2:
HANDLE_CODE(c.get<fixed_bitstring<12> >().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "csi_rs_res_mob_s::freq_domain_alloc_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* csi_rs_res_mob_s::freq_domain_alloc_c_::types_opts::to_string() const
{
static const char* options[] = {"row1", "row2"};
return convert_enum_idx(options, 2, value, "csi_rs_res_mob_s::freq_domain_alloc_c_::types");
}
uint8_t csi_rs_res_mob_s::freq_domain_alloc_c_::types_opts::to_number() const
{
static const uint8_t options[] = {1, 2};
return map_enum_number(options, 2, value, "csi_rs_res_mob_s::freq_domain_alloc_c_::types");
}
// CSI-RS-CellMobility ::= SEQUENCE
SRSASN_CODE csi_rs_cell_mob_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(density_present, 1));
HANDLE_CODE(pack_integer(bref, cell_id, (uint16_t)0u, (uint16_t)1007u));
HANDLE_CODE(csi_rs_meas_bw.nrof_prbs.pack(bref));
HANDLE_CODE(pack_integer(bref, csi_rs_meas_bw.start_prb, (uint16_t)0u, (uint16_t)2169u));
if (density_present) {
HANDLE_CODE(density.pack(bref));
}
HANDLE_CODE(pack_dyn_seq_of(bref, csi_rs_res_list_mob, 1, 96));
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_rs_cell_mob_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(density_present, 1));
HANDLE_CODE(unpack_integer(cell_id, bref, (uint16_t)0u, (uint16_t)1007u));
HANDLE_CODE(csi_rs_meas_bw.nrof_prbs.unpack(bref));
HANDLE_CODE(unpack_integer(csi_rs_meas_bw.start_prb, bref, (uint16_t)0u, (uint16_t)2169u));
if (density_present) {
HANDLE_CODE(density.unpack(bref));
}
HANDLE_CODE(unpack_dyn_seq_of(csi_rs_res_list_mob, bref, 1, 96));
return SRSASN_SUCCESS;
}
void csi_rs_cell_mob_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("cellId", cell_id);
j.write_fieldname("csi-rs-MeasurementBW");
j.start_obj();
j.write_str("nrofPRBs", csi_rs_meas_bw.nrof_prbs.to_string());
j.write_int("startPRB", csi_rs_meas_bw.start_prb);
j.end_obj();
if (density_present) {
j.write_str("density", density.to_string());
}
j.start_array("csi-rs-ResourceList-Mobility");
for (const auto& e1 : csi_rs_res_list_mob) {
e1.to_json(j);
}
j.end_array();
j.end_obj();
}
const char* csi_rs_cell_mob_s::csi_rs_meas_bw_s_::nrof_prbs_opts::to_string() const
{
static const char* options[] = {"size24", "size48", "size96", "size192", "size264"};
return convert_enum_idx(options, 5, value, "csi_rs_cell_mob_s::csi_rs_meas_bw_s_::nrof_prbs_e_");
}
uint16_t csi_rs_cell_mob_s::csi_rs_meas_bw_s_::nrof_prbs_opts::to_number() const
{
static const uint16_t options[] = {24, 48, 96, 192, 264};
return map_enum_number(options, 5, value, "csi_rs_cell_mob_s::csi_rs_meas_bw_s_::nrof_prbs_e_");
}
const char* csi_rs_cell_mob_s::density_opts::to_string() const
{
static const char* options[] = {"d1", "d3"};
return convert_enum_idx(options, 2, value, "csi_rs_cell_mob_s::density_e_");
}
uint8_t csi_rs_cell_mob_s::density_opts::to_number() const
{
static const uint8_t options[] = {1, 3};
return map_enum_number(options, 2, value, "csi_rs_cell_mob_s::density_e_");
}
// Q-OffsetRangeList ::= SEQUENCE
SRSASN_CODE q_offset_range_list_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(rsrp_offset_ssb_present, 1));
HANDLE_CODE(bref.pack(rsrq_offset_ssb_present, 1));
HANDLE_CODE(bref.pack(sinr_offset_ssb_present, 1));
HANDLE_CODE(bref.pack(rsrp_offset_csi_rs_present, 1));
HANDLE_CODE(bref.pack(rsrq_offset_csi_rs_present, 1));
HANDLE_CODE(bref.pack(sinr_offset_csi_rs_present, 1));
if (rsrp_offset_ssb_present) {
HANDLE_CODE(rsrp_offset_ssb.pack(bref));
}
if (rsrq_offset_ssb_present) {
HANDLE_CODE(rsrq_offset_ssb.pack(bref));
}
if (sinr_offset_ssb_present) {
HANDLE_CODE(sinr_offset_ssb.pack(bref));
}
if (rsrp_offset_csi_rs_present) {
HANDLE_CODE(rsrp_offset_csi_rs.pack(bref));
}
if (rsrq_offset_csi_rs_present) {
HANDLE_CODE(rsrq_offset_csi_rs.pack(bref));
}
if (sinr_offset_csi_rs_present) {
HANDLE_CODE(sinr_offset_csi_rs.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE q_offset_range_list_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(rsrp_offset_ssb_present, 1));
HANDLE_CODE(bref.unpack(rsrq_offset_ssb_present, 1));
HANDLE_CODE(bref.unpack(sinr_offset_ssb_present, 1));
HANDLE_CODE(bref.unpack(rsrp_offset_csi_rs_present, 1));
HANDLE_CODE(bref.unpack(rsrq_offset_csi_rs_present, 1));
HANDLE_CODE(bref.unpack(sinr_offset_csi_rs_present, 1));
if (rsrp_offset_ssb_present) {
HANDLE_CODE(rsrp_offset_ssb.unpack(bref));
}
if (rsrq_offset_ssb_present) {
HANDLE_CODE(rsrq_offset_ssb.unpack(bref));
}
if (sinr_offset_ssb_present) {
HANDLE_CODE(sinr_offset_ssb.unpack(bref));
}
if (rsrp_offset_csi_rs_present) {
HANDLE_CODE(rsrp_offset_csi_rs.unpack(bref));
}
if (rsrq_offset_csi_rs_present) {
HANDLE_CODE(rsrq_offset_csi_rs.unpack(bref));
}
if (sinr_offset_csi_rs_present) {
HANDLE_CODE(sinr_offset_csi_rs.unpack(bref));
}
return SRSASN_SUCCESS;
}
void q_offset_range_list_s::to_json(json_writer& j) const
{
j.start_obj();
if (rsrp_offset_ssb_present) {
j.write_str("rsrpOffsetSSB", rsrp_offset_ssb.to_string());
}
if (rsrq_offset_ssb_present) {
j.write_str("rsrqOffsetSSB", rsrq_offset_ssb.to_string());
}
if (sinr_offset_ssb_present) {
j.write_str("sinrOffsetSSB", sinr_offset_ssb.to_string());
}
if (rsrp_offset_csi_rs_present) {
j.write_str("rsrpOffsetCSI-RS", rsrp_offset_csi_rs.to_string());
}
if (rsrq_offset_csi_rs_present) {
j.write_str("rsrqOffsetCSI-RS", rsrq_offset_csi_rs.to_string());
}
if (sinr_offset_csi_rs_present) {
j.write_str("sinrOffsetCSI-RS", sinr_offset_csi_rs.to_string());
}
j.end_obj();
}
// CSI-RS-ResourceConfigMobility ::= SEQUENCE
SRSASN_CODE csi_rs_res_cfg_mob_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(subcarrier_spacing.pack(bref));
HANDLE_CODE(pack_dyn_seq_of(bref, csi_rs_cell_list_mob, 1, 96));
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= ref_serv_cell_idx_present;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(ref_serv_cell_idx_present, 1));
if (ref_serv_cell_idx_present) {
HANDLE_CODE(pack_integer(bref, ref_serv_cell_idx, (uint8_t)0u, (uint8_t)31u));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_rs_res_cfg_mob_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(subcarrier_spacing.unpack(bref));
HANDLE_CODE(unpack_dyn_seq_of(csi_rs_cell_list_mob, bref, 1, 96));
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(ref_serv_cell_idx_present, 1));
if (ref_serv_cell_idx_present) {
HANDLE_CODE(unpack_integer(ref_serv_cell_idx, bref, (uint8_t)0u, (uint8_t)31u));
}
}
}
return SRSASN_SUCCESS;
}
void csi_rs_res_cfg_mob_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("subcarrierSpacing", subcarrier_spacing.to_string());
j.start_array("csi-RS-CellList-Mobility");
for (const auto& e1 : csi_rs_cell_list_mob) {
e1.to_json(j);
}
j.end_array();
if (ext) {
if (ref_serv_cell_idx_present) {
j.write_int("refServCellIndex", ref_serv_cell_idx);
}
}
j.end_obj();
}
// CellsToAddMod ::= SEQUENCE
SRSASN_CODE cells_to_add_mod_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, pci, (uint16_t)0u, (uint16_t)1007u));
HANDLE_CODE(cell_individual_offset.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE cells_to_add_mod_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(pci, bref, (uint16_t)0u, (uint16_t)1007u));
HANDLE_CODE(cell_individual_offset.unpack(bref));
return SRSASN_SUCCESS;
}
void cells_to_add_mod_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("physCellId", pci);
j.write_fieldname("cellIndividualOffset");
cell_individual_offset.to_json(j);
j.end_obj();
}
// FilterCoefficient ::= ENUMERATED
const char* filt_coef_opts::to_string() const
{
static const char* options[] = {"fc0",
"fc1",
"fc2",
"fc3",
"fc4",
"fc5",
"fc6",
"fc7",
"fc8",
"fc9",
"fc11",
"fc13",
"fc15",
"fc17",
"fc19",
"spare1"};
return convert_enum_idx(options, 16, value, "filt_coef_e");
}
uint8_t filt_coef_opts::to_number() const
{
static const uint8_t options[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 13, 15, 17, 19};
return map_enum_number(options, 15, value, "filt_coef_e");
}
// MeasReportQuantity ::= SEQUENCE
SRSASN_CODE meas_report_quant_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(rsrp, 1));
HANDLE_CODE(bref.pack(rsrq, 1));
HANDLE_CODE(bref.pack(sinr, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_report_quant_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(rsrp, 1));
HANDLE_CODE(bref.unpack(rsrq, 1));
HANDLE_CODE(bref.unpack(sinr, 1));
return SRSASN_SUCCESS;
}
void meas_report_quant_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_bool("rsrp", rsrp);
j.write_bool("rsrq", rsrq);
j.write_bool("sinr", sinr);
j.end_obj();
}
// MeasTriggerQuantity ::= CHOICE
void meas_trigger_quant_c::destroy_() {}
void meas_trigger_quant_c::set(types::options e)
{
destroy_();
type_ = e;
}
meas_trigger_quant_c::meas_trigger_quant_c(const meas_trigger_quant_c& other)
{
type_ = other.type();
switch (type_) {
case types::rsrp:
c.init(other.c.get<uint8_t>());
break;
case types::rsrq:
c.init(other.c.get<uint8_t>());
break;
case types::sinr:
c.init(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "meas_trigger_quant_c");
}
}
meas_trigger_quant_c& meas_trigger_quant_c::operator=(const meas_trigger_quant_c& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::rsrp:
c.set(other.c.get<uint8_t>());
break;
case types::rsrq:
c.set(other.c.get<uint8_t>());
break;
case types::sinr:
c.set(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "meas_trigger_quant_c");
}
return *this;
}
uint8_t& meas_trigger_quant_c::set_rsrp()
{
set(types::rsrp);
return c.get<uint8_t>();
}
uint8_t& meas_trigger_quant_c::set_rsrq()
{
set(types::rsrq);
return c.get<uint8_t>();
}
uint8_t& meas_trigger_quant_c::set_sinr()
{
set(types::sinr);
return c.get<uint8_t>();
}
void meas_trigger_quant_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::rsrp:
j.write_int("rsrp", c.get<uint8_t>());
break;
case types::rsrq:
j.write_int("rsrq", c.get<uint8_t>());
break;
case types::sinr:
j.write_int("sinr", c.get<uint8_t>());
break;
default:
log_invalid_choice_id(type_, "meas_trigger_quant_c");
}
j.end_obj();
}
SRSASN_CODE meas_trigger_quant_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::rsrp:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)127u));
break;
case types::rsrq:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)127u));
break;
case types::sinr:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)127u));
break;
default:
log_invalid_choice_id(type_, "meas_trigger_quant_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_trigger_quant_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::rsrp:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)127u));
break;
case types::rsrq:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)127u));
break;
case types::sinr:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)127u));
break;
default:
log_invalid_choice_id(type_, "meas_trigger_quant_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* meas_trigger_quant_c::types_opts::to_string() const
{
static const char* options[] = {"rsrp", "rsrq", "sinr"};
return convert_enum_idx(options, 3, value, "meas_trigger_quant_c::types");
}
// MeasTriggerQuantityEUTRA ::= CHOICE
void meas_trigger_quant_eutra_c::destroy_() {}
void meas_trigger_quant_eutra_c::set(types::options e)
{
destroy_();
type_ = e;
}
meas_trigger_quant_eutra_c::meas_trigger_quant_eutra_c(const meas_trigger_quant_eutra_c& other)
{
type_ = other.type();
switch (type_) {
case types::rsrp:
c.init(other.c.get<uint8_t>());
break;
case types::rsrq:
c.init(other.c.get<uint8_t>());
break;
case types::sinr:
c.init(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "meas_trigger_quant_eutra_c");
}
}
meas_trigger_quant_eutra_c& meas_trigger_quant_eutra_c::operator=(const meas_trigger_quant_eutra_c& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::rsrp:
c.set(other.c.get<uint8_t>());
break;
case types::rsrq:
c.set(other.c.get<uint8_t>());
break;
case types::sinr:
c.set(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "meas_trigger_quant_eutra_c");
}
return *this;
}
uint8_t& meas_trigger_quant_eutra_c::set_rsrp()
{
set(types::rsrp);
return c.get<uint8_t>();
}
uint8_t& meas_trigger_quant_eutra_c::set_rsrq()
{
set(types::rsrq);
return c.get<uint8_t>();
}
uint8_t& meas_trigger_quant_eutra_c::set_sinr()
{
set(types::sinr);
return c.get<uint8_t>();
}
void meas_trigger_quant_eutra_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::rsrp:
j.write_int("rsrp", c.get<uint8_t>());
break;
case types::rsrq:
j.write_int("rsrq", c.get<uint8_t>());
break;
case types::sinr:
j.write_int("sinr", c.get<uint8_t>());
break;
default:
log_invalid_choice_id(type_, "meas_trigger_quant_eutra_c");
}
j.end_obj();
}
SRSASN_CODE meas_trigger_quant_eutra_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::rsrp:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)97u));
break;
case types::rsrq:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)34u));
break;
case types::sinr:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)127u));
break;
default:
log_invalid_choice_id(type_, "meas_trigger_quant_eutra_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_trigger_quant_eutra_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::rsrp:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)97u));
break;
case types::rsrq:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)34u));
break;
case types::sinr:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)127u));
break;
default:
log_invalid_choice_id(type_, "meas_trigger_quant_eutra_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* meas_trigger_quant_eutra_c::types_opts::to_string() const
{
static const char* options[] = {"rsrp", "rsrq", "sinr"};
return convert_enum_idx(options, 3, value, "meas_trigger_quant_eutra_c::types");
}
// MeasTriggerQuantityOffset ::= CHOICE
void meas_trigger_quant_offset_c::destroy_() {}
void meas_trigger_quant_offset_c::set(types::options e)
{
destroy_();
type_ = e;
}
meas_trigger_quant_offset_c::meas_trigger_quant_offset_c(const meas_trigger_quant_offset_c& other)
{
type_ = other.type();
switch (type_) {
case types::rsrp:
c.init(other.c.get<int8_t>());
break;
case types::rsrq:
c.init(other.c.get<int8_t>());
break;
case types::sinr:
c.init(other.c.get<int8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "meas_trigger_quant_offset_c");
}
}
meas_trigger_quant_offset_c& meas_trigger_quant_offset_c::operator=(const meas_trigger_quant_offset_c& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::rsrp:
c.set(other.c.get<int8_t>());
break;
case types::rsrq:
c.set(other.c.get<int8_t>());
break;
case types::sinr:
c.set(other.c.get<int8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "meas_trigger_quant_offset_c");
}
return *this;
}
int8_t& meas_trigger_quant_offset_c::set_rsrp()
{
set(types::rsrp);
return c.get<int8_t>();
}
int8_t& meas_trigger_quant_offset_c::set_rsrq()
{
set(types::rsrq);
return c.get<int8_t>();
}
int8_t& meas_trigger_quant_offset_c::set_sinr()
{
set(types::sinr);
return c.get<int8_t>();
}
void meas_trigger_quant_offset_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::rsrp:
j.write_int("rsrp", c.get<int8_t>());
break;
case types::rsrq:
j.write_int("rsrq", c.get<int8_t>());
break;
case types::sinr:
j.write_int("sinr", c.get<int8_t>());
break;
default:
log_invalid_choice_id(type_, "meas_trigger_quant_offset_c");
}
j.end_obj();
}
SRSASN_CODE meas_trigger_quant_offset_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::rsrp:
HANDLE_CODE(pack_integer(bref, c.get<int8_t>(), (int8_t)-30, (int8_t)30));
break;
case types::rsrq:
HANDLE_CODE(pack_integer(bref, c.get<int8_t>(), (int8_t)-30, (int8_t)30));
break;
case types::sinr:
HANDLE_CODE(pack_integer(bref, c.get<int8_t>(), (int8_t)-30, (int8_t)30));
break;
default:
log_invalid_choice_id(type_, "meas_trigger_quant_offset_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_trigger_quant_offset_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::rsrp:
HANDLE_CODE(unpack_integer(c.get<int8_t>(), bref, (int8_t)-30, (int8_t)30));
break;
case types::rsrq:
HANDLE_CODE(unpack_integer(c.get<int8_t>(), bref, (int8_t)-30, (int8_t)30));
break;
case types::sinr:
HANDLE_CODE(unpack_integer(c.get<int8_t>(), bref, (int8_t)-30, (int8_t)30));
break;
default:
log_invalid_choice_id(type_, "meas_trigger_quant_offset_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* meas_trigger_quant_offset_c::types_opts::to_string() const
{
static const char* options[] = {"rsrp", "rsrq", "sinr"};
return convert_enum_idx(options, 3, value, "meas_trigger_quant_offset_c::types");
}
// NR-RS-Type ::= ENUMERATED
const char* nr_rs_type_opts::to_string() const
{
static const char* options[] = {"ssb", "csi-rs"};
return convert_enum_idx(options, 2, value, "nr_rs_type_e");
}
// ReportInterval ::= ENUMERATED
const char* report_interv_opts::to_string() const
{
static const char* options[] = {"ms120",
"ms240",
"ms480",
"ms640",
"ms1024",
"ms2048",
"ms5120",
"ms10240",
"ms20480",
"ms40960",
"min1",
"min6",
"min12",
"min30"};
return convert_enum_idx(options, 14, value, "report_interv_e");
}
uint16_t report_interv_opts::to_number() const
{
static const uint16_t options[] = {120, 240, 480, 640, 1024, 2048, 5120, 10240, 20480, 40960, 1, 6, 12, 30};
return map_enum_number(options, 14, value, "report_interv_e");
}
// SSB-ConfigMobility ::= SEQUENCE
SRSASN_CODE ssb_cfg_mob_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(ssb_to_measure_present, 1));
HANDLE_CODE(bref.pack(ss_rssi_meas_present, 1));
if (ssb_to_measure_present) {
HANDLE_CODE(ssb_to_measure.pack(bref));
}
HANDLE_CODE(bref.pack(derive_ssb_idx_from_cell, 1));
if (ss_rssi_meas_present) {
HANDLE_CODE(ss_rssi_meas.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ssb_cfg_mob_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(ssb_to_measure_present, 1));
HANDLE_CODE(bref.unpack(ss_rssi_meas_present, 1));
if (ssb_to_measure_present) {
HANDLE_CODE(ssb_to_measure.unpack(bref));
}
HANDLE_CODE(bref.unpack(derive_ssb_idx_from_cell, 1));
if (ss_rssi_meas_present) {
HANDLE_CODE(ss_rssi_meas.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ssb_cfg_mob_s::to_json(json_writer& j) const
{
j.start_obj();
if (ssb_to_measure_present) {
j.write_fieldname("ssb-ToMeasure");
ssb_to_measure.to_json(j);
}
j.write_bool("deriveSSB-IndexFromCell", derive_ssb_idx_from_cell);
if (ss_rssi_meas_present) {
j.write_fieldname("ss-RSSI-Measurement");
ss_rssi_meas.to_json(j);
}
j.end_obj();
}
// TimeToTrigger ::= ENUMERATED
const char* time_to_trigger_opts::to_string() const
{
static const char* options[] = {"ms0",
"ms40",
"ms64",
"ms80",
"ms100",
"ms128",
"ms160",
"ms256",
"ms320",
"ms480",
"ms512",
"ms640",
"ms1024",
"ms1280",
"ms2560",
"ms5120"};
return convert_enum_idx(options, 16, value, "time_to_trigger_e");
}
uint16_t time_to_trigger_opts::to_number() const
{
static const uint16_t options[] = {0, 40, 64, 80, 100, 128, 160, 256, 320, 480, 512, 640, 1024, 1280, 2560, 5120};
return map_enum_number(options, 16, value, "time_to_trigger_e");
}
// EUTRA-BlackCell ::= SEQUENCE
SRSASN_CODE eutra_black_cell_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, cell_idx_eutra, (uint8_t)1u, (uint8_t)32u));
HANDLE_CODE(pci_range.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE eutra_black_cell_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(cell_idx_eutra, bref, (uint8_t)1u, (uint8_t)32u));
HANDLE_CODE(pci_range.unpack(bref));
return SRSASN_SUCCESS;
}
void eutra_black_cell_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("cellIndexEUTRA", cell_idx_eutra);
j.write_fieldname("physCellIdRange");
pci_range.to_json(j);
j.end_obj();
}
// EUTRA-Cell ::= SEQUENCE
SRSASN_CODE eutra_cell_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, cell_idx_eutra, (uint8_t)1u, (uint8_t)32u));
HANDLE_CODE(pack_integer(bref, pci, (uint16_t)0u, (uint16_t)503u));
HANDLE_CODE(cell_individual_offset.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE eutra_cell_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(cell_idx_eutra, bref, (uint8_t)1u, (uint8_t)32u));
HANDLE_CODE(unpack_integer(pci, bref, (uint16_t)0u, (uint16_t)503u));
HANDLE_CODE(cell_individual_offset.unpack(bref));
return SRSASN_SUCCESS;
}
void eutra_cell_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("cellIndexEUTRA", cell_idx_eutra);
j.write_int("physCellId", pci);
j.write_str("cellIndividualOffset", cell_individual_offset.to_string());
j.end_obj();
}
// EventTriggerConfig ::= SEQUENCE
SRSASN_CODE event_trigger_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(report_quant_rs_idxes_present, 1));
HANDLE_CODE(bref.pack(max_nrof_rs_idxes_to_report_present, 1));
HANDLE_CODE(bref.pack(report_add_neigh_meas_present, 1));
HANDLE_CODE(event_id.pack(bref));
HANDLE_CODE(rs_type.pack(bref));
HANDLE_CODE(report_interv.pack(bref));
HANDLE_CODE(report_amount.pack(bref));
HANDLE_CODE(report_quant_cell.pack(bref));
HANDLE_CODE(pack_integer(bref, max_report_cells, (uint8_t)1u, (uint8_t)8u));
if (report_quant_rs_idxes_present) {
HANDLE_CODE(report_quant_rs_idxes.pack(bref));
}
if (max_nrof_rs_idxes_to_report_present) {
HANDLE_CODE(pack_integer(bref, max_nrof_rs_idxes_to_report, (uint8_t)1u, (uint8_t)32u));
}
HANDLE_CODE(bref.pack(include_beam_meass, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE event_trigger_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(report_quant_rs_idxes_present, 1));
HANDLE_CODE(bref.unpack(max_nrof_rs_idxes_to_report_present, 1));
HANDLE_CODE(bref.unpack(report_add_neigh_meas_present, 1));
HANDLE_CODE(event_id.unpack(bref));
HANDLE_CODE(rs_type.unpack(bref));
HANDLE_CODE(report_interv.unpack(bref));
HANDLE_CODE(report_amount.unpack(bref));
HANDLE_CODE(report_quant_cell.unpack(bref));
HANDLE_CODE(unpack_integer(max_report_cells, bref, (uint8_t)1u, (uint8_t)8u));
if (report_quant_rs_idxes_present) {
HANDLE_CODE(report_quant_rs_idxes.unpack(bref));
}
if (max_nrof_rs_idxes_to_report_present) {
HANDLE_CODE(unpack_integer(max_nrof_rs_idxes_to_report, bref, (uint8_t)1u, (uint8_t)32u));
}
HANDLE_CODE(bref.unpack(include_beam_meass, 1));
return SRSASN_SUCCESS;
}
void event_trigger_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("eventId");
event_id.to_json(j);
j.write_str("rsType", rs_type.to_string());
j.write_str("reportInterval", report_interv.to_string());
j.write_str("reportAmount", report_amount.to_string());
j.write_fieldname("reportQuantityCell");
report_quant_cell.to_json(j);
j.write_int("maxReportCells", max_report_cells);
if (report_quant_rs_idxes_present) {
j.write_fieldname("reportQuantityRS-Indexes");
report_quant_rs_idxes.to_json(j);
}
if (max_nrof_rs_idxes_to_report_present) {
j.write_int("maxNrofRS-IndexesToReport", max_nrof_rs_idxes_to_report);
}
j.write_bool("includeBeamMeasurements", include_beam_meass);
if (report_add_neigh_meas_present) {
j.write_str("reportAddNeighMeas", "setup");
}
j.end_obj();
}
void event_trigger_cfg_s::event_id_c_::destroy_()
{
switch (type_) {
case types::event_a1:
c.destroy<event_a1_s_>();
break;
case types::event_a2:
c.destroy<event_a2_s_>();
break;
case types::event_a3:
c.destroy<event_a3_s_>();
break;
case types::event_a4:
c.destroy<event_a4_s_>();
break;
case types::event_a5:
c.destroy<event_a5_s_>();
break;
case types::event_a6:
c.destroy<event_a6_s_>();
break;
default:
break;
}
}
void event_trigger_cfg_s::event_id_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::event_a1:
c.init<event_a1_s_>();
break;
case types::event_a2:
c.init<event_a2_s_>();
break;
case types::event_a3:
c.init<event_a3_s_>();
break;
case types::event_a4:
c.init<event_a4_s_>();
break;
case types::event_a5:
c.init<event_a5_s_>();
break;
case types::event_a6:
c.init<event_a6_s_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "event_trigger_cfg_s::event_id_c_");
}
}
event_trigger_cfg_s::event_id_c_::event_id_c_(const event_trigger_cfg_s::event_id_c_& other)
{
type_ = other.type();
switch (type_) {
case types::event_a1:
c.init(other.c.get<event_a1_s_>());
break;
case types::event_a2:
c.init(other.c.get<event_a2_s_>());
break;
case types::event_a3:
c.init(other.c.get<event_a3_s_>());
break;
case types::event_a4:
c.init(other.c.get<event_a4_s_>());
break;
case types::event_a5:
c.init(other.c.get<event_a5_s_>());
break;
case types::event_a6:
c.init(other.c.get<event_a6_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "event_trigger_cfg_s::event_id_c_");
}
}
event_trigger_cfg_s::event_id_c_&
event_trigger_cfg_s::event_id_c_::operator=(const event_trigger_cfg_s::event_id_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::event_a1:
c.set(other.c.get<event_a1_s_>());
break;
case types::event_a2:
c.set(other.c.get<event_a2_s_>());
break;
case types::event_a3:
c.set(other.c.get<event_a3_s_>());
break;
case types::event_a4:
c.set(other.c.get<event_a4_s_>());
break;
case types::event_a5:
c.set(other.c.get<event_a5_s_>());
break;
case types::event_a6:
c.set(other.c.get<event_a6_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "event_trigger_cfg_s::event_id_c_");
}
return *this;
}
event_trigger_cfg_s::event_id_c_::event_a1_s_& event_trigger_cfg_s::event_id_c_::set_event_a1()
{
set(types::event_a1);
return c.get<event_a1_s_>();
}
event_trigger_cfg_s::event_id_c_::event_a2_s_& event_trigger_cfg_s::event_id_c_::set_event_a2()
{
set(types::event_a2);
return c.get<event_a2_s_>();
}
event_trigger_cfg_s::event_id_c_::event_a3_s_& event_trigger_cfg_s::event_id_c_::set_event_a3()
{
set(types::event_a3);
return c.get<event_a3_s_>();
}
event_trigger_cfg_s::event_id_c_::event_a4_s_& event_trigger_cfg_s::event_id_c_::set_event_a4()
{
set(types::event_a4);
return c.get<event_a4_s_>();
}
event_trigger_cfg_s::event_id_c_::event_a5_s_& event_trigger_cfg_s::event_id_c_::set_event_a5()
{
set(types::event_a5);
return c.get<event_a5_s_>();
}
event_trigger_cfg_s::event_id_c_::event_a6_s_& event_trigger_cfg_s::event_id_c_::set_event_a6()
{
set(types::event_a6);
return c.get<event_a6_s_>();
}
void event_trigger_cfg_s::event_id_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::event_a1:
j.write_fieldname("eventA1");
j.start_obj();
j.write_fieldname("a1-Threshold");
c.get<event_a1_s_>().a1_thres.to_json(j);
j.write_bool("reportOnLeave", c.get<event_a1_s_>().report_on_leave);
j.write_int("hysteresis", c.get<event_a1_s_>().hysteresis);
j.write_str("timeToTrigger", c.get<event_a1_s_>().time_to_trigger.to_string());
j.end_obj();
break;
case types::event_a2:
j.write_fieldname("eventA2");
j.start_obj();
j.write_fieldname("a2-Threshold");
c.get<event_a2_s_>().a2_thres.to_json(j);
j.write_bool("reportOnLeave", c.get<event_a2_s_>().report_on_leave);
j.write_int("hysteresis", c.get<event_a2_s_>().hysteresis);
j.write_str("timeToTrigger", c.get<event_a2_s_>().time_to_trigger.to_string());
j.end_obj();
break;
case types::event_a3:
j.write_fieldname("eventA3");
j.start_obj();
j.write_fieldname("a3-Offset");
c.get<event_a3_s_>().a3_offset.to_json(j);
j.write_bool("reportOnLeave", c.get<event_a3_s_>().report_on_leave);
j.write_int("hysteresis", c.get<event_a3_s_>().hysteresis);
j.write_str("timeToTrigger", c.get<event_a3_s_>().time_to_trigger.to_string());
j.write_bool("useWhiteCellList", c.get<event_a3_s_>().use_white_cell_list);
j.end_obj();
break;
case types::event_a4:
j.write_fieldname("eventA4");
j.start_obj();
j.write_fieldname("a4-Threshold");
c.get<event_a4_s_>().a4_thres.to_json(j);
j.write_bool("reportOnLeave", c.get<event_a4_s_>().report_on_leave);
j.write_int("hysteresis", c.get<event_a4_s_>().hysteresis);
j.write_str("timeToTrigger", c.get<event_a4_s_>().time_to_trigger.to_string());
j.write_bool("useWhiteCellList", c.get<event_a4_s_>().use_white_cell_list);
j.end_obj();
break;
case types::event_a5:
j.write_fieldname("eventA5");
j.start_obj();
j.write_fieldname("a5-Threshold1");
c.get<event_a5_s_>().a5_thres1.to_json(j);
j.write_fieldname("a5-Threshold2");
c.get<event_a5_s_>().a5_thres2.to_json(j);
j.write_bool("reportOnLeave", c.get<event_a5_s_>().report_on_leave);
j.write_int("hysteresis", c.get<event_a5_s_>().hysteresis);
j.write_str("timeToTrigger", c.get<event_a5_s_>().time_to_trigger.to_string());
j.write_bool("useWhiteCellList", c.get<event_a5_s_>().use_white_cell_list);
j.end_obj();
break;
case types::event_a6:
j.write_fieldname("eventA6");
j.start_obj();
j.write_fieldname("a6-Offset");
c.get<event_a6_s_>().a6_offset.to_json(j);
j.write_bool("reportOnLeave", c.get<event_a6_s_>().report_on_leave);
j.write_int("hysteresis", c.get<event_a6_s_>().hysteresis);
j.write_str("timeToTrigger", c.get<event_a6_s_>().time_to_trigger.to_string());
j.write_bool("useWhiteCellList", c.get<event_a6_s_>().use_white_cell_list);
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "event_trigger_cfg_s::event_id_c_");
}
j.end_obj();
}
SRSASN_CODE event_trigger_cfg_s::event_id_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::event_a1:
HANDLE_CODE(c.get<event_a1_s_>().a1_thres.pack(bref));
HANDLE_CODE(bref.pack(c.get<event_a1_s_>().report_on_leave, 1));
HANDLE_CODE(pack_integer(bref, c.get<event_a1_s_>().hysteresis, (uint8_t)0u, (uint8_t)30u));
HANDLE_CODE(c.get<event_a1_s_>().time_to_trigger.pack(bref));
break;
case types::event_a2:
HANDLE_CODE(c.get<event_a2_s_>().a2_thres.pack(bref));
HANDLE_CODE(bref.pack(c.get<event_a2_s_>().report_on_leave, 1));
HANDLE_CODE(pack_integer(bref, c.get<event_a2_s_>().hysteresis, (uint8_t)0u, (uint8_t)30u));
HANDLE_CODE(c.get<event_a2_s_>().time_to_trigger.pack(bref));
break;
case types::event_a3:
HANDLE_CODE(c.get<event_a3_s_>().a3_offset.pack(bref));
HANDLE_CODE(bref.pack(c.get<event_a3_s_>().report_on_leave, 1));
HANDLE_CODE(pack_integer(bref, c.get<event_a3_s_>().hysteresis, (uint8_t)0u, (uint8_t)30u));
HANDLE_CODE(c.get<event_a3_s_>().time_to_trigger.pack(bref));
HANDLE_CODE(bref.pack(c.get<event_a3_s_>().use_white_cell_list, 1));
break;
case types::event_a4:
HANDLE_CODE(c.get<event_a4_s_>().a4_thres.pack(bref));
HANDLE_CODE(bref.pack(c.get<event_a4_s_>().report_on_leave, 1));
HANDLE_CODE(pack_integer(bref, c.get<event_a4_s_>().hysteresis, (uint8_t)0u, (uint8_t)30u));
HANDLE_CODE(c.get<event_a4_s_>().time_to_trigger.pack(bref));
HANDLE_CODE(bref.pack(c.get<event_a4_s_>().use_white_cell_list, 1));
break;
case types::event_a5:
HANDLE_CODE(c.get<event_a5_s_>().a5_thres1.pack(bref));
HANDLE_CODE(c.get<event_a5_s_>().a5_thres2.pack(bref));
HANDLE_CODE(bref.pack(c.get<event_a5_s_>().report_on_leave, 1));
HANDLE_CODE(pack_integer(bref, c.get<event_a5_s_>().hysteresis, (uint8_t)0u, (uint8_t)30u));
HANDLE_CODE(c.get<event_a5_s_>().time_to_trigger.pack(bref));
HANDLE_CODE(bref.pack(c.get<event_a5_s_>().use_white_cell_list, 1));
break;
case types::event_a6:
HANDLE_CODE(c.get<event_a6_s_>().a6_offset.pack(bref));
HANDLE_CODE(bref.pack(c.get<event_a6_s_>().report_on_leave, 1));
HANDLE_CODE(pack_integer(bref, c.get<event_a6_s_>().hysteresis, (uint8_t)0u, (uint8_t)30u));
HANDLE_CODE(c.get<event_a6_s_>().time_to_trigger.pack(bref));
HANDLE_CODE(bref.pack(c.get<event_a6_s_>().use_white_cell_list, 1));
break;
default:
log_invalid_choice_id(type_, "event_trigger_cfg_s::event_id_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE event_trigger_cfg_s::event_id_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::event_a1:
HANDLE_CODE(c.get<event_a1_s_>().a1_thres.unpack(bref));
HANDLE_CODE(bref.unpack(c.get<event_a1_s_>().report_on_leave, 1));
HANDLE_CODE(unpack_integer(c.get<event_a1_s_>().hysteresis, bref, (uint8_t)0u, (uint8_t)30u));
HANDLE_CODE(c.get<event_a1_s_>().time_to_trigger.unpack(bref));
break;
case types::event_a2:
HANDLE_CODE(c.get<event_a2_s_>().a2_thres.unpack(bref));
HANDLE_CODE(bref.unpack(c.get<event_a2_s_>().report_on_leave, 1));
HANDLE_CODE(unpack_integer(c.get<event_a2_s_>().hysteresis, bref, (uint8_t)0u, (uint8_t)30u));
HANDLE_CODE(c.get<event_a2_s_>().time_to_trigger.unpack(bref));
break;
case types::event_a3:
HANDLE_CODE(c.get<event_a3_s_>().a3_offset.unpack(bref));
HANDLE_CODE(bref.unpack(c.get<event_a3_s_>().report_on_leave, 1));
HANDLE_CODE(unpack_integer(c.get<event_a3_s_>().hysteresis, bref, (uint8_t)0u, (uint8_t)30u));
HANDLE_CODE(c.get<event_a3_s_>().time_to_trigger.unpack(bref));
HANDLE_CODE(bref.unpack(c.get<event_a3_s_>().use_white_cell_list, 1));
break;
case types::event_a4:
HANDLE_CODE(c.get<event_a4_s_>().a4_thres.unpack(bref));
HANDLE_CODE(bref.unpack(c.get<event_a4_s_>().report_on_leave, 1));
HANDLE_CODE(unpack_integer(c.get<event_a4_s_>().hysteresis, bref, (uint8_t)0u, (uint8_t)30u));
HANDLE_CODE(c.get<event_a4_s_>().time_to_trigger.unpack(bref));
HANDLE_CODE(bref.unpack(c.get<event_a4_s_>().use_white_cell_list, 1));
break;
case types::event_a5:
HANDLE_CODE(c.get<event_a5_s_>().a5_thres1.unpack(bref));
HANDLE_CODE(c.get<event_a5_s_>().a5_thres2.unpack(bref));
HANDLE_CODE(bref.unpack(c.get<event_a5_s_>().report_on_leave, 1));
HANDLE_CODE(unpack_integer(c.get<event_a5_s_>().hysteresis, bref, (uint8_t)0u, (uint8_t)30u));
HANDLE_CODE(c.get<event_a5_s_>().time_to_trigger.unpack(bref));
HANDLE_CODE(bref.unpack(c.get<event_a5_s_>().use_white_cell_list, 1));
break;
case types::event_a6:
HANDLE_CODE(c.get<event_a6_s_>().a6_offset.unpack(bref));
HANDLE_CODE(bref.unpack(c.get<event_a6_s_>().report_on_leave, 1));
HANDLE_CODE(unpack_integer(c.get<event_a6_s_>().hysteresis, bref, (uint8_t)0u, (uint8_t)30u));
HANDLE_CODE(c.get<event_a6_s_>().time_to_trigger.unpack(bref));
HANDLE_CODE(bref.unpack(c.get<event_a6_s_>().use_white_cell_list, 1));
break;
default:
log_invalid_choice_id(type_, "event_trigger_cfg_s::event_id_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* event_trigger_cfg_s::event_id_c_::types_opts::to_string() const
{
static const char* options[] = {"eventA1", "eventA2", "eventA3", "eventA4", "eventA5", "eventA6"};
return convert_enum_idx(options, 6, value, "event_trigger_cfg_s::event_id_c_::types");
}
uint8_t event_trigger_cfg_s::event_id_c_::types_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 3, 4, 5, 6};
return map_enum_number(options, 6, value, "event_trigger_cfg_s::event_id_c_::types");
}
const char* event_trigger_cfg_s::report_amount_opts::to_string() const
{
static const char* options[] = {"r1", "r2", "r4", "r8", "r16", "r32", "r64", "infinity"};
return convert_enum_idx(options, 8, value, "event_trigger_cfg_s::report_amount_e_");
}
int8_t event_trigger_cfg_s::report_amount_opts::to_number() const
{
static const int8_t options[] = {1, 2, 4, 8, 16, 32, 64, -1};
return map_enum_number(options, 8, value, "event_trigger_cfg_s::report_amount_e_");
}
// EventTriggerConfigInterRAT ::= SEQUENCE
SRSASN_CODE event_trigger_cfg_inter_rat_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(event_id.pack(bref));
HANDLE_CODE(rs_type.pack(bref));
HANDLE_CODE(report_interv.pack(bref));
HANDLE_CODE(report_amount.pack(bref));
HANDLE_CODE(report_quant.pack(bref));
HANDLE_CODE(pack_integer(bref, max_report_cells, (uint8_t)1u, (uint8_t)8u));
return SRSASN_SUCCESS;
}
SRSASN_CODE event_trigger_cfg_inter_rat_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(event_id.unpack(bref));
HANDLE_CODE(rs_type.unpack(bref));
HANDLE_CODE(report_interv.unpack(bref));
HANDLE_CODE(report_amount.unpack(bref));
HANDLE_CODE(report_quant.unpack(bref));
HANDLE_CODE(unpack_integer(max_report_cells, bref, (uint8_t)1u, (uint8_t)8u));
return SRSASN_SUCCESS;
}
void event_trigger_cfg_inter_rat_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("eventId");
event_id.to_json(j);
j.write_str("rsType", rs_type.to_string());
j.write_str("reportInterval", report_interv.to_string());
j.write_str("reportAmount", report_amount.to_string());
j.write_fieldname("reportQuantity");
report_quant.to_json(j);
j.write_int("maxReportCells", max_report_cells);
j.end_obj();
}
void event_trigger_cfg_inter_rat_s::event_id_c_::destroy_()
{
switch (type_) {
case types::event_b1:
c.destroy<event_b1_s_>();
break;
case types::event_b2:
c.destroy<event_b2_s_>();
break;
default:
break;
}
}
void event_trigger_cfg_inter_rat_s::event_id_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::event_b1:
c.init<event_b1_s_>();
break;
case types::event_b2:
c.init<event_b2_s_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "event_trigger_cfg_inter_rat_s::event_id_c_");
}
}
event_trigger_cfg_inter_rat_s::event_id_c_::event_id_c_(const event_trigger_cfg_inter_rat_s::event_id_c_& other)
{
type_ = other.type();
switch (type_) {
case types::event_b1:
c.init(other.c.get<event_b1_s_>());
break;
case types::event_b2:
c.init(other.c.get<event_b2_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "event_trigger_cfg_inter_rat_s::event_id_c_");
}
}
event_trigger_cfg_inter_rat_s::event_id_c_&
event_trigger_cfg_inter_rat_s::event_id_c_::operator=(const event_trigger_cfg_inter_rat_s::event_id_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::event_b1:
c.set(other.c.get<event_b1_s_>());
break;
case types::event_b2:
c.set(other.c.get<event_b2_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "event_trigger_cfg_inter_rat_s::event_id_c_");
}
return *this;
}
event_trigger_cfg_inter_rat_s::event_id_c_::event_b1_s_& event_trigger_cfg_inter_rat_s::event_id_c_::set_event_b1()
{
set(types::event_b1);
return c.get<event_b1_s_>();
}
event_trigger_cfg_inter_rat_s::event_id_c_::event_b2_s_& event_trigger_cfg_inter_rat_s::event_id_c_::set_event_b2()
{
set(types::event_b2);
return c.get<event_b2_s_>();
}
void event_trigger_cfg_inter_rat_s::event_id_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::event_b1:
j.write_fieldname("eventB1");
j.start_obj();
j.write_fieldname("b1-ThresholdEUTRA");
c.get<event_b1_s_>().b1_thres_eutra.to_json(j);
j.write_bool("reportOnLeave", c.get<event_b1_s_>().report_on_leave);
j.write_int("hysteresis", c.get<event_b1_s_>().hysteresis);
j.write_str("timeToTrigger", c.get<event_b1_s_>().time_to_trigger.to_string());
j.end_obj();
break;
case types::event_b2:
j.write_fieldname("eventB2");
j.start_obj();
j.write_fieldname("b2-Threshold1");
c.get<event_b2_s_>().b2_thres1.to_json(j);
j.write_fieldname("b2-Threshold2EUTRA");
c.get<event_b2_s_>().b2_thres2_eutra.to_json(j);
j.write_bool("reportOnLeave", c.get<event_b2_s_>().report_on_leave);
j.write_int("hysteresis", c.get<event_b2_s_>().hysteresis);
j.write_str("timeToTrigger", c.get<event_b2_s_>().time_to_trigger.to_string());
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "event_trigger_cfg_inter_rat_s::event_id_c_");
}
j.end_obj();
}
SRSASN_CODE event_trigger_cfg_inter_rat_s::event_id_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::event_b1:
bref.pack(c.get<event_b1_s_>().ext, 1);
HANDLE_CODE(c.get<event_b1_s_>().b1_thres_eutra.pack(bref));
HANDLE_CODE(bref.pack(c.get<event_b1_s_>().report_on_leave, 1));
HANDLE_CODE(pack_integer(bref, c.get<event_b1_s_>().hysteresis, (uint8_t)0u, (uint8_t)30u));
HANDLE_CODE(c.get<event_b1_s_>().time_to_trigger.pack(bref));
break;
case types::event_b2:
bref.pack(c.get<event_b2_s_>().ext, 1);
HANDLE_CODE(c.get<event_b2_s_>().b2_thres1.pack(bref));
HANDLE_CODE(c.get<event_b2_s_>().b2_thres2_eutra.pack(bref));
HANDLE_CODE(bref.pack(c.get<event_b2_s_>().report_on_leave, 1));
HANDLE_CODE(pack_integer(bref, c.get<event_b2_s_>().hysteresis, (uint8_t)0u, (uint8_t)30u));
HANDLE_CODE(c.get<event_b2_s_>().time_to_trigger.pack(bref));
break;
default:
log_invalid_choice_id(type_, "event_trigger_cfg_inter_rat_s::event_id_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE event_trigger_cfg_inter_rat_s::event_id_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::event_b1:
bref.unpack(c.get<event_b1_s_>().ext, 1);
HANDLE_CODE(c.get<event_b1_s_>().b1_thres_eutra.unpack(bref));
HANDLE_CODE(bref.unpack(c.get<event_b1_s_>().report_on_leave, 1));
HANDLE_CODE(unpack_integer(c.get<event_b1_s_>().hysteresis, bref, (uint8_t)0u, (uint8_t)30u));
HANDLE_CODE(c.get<event_b1_s_>().time_to_trigger.unpack(bref));
break;
case types::event_b2:
bref.unpack(c.get<event_b2_s_>().ext, 1);
HANDLE_CODE(c.get<event_b2_s_>().b2_thres1.unpack(bref));
HANDLE_CODE(c.get<event_b2_s_>().b2_thres2_eutra.unpack(bref));
HANDLE_CODE(bref.unpack(c.get<event_b2_s_>().report_on_leave, 1));
HANDLE_CODE(unpack_integer(c.get<event_b2_s_>().hysteresis, bref, (uint8_t)0u, (uint8_t)30u));
HANDLE_CODE(c.get<event_b2_s_>().time_to_trigger.unpack(bref));
break;
default:
log_invalid_choice_id(type_, "event_trigger_cfg_inter_rat_s::event_id_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* event_trigger_cfg_inter_rat_s::event_id_c_::types_opts::to_string() const
{
static const char* options[] = {"eventB1", "eventB2"};
return convert_enum_idx(options, 2, value, "event_trigger_cfg_inter_rat_s::event_id_c_::types");
}
uint8_t event_trigger_cfg_inter_rat_s::event_id_c_::types_opts::to_number() const
{
static const uint8_t options[] = {1, 2};
return map_enum_number(options, 2, value, "event_trigger_cfg_inter_rat_s::event_id_c_::types");
}
const char* event_trigger_cfg_inter_rat_s::report_amount_opts::to_string() const
{
static const char* options[] = {"r1", "r2", "r4", "r8", "r16", "r32", "r64", "infinity"};
return convert_enum_idx(options, 8, value, "event_trigger_cfg_inter_rat_s::report_amount_e_");
}
int8_t event_trigger_cfg_inter_rat_s::report_amount_opts::to_number() const
{
static const int8_t options[] = {1, 2, 4, 8, 16, 32, 64, -1};
return map_enum_number(options, 8, value, "event_trigger_cfg_inter_rat_s::report_amount_e_");
}
// FilterConfig ::= SEQUENCE
SRSASN_CODE filt_cfg_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(filt_coef_rsrp_present, 1));
HANDLE_CODE(bref.pack(filt_coef_rsrq_present, 1));
HANDLE_CODE(bref.pack(filt_coef_rs_sinr_present, 1));
if (filt_coef_rsrp_present) {
HANDLE_CODE(filt_coef_rsrp.pack(bref));
}
if (filt_coef_rsrq_present) {
HANDLE_CODE(filt_coef_rsrq.pack(bref));
}
if (filt_coef_rs_sinr_present) {
HANDLE_CODE(filt_coef_rs_sinr.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE filt_cfg_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(filt_coef_rsrp_present, 1));
HANDLE_CODE(bref.unpack(filt_coef_rsrq_present, 1));
HANDLE_CODE(bref.unpack(filt_coef_rs_sinr_present, 1));
if (filt_coef_rsrp_present) {
HANDLE_CODE(filt_coef_rsrp.unpack(bref));
}
if (filt_coef_rsrq_present) {
HANDLE_CODE(filt_coef_rsrq.unpack(bref));
}
if (filt_coef_rs_sinr_present) {
HANDLE_CODE(filt_coef_rs_sinr.unpack(bref));
}
return SRSASN_SUCCESS;
}
void filt_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (filt_coef_rsrp_present) {
j.write_str("filterCoefficientRSRP", filt_coef_rsrp.to_string());
}
if (filt_coef_rsrq_present) {
j.write_str("filterCoefficientRSRQ", filt_coef_rsrq.to_string());
}
if (filt_coef_rs_sinr_present) {
j.write_str("filterCoefficientRS-SINR", filt_coef_rs_sinr.to_string());
}
j.end_obj();
}
// PCI-RangeElement ::= SEQUENCE
SRSASN_CODE pci_range_elem_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, pci_range_idx, (uint8_t)1u, (uint8_t)8u));
HANDLE_CODE(pci_range.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE pci_range_elem_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(pci_range_idx, bref, (uint8_t)1u, (uint8_t)8u));
HANDLE_CODE(pci_range.unpack(bref));
return SRSASN_SUCCESS;
}
void pci_range_elem_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("pci-RangeIndex", pci_range_idx);
j.write_fieldname("pci-Range");
pci_range.to_json(j);
j.end_obj();
}
// PeriodicalReportConfig ::= SEQUENCE
SRSASN_CODE periodical_report_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(report_quant_rs_idxes_present, 1));
HANDLE_CODE(bref.pack(max_nrof_rs_idxes_to_report_present, 1));
HANDLE_CODE(rs_type.pack(bref));
HANDLE_CODE(report_interv.pack(bref));
HANDLE_CODE(report_amount.pack(bref));
HANDLE_CODE(report_quant_cell.pack(bref));
HANDLE_CODE(pack_integer(bref, max_report_cells, (uint8_t)1u, (uint8_t)8u));
if (report_quant_rs_idxes_present) {
HANDLE_CODE(report_quant_rs_idxes.pack(bref));
}
if (max_nrof_rs_idxes_to_report_present) {
HANDLE_CODE(pack_integer(bref, max_nrof_rs_idxes_to_report, (uint8_t)1u, (uint8_t)32u));
}
HANDLE_CODE(bref.pack(include_beam_meass, 1));
HANDLE_CODE(bref.pack(use_white_cell_list, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE periodical_report_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(report_quant_rs_idxes_present, 1));
HANDLE_CODE(bref.unpack(max_nrof_rs_idxes_to_report_present, 1));
HANDLE_CODE(rs_type.unpack(bref));
HANDLE_CODE(report_interv.unpack(bref));
HANDLE_CODE(report_amount.unpack(bref));
HANDLE_CODE(report_quant_cell.unpack(bref));
HANDLE_CODE(unpack_integer(max_report_cells, bref, (uint8_t)1u, (uint8_t)8u));
if (report_quant_rs_idxes_present) {
HANDLE_CODE(report_quant_rs_idxes.unpack(bref));
}
if (max_nrof_rs_idxes_to_report_present) {
HANDLE_CODE(unpack_integer(max_nrof_rs_idxes_to_report, bref, (uint8_t)1u, (uint8_t)32u));
}
HANDLE_CODE(bref.unpack(include_beam_meass, 1));
HANDLE_CODE(bref.unpack(use_white_cell_list, 1));
return SRSASN_SUCCESS;
}
void periodical_report_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("rsType", rs_type.to_string());
j.write_str("reportInterval", report_interv.to_string());
j.write_str("reportAmount", report_amount.to_string());
j.write_fieldname("reportQuantityCell");
report_quant_cell.to_json(j);
j.write_int("maxReportCells", max_report_cells);
if (report_quant_rs_idxes_present) {
j.write_fieldname("reportQuantityRS-Indexes");
report_quant_rs_idxes.to_json(j);
}
if (max_nrof_rs_idxes_to_report_present) {
j.write_int("maxNrofRS-IndexesToReport", max_nrof_rs_idxes_to_report);
}
j.write_bool("includeBeamMeasurements", include_beam_meass);
j.write_bool("useWhiteCellList", use_white_cell_list);
j.end_obj();
}
const char* periodical_report_cfg_s::report_amount_opts::to_string() const
{
static const char* options[] = {"r1", "r2", "r4", "r8", "r16", "r32", "r64", "infinity"};
return convert_enum_idx(options, 8, value, "periodical_report_cfg_s::report_amount_e_");
}
int8_t periodical_report_cfg_s::report_amount_opts::to_number() const
{
static const int8_t options[] = {1, 2, 4, 8, 16, 32, 64, -1};
return map_enum_number(options, 8, value, "periodical_report_cfg_s::report_amount_e_");
}
// PeriodicalReportConfigInterRAT ::= SEQUENCE
SRSASN_CODE periodical_report_cfg_inter_rat_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(report_interv.pack(bref));
HANDLE_CODE(report_amount.pack(bref));
HANDLE_CODE(report_quant.pack(bref));
HANDLE_CODE(pack_integer(bref, max_report_cells, (uint8_t)1u, (uint8_t)8u));
return SRSASN_SUCCESS;
}
SRSASN_CODE periodical_report_cfg_inter_rat_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(report_interv.unpack(bref));
HANDLE_CODE(report_amount.unpack(bref));
HANDLE_CODE(report_quant.unpack(bref));
HANDLE_CODE(unpack_integer(max_report_cells, bref, (uint8_t)1u, (uint8_t)8u));
return SRSASN_SUCCESS;
}
void periodical_report_cfg_inter_rat_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("reportInterval", report_interv.to_string());
j.write_str("reportAmount", report_amount.to_string());
j.write_fieldname("reportQuantity");
report_quant.to_json(j);
j.write_int("maxReportCells", max_report_cells);
j.end_obj();
}
const char* periodical_report_cfg_inter_rat_s::report_amount_opts::to_string() const
{
static const char* options[] = {"r1", "r2", "r4", "r8", "r16", "r32", "r64", "infinity"};
return convert_enum_idx(options, 8, value, "periodical_report_cfg_inter_rat_s::report_amount_e_");
}
int8_t periodical_report_cfg_inter_rat_s::report_amount_opts::to_number() const
{
static const int8_t options[] = {1, 2, 4, 8, 16, 32, 64, -1};
return map_enum_number(options, 8, value, "periodical_report_cfg_inter_rat_s::report_amount_e_");
}
// RAN-AreaConfig ::= SEQUENCE
SRSASN_CODE ran_area_cfg_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(ran_area_code_list_present, 1));
HANDLE_CODE(tac.pack(bref));
if (ran_area_code_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, ran_area_code_list, 1, 32, integer_packer<uint16_t>(0, 255)));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ran_area_cfg_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(ran_area_code_list_present, 1));
HANDLE_CODE(tac.unpack(bref));
if (ran_area_code_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(ran_area_code_list, bref, 1, 32, integer_packer<uint16_t>(0, 255)));
}
return SRSASN_SUCCESS;
}
void ran_area_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("trackingAreaCode", tac.to_string());
if (ran_area_code_list_present) {
j.start_array("ran-AreaCodeList");
for (const auto& e1 : ran_area_code_list) {
j.write_int(e1);
}
j.end_array();
}
j.end_obj();
}
// ReferenceSignalConfig ::= SEQUENCE
SRSASN_CODE ref_sig_cfg_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(ssb_cfg_mob_present, 1));
HANDLE_CODE(bref.pack(csi_rs_res_cfg_mob_present, 1));
if (ssb_cfg_mob_present) {
HANDLE_CODE(ssb_cfg_mob.pack(bref));
}
if (csi_rs_res_cfg_mob_present) {
HANDLE_CODE(csi_rs_res_cfg_mob.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ref_sig_cfg_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(ssb_cfg_mob_present, 1));
HANDLE_CODE(bref.unpack(csi_rs_res_cfg_mob_present, 1));
if (ssb_cfg_mob_present) {
HANDLE_CODE(ssb_cfg_mob.unpack(bref));
}
if (csi_rs_res_cfg_mob_present) {
HANDLE_CODE(csi_rs_res_cfg_mob.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ref_sig_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (ssb_cfg_mob_present) {
j.write_fieldname("ssb-ConfigMobility");
ssb_cfg_mob.to_json(j);
}
if (csi_rs_res_cfg_mob_present) {
j.write_fieldname("csi-rs-ResourceConfigMobility");
csi_rs_res_cfg_mob.to_json(j);
}
j.end_obj();
}
// ReportCGI ::= SEQUENCE
SRSASN_CODE report_cgi_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(pack_integer(bref, cell_for_which_to_report_cgi, (uint16_t)0u, (uint16_t)1007u));
return SRSASN_SUCCESS;
}
SRSASN_CODE report_cgi_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(unpack_integer(cell_for_which_to_report_cgi, bref, (uint16_t)0u, (uint16_t)1007u));
return SRSASN_SUCCESS;
}
void report_cgi_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("cellForWhichToReportCGI", cell_for_which_to_report_cgi);
j.end_obj();
}
// ReportCGI-EUTRA ::= SEQUENCE
SRSASN_CODE report_cgi_eutra_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(pack_integer(bref, cell_for_which_to_report_cgi, (uint16_t)0u, (uint16_t)503u));
return SRSASN_SUCCESS;
}
SRSASN_CODE report_cgi_eutra_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(unpack_integer(cell_for_which_to_report_cgi, bref, (uint16_t)0u, (uint16_t)503u));
return SRSASN_SUCCESS;
}
void report_cgi_eutra_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("cellForWhichToReportCGI", cell_for_which_to_report_cgi);
j.end_obj();
}
// ReportSFTD-EUTRA ::= SEQUENCE
SRSASN_CODE report_sftd_eutra_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(report_sftd_meas, 1));
HANDLE_CODE(bref.pack(report_rsrp, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE report_sftd_eutra_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(report_sftd_meas, 1));
HANDLE_CODE(bref.unpack(report_rsrp, 1));
return SRSASN_SUCCESS;
}
void report_sftd_eutra_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_bool("reportSFTD-Meas", report_sftd_meas);
j.write_bool("reportRSRP", report_rsrp);
j.end_obj();
}
// ReportSFTD-NR ::= SEQUENCE
SRSASN_CODE report_sftd_nr_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(report_sftd_meas, 1));
HANDLE_CODE(bref.pack(report_rsrp, 1));
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= report_sftd_neigh_meas_present;
group_flags[0] |= drx_sftd_neigh_meas_present;
group_flags[0] |= cells_for_which_to_report_sftd.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(report_sftd_neigh_meas_present, 1));
HANDLE_CODE(bref.pack(drx_sftd_neigh_meas_present, 1));
HANDLE_CODE(bref.pack(cells_for_which_to_report_sftd.is_present(), 1));
if (cells_for_which_to_report_sftd.is_present()) {
HANDLE_CODE(pack_dyn_seq_of(bref, *cells_for_which_to_report_sftd, 1, 3, integer_packer<uint16_t>(0, 1007)));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE report_sftd_nr_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(report_sftd_meas, 1));
HANDLE_CODE(bref.unpack(report_rsrp, 1));
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(report_sftd_neigh_meas_present, 1));
HANDLE_CODE(bref.unpack(drx_sftd_neigh_meas_present, 1));
bool cells_for_which_to_report_sftd_present;
HANDLE_CODE(bref.unpack(cells_for_which_to_report_sftd_present, 1));
cells_for_which_to_report_sftd.set_present(cells_for_which_to_report_sftd_present);
if (cells_for_which_to_report_sftd.is_present()) {
HANDLE_CODE(unpack_dyn_seq_of(*cells_for_which_to_report_sftd, bref, 1, 3, integer_packer<uint16_t>(0, 1007)));
}
}
}
return SRSASN_SUCCESS;
}
void report_sftd_nr_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_bool("reportSFTD-Meas", report_sftd_meas);
j.write_bool("reportRSRP", report_rsrp);
if (ext) {
if (report_sftd_neigh_meas_present) {
j.write_str("reportSFTD-NeighMeas", "true");
}
if (drx_sftd_neigh_meas_present) {
j.write_str("drx-SFTD-NeighMeas", "true");
}
if (cells_for_which_to_report_sftd.is_present()) {
j.start_array("cellsForWhichToReportSFTD");
for (const auto& e1 : *cells_for_which_to_report_sftd) {
j.write_int(e1);
}
j.end_array();
}
}
j.end_obj();
}
// SSB-MTC2 ::= SEQUENCE
SRSASN_CODE ssb_mtc2_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(pci_list_present, 1));
if (pci_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, pci_list, 1, 64, integer_packer<uint16_t>(0, 1007)));
}
HANDLE_CODE(periodicity.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE ssb_mtc2_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(pci_list_present, 1));
if (pci_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(pci_list, bref, 1, 64, integer_packer<uint16_t>(0, 1007)));
}
HANDLE_CODE(periodicity.unpack(bref));
return SRSASN_SUCCESS;
}
void ssb_mtc2_s::to_json(json_writer& j) const
{
j.start_obj();
if (pci_list_present) {
j.start_array("pci-List");
for (const auto& e1 : pci_list) {
j.write_int(e1);
}
j.end_array();
}
j.write_str("periodicity", periodicity.to_string());
j.end_obj();
}
const char* ssb_mtc2_s::periodicity_opts::to_string() const
{
static const char* options[] = {"sf5", "sf10", "sf20", "sf40", "sf80", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 8, value, "ssb_mtc2_s::periodicity_e_");
}
uint8_t ssb_mtc2_s::periodicity_opts::to_number() const
{
static const uint8_t options[] = {5, 10, 20, 40, 80};
return map_enum_number(options, 5, value, "ssb_mtc2_s::periodicity_e_");
}
// MRDC-SecondaryCellGroupConfig ::= SEQUENCE
SRSASN_CODE mrdc_secondary_cell_group_cfg_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(mrdc_release_and_add_present, 1));
HANDLE_CODE(mrdc_secondary_cell_group.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE mrdc_secondary_cell_group_cfg_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(mrdc_release_and_add_present, 1));
HANDLE_CODE(mrdc_secondary_cell_group.unpack(bref));
return SRSASN_SUCCESS;
}
void mrdc_secondary_cell_group_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (mrdc_release_and_add_present) {
j.write_str("mrdc-ReleaseAndAdd", "true");
}
j.write_fieldname("mrdc-SecondaryCellGroup");
mrdc_secondary_cell_group.to_json(j);
j.end_obj();
}
void mrdc_secondary_cell_group_cfg_s::mrdc_secondary_cell_group_c_::destroy_()
{
switch (type_) {
case types::nr_scg:
c.destroy<dyn_octstring>();
break;
case types::eutra_scg:
c.destroy<dyn_octstring>();
break;
default:
break;
}
}
void mrdc_secondary_cell_group_cfg_s::mrdc_secondary_cell_group_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::nr_scg:
c.init<dyn_octstring>();
break;
case types::eutra_scg:
c.init<dyn_octstring>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "mrdc_secondary_cell_group_cfg_s::mrdc_secondary_cell_group_c_");
}
}
mrdc_secondary_cell_group_cfg_s::mrdc_secondary_cell_group_c_::mrdc_secondary_cell_group_c_(
const mrdc_secondary_cell_group_cfg_s::mrdc_secondary_cell_group_c_& other)
{
type_ = other.type();
switch (type_) {
case types::nr_scg:
c.init(other.c.get<dyn_octstring>());
break;
case types::eutra_scg:
c.init(other.c.get<dyn_octstring>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "mrdc_secondary_cell_group_cfg_s::mrdc_secondary_cell_group_c_");
}
}
mrdc_secondary_cell_group_cfg_s::mrdc_secondary_cell_group_c_&
mrdc_secondary_cell_group_cfg_s::mrdc_secondary_cell_group_c_::operator=(
const mrdc_secondary_cell_group_cfg_s::mrdc_secondary_cell_group_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::nr_scg:
c.set(other.c.get<dyn_octstring>());
break;
case types::eutra_scg:
c.set(other.c.get<dyn_octstring>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "mrdc_secondary_cell_group_cfg_s::mrdc_secondary_cell_group_c_");
}
return *this;
}
dyn_octstring& mrdc_secondary_cell_group_cfg_s::mrdc_secondary_cell_group_c_::set_nr_scg()
{
set(types::nr_scg);
return c.get<dyn_octstring>();
}
dyn_octstring& mrdc_secondary_cell_group_cfg_s::mrdc_secondary_cell_group_c_::set_eutra_scg()
{
set(types::eutra_scg);
return c.get<dyn_octstring>();
}
void mrdc_secondary_cell_group_cfg_s::mrdc_secondary_cell_group_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::nr_scg:
j.write_str("nr-SCG", c.get<dyn_octstring>().to_string());
break;
case types::eutra_scg:
j.write_str("eutra-SCG", c.get<dyn_octstring>().to_string());
break;
default:
log_invalid_choice_id(type_, "mrdc_secondary_cell_group_cfg_s::mrdc_secondary_cell_group_c_");
}
j.end_obj();
}
SRSASN_CODE mrdc_secondary_cell_group_cfg_s::mrdc_secondary_cell_group_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::nr_scg:
HANDLE_CODE(c.get<dyn_octstring>().pack(bref));
break;
case types::eutra_scg:
HANDLE_CODE(c.get<dyn_octstring>().pack(bref));
break;
default:
log_invalid_choice_id(type_, "mrdc_secondary_cell_group_cfg_s::mrdc_secondary_cell_group_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE mrdc_secondary_cell_group_cfg_s::mrdc_secondary_cell_group_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::nr_scg:
HANDLE_CODE(c.get<dyn_octstring>().unpack(bref));
break;
case types::eutra_scg:
HANDLE_CODE(c.get<dyn_octstring>().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "mrdc_secondary_cell_group_cfg_s::mrdc_secondary_cell_group_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* mrdc_secondary_cell_group_cfg_s::mrdc_secondary_cell_group_c_::types_opts::to_string() const
{
static const char* options[] = {"nr-SCG", "eutra-SCG"};
return convert_enum_idx(options, 2, value, "mrdc_secondary_cell_group_cfg_s::mrdc_secondary_cell_group_c_::types");
}
// MeasObjectEUTRA ::= SEQUENCE
SRSASN_CODE meas_obj_eutra_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(cells_to_rem_list_eutran_present, 1));
HANDLE_CODE(bref.pack(cells_to_add_mod_list_eutran_present, 1));
HANDLE_CODE(bref.pack(black_cells_to_rem_list_eutran_present, 1));
HANDLE_CODE(bref.pack(black_cells_to_add_mod_list_eutran_present, 1));
HANDLE_CODE(bref.pack(eutra_q_offset_range_present, 1));
HANDLE_CODE(pack_integer(bref, carrier_freq, (uint32_t)0u, (uint32_t)262143u));
HANDLE_CODE(allowed_meas_bw.pack(bref));
if (cells_to_rem_list_eutran_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, cells_to_rem_list_eutran, 1, 32, integer_packer<uint8_t>(1, 32)));
}
if (cells_to_add_mod_list_eutran_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, cells_to_add_mod_list_eutran, 1, 32));
}
if (black_cells_to_rem_list_eutran_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, black_cells_to_rem_list_eutran, 1, 32, integer_packer<uint8_t>(1, 32)));
}
if (black_cells_to_add_mod_list_eutran_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, black_cells_to_add_mod_list_eutran, 1, 32));
}
HANDLE_CODE(bref.pack(eutra_presence_ant_port1, 1));
if (eutra_q_offset_range_present) {
HANDLE_CODE(eutra_q_offset_range.pack(bref));
}
HANDLE_CODE(bref.pack(wideband_rsrq_meas, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_obj_eutra_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(cells_to_rem_list_eutran_present, 1));
HANDLE_CODE(bref.unpack(cells_to_add_mod_list_eutran_present, 1));
HANDLE_CODE(bref.unpack(black_cells_to_rem_list_eutran_present, 1));
HANDLE_CODE(bref.unpack(black_cells_to_add_mod_list_eutran_present, 1));
HANDLE_CODE(bref.unpack(eutra_q_offset_range_present, 1));
HANDLE_CODE(unpack_integer(carrier_freq, bref, (uint32_t)0u, (uint32_t)262143u));
HANDLE_CODE(allowed_meas_bw.unpack(bref));
if (cells_to_rem_list_eutran_present) {
HANDLE_CODE(unpack_dyn_seq_of(cells_to_rem_list_eutran, bref, 1, 32, integer_packer<uint8_t>(1, 32)));
}
if (cells_to_add_mod_list_eutran_present) {
HANDLE_CODE(unpack_dyn_seq_of(cells_to_add_mod_list_eutran, bref, 1, 32));
}
if (black_cells_to_rem_list_eutran_present) {
HANDLE_CODE(unpack_dyn_seq_of(black_cells_to_rem_list_eutran, bref, 1, 32, integer_packer<uint8_t>(1, 32)));
}
if (black_cells_to_add_mod_list_eutran_present) {
HANDLE_CODE(unpack_dyn_seq_of(black_cells_to_add_mod_list_eutran, bref, 1, 32));
}
HANDLE_CODE(bref.unpack(eutra_presence_ant_port1, 1));
if (eutra_q_offset_range_present) {
HANDLE_CODE(eutra_q_offset_range.unpack(bref));
}
HANDLE_CODE(bref.unpack(wideband_rsrq_meas, 1));
return SRSASN_SUCCESS;
}
void meas_obj_eutra_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("carrierFreq", carrier_freq);
j.write_str("allowedMeasBandwidth", allowed_meas_bw.to_string());
if (cells_to_rem_list_eutran_present) {
j.start_array("cellsToRemoveListEUTRAN");
for (const auto& e1 : cells_to_rem_list_eutran) {
j.write_int(e1);
}
j.end_array();
}
if (cells_to_add_mod_list_eutran_present) {
j.start_array("cellsToAddModListEUTRAN");
for (const auto& e1 : cells_to_add_mod_list_eutran) {
e1.to_json(j);
}
j.end_array();
}
if (black_cells_to_rem_list_eutran_present) {
j.start_array("blackCellsToRemoveListEUTRAN");
for (const auto& e1 : black_cells_to_rem_list_eutran) {
j.write_int(e1);
}
j.end_array();
}
if (black_cells_to_add_mod_list_eutran_present) {
j.start_array("blackCellsToAddModListEUTRAN");
for (const auto& e1 : black_cells_to_add_mod_list_eutran) {
e1.to_json(j);
}
j.end_array();
}
j.write_bool("eutra-PresenceAntennaPort1", eutra_presence_ant_port1);
if (eutra_q_offset_range_present) {
j.write_str("eutra-Q-OffsetRange", eutra_q_offset_range.to_string());
}
j.write_bool("widebandRSRQ-Meas", wideband_rsrq_meas);
j.end_obj();
}
// MeasObjectNR ::= SEQUENCE
SRSASN_CODE meas_obj_nr_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(ssb_freq_present, 1));
HANDLE_CODE(bref.pack(ssb_subcarrier_spacing_present, 1));
HANDLE_CODE(bref.pack(smtc1_present, 1));
HANDLE_CODE(bref.pack(smtc2_present, 1));
HANDLE_CODE(bref.pack(ref_freq_csi_rs_present, 1));
HANDLE_CODE(bref.pack(abs_thresh_ss_blocks_consolidation_present, 1));
HANDLE_CODE(bref.pack(abs_thresh_csi_rs_consolidation_present, 1));
HANDLE_CODE(bref.pack(nrof_ss_blocks_to_average_present, 1));
HANDLE_CODE(bref.pack(nrof_csi_rs_res_to_average_present, 1));
HANDLE_CODE(bref.pack(cells_to_rem_list_present, 1));
HANDLE_CODE(bref.pack(cells_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(black_cells_to_rem_list_present, 1));
HANDLE_CODE(bref.pack(black_cells_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(white_cells_to_rem_list_present, 1));
HANDLE_CODE(bref.pack(white_cells_to_add_mod_list_present, 1));
if (ssb_freq_present) {
HANDLE_CODE(pack_integer(bref, ssb_freq, (uint32_t)0u, (uint32_t)3279165u));
}
if (ssb_subcarrier_spacing_present) {
HANDLE_CODE(ssb_subcarrier_spacing.pack(bref));
}
if (smtc1_present) {
HANDLE_CODE(smtc1.pack(bref));
}
if (smtc2_present) {
HANDLE_CODE(smtc2.pack(bref));
}
if (ref_freq_csi_rs_present) {
HANDLE_CODE(pack_integer(bref, ref_freq_csi_rs, (uint32_t)0u, (uint32_t)3279165u));
}
HANDLE_CODE(ref_sig_cfg.pack(bref));
if (abs_thresh_ss_blocks_consolidation_present) {
HANDLE_CODE(abs_thresh_ss_blocks_consolidation.pack(bref));
}
if (abs_thresh_csi_rs_consolidation_present) {
HANDLE_CODE(abs_thresh_csi_rs_consolidation.pack(bref));
}
if (nrof_ss_blocks_to_average_present) {
HANDLE_CODE(pack_integer(bref, nrof_ss_blocks_to_average, (uint8_t)2u, (uint8_t)16u));
}
if (nrof_csi_rs_res_to_average_present) {
HANDLE_CODE(pack_integer(bref, nrof_csi_rs_res_to_average, (uint8_t)2u, (uint8_t)16u));
}
HANDLE_CODE(pack_integer(bref, quant_cfg_idx, (uint8_t)1u, (uint8_t)2u));
HANDLE_CODE(offset_mo.pack(bref));
if (cells_to_rem_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, cells_to_rem_list, 1, 32, integer_packer<uint16_t>(0, 1007)));
}
if (cells_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, cells_to_add_mod_list, 1, 32));
}
if (black_cells_to_rem_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, black_cells_to_rem_list, 1, 8, integer_packer<uint8_t>(1, 8)));
}
if (black_cells_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, black_cells_to_add_mod_list, 1, 8));
}
if (white_cells_to_rem_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, white_cells_to_rem_list, 1, 8, integer_packer<uint8_t>(1, 8)));
}
if (white_cells_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, white_cells_to_add_mod_list, 1, 8));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= freq_band_ind_nr_present;
group_flags[0] |= meas_cycle_scell_present;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(freq_band_ind_nr_present, 1));
HANDLE_CODE(bref.pack(meas_cycle_scell_present, 1));
if (freq_band_ind_nr_present) {
HANDLE_CODE(pack_integer(bref, freq_band_ind_nr, (uint16_t)1u, (uint16_t)1024u));
}
if (meas_cycle_scell_present) {
HANDLE_CODE(meas_cycle_scell.pack(bref));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_obj_nr_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(ssb_freq_present, 1));
HANDLE_CODE(bref.unpack(ssb_subcarrier_spacing_present, 1));
HANDLE_CODE(bref.unpack(smtc1_present, 1));
HANDLE_CODE(bref.unpack(smtc2_present, 1));
HANDLE_CODE(bref.unpack(ref_freq_csi_rs_present, 1));
HANDLE_CODE(bref.unpack(abs_thresh_ss_blocks_consolidation_present, 1));
HANDLE_CODE(bref.unpack(abs_thresh_csi_rs_consolidation_present, 1));
HANDLE_CODE(bref.unpack(nrof_ss_blocks_to_average_present, 1));
HANDLE_CODE(bref.unpack(nrof_csi_rs_res_to_average_present, 1));
HANDLE_CODE(bref.unpack(cells_to_rem_list_present, 1));
HANDLE_CODE(bref.unpack(cells_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(black_cells_to_rem_list_present, 1));
HANDLE_CODE(bref.unpack(black_cells_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(white_cells_to_rem_list_present, 1));
HANDLE_CODE(bref.unpack(white_cells_to_add_mod_list_present, 1));
if (ssb_freq_present) {
HANDLE_CODE(unpack_integer(ssb_freq, bref, (uint32_t)0u, (uint32_t)3279165u));
}
if (ssb_subcarrier_spacing_present) {
HANDLE_CODE(ssb_subcarrier_spacing.unpack(bref));
}
if (smtc1_present) {
HANDLE_CODE(smtc1.unpack(bref));
}
if (smtc2_present) {
HANDLE_CODE(smtc2.unpack(bref));
}
if (ref_freq_csi_rs_present) {
HANDLE_CODE(unpack_integer(ref_freq_csi_rs, bref, (uint32_t)0u, (uint32_t)3279165u));
}
HANDLE_CODE(ref_sig_cfg.unpack(bref));
if (abs_thresh_ss_blocks_consolidation_present) {
HANDLE_CODE(abs_thresh_ss_blocks_consolidation.unpack(bref));
}
if (abs_thresh_csi_rs_consolidation_present) {
HANDLE_CODE(abs_thresh_csi_rs_consolidation.unpack(bref));
}
if (nrof_ss_blocks_to_average_present) {
HANDLE_CODE(unpack_integer(nrof_ss_blocks_to_average, bref, (uint8_t)2u, (uint8_t)16u));
}
if (nrof_csi_rs_res_to_average_present) {
HANDLE_CODE(unpack_integer(nrof_csi_rs_res_to_average, bref, (uint8_t)2u, (uint8_t)16u));
}
HANDLE_CODE(unpack_integer(quant_cfg_idx, bref, (uint8_t)1u, (uint8_t)2u));
HANDLE_CODE(offset_mo.unpack(bref));
if (cells_to_rem_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(cells_to_rem_list, bref, 1, 32, integer_packer<uint16_t>(0, 1007)));
}
if (cells_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(cells_to_add_mod_list, bref, 1, 32));
}
if (black_cells_to_rem_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(black_cells_to_rem_list, bref, 1, 8, integer_packer<uint8_t>(1, 8)));
}
if (black_cells_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(black_cells_to_add_mod_list, bref, 1, 8));
}
if (white_cells_to_rem_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(white_cells_to_rem_list, bref, 1, 8, integer_packer<uint8_t>(1, 8)));
}
if (white_cells_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(white_cells_to_add_mod_list, bref, 1, 8));
}
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(freq_band_ind_nr_present, 1));
HANDLE_CODE(bref.unpack(meas_cycle_scell_present, 1));
if (freq_band_ind_nr_present) {
HANDLE_CODE(unpack_integer(freq_band_ind_nr, bref, (uint16_t)1u, (uint16_t)1024u));
}
if (meas_cycle_scell_present) {
HANDLE_CODE(meas_cycle_scell.unpack(bref));
}
}
}
return SRSASN_SUCCESS;
}
void meas_obj_nr_s::to_json(json_writer& j) const
{
j.start_obj();
if (ssb_freq_present) {
j.write_int("ssbFrequency", ssb_freq);
}
if (ssb_subcarrier_spacing_present) {
j.write_str("ssbSubcarrierSpacing", ssb_subcarrier_spacing.to_string());
}
if (smtc1_present) {
j.write_fieldname("smtc1");
smtc1.to_json(j);
}
if (smtc2_present) {
j.write_fieldname("smtc2");
smtc2.to_json(j);
}
if (ref_freq_csi_rs_present) {
j.write_int("refFreqCSI-RS", ref_freq_csi_rs);
}
j.write_fieldname("referenceSignalConfig");
ref_sig_cfg.to_json(j);
if (abs_thresh_ss_blocks_consolidation_present) {
j.write_fieldname("absThreshSS-BlocksConsolidation");
abs_thresh_ss_blocks_consolidation.to_json(j);
}
if (abs_thresh_csi_rs_consolidation_present) {
j.write_fieldname("absThreshCSI-RS-Consolidation");
abs_thresh_csi_rs_consolidation.to_json(j);
}
if (nrof_ss_blocks_to_average_present) {
j.write_int("nrofSS-BlocksToAverage", nrof_ss_blocks_to_average);
}
if (nrof_csi_rs_res_to_average_present) {
j.write_int("nrofCSI-RS-ResourcesToAverage", nrof_csi_rs_res_to_average);
}
j.write_int("quantityConfigIndex", quant_cfg_idx);
j.write_fieldname("offsetMO");
offset_mo.to_json(j);
if (cells_to_rem_list_present) {
j.start_array("cellsToRemoveList");
for (const auto& e1 : cells_to_rem_list) {
j.write_int(e1);
}
j.end_array();
}
if (cells_to_add_mod_list_present) {
j.start_array("cellsToAddModList");
for (const auto& e1 : cells_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (black_cells_to_rem_list_present) {
j.start_array("blackCellsToRemoveList");
for (const auto& e1 : black_cells_to_rem_list) {
j.write_int(e1);
}
j.end_array();
}
if (black_cells_to_add_mod_list_present) {
j.start_array("blackCellsToAddModList");
for (const auto& e1 : black_cells_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (white_cells_to_rem_list_present) {
j.start_array("whiteCellsToRemoveList");
for (const auto& e1 : white_cells_to_rem_list) {
j.write_int(e1);
}
j.end_array();
}
if (white_cells_to_add_mod_list_present) {
j.start_array("whiteCellsToAddModList");
for (const auto& e1 : white_cells_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (ext) {
if (freq_band_ind_nr_present) {
j.write_int("freqBandIndicatorNR", freq_band_ind_nr);
}
if (meas_cycle_scell_present) {
j.write_str("measCycleSCell", meas_cycle_scell.to_string());
}
}
j.end_obj();
}
const char* meas_obj_nr_s::meas_cycle_scell_opts::to_string() const
{
static const char* options[] = {"sf160", "sf256", "sf320", "sf512", "sf640", "sf1024", "sf1280"};
return convert_enum_idx(options, 7, value, "meas_obj_nr_s::meas_cycle_scell_e_");
}
uint16_t meas_obj_nr_s::meas_cycle_scell_opts::to_number() const
{
static const uint16_t options[] = {160, 256, 320, 512, 640, 1024, 1280};
return map_enum_number(options, 7, value, "meas_obj_nr_s::meas_cycle_scell_e_");
}
// OverheatingAssistanceConfig ::= SEQUENCE
SRSASN_CODE overheat_assist_cfg_s::pack(bit_ref& bref) const
{
HANDLE_CODE(overheat_ind_prohibit_timer.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE overheat_assist_cfg_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(overheat_ind_prohibit_timer.unpack(bref));
return SRSASN_SUCCESS;
}
void overheat_assist_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("overheatingIndicationProhibitTimer", overheat_ind_prohibit_timer.to_string());
j.end_obj();
}
const char* overheat_assist_cfg_s::overheat_ind_prohibit_timer_opts::to_string() const
{
static const char* options[] = {"s0",
"s0dot5",
"s1",
"s2",
"s5",
"s10",
"s20",
"s30",
"s60",
"s90",
"s120",
"s300",
"s600",
"spare3",
"spare2",
"spare1"};
return convert_enum_idx(options, 16, value, "overheat_assist_cfg_s::overheat_ind_prohibit_timer_e_");
}
float overheat_assist_cfg_s::overheat_ind_prohibit_timer_opts::to_number() const
{
static const float options[] = {0.0, 0.5, 1.0, 2.0, 5.0, 10.0, 20.0, 30.0, 60.0, 90.0, 120.0, 300.0, 600.0};
return map_enum_number(options, 13, value, "overheat_assist_cfg_s::overheat_ind_prohibit_timer_e_");
}
const char* overheat_assist_cfg_s::overheat_ind_prohibit_timer_opts::to_number_string() const
{
static const char* options[] = {"0", "0.5", "1", "2", "5", "10", "20", "30", "60", "90", "120", "300", "600"};
return convert_enum_idx(options, 16, value, "overheat_assist_cfg_s::overheat_ind_prohibit_timer_e_");
}
// PLMN-RAN-AreaCell ::= SEQUENCE
SRSASN_CODE plmn_ran_area_cell_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(plmn_id_present, 1));
if (plmn_id_present) {
HANDLE_CODE(plmn_id.pack(bref));
}
HANDLE_CODE(pack_dyn_seq_of(bref, ran_area_cells, 1, 32));
return SRSASN_SUCCESS;
}
SRSASN_CODE plmn_ran_area_cell_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(plmn_id_present, 1));
if (plmn_id_present) {
HANDLE_CODE(plmn_id.unpack(bref));
}
HANDLE_CODE(unpack_dyn_seq_of(ran_area_cells, bref, 1, 32));
return SRSASN_SUCCESS;
}
void plmn_ran_area_cell_s::to_json(json_writer& j) const
{
j.start_obj();
if (plmn_id_present) {
j.write_fieldname("plmn-Identity");
plmn_id.to_json(j);
}
j.start_array("ran-AreaCells");
for (const auto& e1 : ran_area_cells) {
j.write_str(e1.to_string());
}
j.end_array();
j.end_obj();
}
// PLMN-RAN-AreaConfig ::= SEQUENCE
SRSASN_CODE plmn_ran_area_cfg_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(plmn_id_present, 1));
if (plmn_id_present) {
HANDLE_CODE(plmn_id.pack(bref));
}
HANDLE_CODE(pack_dyn_seq_of(bref, ran_area, 1, 16));
return SRSASN_SUCCESS;
}
SRSASN_CODE plmn_ran_area_cfg_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(plmn_id_present, 1));
if (plmn_id_present) {
HANDLE_CODE(plmn_id.unpack(bref));
}
HANDLE_CODE(unpack_dyn_seq_of(ran_area, bref, 1, 16));
return SRSASN_SUCCESS;
}
void plmn_ran_area_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (plmn_id_present) {
j.write_fieldname("plmn-Identity");
plmn_id.to_json(j);
}
j.start_array("ran-Area");
for (const auto& e1 : ran_area) {
e1.to_json(j);
}
j.end_array();
j.end_obj();
}
// QuantityConfigRS ::= SEQUENCE
SRSASN_CODE quant_cfg_rs_s::pack(bit_ref& bref) const
{
HANDLE_CODE(ssb_filt_cfg.pack(bref));
HANDLE_CODE(csi_rs_filt_cfg.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE quant_cfg_rs_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(ssb_filt_cfg.unpack(bref));
HANDLE_CODE(csi_rs_filt_cfg.unpack(bref));
return SRSASN_SUCCESS;
}
void quant_cfg_rs_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("ssb-FilterConfig");
ssb_filt_cfg.to_json(j);
j.write_fieldname("csi-RS-FilterConfig");
csi_rs_filt_cfg.to_json(j);
j.end_obj();
}
// ReportConfigInterRAT ::= SEQUENCE
SRSASN_CODE report_cfg_inter_rat_s::pack(bit_ref& bref) const
{
HANDLE_CODE(report_type.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE report_cfg_inter_rat_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(report_type.unpack(bref));
return SRSASN_SUCCESS;
}
void report_cfg_inter_rat_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("reportType");
report_type.to_json(j);
j.end_obj();
}
void report_cfg_inter_rat_s::report_type_c_::destroy_()
{
switch (type_) {
case types::periodical:
c.destroy<periodical_report_cfg_inter_rat_s>();
break;
case types::event_triggered:
c.destroy<event_trigger_cfg_inter_rat_s>();
break;
case types::report_cgi:
c.destroy<report_cgi_eutra_s>();
break;
case types::report_sftd:
c.destroy<report_sftd_eutra_s>();
break;
default:
break;
}
}
void report_cfg_inter_rat_s::report_type_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::periodical:
c.init<periodical_report_cfg_inter_rat_s>();
break;
case types::event_triggered:
c.init<event_trigger_cfg_inter_rat_s>();
break;
case types::report_cgi:
c.init<report_cgi_eutra_s>();
break;
case types::report_sftd:
c.init<report_sftd_eutra_s>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "report_cfg_inter_rat_s::report_type_c_");
}
}
report_cfg_inter_rat_s::report_type_c_::report_type_c_(const report_cfg_inter_rat_s::report_type_c_& other)
{
type_ = other.type();
switch (type_) {
case types::periodical:
c.init(other.c.get<periodical_report_cfg_inter_rat_s>());
break;
case types::event_triggered:
c.init(other.c.get<event_trigger_cfg_inter_rat_s>());
break;
case types::report_cgi:
c.init(other.c.get<report_cgi_eutra_s>());
break;
case types::report_sftd:
c.init(other.c.get<report_sftd_eutra_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "report_cfg_inter_rat_s::report_type_c_");
}
}
report_cfg_inter_rat_s::report_type_c_&
report_cfg_inter_rat_s::report_type_c_::operator=(const report_cfg_inter_rat_s::report_type_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::periodical:
c.set(other.c.get<periodical_report_cfg_inter_rat_s>());
break;
case types::event_triggered:
c.set(other.c.get<event_trigger_cfg_inter_rat_s>());
break;
case types::report_cgi:
c.set(other.c.get<report_cgi_eutra_s>());
break;
case types::report_sftd:
c.set(other.c.get<report_sftd_eutra_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "report_cfg_inter_rat_s::report_type_c_");
}
return *this;
}
periodical_report_cfg_inter_rat_s& report_cfg_inter_rat_s::report_type_c_::set_periodical()
{
set(types::periodical);
return c.get<periodical_report_cfg_inter_rat_s>();
}
event_trigger_cfg_inter_rat_s& report_cfg_inter_rat_s::report_type_c_::set_event_triggered()
{
set(types::event_triggered);
return c.get<event_trigger_cfg_inter_rat_s>();
}
report_cgi_eutra_s& report_cfg_inter_rat_s::report_type_c_::set_report_cgi()
{
set(types::report_cgi);
return c.get<report_cgi_eutra_s>();
}
report_sftd_eutra_s& report_cfg_inter_rat_s::report_type_c_::set_report_sftd()
{
set(types::report_sftd);
return c.get<report_sftd_eutra_s>();
}
void report_cfg_inter_rat_s::report_type_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::periodical:
j.write_fieldname("periodical");
c.get<periodical_report_cfg_inter_rat_s>().to_json(j);
break;
case types::event_triggered:
j.write_fieldname("eventTriggered");
c.get<event_trigger_cfg_inter_rat_s>().to_json(j);
break;
case types::report_cgi:
j.write_fieldname("reportCGI");
c.get<report_cgi_eutra_s>().to_json(j);
break;
case types::report_sftd:
j.write_fieldname("reportSFTD");
c.get<report_sftd_eutra_s>().to_json(j);
break;
default:
log_invalid_choice_id(type_, "report_cfg_inter_rat_s::report_type_c_");
}
j.end_obj();
}
SRSASN_CODE report_cfg_inter_rat_s::report_type_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::periodical:
HANDLE_CODE(c.get<periodical_report_cfg_inter_rat_s>().pack(bref));
break;
case types::event_triggered:
HANDLE_CODE(c.get<event_trigger_cfg_inter_rat_s>().pack(bref));
break;
case types::report_cgi:
HANDLE_CODE(c.get<report_cgi_eutra_s>().pack(bref));
break;
case types::report_sftd: {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(c.get<report_sftd_eutra_s>().pack(bref));
} break;
default:
log_invalid_choice_id(type_, "report_cfg_inter_rat_s::report_type_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE report_cfg_inter_rat_s::report_type_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::periodical:
HANDLE_CODE(c.get<periodical_report_cfg_inter_rat_s>().unpack(bref));
break;
case types::event_triggered:
HANDLE_CODE(c.get<event_trigger_cfg_inter_rat_s>().unpack(bref));
break;
case types::report_cgi:
HANDLE_CODE(c.get<report_cgi_eutra_s>().unpack(bref));
break;
case types::report_sftd: {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(c.get<report_sftd_eutra_s>().unpack(bref));
} break;
default:
log_invalid_choice_id(type_, "report_cfg_inter_rat_s::report_type_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* report_cfg_inter_rat_s::report_type_c_::types_opts::to_string() const
{
static const char* options[] = {"periodical", "eventTriggered", "reportCGI", "reportSFTD"};
return convert_enum_idx(options, 4, value, "report_cfg_inter_rat_s::report_type_c_::types");
}
// ReportConfigNR ::= SEQUENCE
SRSASN_CODE report_cfg_nr_s::pack(bit_ref& bref) const
{
HANDLE_CODE(report_type.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE report_cfg_nr_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(report_type.unpack(bref));
return SRSASN_SUCCESS;
}
void report_cfg_nr_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("reportType");
report_type.to_json(j);
j.end_obj();
}
void report_cfg_nr_s::report_type_c_::destroy_()
{
switch (type_) {
case types::periodical:
c.destroy<periodical_report_cfg_s>();
break;
case types::event_triggered:
c.destroy<event_trigger_cfg_s>();
break;
case types::report_cgi:
c.destroy<report_cgi_s>();
break;
case types::report_sftd:
c.destroy<report_sftd_nr_s>();
break;
default:
break;
}
}
void report_cfg_nr_s::report_type_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::periodical:
c.init<periodical_report_cfg_s>();
break;
case types::event_triggered:
c.init<event_trigger_cfg_s>();
break;
case types::report_cgi:
c.init<report_cgi_s>();
break;
case types::report_sftd:
c.init<report_sftd_nr_s>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "report_cfg_nr_s::report_type_c_");
}
}
report_cfg_nr_s::report_type_c_::report_type_c_(const report_cfg_nr_s::report_type_c_& other)
{
type_ = other.type();
switch (type_) {
case types::periodical:
c.init(other.c.get<periodical_report_cfg_s>());
break;
case types::event_triggered:
c.init(other.c.get<event_trigger_cfg_s>());
break;
case types::report_cgi:
c.init(other.c.get<report_cgi_s>());
break;
case types::report_sftd:
c.init(other.c.get<report_sftd_nr_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "report_cfg_nr_s::report_type_c_");
}
}
report_cfg_nr_s::report_type_c_&
report_cfg_nr_s::report_type_c_::operator=(const report_cfg_nr_s::report_type_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::periodical:
c.set(other.c.get<periodical_report_cfg_s>());
break;
case types::event_triggered:
c.set(other.c.get<event_trigger_cfg_s>());
break;
case types::report_cgi:
c.set(other.c.get<report_cgi_s>());
break;
case types::report_sftd:
c.set(other.c.get<report_sftd_nr_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "report_cfg_nr_s::report_type_c_");
}
return *this;
}
periodical_report_cfg_s& report_cfg_nr_s::report_type_c_::set_periodical()
{
set(types::periodical);
return c.get<periodical_report_cfg_s>();
}
event_trigger_cfg_s& report_cfg_nr_s::report_type_c_::set_event_triggered()
{
set(types::event_triggered);
return c.get<event_trigger_cfg_s>();
}
report_cgi_s& report_cfg_nr_s::report_type_c_::set_report_cgi()
{
set(types::report_cgi);
return c.get<report_cgi_s>();
}
report_sftd_nr_s& report_cfg_nr_s::report_type_c_::set_report_sftd()
{
set(types::report_sftd);
return c.get<report_sftd_nr_s>();
}
void report_cfg_nr_s::report_type_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::periodical:
j.write_fieldname("periodical");
c.get<periodical_report_cfg_s>().to_json(j);
break;
case types::event_triggered:
j.write_fieldname("eventTriggered");
c.get<event_trigger_cfg_s>().to_json(j);
break;
case types::report_cgi:
j.write_fieldname("reportCGI");
c.get<report_cgi_s>().to_json(j);
break;
case types::report_sftd:
j.write_fieldname("reportSFTD");
c.get<report_sftd_nr_s>().to_json(j);
break;
default:
log_invalid_choice_id(type_, "report_cfg_nr_s::report_type_c_");
}
j.end_obj();
}
SRSASN_CODE report_cfg_nr_s::report_type_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::periodical:
HANDLE_CODE(c.get<periodical_report_cfg_s>().pack(bref));
break;
case types::event_triggered:
HANDLE_CODE(c.get<event_trigger_cfg_s>().pack(bref));
break;
case types::report_cgi: {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(c.get<report_cgi_s>().pack(bref));
} break;
case types::report_sftd: {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(c.get<report_sftd_nr_s>().pack(bref));
} break;
default:
log_invalid_choice_id(type_, "report_cfg_nr_s::report_type_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE report_cfg_nr_s::report_type_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::periodical:
HANDLE_CODE(c.get<periodical_report_cfg_s>().unpack(bref));
break;
case types::event_triggered:
HANDLE_CODE(c.get<event_trigger_cfg_s>().unpack(bref));
break;
case types::report_cgi: {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(c.get<report_cgi_s>().unpack(bref));
} break;
case types::report_sftd: {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(c.get<report_sftd_nr_s>().unpack(bref));
} break;
default:
log_invalid_choice_id(type_, "report_cfg_nr_s::report_type_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* report_cfg_nr_s::report_type_c_::types_opts::to_string() const
{
static const char* options[] = {"periodical", "eventTriggered", "reportCGI", "reportSFTD"};
return convert_enum_idx(options, 4, value, "report_cfg_nr_s::report_type_c_::types");
}
// FreqPriorityEUTRA ::= SEQUENCE
SRSASN_CODE freq_prio_eutra_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(cell_resel_sub_prio_present, 1));
HANDLE_CODE(pack_integer(bref, carrier_freq, (uint32_t)0u, (uint32_t)262143u));
HANDLE_CODE(pack_integer(bref, cell_resel_prio, (uint8_t)0u, (uint8_t)7u));
if (cell_resel_sub_prio_present) {
HANDLE_CODE(cell_resel_sub_prio.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE freq_prio_eutra_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(cell_resel_sub_prio_present, 1));
HANDLE_CODE(unpack_integer(carrier_freq, bref, (uint32_t)0u, (uint32_t)262143u));
HANDLE_CODE(unpack_integer(cell_resel_prio, bref, (uint8_t)0u, (uint8_t)7u));
if (cell_resel_sub_prio_present) {
HANDLE_CODE(cell_resel_sub_prio.unpack(bref));
}
return SRSASN_SUCCESS;
}
void freq_prio_eutra_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("carrierFreq", carrier_freq);
j.write_int("cellReselectionPriority", cell_resel_prio);
if (cell_resel_sub_prio_present) {
j.write_str("cellReselectionSubPriority", cell_resel_sub_prio.to_string());
}
j.end_obj();
}
// FreqPriorityNR ::= SEQUENCE
SRSASN_CODE freq_prio_nr_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(cell_resel_sub_prio_present, 1));
HANDLE_CODE(pack_integer(bref, carrier_freq, (uint32_t)0u, (uint32_t)3279165u));
HANDLE_CODE(pack_integer(bref, cell_resel_prio, (uint8_t)0u, (uint8_t)7u));
if (cell_resel_sub_prio_present) {
HANDLE_CODE(cell_resel_sub_prio.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE freq_prio_nr_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(cell_resel_sub_prio_present, 1));
HANDLE_CODE(unpack_integer(carrier_freq, bref, (uint32_t)0u, (uint32_t)3279165u));
HANDLE_CODE(unpack_integer(cell_resel_prio, bref, (uint8_t)0u, (uint8_t)7u));
if (cell_resel_sub_prio_present) {
HANDLE_CODE(cell_resel_sub_prio.unpack(bref));
}
return SRSASN_SUCCESS;
}
void freq_prio_nr_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("carrierFreq", carrier_freq);
j.write_int("cellReselectionPriority", cell_resel_prio);
if (cell_resel_sub_prio_present) {
j.write_str("cellReselectionSubPriority", cell_resel_sub_prio.to_string());
}
j.end_obj();
}
// GapConfig ::= SEQUENCE
SRSASN_CODE gap_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(pack_integer(bref, gap_offset, (uint8_t)0u, (uint8_t)159u));
HANDLE_CODE(mgl.pack(bref));
HANDLE_CODE(mgrp.pack(bref));
HANDLE_CODE(mgta.pack(bref));
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= ref_serv_cell_ind_present;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(ref_serv_cell_ind_present, 1));
if (ref_serv_cell_ind_present) {
HANDLE_CODE(ref_serv_cell_ind.pack(bref));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE gap_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(unpack_integer(gap_offset, bref, (uint8_t)0u, (uint8_t)159u));
HANDLE_CODE(mgl.unpack(bref));
HANDLE_CODE(mgrp.unpack(bref));
HANDLE_CODE(mgta.unpack(bref));
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(ref_serv_cell_ind_present, 1));
if (ref_serv_cell_ind_present) {
HANDLE_CODE(ref_serv_cell_ind.unpack(bref));
}
}
}
return SRSASN_SUCCESS;
}
void gap_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("gapOffset", gap_offset);
j.write_str("mgl", mgl.to_string());
j.write_str("mgrp", mgrp.to_string());
j.write_str("mgta", mgta.to_string());
if (ext) {
if (ref_serv_cell_ind_present) {
j.write_str("refServCellIndicator", ref_serv_cell_ind.to_string());
}
}
j.end_obj();
}
const char* gap_cfg_s::mgl_opts::to_string() const
{
static const char* options[] = {"ms1dot5", "ms3", "ms3dot5", "ms4", "ms5dot5", "ms6"};
return convert_enum_idx(options, 6, value, "gap_cfg_s::mgl_e_");
}
float gap_cfg_s::mgl_opts::to_number() const
{
static const float options[] = {1.5, 3.0, 3.5, 4.0, 5.5, 6.0};
return map_enum_number(options, 6, value, "gap_cfg_s::mgl_e_");
}
const char* gap_cfg_s::mgl_opts::to_number_string() const
{
static const char* options[] = {"1.5", "3", "3.5", "4", "5.5", "6"};
return convert_enum_idx(options, 6, value, "gap_cfg_s::mgl_e_");
}
const char* gap_cfg_s::mgrp_opts::to_string() const
{
static const char* options[] = {"ms20", "ms40", "ms80", "ms160"};
return convert_enum_idx(options, 4, value, "gap_cfg_s::mgrp_e_");
}
uint8_t gap_cfg_s::mgrp_opts::to_number() const
{
static const uint8_t options[] = {20, 40, 80, 160};
return map_enum_number(options, 4, value, "gap_cfg_s::mgrp_e_");
}
const char* gap_cfg_s::mgta_opts::to_string() const
{
static const char* options[] = {"ms0", "ms0dot25", "ms0dot5"};
return convert_enum_idx(options, 3, value, "gap_cfg_s::mgta_e_");
}
float gap_cfg_s::mgta_opts::to_number() const
{
static const float options[] = {0.0, 0.25, 0.5};
return map_enum_number(options, 3, value, "gap_cfg_s::mgta_e_");
}
const char* gap_cfg_s::mgta_opts::to_number_string() const
{
static const char* options[] = {"0", "0.25", "0.5"};
return convert_enum_idx(options, 3, value, "gap_cfg_s::mgta_e_");
}
const char* gap_cfg_s::ref_serv_cell_ind_opts::to_string() const
{
static const char* options[] = {"pCell", "pSCell", "mcg-FR2"};
return convert_enum_idx(options, 3, value, "gap_cfg_s::ref_serv_cell_ind_e_");
}
uint8_t gap_cfg_s::ref_serv_cell_ind_opts::to_number() const
{
if (value == mcg_fr2) {
return 2;
}
invalid_enum_number(value, "gap_cfg_s::ref_serv_cell_ind_e_");
return 0;
}
// MeasGapSharingScheme ::= ENUMERATED
const char* meas_gap_sharing_scheme_opts::to_string() const
{
static const char* options[] = {"scheme00", "scheme01", "scheme10", "scheme11"};
return convert_enum_idx(options, 4, value, "meas_gap_sharing_scheme_e");
}
float meas_gap_sharing_scheme_opts::to_number() const
{
static const float options[] = {0.0, 0.1, 1.0, 1.1};
return map_enum_number(options, 4, value, "meas_gap_sharing_scheme_e");
}
const char* meas_gap_sharing_scheme_opts::to_number_string() const
{
static const char* options[] = {"0.0", "0.1", "1.0", "1.1"};
return convert_enum_idx(options, 4, value, "meas_gap_sharing_scheme_e");
}
// MeasIdToAddMod ::= SEQUENCE
SRSASN_CODE meas_id_to_add_mod_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, meas_id, (uint8_t)1u, (uint8_t)64u));
HANDLE_CODE(pack_integer(bref, meas_obj_id, (uint8_t)1u, (uint8_t)64u));
HANDLE_CODE(pack_integer(bref, report_cfg_id, (uint8_t)1u, (uint8_t)64u));
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_id_to_add_mod_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(meas_id, bref, (uint8_t)1u, (uint8_t)64u));
HANDLE_CODE(unpack_integer(meas_obj_id, bref, (uint8_t)1u, (uint8_t)64u));
HANDLE_CODE(unpack_integer(report_cfg_id, bref, (uint8_t)1u, (uint8_t)64u));
return SRSASN_SUCCESS;
}
void meas_id_to_add_mod_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("measId", meas_id);
j.write_int("measObjectId", meas_obj_id);
j.write_int("reportConfigId", report_cfg_id);
j.end_obj();
}
// MeasObjectToAddMod ::= SEQUENCE
SRSASN_CODE meas_obj_to_add_mod_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, meas_obj_id, (uint8_t)1u, (uint8_t)64u));
HANDLE_CODE(meas_obj.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_obj_to_add_mod_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(meas_obj_id, bref, (uint8_t)1u, (uint8_t)64u));
HANDLE_CODE(meas_obj.unpack(bref));
return SRSASN_SUCCESS;
}
void meas_obj_to_add_mod_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("measObjectId", meas_obj_id);
j.write_fieldname("measObject");
meas_obj.to_json(j);
j.end_obj();
}
void meas_obj_to_add_mod_s::meas_obj_c_::destroy_()
{
switch (type_) {
case types::meas_obj_nr:
c.destroy<meas_obj_nr_s>();
break;
case types::meas_obj_eutra:
c.destroy<meas_obj_eutra_s>();
break;
default:
break;
}
}
void meas_obj_to_add_mod_s::meas_obj_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::meas_obj_nr:
c.init<meas_obj_nr_s>();
break;
case types::meas_obj_eutra:
c.init<meas_obj_eutra_s>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "meas_obj_to_add_mod_s::meas_obj_c_");
}
}
meas_obj_to_add_mod_s::meas_obj_c_::meas_obj_c_(const meas_obj_to_add_mod_s::meas_obj_c_& other)
{
type_ = other.type();
switch (type_) {
case types::meas_obj_nr:
c.init(other.c.get<meas_obj_nr_s>());
break;
case types::meas_obj_eutra:
c.init(other.c.get<meas_obj_eutra_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "meas_obj_to_add_mod_s::meas_obj_c_");
}
}
meas_obj_to_add_mod_s::meas_obj_c_&
meas_obj_to_add_mod_s::meas_obj_c_::operator=(const meas_obj_to_add_mod_s::meas_obj_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::meas_obj_nr:
c.set(other.c.get<meas_obj_nr_s>());
break;
case types::meas_obj_eutra:
c.set(other.c.get<meas_obj_eutra_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "meas_obj_to_add_mod_s::meas_obj_c_");
}
return *this;
}
meas_obj_nr_s& meas_obj_to_add_mod_s::meas_obj_c_::set_meas_obj_nr()
{
set(types::meas_obj_nr);
return c.get<meas_obj_nr_s>();
}
meas_obj_eutra_s& meas_obj_to_add_mod_s::meas_obj_c_::set_meas_obj_eutra()
{
set(types::meas_obj_eutra);
return c.get<meas_obj_eutra_s>();
}
void meas_obj_to_add_mod_s::meas_obj_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::meas_obj_nr:
j.write_fieldname("measObjectNR");
c.get<meas_obj_nr_s>().to_json(j);
break;
case types::meas_obj_eutra:
j.write_fieldname("measObjectEUTRA");
c.get<meas_obj_eutra_s>().to_json(j);
break;
default:
log_invalid_choice_id(type_, "meas_obj_to_add_mod_s::meas_obj_c_");
}
j.end_obj();
}
SRSASN_CODE meas_obj_to_add_mod_s::meas_obj_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::meas_obj_nr:
HANDLE_CODE(c.get<meas_obj_nr_s>().pack(bref));
break;
case types::meas_obj_eutra: {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(c.get<meas_obj_eutra_s>().pack(bref));
} break;
default:
log_invalid_choice_id(type_, "meas_obj_to_add_mod_s::meas_obj_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_obj_to_add_mod_s::meas_obj_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::meas_obj_nr:
HANDLE_CODE(c.get<meas_obj_nr_s>().unpack(bref));
break;
case types::meas_obj_eutra: {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(c.get<meas_obj_eutra_s>().unpack(bref));
} break;
default:
log_invalid_choice_id(type_, "meas_obj_to_add_mod_s::meas_obj_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* meas_obj_to_add_mod_s::meas_obj_c_::types_opts::to_string() const
{
static const char* options[] = {"measObjectNR", "measObjectEUTRA"};
return convert_enum_idx(options, 2, value, "meas_obj_to_add_mod_s::meas_obj_c_::types");
}
// OtherConfig-v1540 ::= SEQUENCE
SRSASN_CODE other_cfg_v1540_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(overheat_assist_cfg_present, 1));
if (overheat_assist_cfg_present) {
HANDLE_CODE(overheat_assist_cfg.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE other_cfg_v1540_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(overheat_assist_cfg_present, 1));
if (overheat_assist_cfg_present) {
HANDLE_CODE(overheat_assist_cfg.unpack(bref));
}
return SRSASN_SUCCESS;
}
void other_cfg_v1540_s::to_json(json_writer& j) const
{
j.start_obj();
if (overheat_assist_cfg_present) {
j.write_fieldname("overheatingAssistanceConfig");
overheat_assist_cfg.to_json(j);
}
j.end_obj();
}
// QuantityConfigNR ::= SEQUENCE
SRSASN_CODE quant_cfg_nr_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(quant_cfg_rs_idx_present, 1));
HANDLE_CODE(quant_cfg_cell.pack(bref));
if (quant_cfg_rs_idx_present) {
HANDLE_CODE(quant_cfg_rs_idx.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE quant_cfg_nr_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(quant_cfg_rs_idx_present, 1));
HANDLE_CODE(quant_cfg_cell.unpack(bref));
if (quant_cfg_rs_idx_present) {
HANDLE_CODE(quant_cfg_rs_idx.unpack(bref));
}
return SRSASN_SUCCESS;
}
void quant_cfg_nr_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("quantityConfigCell");
quant_cfg_cell.to_json(j);
if (quant_cfg_rs_idx_present) {
j.write_fieldname("quantityConfigRS-Index");
quant_cfg_rs_idx.to_json(j);
}
j.end_obj();
}
// RAT-Type ::= ENUMERATED
const char* rat_type_opts::to_string() const
{
static const char* options[] = {"nr", "eutra-nr", "eutra", "spare1"};
return convert_enum_idx(options, 4, value, "rat_type_e");
}
// RRCReconfiguration-v1560-IEs ::= SEQUENCE
SRSASN_CODE rrc_recfg_v1560_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(mrdc_secondary_cell_group_cfg_present, 1));
HANDLE_CODE(bref.pack(radio_bearer_cfg2_present, 1));
HANDLE_CODE(bref.pack(sk_counter_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (mrdc_secondary_cell_group_cfg_present) {
HANDLE_CODE(mrdc_secondary_cell_group_cfg.pack(bref));
}
if (radio_bearer_cfg2_present) {
HANDLE_CODE(radio_bearer_cfg2.pack(bref));
}
if (sk_counter_present) {
HANDLE_CODE(pack_integer(bref, sk_counter, (uint32_t)0u, (uint32_t)65535u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_recfg_v1560_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(mrdc_secondary_cell_group_cfg_present, 1));
HANDLE_CODE(bref.unpack(radio_bearer_cfg2_present, 1));
HANDLE_CODE(bref.unpack(sk_counter_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (mrdc_secondary_cell_group_cfg_present) {
HANDLE_CODE(mrdc_secondary_cell_group_cfg.unpack(bref));
}
if (radio_bearer_cfg2_present) {
HANDLE_CODE(radio_bearer_cfg2.unpack(bref));
}
if (sk_counter_present) {
HANDLE_CODE(unpack_integer(sk_counter, bref, (uint32_t)0u, (uint32_t)65535u));
}
return SRSASN_SUCCESS;
}
void rrc_recfg_v1560_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (mrdc_secondary_cell_group_cfg_present) {
j.write_fieldname("mrdc-SecondaryCellGroupConfig");
mrdc_secondary_cell_group_cfg.to_json(j);
}
if (radio_bearer_cfg2_present) {
j.write_str("radioBearerConfig2", radio_bearer_cfg2.to_string());
}
if (sk_counter_present) {
j.write_int("sk-Counter", sk_counter);
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// ReportConfigToAddMod ::= SEQUENCE
SRSASN_CODE report_cfg_to_add_mod_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, report_cfg_id, (uint8_t)1u, (uint8_t)64u));
HANDLE_CODE(report_cfg.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE report_cfg_to_add_mod_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(report_cfg_id, bref, (uint8_t)1u, (uint8_t)64u));
HANDLE_CODE(report_cfg.unpack(bref));
return SRSASN_SUCCESS;
}
void report_cfg_to_add_mod_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("reportConfigId", report_cfg_id);
j.write_fieldname("reportConfig");
report_cfg.to_json(j);
j.end_obj();
}
void report_cfg_to_add_mod_s::report_cfg_c_::destroy_()
{
switch (type_) {
case types::report_cfg_nr:
c.destroy<report_cfg_nr_s>();
break;
case types::report_cfg_inter_rat:
c.destroy<report_cfg_inter_rat_s>();
break;
default:
break;
}
}
void report_cfg_to_add_mod_s::report_cfg_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::report_cfg_nr:
c.init<report_cfg_nr_s>();
break;
case types::report_cfg_inter_rat:
c.init<report_cfg_inter_rat_s>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "report_cfg_to_add_mod_s::report_cfg_c_");
}
}
report_cfg_to_add_mod_s::report_cfg_c_::report_cfg_c_(const report_cfg_to_add_mod_s::report_cfg_c_& other)
{
type_ = other.type();
switch (type_) {
case types::report_cfg_nr:
c.init(other.c.get<report_cfg_nr_s>());
break;
case types::report_cfg_inter_rat:
c.init(other.c.get<report_cfg_inter_rat_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "report_cfg_to_add_mod_s::report_cfg_c_");
}
}
report_cfg_to_add_mod_s::report_cfg_c_&
report_cfg_to_add_mod_s::report_cfg_c_::operator=(const report_cfg_to_add_mod_s::report_cfg_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::report_cfg_nr:
c.set(other.c.get<report_cfg_nr_s>());
break;
case types::report_cfg_inter_rat:
c.set(other.c.get<report_cfg_inter_rat_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "report_cfg_to_add_mod_s::report_cfg_c_");
}
return *this;
}
report_cfg_nr_s& report_cfg_to_add_mod_s::report_cfg_c_::set_report_cfg_nr()
{
set(types::report_cfg_nr);
return c.get<report_cfg_nr_s>();
}
report_cfg_inter_rat_s& report_cfg_to_add_mod_s::report_cfg_c_::set_report_cfg_inter_rat()
{
set(types::report_cfg_inter_rat);
return c.get<report_cfg_inter_rat_s>();
}
void report_cfg_to_add_mod_s::report_cfg_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::report_cfg_nr:
j.write_fieldname("reportConfigNR");
c.get<report_cfg_nr_s>().to_json(j);
break;
case types::report_cfg_inter_rat:
j.write_fieldname("reportConfigInterRAT");
c.get<report_cfg_inter_rat_s>().to_json(j);
break;
default:
log_invalid_choice_id(type_, "report_cfg_to_add_mod_s::report_cfg_c_");
}
j.end_obj();
}
SRSASN_CODE report_cfg_to_add_mod_s::report_cfg_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::report_cfg_nr:
HANDLE_CODE(c.get<report_cfg_nr_s>().pack(bref));
break;
case types::report_cfg_inter_rat: {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(c.get<report_cfg_inter_rat_s>().pack(bref));
} break;
default:
log_invalid_choice_id(type_, "report_cfg_to_add_mod_s::report_cfg_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE report_cfg_to_add_mod_s::report_cfg_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::report_cfg_nr:
HANDLE_CODE(c.get<report_cfg_nr_s>().unpack(bref));
break;
case types::report_cfg_inter_rat: {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(c.get<report_cfg_inter_rat_s>().unpack(bref));
} break;
default:
log_invalid_choice_id(type_, "report_cfg_to_add_mod_s::report_cfg_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* report_cfg_to_add_mod_s::report_cfg_c_::types_opts::to_string() const
{
static const char* options[] = {"reportConfigNR", "reportConfigInterRAT"};
return convert_enum_idx(options, 2, value, "report_cfg_to_add_mod_s::report_cfg_c_::types");
}
// CarrierInfoNR ::= SEQUENCE
SRSASN_CODE carrier_info_nr_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(smtc_present, 1));
HANDLE_CODE(pack_integer(bref, carrier_freq, (uint32_t)0u, (uint32_t)3279165u));
HANDLE_CODE(ssb_subcarrier_spacing.pack(bref));
if (smtc_present) {
HANDLE_CODE(smtc.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE carrier_info_nr_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(smtc_present, 1));
HANDLE_CODE(unpack_integer(carrier_freq, bref, (uint32_t)0u, (uint32_t)3279165u));
HANDLE_CODE(ssb_subcarrier_spacing.unpack(bref));
if (smtc_present) {
HANDLE_CODE(smtc.unpack(bref));
}
return SRSASN_SUCCESS;
}
void carrier_info_nr_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("carrierFreq", carrier_freq);
j.write_str("ssbSubcarrierSpacing", ssb_subcarrier_spacing.to_string());
if (smtc_present) {
j.write_fieldname("smtc");
smtc.to_json(j);
}
j.end_obj();
}
// DRB-CountMSB-Info ::= SEQUENCE
SRSASN_CODE drb_count_msb_info_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, drb_id, (uint8_t)1u, (uint8_t)32u));
HANDLE_CODE(pack_integer(bref, count_msb_ul, (uint32_t)0u, (uint32_t)33554431u));
HANDLE_CODE(pack_integer(bref, count_msb_dl, (uint32_t)0u, (uint32_t)33554431u));
return SRSASN_SUCCESS;
}
SRSASN_CODE drb_count_msb_info_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(drb_id, bref, (uint8_t)1u, (uint8_t)32u));
HANDLE_CODE(unpack_integer(count_msb_ul, bref, (uint32_t)0u, (uint32_t)33554431u));
HANDLE_CODE(unpack_integer(count_msb_dl, bref, (uint32_t)0u, (uint32_t)33554431u));
return SRSASN_SUCCESS;
}
void drb_count_msb_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("drb-Identity", drb_id);
j.write_int("countMSB-Uplink", count_msb_ul);
j.write_int("countMSB-Downlink", count_msb_dl);
j.end_obj();
}
// MasterKeyUpdate ::= SEQUENCE
SRSASN_CODE master_key_upd_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(nas_container_present, 1));
HANDLE_CODE(bref.pack(key_set_change_ind, 1));
HANDLE_CODE(pack_integer(bref, next_hop_chaining_count, (uint8_t)0u, (uint8_t)7u));
if (nas_container_present) {
HANDLE_CODE(nas_container.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE master_key_upd_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(nas_container_present, 1));
HANDLE_CODE(bref.unpack(key_set_change_ind, 1));
HANDLE_CODE(unpack_integer(next_hop_chaining_count, bref, (uint8_t)0u, (uint8_t)7u));
if (nas_container_present) {
HANDLE_CODE(nas_container.unpack(bref));
}
return SRSASN_SUCCESS;
}
void master_key_upd_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_bool("keySetChangeIndicator", key_set_change_ind);
j.write_int("nextHopChainingCount", next_hop_chaining_count);
if (nas_container_present) {
j.write_str("nas-Container", nas_container.to_string());
}
j.end_obj();
}
// MeasGapConfig ::= SEQUENCE
SRSASN_CODE meas_gap_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(gap_fr2_present, 1));
if (gap_fr2_present) {
HANDLE_CODE(gap_fr2.pack(bref));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= gap_fr1.is_present();
group_flags[0] |= gap_ue.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(gap_fr1.is_present(), 1));
HANDLE_CODE(bref.pack(gap_ue.is_present(), 1));
if (gap_fr1.is_present()) {
HANDLE_CODE(gap_fr1->pack(bref));
}
if (gap_ue.is_present()) {
HANDLE_CODE(gap_ue->pack(bref));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_gap_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(gap_fr2_present, 1));
if (gap_fr2_present) {
HANDLE_CODE(gap_fr2.unpack(bref));
}
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool gap_fr1_present;
HANDLE_CODE(bref.unpack(gap_fr1_present, 1));
gap_fr1.set_present(gap_fr1_present);
bool gap_ue_present;
HANDLE_CODE(bref.unpack(gap_ue_present, 1));
gap_ue.set_present(gap_ue_present);
if (gap_fr1.is_present()) {
HANDLE_CODE(gap_fr1->unpack(bref));
}
if (gap_ue.is_present()) {
HANDLE_CODE(gap_ue->unpack(bref));
}
}
}
return SRSASN_SUCCESS;
}
void meas_gap_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (gap_fr2_present) {
j.write_fieldname("gapFR2");
gap_fr2.to_json(j);
}
if (ext) {
if (gap_fr1.is_present()) {
j.write_fieldname("gapFR1");
gap_fr1->to_json(j);
}
if (gap_ue.is_present()) {
j.write_fieldname("gapUE");
gap_ue->to_json(j);
}
}
j.end_obj();
}
// MeasGapSharingConfig ::= SEQUENCE
SRSASN_CODE meas_gap_sharing_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(gap_sharing_fr2_present, 1));
if (gap_sharing_fr2_present) {
HANDLE_CODE(gap_sharing_fr2.pack(bref));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= gap_sharing_fr1.is_present();
group_flags[0] |= gap_sharing_ue.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(gap_sharing_fr1.is_present(), 1));
HANDLE_CODE(bref.pack(gap_sharing_ue.is_present(), 1));
if (gap_sharing_fr1.is_present()) {
HANDLE_CODE(gap_sharing_fr1->pack(bref));
}
if (gap_sharing_ue.is_present()) {
HANDLE_CODE(gap_sharing_ue->pack(bref));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_gap_sharing_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(gap_sharing_fr2_present, 1));
if (gap_sharing_fr2_present) {
HANDLE_CODE(gap_sharing_fr2.unpack(bref));
}
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool gap_sharing_fr1_present;
HANDLE_CODE(bref.unpack(gap_sharing_fr1_present, 1));
gap_sharing_fr1.set_present(gap_sharing_fr1_present);
bool gap_sharing_ue_present;
HANDLE_CODE(bref.unpack(gap_sharing_ue_present, 1));
gap_sharing_ue.set_present(gap_sharing_ue_present);
if (gap_sharing_fr1.is_present()) {
HANDLE_CODE(gap_sharing_fr1->unpack(bref));
}
if (gap_sharing_ue.is_present()) {
HANDLE_CODE(gap_sharing_ue->unpack(bref));
}
}
}
return SRSASN_SUCCESS;
}
void meas_gap_sharing_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (gap_sharing_fr2_present) {
j.write_fieldname("gapSharingFR2");
gap_sharing_fr2.to_json(j);
}
if (ext) {
if (gap_sharing_fr1.is_present()) {
j.write_fieldname("gapSharingFR1");
gap_sharing_fr1->to_json(j);
}
if (gap_sharing_ue.is_present()) {
j.write_fieldname("gapSharingUE");
gap_sharing_ue->to_json(j);
}
}
j.end_obj();
}
// OtherConfig ::= SEQUENCE
SRSASN_CODE other_cfg_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(delay_budget_report_cfg_present, 1));
if (delay_budget_report_cfg_present) {
HANDLE_CODE(delay_budget_report_cfg.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE other_cfg_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(delay_budget_report_cfg_present, 1));
if (delay_budget_report_cfg_present) {
HANDLE_CODE(delay_budget_report_cfg.unpack(bref));
}
return SRSASN_SUCCESS;
}
void other_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (delay_budget_report_cfg_present) {
j.write_fieldname("delayBudgetReportingConfig");
delay_budget_report_cfg.to_json(j);
}
j.end_obj();
}
void other_cfg_s::delay_budget_report_cfg_c_::set(types::options e)
{
type_ = e;
}
void other_cfg_s::delay_budget_report_cfg_c_::set_release()
{
set(types::release);
}
other_cfg_s::delay_budget_report_cfg_c_::setup_s_& other_cfg_s::delay_budget_report_cfg_c_::set_setup()
{
set(types::setup);
return c;
}
void other_cfg_s::delay_budget_report_cfg_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::release:
break;
case types::setup:
j.write_fieldname("setup");
j.start_obj();
j.write_str("delayBudgetReportingProhibitTimer", c.delay_budget_report_prohibit_timer.to_string());
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "other_cfg_s::delay_budget_report_cfg_c_");
}
j.end_obj();
}
SRSASN_CODE other_cfg_s::delay_budget_report_cfg_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::release:
break;
case types::setup:
HANDLE_CODE(c.delay_budget_report_prohibit_timer.pack(bref));
break;
default:
log_invalid_choice_id(type_, "other_cfg_s::delay_budget_report_cfg_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE other_cfg_s::delay_budget_report_cfg_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::release:
break;
case types::setup:
HANDLE_CODE(c.delay_budget_report_prohibit_timer.unpack(bref));
break;
default:
log_invalid_choice_id(type_, "other_cfg_s::delay_budget_report_cfg_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char*
other_cfg_s::delay_budget_report_cfg_c_::setup_s_::delay_budget_report_prohibit_timer_opts::to_string() const
{
static const char* options[] = {"s0", "s0dot4", "s0dot8", "s1dot6", "s3", "s6", "s12", "s30"};
return convert_enum_idx(
options, 8, value, "other_cfg_s::delay_budget_report_cfg_c_::setup_s_::delay_budget_report_prohibit_timer_e_");
}
float other_cfg_s::delay_budget_report_cfg_c_::setup_s_::delay_budget_report_prohibit_timer_opts::to_number() const
{
static const float options[] = {0.0, 0.4, 0.8, 1.6, 3.0, 6.0, 12.0, 30.0};
return map_enum_number(
options, 8, value, "other_cfg_s::delay_budget_report_cfg_c_::setup_s_::delay_budget_report_prohibit_timer_e_");
}
const char*
other_cfg_s::delay_budget_report_cfg_c_::setup_s_::delay_budget_report_prohibit_timer_opts::to_number_string() const
{
static const char* options[] = {"0", "0.4", "0.8", "1.6", "3", "6", "12", "30"};
return convert_enum_idx(
options, 8, value, "other_cfg_s::delay_budget_report_cfg_c_::setup_s_::delay_budget_report_prohibit_timer_e_");
}
const char* other_cfg_s::delay_budget_report_cfg_c_::types_opts::to_string() const
{
static const char* options[] = {"release", "setup"};
return convert_enum_idx(options, 2, value, "other_cfg_s::delay_budget_report_cfg_c_::types");
}
// PeriodicRNAU-TimerValue ::= ENUMERATED
const char* periodic_rnau_timer_value_opts::to_string() const
{
static const char* options[] = {"min5", "min10", "min20", "min30", "min60", "min120", "min360", "min720"};
return convert_enum_idx(options, 8, value, "periodic_rnau_timer_value_e");
}
uint16_t periodic_rnau_timer_value_opts::to_number() const
{
static const uint16_t options[] = {5, 10, 20, 30, 60, 120, 360, 720};
return map_enum_number(options, 8, value, "periodic_rnau_timer_value_e");
}
// QuantityConfig ::= SEQUENCE
SRSASN_CODE quant_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(quant_cfg_nr_list_present, 1));
if (quant_cfg_nr_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, quant_cfg_nr_list, 1, 2));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= quant_cfg_eutra.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(quant_cfg_eutra.is_present(), 1));
if (quant_cfg_eutra.is_present()) {
HANDLE_CODE(quant_cfg_eutra->pack(bref));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE quant_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(quant_cfg_nr_list_present, 1));
if (quant_cfg_nr_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(quant_cfg_nr_list, bref, 1, 2));
}
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool quant_cfg_eutra_present;
HANDLE_CODE(bref.unpack(quant_cfg_eutra_present, 1));
quant_cfg_eutra.set_present(quant_cfg_eutra_present);
if (quant_cfg_eutra.is_present()) {
HANDLE_CODE(quant_cfg_eutra->unpack(bref));
}
}
}
return SRSASN_SUCCESS;
}
void quant_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (quant_cfg_nr_list_present) {
j.start_array("quantityConfigNR-List");
for (const auto& e1 : quant_cfg_nr_list) {
e1.to_json(j);
}
j.end_array();
}
if (ext) {
if (quant_cfg_eutra.is_present()) {
j.write_fieldname("quantityConfigEUTRA");
quant_cfg_eutra->to_json(j);
}
}
j.end_obj();
}
// RAN-NotificationAreaInfo ::= CHOICE
void ran_notif_area_info_c::destroy_()
{
switch (type_) {
case types::cell_list:
c.destroy<plmn_ran_area_cell_list_l>();
break;
case types::ran_area_cfg_list:
c.destroy<plmn_ran_area_cfg_list_l>();
break;
default:
break;
}
}
void ran_notif_area_info_c::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::cell_list:
c.init<plmn_ran_area_cell_list_l>();
break;
case types::ran_area_cfg_list:
c.init<plmn_ran_area_cfg_list_l>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "ran_notif_area_info_c");
}
}
ran_notif_area_info_c::ran_notif_area_info_c(const ran_notif_area_info_c& other)
{
type_ = other.type();
switch (type_) {
case types::cell_list:
c.init(other.c.get<plmn_ran_area_cell_list_l>());
break;
case types::ran_area_cfg_list:
c.init(other.c.get<plmn_ran_area_cfg_list_l>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "ran_notif_area_info_c");
}
}
ran_notif_area_info_c& ran_notif_area_info_c::operator=(const ran_notif_area_info_c& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::cell_list:
c.set(other.c.get<plmn_ran_area_cell_list_l>());
break;
case types::ran_area_cfg_list:
c.set(other.c.get<plmn_ran_area_cfg_list_l>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "ran_notif_area_info_c");
}
return *this;
}
plmn_ran_area_cell_list_l& ran_notif_area_info_c::set_cell_list()
{
set(types::cell_list);
return c.get<plmn_ran_area_cell_list_l>();
}
plmn_ran_area_cfg_list_l& ran_notif_area_info_c::set_ran_area_cfg_list()
{
set(types::ran_area_cfg_list);
return c.get<plmn_ran_area_cfg_list_l>();
}
void ran_notif_area_info_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::cell_list:
j.start_array("cellList");
for (const auto& e1 : c.get<plmn_ran_area_cell_list_l>()) {
e1.to_json(j);
}
j.end_array();
break;
case types::ran_area_cfg_list:
j.start_array("ran-AreaConfigList");
for (const auto& e1 : c.get<plmn_ran_area_cfg_list_l>()) {
e1.to_json(j);
}
j.end_array();
break;
default:
log_invalid_choice_id(type_, "ran_notif_area_info_c");
}
j.end_obj();
}
SRSASN_CODE ran_notif_area_info_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::cell_list:
HANDLE_CODE(pack_dyn_seq_of(bref, c.get<plmn_ran_area_cell_list_l>(), 1, 8));
break;
case types::ran_area_cfg_list:
HANDLE_CODE(pack_dyn_seq_of(bref, c.get<plmn_ran_area_cfg_list_l>(), 1, 8));
break;
default:
log_invalid_choice_id(type_, "ran_notif_area_info_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ran_notif_area_info_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::cell_list:
HANDLE_CODE(unpack_dyn_seq_of(c.get<plmn_ran_area_cell_list_l>(), bref, 1, 8));
break;
case types::ran_area_cfg_list:
HANDLE_CODE(unpack_dyn_seq_of(c.get<plmn_ran_area_cfg_list_l>(), bref, 1, 8));
break;
default:
log_invalid_choice_id(type_, "ran_notif_area_info_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* ran_notif_area_info_c::types_opts::to_string() const
{
static const char* options[] = {"cellList", "ran-AreaConfigList"};
return convert_enum_idx(options, 2, value, "ran_notif_area_info_c::types");
}
// RRCReconfiguration-v1540-IEs ::= SEQUENCE
SRSASN_CODE rrc_recfg_v1540_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(other_cfg_v1540_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (other_cfg_v1540_present) {
HANDLE_CODE(other_cfg_v1540.pack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_recfg_v1540_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(other_cfg_v1540_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (other_cfg_v1540_present) {
HANDLE_CODE(other_cfg_v1540.unpack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void rrc_recfg_v1540_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (other_cfg_v1540_present) {
j.write_fieldname("otherConfig-v1540");
other_cfg_v1540.to_json(j);
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
// RedirectedCarrierInfo-EUTRA ::= SEQUENCE
SRSASN_CODE redirected_carrier_info_eutra_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(cn_type_present, 1));
HANDLE_CODE(pack_integer(bref, eutra_freq, (uint32_t)0u, (uint32_t)262143u));
if (cn_type_present) {
HANDLE_CODE(cn_type.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE redirected_carrier_info_eutra_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(cn_type_present, 1));
HANDLE_CODE(unpack_integer(eutra_freq, bref, (uint32_t)0u, (uint32_t)262143u));
if (cn_type_present) {
HANDLE_CODE(cn_type.unpack(bref));
}
return SRSASN_SUCCESS;
}
void redirected_carrier_info_eutra_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("eutraFrequency", eutra_freq);
if (cn_type_present) {
j.write_str("cnType", cn_type.to_string());
}
j.end_obj();
}
const char* redirected_carrier_info_eutra_s::cn_type_opts::to_string() const
{
static const char* options[] = {"epc", "fiveGC"};
return convert_enum_idx(options, 2, value, "redirected_carrier_info_eutra_s::cn_type_e_");
}
uint8_t redirected_carrier_info_eutra_s::cn_type_opts::to_number() const
{
if (value == five_gc) {
return 5;
}
invalid_enum_number(value, "redirected_carrier_info_eutra_s::cn_type_e_");
return 0;
}
// UE-CapabilityRAT-Request ::= SEQUENCE
SRSASN_CODE ue_cap_rat_request_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(cap_request_filt_present, 1));
HANDLE_CODE(rat_type.pack(bref));
if (cap_request_filt_present) {
HANDLE_CODE(cap_request_filt.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_cap_rat_request_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(cap_request_filt_present, 1));
HANDLE_CODE(rat_type.unpack(bref));
if (cap_request_filt_present) {
HANDLE_CODE(cap_request_filt.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ue_cap_rat_request_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("rat-Type", rat_type.to_string());
if (cap_request_filt_present) {
j.write_str("capabilityRequestFilter", cap_request_filt.to_string());
}
j.end_obj();
}
// CellReselectionPriorities ::= SEQUENCE
SRSASN_CODE cell_resel_priorities_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(freq_prio_list_eutra_present, 1));
HANDLE_CODE(bref.pack(freq_prio_list_nr_present, 1));
HANDLE_CODE(bref.pack(t320_present, 1));
if (freq_prio_list_eutra_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, freq_prio_list_eutra, 1, 8));
}
if (freq_prio_list_nr_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, freq_prio_list_nr, 1, 8));
}
if (t320_present) {
HANDLE_CODE(t320.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE cell_resel_priorities_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(freq_prio_list_eutra_present, 1));
HANDLE_CODE(bref.unpack(freq_prio_list_nr_present, 1));
HANDLE_CODE(bref.unpack(t320_present, 1));
if (freq_prio_list_eutra_present) {
HANDLE_CODE(unpack_dyn_seq_of(freq_prio_list_eutra, bref, 1, 8));
}
if (freq_prio_list_nr_present) {
HANDLE_CODE(unpack_dyn_seq_of(freq_prio_list_nr, bref, 1, 8));
}
if (t320_present) {
HANDLE_CODE(t320.unpack(bref));
}
return SRSASN_SUCCESS;
}
void cell_resel_priorities_s::to_json(json_writer& j) const
{
j.start_obj();
if (freq_prio_list_eutra_present) {
j.start_array("freqPriorityListEUTRA");
for (const auto& e1 : freq_prio_list_eutra) {
e1.to_json(j);
}
j.end_array();
}
if (freq_prio_list_nr_present) {
j.start_array("freqPriorityListNR");
for (const auto& e1 : freq_prio_list_nr) {
e1.to_json(j);
}
j.end_array();
}
if (t320_present) {
j.write_str("t320", t320.to_string());
}
j.end_obj();
}
const char* cell_resel_priorities_s::t320_opts::to_string() const
{
static const char* options[] = {"min5", "min10", "min20", "min30", "min60", "min120", "min180", "spare1"};
return convert_enum_idx(options, 8, value, "cell_resel_priorities_s::t320_e_");
}
uint8_t cell_resel_priorities_s::t320_opts::to_number() const
{
static const uint8_t options[] = {5, 10, 20, 30, 60, 120, 180};
return map_enum_number(options, 7, value, "cell_resel_priorities_s::t320_e_");
}
// MeasConfig ::= SEQUENCE
SRSASN_CODE meas_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(meas_obj_to_rem_list_present, 1));
HANDLE_CODE(bref.pack(meas_obj_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(report_cfg_to_rem_list_present, 1));
HANDLE_CODE(bref.pack(report_cfg_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(meas_id_to_rem_list_present, 1));
HANDLE_CODE(bref.pack(meas_id_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(s_measure_cfg_present, 1));
HANDLE_CODE(bref.pack(quant_cfg_present, 1));
HANDLE_CODE(bref.pack(meas_gap_cfg_present, 1));
HANDLE_CODE(bref.pack(meas_gap_sharing_cfg_present, 1));
if (meas_obj_to_rem_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, meas_obj_to_rem_list, 1, 64, integer_packer<uint8_t>(1, 64)));
}
if (meas_obj_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, meas_obj_to_add_mod_list, 1, 64));
}
if (report_cfg_to_rem_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, report_cfg_to_rem_list, 1, 64, integer_packer<uint8_t>(1, 64)));
}
if (report_cfg_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, report_cfg_to_add_mod_list, 1, 64));
}
if (meas_id_to_rem_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, meas_id_to_rem_list, 1, 64, integer_packer<uint8_t>(1, 64)));
}
if (meas_id_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, meas_id_to_add_mod_list, 1, 64));
}
if (s_measure_cfg_present) {
HANDLE_CODE(s_measure_cfg.pack(bref));
}
if (quant_cfg_present) {
HANDLE_CODE(quant_cfg.pack(bref));
}
if (meas_gap_cfg_present) {
HANDLE_CODE(meas_gap_cfg.pack(bref));
}
if (meas_gap_sharing_cfg_present) {
HANDLE_CODE(meas_gap_sharing_cfg.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(meas_obj_to_rem_list_present, 1));
HANDLE_CODE(bref.unpack(meas_obj_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(report_cfg_to_rem_list_present, 1));
HANDLE_CODE(bref.unpack(report_cfg_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(meas_id_to_rem_list_present, 1));
HANDLE_CODE(bref.unpack(meas_id_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(s_measure_cfg_present, 1));
HANDLE_CODE(bref.unpack(quant_cfg_present, 1));
HANDLE_CODE(bref.unpack(meas_gap_cfg_present, 1));
HANDLE_CODE(bref.unpack(meas_gap_sharing_cfg_present, 1));
if (meas_obj_to_rem_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(meas_obj_to_rem_list, bref, 1, 64, integer_packer<uint8_t>(1, 64)));
}
if (meas_obj_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(meas_obj_to_add_mod_list, bref, 1, 64));
}
if (report_cfg_to_rem_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(report_cfg_to_rem_list, bref, 1, 64, integer_packer<uint8_t>(1, 64)));
}
if (report_cfg_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(report_cfg_to_add_mod_list, bref, 1, 64));
}
if (meas_id_to_rem_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(meas_id_to_rem_list, bref, 1, 64, integer_packer<uint8_t>(1, 64)));
}
if (meas_id_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(meas_id_to_add_mod_list, bref, 1, 64));
}
if (s_measure_cfg_present) {
HANDLE_CODE(s_measure_cfg.unpack(bref));
}
if (quant_cfg_present) {
HANDLE_CODE(quant_cfg.unpack(bref));
}
if (meas_gap_cfg_present) {
HANDLE_CODE(meas_gap_cfg.unpack(bref));
}
if (meas_gap_sharing_cfg_present) {
HANDLE_CODE(meas_gap_sharing_cfg.unpack(bref));
}
return SRSASN_SUCCESS;
}
void meas_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (meas_obj_to_rem_list_present) {
j.start_array("measObjectToRemoveList");
for (const auto& e1 : meas_obj_to_rem_list) {
j.write_int(e1);
}
j.end_array();
}
if (meas_obj_to_add_mod_list_present) {
j.start_array("measObjectToAddModList");
for (const auto& e1 : meas_obj_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (report_cfg_to_rem_list_present) {
j.start_array("reportConfigToRemoveList");
for (const auto& e1 : report_cfg_to_rem_list) {
j.write_int(e1);
}
j.end_array();
}
if (report_cfg_to_add_mod_list_present) {
j.start_array("reportConfigToAddModList");
for (const auto& e1 : report_cfg_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (meas_id_to_rem_list_present) {
j.start_array("measIdToRemoveList");
for (const auto& e1 : meas_id_to_rem_list) {
j.write_int(e1);
}
j.end_array();
}
if (meas_id_to_add_mod_list_present) {
j.start_array("measIdToAddModList");
for (const auto& e1 : meas_id_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (s_measure_cfg_present) {
j.write_fieldname("s-MeasureConfig");
s_measure_cfg.to_json(j);
}
if (quant_cfg_present) {
j.write_fieldname("quantityConfig");
quant_cfg.to_json(j);
}
if (meas_gap_cfg_present) {
j.write_fieldname("measGapConfig");
meas_gap_cfg.to_json(j);
}
if (meas_gap_sharing_cfg_present) {
j.write_fieldname("measGapSharingConfig");
meas_gap_sharing_cfg.to_json(j);
}
j.end_obj();
}
void meas_cfg_s::s_measure_cfg_c_::destroy_() {}
void meas_cfg_s::s_measure_cfg_c_::set(types::options e)
{
destroy_();
type_ = e;
}
meas_cfg_s::s_measure_cfg_c_::s_measure_cfg_c_(const meas_cfg_s::s_measure_cfg_c_& other)
{
type_ = other.type();
switch (type_) {
case types::ssb_rsrp:
c.init(other.c.get<uint8_t>());
break;
case types::csi_rsrp:
c.init(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "meas_cfg_s::s_measure_cfg_c_");
}
}
meas_cfg_s::s_measure_cfg_c_& meas_cfg_s::s_measure_cfg_c_::operator=(const meas_cfg_s::s_measure_cfg_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::ssb_rsrp:
c.set(other.c.get<uint8_t>());
break;
case types::csi_rsrp:
c.set(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "meas_cfg_s::s_measure_cfg_c_");
}
return *this;
}
uint8_t& meas_cfg_s::s_measure_cfg_c_::set_ssb_rsrp()
{
set(types::ssb_rsrp);
return c.get<uint8_t>();
}
uint8_t& meas_cfg_s::s_measure_cfg_c_::set_csi_rsrp()
{
set(types::csi_rsrp);
return c.get<uint8_t>();
}
void meas_cfg_s::s_measure_cfg_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::ssb_rsrp:
j.write_int("ssb-RSRP", c.get<uint8_t>());
break;
case types::csi_rsrp:
j.write_int("csi-RSRP", c.get<uint8_t>());
break;
default:
log_invalid_choice_id(type_, "meas_cfg_s::s_measure_cfg_c_");
}
j.end_obj();
}
SRSASN_CODE meas_cfg_s::s_measure_cfg_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::ssb_rsrp:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)127u));
break;
case types::csi_rsrp:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)127u));
break;
default:
log_invalid_choice_id(type_, "meas_cfg_s::s_measure_cfg_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_cfg_s::s_measure_cfg_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::ssb_rsrp:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)127u));
break;
case types::csi_rsrp:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)127u));
break;
default:
log_invalid_choice_id(type_, "meas_cfg_s::s_measure_cfg_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* meas_cfg_s::s_measure_cfg_c_::types_opts::to_string() const
{
static const char* options[] = {"ssb-RSRP", "csi-RSRP"};
return convert_enum_idx(options, 2, value, "meas_cfg_s::s_measure_cfg_c_::types");
}
// RRCReconfiguration-v1530-IEs ::= SEQUENCE
SRSASN_CODE rrc_recfg_v1530_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(master_cell_group_present, 1));
HANDLE_CODE(bref.pack(full_cfg_present, 1));
HANDLE_CODE(bref.pack(ded_nas_msg_list_present, 1));
HANDLE_CODE(bref.pack(master_key_upd_present, 1));
HANDLE_CODE(bref.pack(ded_sib1_delivery_present, 1));
HANDLE_CODE(bref.pack(ded_sys_info_delivery_present, 1));
HANDLE_CODE(bref.pack(other_cfg_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (master_cell_group_present) {
HANDLE_CODE(master_cell_group.pack(bref));
}
if (ded_nas_msg_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, ded_nas_msg_list, 1, 29));
}
if (master_key_upd_present) {
HANDLE_CODE(master_key_upd.pack(bref));
}
if (ded_sib1_delivery_present) {
HANDLE_CODE(ded_sib1_delivery.pack(bref));
}
if (ded_sys_info_delivery_present) {
HANDLE_CODE(ded_sys_info_delivery.pack(bref));
}
if (other_cfg_present) {
HANDLE_CODE(other_cfg.pack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_recfg_v1530_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(master_cell_group_present, 1));
HANDLE_CODE(bref.unpack(full_cfg_present, 1));
HANDLE_CODE(bref.unpack(ded_nas_msg_list_present, 1));
HANDLE_CODE(bref.unpack(master_key_upd_present, 1));
HANDLE_CODE(bref.unpack(ded_sib1_delivery_present, 1));
HANDLE_CODE(bref.unpack(ded_sys_info_delivery_present, 1));
HANDLE_CODE(bref.unpack(other_cfg_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (master_cell_group_present) {
HANDLE_CODE(master_cell_group.unpack(bref));
}
if (ded_nas_msg_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(ded_nas_msg_list, bref, 1, 29));
}
if (master_key_upd_present) {
HANDLE_CODE(master_key_upd.unpack(bref));
}
if (ded_sib1_delivery_present) {
HANDLE_CODE(ded_sib1_delivery.unpack(bref));
}
if (ded_sys_info_delivery_present) {
HANDLE_CODE(ded_sys_info_delivery.unpack(bref));
}
if (other_cfg_present) {
HANDLE_CODE(other_cfg.unpack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void rrc_recfg_v1530_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (master_cell_group_present) {
j.write_str("masterCellGroup", master_cell_group.to_string());
}
if (full_cfg_present) {
j.write_str("fullConfig", "true");
}
if (ded_nas_msg_list_present) {
j.start_array("dedicatedNAS-MessageList");
for (const auto& e1 : ded_nas_msg_list) {
j.write_str(e1.to_string());
}
j.end_array();
}
if (master_key_upd_present) {
j.write_fieldname("masterKeyUpdate");
master_key_upd.to_json(j);
}
if (ded_sib1_delivery_present) {
j.write_str("dedicatedSIB1-Delivery", ded_sib1_delivery.to_string());
}
if (ded_sys_info_delivery_present) {
j.write_str("dedicatedSystemInformationDelivery", ded_sys_info_delivery.to_string());
}
if (other_cfg_present) {
j.write_fieldname("otherConfig");
other_cfg.to_json(j);
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
// RRCRelease-v1540-IEs ::= SEQUENCE
SRSASN_CODE rrc_release_v1540_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(wait_time_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (wait_time_present) {
HANDLE_CODE(pack_integer(bref, wait_time, (uint8_t)1u, (uint8_t)16u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_release_v1540_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(wait_time_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (wait_time_present) {
HANDLE_CODE(unpack_integer(wait_time, bref, (uint8_t)1u, (uint8_t)16u));
}
return SRSASN_SUCCESS;
}
void rrc_release_v1540_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (wait_time_present) {
j.write_int("waitTime", wait_time);
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// RRCResume-v1560-IEs ::= SEQUENCE
SRSASN_CODE rrc_resume_v1560_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(radio_bearer_cfg2_present, 1));
HANDLE_CODE(bref.pack(sk_counter_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (radio_bearer_cfg2_present) {
HANDLE_CODE(radio_bearer_cfg2.pack(bref));
}
if (sk_counter_present) {
HANDLE_CODE(pack_integer(bref, sk_counter, (uint32_t)0u, (uint32_t)65535u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_resume_v1560_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(radio_bearer_cfg2_present, 1));
HANDLE_CODE(bref.unpack(sk_counter_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (radio_bearer_cfg2_present) {
HANDLE_CODE(radio_bearer_cfg2.unpack(bref));
}
if (sk_counter_present) {
HANDLE_CODE(unpack_integer(sk_counter, bref, (uint32_t)0u, (uint32_t)65535u));
}
return SRSASN_SUCCESS;
}
void rrc_resume_v1560_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (radio_bearer_cfg2_present) {
j.write_str("radioBearerConfig2", radio_bearer_cfg2.to_string());
}
if (sk_counter_present) {
j.write_int("sk-Counter", sk_counter);
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// RedirectedCarrierInfo ::= CHOICE
void redirected_carrier_info_c::destroy_()
{
switch (type_) {
case types::nr:
c.destroy<carrier_info_nr_s>();
break;
case types::eutra:
c.destroy<redirected_carrier_info_eutra_s>();
break;
default:
break;
}
}
void redirected_carrier_info_c::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::nr:
c.init<carrier_info_nr_s>();
break;
case types::eutra:
c.init<redirected_carrier_info_eutra_s>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "redirected_carrier_info_c");
}
}
redirected_carrier_info_c::redirected_carrier_info_c(const redirected_carrier_info_c& other)
{
type_ = other.type();
switch (type_) {
case types::nr:
c.init(other.c.get<carrier_info_nr_s>());
break;
case types::eutra:
c.init(other.c.get<redirected_carrier_info_eutra_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "redirected_carrier_info_c");
}
}
redirected_carrier_info_c& redirected_carrier_info_c::operator=(const redirected_carrier_info_c& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::nr:
c.set(other.c.get<carrier_info_nr_s>());
break;
case types::eutra:
c.set(other.c.get<redirected_carrier_info_eutra_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "redirected_carrier_info_c");
}
return *this;
}
carrier_info_nr_s& redirected_carrier_info_c::set_nr()
{
set(types::nr);
return c.get<carrier_info_nr_s>();
}
redirected_carrier_info_eutra_s& redirected_carrier_info_c::set_eutra()
{
set(types::eutra);
return c.get<redirected_carrier_info_eutra_s>();
}
void redirected_carrier_info_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::nr:
j.write_fieldname("nr");
c.get<carrier_info_nr_s>().to_json(j);
break;
case types::eutra:
j.write_fieldname("eutra");
c.get<redirected_carrier_info_eutra_s>().to_json(j);
break;
default:
log_invalid_choice_id(type_, "redirected_carrier_info_c");
}
j.end_obj();
}
SRSASN_CODE redirected_carrier_info_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::nr:
HANDLE_CODE(c.get<carrier_info_nr_s>().pack(bref));
break;
case types::eutra:
HANDLE_CODE(c.get<redirected_carrier_info_eutra_s>().pack(bref));
break;
default:
log_invalid_choice_id(type_, "redirected_carrier_info_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE redirected_carrier_info_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::nr:
HANDLE_CODE(c.get<carrier_info_nr_s>().unpack(bref));
break;
case types::eutra:
HANDLE_CODE(c.get<redirected_carrier_info_eutra_s>().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "redirected_carrier_info_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* redirected_carrier_info_c::types_opts::to_string() const
{
static const char* options[] = {"nr", "eutra"};
return convert_enum_idx(options, 2, value, "redirected_carrier_info_c::types");
}
// SecurityConfigSMC ::= SEQUENCE
SRSASN_CODE security_cfg_smc_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(security_algorithm_cfg.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE security_cfg_smc_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(security_algorithm_cfg.unpack(bref));
return SRSASN_SUCCESS;
}
void security_cfg_smc_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("securityAlgorithmConfig");
security_algorithm_cfg.to_json(j);
j.end_obj();
}
// SuspendConfig ::= SEQUENCE
SRSASN_CODE suspend_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(ran_notif_area_info_present, 1));
HANDLE_CODE(bref.pack(t380_present, 1));
HANDLE_CODE(full_i_rnti.pack(bref));
HANDLE_CODE(short_i_rnti.pack(bref));
HANDLE_CODE(ran_paging_cycle.pack(bref));
if (ran_notif_area_info_present) {
HANDLE_CODE(ran_notif_area_info.pack(bref));
}
if (t380_present) {
HANDLE_CODE(t380.pack(bref));
}
HANDLE_CODE(pack_integer(bref, next_hop_chaining_count, (uint8_t)0u, (uint8_t)7u));
return SRSASN_SUCCESS;
}
SRSASN_CODE suspend_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(ran_notif_area_info_present, 1));
HANDLE_CODE(bref.unpack(t380_present, 1));
HANDLE_CODE(full_i_rnti.unpack(bref));
HANDLE_CODE(short_i_rnti.unpack(bref));
HANDLE_CODE(ran_paging_cycle.unpack(bref));
if (ran_notif_area_info_present) {
HANDLE_CODE(ran_notif_area_info.unpack(bref));
}
if (t380_present) {
HANDLE_CODE(t380.unpack(bref));
}
HANDLE_CODE(unpack_integer(next_hop_chaining_count, bref, (uint8_t)0u, (uint8_t)7u));
return SRSASN_SUCCESS;
}
void suspend_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("fullI-RNTI", full_i_rnti.to_string());
j.write_str("shortI-RNTI", short_i_rnti.to_string());
j.write_str("ran-PagingCycle", ran_paging_cycle.to_string());
if (ran_notif_area_info_present) {
j.write_fieldname("ran-NotificationAreaInfo");
ran_notif_area_info.to_json(j);
}
if (t380_present) {
j.write_str("t380", t380.to_string());
}
j.write_int("nextHopChainingCount", next_hop_chaining_count);
j.end_obj();
}
// CounterCheck-IEs ::= SEQUENCE
SRSASN_CODE counter_check_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
HANDLE_CODE(pack_dyn_seq_of(bref, drb_count_msb_info_list, 1, 29));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE counter_check_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
HANDLE_CODE(unpack_dyn_seq_of(drb_count_msb_info_list, bref, 1, 29));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void counter_check_ies_s::to_json(json_writer& j) const
{
j.start_obj();
j.start_array("drb-CountMSB-InfoList");
for (const auto& e1 : drb_count_msb_info_list) {
e1.to_json(j);
}
j.end_array();
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// DLInformationTransfer-IEs ::= SEQUENCE
SRSASN_CODE dl_info_transfer_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(ded_nas_msg_present, 1));
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (ded_nas_msg_present) {
HANDLE_CODE(ded_nas_msg.pack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE dl_info_transfer_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(ded_nas_msg_present, 1));
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (ded_nas_msg_present) {
HANDLE_CODE(ded_nas_msg.unpack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void dl_info_transfer_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (ded_nas_msg_present) {
j.write_str("dedicatedNAS-Message", ded_nas_msg.to_string());
}
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// MobilityFromNRCommand-IEs ::= SEQUENCE
SRSASN_CODE mob_from_nr_cmd_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(nas_security_param_from_nr_present, 1));
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
HANDLE_CODE(target_rat_type.pack(bref));
HANDLE_CODE(target_rat_msg_container.pack(bref));
if (nas_security_param_from_nr_present) {
HANDLE_CODE(nas_security_param_from_nr.pack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE mob_from_nr_cmd_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(nas_security_param_from_nr_present, 1));
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
HANDLE_CODE(target_rat_type.unpack(bref));
HANDLE_CODE(target_rat_msg_container.unpack(bref));
if (nas_security_param_from_nr_present) {
HANDLE_CODE(nas_security_param_from_nr.unpack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void mob_from_nr_cmd_ies_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("targetRAT-Type", target_rat_type.to_string());
j.write_str("targetRAT-MessageContainer", target_rat_msg_container.to_string());
if (nas_security_param_from_nr_present) {
j.write_str("nas-SecurityParamFromNR", nas_security_param_from_nr.to_string());
}
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
const char* mob_from_nr_cmd_ies_s::target_rat_type_opts::to_string() const
{
static const char* options[] = {"eutra", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 4, value, "mob_from_nr_cmd_ies_s::target_rat_type_e_");
}
// RRCReconfiguration-IEs ::= SEQUENCE
SRSASN_CODE rrc_recfg_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(radio_bearer_cfg_present, 1));
HANDLE_CODE(bref.pack(secondary_cell_group_present, 1));
HANDLE_CODE(bref.pack(meas_cfg_present, 1));
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (radio_bearer_cfg_present) {
HANDLE_CODE(radio_bearer_cfg.pack(bref));
}
if (secondary_cell_group_present) {
HANDLE_CODE(secondary_cell_group.pack(bref));
}
if (meas_cfg_present) {
HANDLE_CODE(meas_cfg.pack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_recfg_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(radio_bearer_cfg_present, 1));
HANDLE_CODE(bref.unpack(secondary_cell_group_present, 1));
HANDLE_CODE(bref.unpack(meas_cfg_present, 1));
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (radio_bearer_cfg_present) {
HANDLE_CODE(radio_bearer_cfg.unpack(bref));
}
if (secondary_cell_group_present) {
HANDLE_CODE(secondary_cell_group.unpack(bref));
}
if (meas_cfg_present) {
HANDLE_CODE(meas_cfg.unpack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void rrc_recfg_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (radio_bearer_cfg_present) {
j.write_fieldname("radioBearerConfig");
radio_bearer_cfg.to_json(j);
}
if (secondary_cell_group_present) {
j.write_str("secondaryCellGroup", secondary_cell_group.to_string());
}
if (meas_cfg_present) {
j.write_fieldname("measConfig");
meas_cfg.to_json(j);
}
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
// RRCReestablishment-IEs ::= SEQUENCE
SRSASN_CODE rrc_reest_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
HANDLE_CODE(pack_integer(bref, next_hop_chaining_count, (uint8_t)0u, (uint8_t)7u));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_reest_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
HANDLE_CODE(unpack_integer(next_hop_chaining_count, bref, (uint8_t)0u, (uint8_t)7u));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void rrc_reest_ies_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("nextHopChainingCount", next_hop_chaining_count);
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// RRCRelease-IEs ::= SEQUENCE
SRSASN_CODE rrc_release_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(redirected_carrier_info_present, 1));
HANDLE_CODE(bref.pack(cell_resel_priorities_present, 1));
HANDLE_CODE(bref.pack(suspend_cfg_present, 1));
HANDLE_CODE(bref.pack(depriorit_req_present, 1));
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (redirected_carrier_info_present) {
HANDLE_CODE(redirected_carrier_info.pack(bref));
}
if (cell_resel_priorities_present) {
HANDLE_CODE(cell_resel_priorities.pack(bref));
}
if (suspend_cfg_present) {
HANDLE_CODE(suspend_cfg.pack(bref));
}
if (depriorit_req_present) {
HANDLE_CODE(depriorit_req.depriorit_type.pack(bref));
HANDLE_CODE(depriorit_req.depriorit_timer.pack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_release_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(redirected_carrier_info_present, 1));
HANDLE_CODE(bref.unpack(cell_resel_priorities_present, 1));
HANDLE_CODE(bref.unpack(suspend_cfg_present, 1));
HANDLE_CODE(bref.unpack(depriorit_req_present, 1));
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (redirected_carrier_info_present) {
HANDLE_CODE(redirected_carrier_info.unpack(bref));
}
if (cell_resel_priorities_present) {
HANDLE_CODE(cell_resel_priorities.unpack(bref));
}
if (suspend_cfg_present) {
HANDLE_CODE(suspend_cfg.unpack(bref));
}
if (depriorit_req_present) {
HANDLE_CODE(depriorit_req.depriorit_type.unpack(bref));
HANDLE_CODE(depriorit_req.depriorit_timer.unpack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void rrc_release_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (redirected_carrier_info_present) {
j.write_fieldname("redirectedCarrierInfo");
redirected_carrier_info.to_json(j);
}
if (cell_resel_priorities_present) {
j.write_fieldname("cellReselectionPriorities");
cell_resel_priorities.to_json(j);
}
if (suspend_cfg_present) {
j.write_fieldname("suspendConfig");
suspend_cfg.to_json(j);
}
if (depriorit_req_present) {
j.write_fieldname("deprioritisationReq");
j.start_obj();
j.write_str("deprioritisationType", depriorit_req.depriorit_type.to_string());
j.write_str("deprioritisationTimer", depriorit_req.depriorit_timer.to_string());
j.end_obj();
}
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
const char* rrc_release_ies_s::depriorit_req_s_::depriorit_type_opts::to_string() const
{
static const char* options[] = {"frequency", "nr"};
return convert_enum_idx(options, 2, value, "rrc_release_ies_s::depriorit_req_s_::depriorit_type_e_");
}
const char* rrc_release_ies_s::depriorit_req_s_::depriorit_timer_opts::to_string() const
{
static const char* options[] = {"min5", "min10", "min15", "min30"};
return convert_enum_idx(options, 4, value, "rrc_release_ies_s::depriorit_req_s_::depriorit_timer_e_");
}
uint8_t rrc_release_ies_s::depriorit_req_s_::depriorit_timer_opts::to_number() const
{
static const uint8_t options[] = {5, 10, 15, 30};
return map_enum_number(options, 4, value, "rrc_release_ies_s::depriorit_req_s_::depriorit_timer_e_");
}
// RRCResume-IEs ::= SEQUENCE
SRSASN_CODE rrc_resume_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(radio_bearer_cfg_present, 1));
HANDLE_CODE(bref.pack(master_cell_group_present, 1));
HANDLE_CODE(bref.pack(meas_cfg_present, 1));
HANDLE_CODE(bref.pack(full_cfg_present, 1));
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (radio_bearer_cfg_present) {
HANDLE_CODE(radio_bearer_cfg.pack(bref));
}
if (master_cell_group_present) {
HANDLE_CODE(master_cell_group.pack(bref));
}
if (meas_cfg_present) {
HANDLE_CODE(meas_cfg.pack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_resume_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(radio_bearer_cfg_present, 1));
HANDLE_CODE(bref.unpack(master_cell_group_present, 1));
HANDLE_CODE(bref.unpack(meas_cfg_present, 1));
HANDLE_CODE(bref.unpack(full_cfg_present, 1));
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (radio_bearer_cfg_present) {
HANDLE_CODE(radio_bearer_cfg.unpack(bref));
}
if (master_cell_group_present) {
HANDLE_CODE(master_cell_group.unpack(bref));
}
if (meas_cfg_present) {
HANDLE_CODE(meas_cfg.unpack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void rrc_resume_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (radio_bearer_cfg_present) {
j.write_fieldname("radioBearerConfig");
radio_bearer_cfg.to_json(j);
}
if (master_cell_group_present) {
j.write_str("masterCellGroup", master_cell_group.to_string());
}
if (meas_cfg_present) {
j.write_fieldname("measConfig");
meas_cfg.to_json(j);
}
if (full_cfg_present) {
j.write_str("fullConfig", "true");
}
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
// SecurityModeCommand-IEs ::= SEQUENCE
SRSASN_CODE security_mode_cmd_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
HANDLE_CODE(security_cfg_smc.pack(bref));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE security_mode_cmd_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
HANDLE_CODE(security_cfg_smc.unpack(bref));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void security_mode_cmd_ies_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("securityConfigSMC");
security_cfg_smc.to_json(j);
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// UECapabilityEnquiry-IEs ::= SEQUENCE
SRSASN_CODE ue_cap_enquiry_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(ue_cap_enquiry_ext_present, 1));
HANDLE_CODE(pack_dyn_seq_of(bref, ue_cap_rat_request_list, 1, 8));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
if (ue_cap_enquiry_ext_present) {
HANDLE_CODE(ue_cap_enquiry_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_cap_enquiry_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(ue_cap_enquiry_ext_present, 1));
HANDLE_CODE(unpack_dyn_seq_of(ue_cap_rat_request_list, bref, 1, 8));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
if (ue_cap_enquiry_ext_present) {
HANDLE_CODE(ue_cap_enquiry_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ue_cap_enquiry_ies_s::to_json(json_writer& j) const
{
j.start_obj();
j.start_array("ue-CapabilityRAT-RequestList");
for (const auto& e1 : ue_cap_rat_request_list) {
e1.to_json(j);
}
j.end_array();
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (ue_cap_enquiry_ext_present) {
j.write_str("ue-CapabilityEnquiryExt", ue_cap_enquiry_ext.to_string());
}
j.end_obj();
}
// CounterCheck ::= SEQUENCE
SRSASN_CODE counter_check_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE counter_check_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void counter_check_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("rrc-TransactionIdentifier", rrc_transaction_id);
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void counter_check_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
counter_check_ies_s& counter_check_s::crit_exts_c_::set_counter_check()
{
set(types::counter_check);
return c;
}
void counter_check_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void counter_check_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::counter_check:
j.write_fieldname("counterCheck");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "counter_check_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE counter_check_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::counter_check:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "counter_check_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE counter_check_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::counter_check:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "counter_check_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* counter_check_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"counterCheck", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "counter_check_s::crit_exts_c_::types");
}
// DLInformationTransfer ::= SEQUENCE
SRSASN_CODE dl_info_transfer_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE dl_info_transfer_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void dl_info_transfer_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("rrc-TransactionIdentifier", rrc_transaction_id);
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void dl_info_transfer_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
dl_info_transfer_ies_s& dl_info_transfer_s::crit_exts_c_::set_dl_info_transfer()
{
set(types::dl_info_transfer);
return c;
}
void dl_info_transfer_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void dl_info_transfer_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::dl_info_transfer:
j.write_fieldname("dlInformationTransfer");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "dl_info_transfer_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE dl_info_transfer_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::dl_info_transfer:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "dl_info_transfer_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE dl_info_transfer_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::dl_info_transfer:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "dl_info_transfer_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* dl_info_transfer_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"dlInformationTransfer", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "dl_info_transfer_s::crit_exts_c_::types");
}
// MobilityFromNRCommand ::= SEQUENCE
SRSASN_CODE mob_from_nr_cmd_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE mob_from_nr_cmd_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void mob_from_nr_cmd_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("rrc-TransactionIdentifier", rrc_transaction_id);
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void mob_from_nr_cmd_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
mob_from_nr_cmd_ies_s& mob_from_nr_cmd_s::crit_exts_c_::set_mob_from_nr_cmd()
{
set(types::mob_from_nr_cmd);
return c;
}
void mob_from_nr_cmd_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void mob_from_nr_cmd_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::mob_from_nr_cmd:
j.write_fieldname("mobilityFromNRCommand");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "mob_from_nr_cmd_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE mob_from_nr_cmd_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::mob_from_nr_cmd:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "mob_from_nr_cmd_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE mob_from_nr_cmd_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::mob_from_nr_cmd:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "mob_from_nr_cmd_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* mob_from_nr_cmd_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"mobilityFromNRCommand", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "mob_from_nr_cmd_s::crit_exts_c_::types");
}
// RRCReconfiguration ::= SEQUENCE
SRSASN_CODE rrc_recfg_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_recfg_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void rrc_recfg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("rrc-TransactionIdentifier", rrc_transaction_id);
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void rrc_recfg_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
rrc_recfg_ies_s& rrc_recfg_s::crit_exts_c_::set_rrc_recfg()
{
set(types::rrc_recfg);
return c;
}
void rrc_recfg_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void rrc_recfg_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::rrc_recfg:
j.write_fieldname("rrcReconfiguration");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_recfg_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE rrc_recfg_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::rrc_recfg:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_recfg_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_recfg_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::rrc_recfg:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_recfg_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* rrc_recfg_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"rrcReconfiguration", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "rrc_recfg_s::crit_exts_c_::types");
}
// RRCReestablishment ::= SEQUENCE
SRSASN_CODE rrc_reest_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_reest_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void rrc_reest_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("rrc-TransactionIdentifier", rrc_transaction_id);
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void rrc_reest_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
rrc_reest_ies_s& rrc_reest_s::crit_exts_c_::set_rrc_reest()
{
set(types::rrc_reest);
return c;
}
void rrc_reest_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void rrc_reest_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::rrc_reest:
j.write_fieldname("rrcReestablishment");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_reest_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE rrc_reest_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::rrc_reest:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_reest_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_reest_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::rrc_reest:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_reest_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* rrc_reest_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"rrcReestablishment", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "rrc_reest_s::crit_exts_c_::types");
}
// RRCRelease ::= SEQUENCE
SRSASN_CODE rrc_release_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_release_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void rrc_release_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("rrc-TransactionIdentifier", rrc_transaction_id);
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void rrc_release_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
rrc_release_ies_s& rrc_release_s::crit_exts_c_::set_rrc_release()
{
set(types::rrc_release);
return c;
}
void rrc_release_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void rrc_release_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::rrc_release:
j.write_fieldname("rrcRelease");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_release_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE rrc_release_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::rrc_release:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_release_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_release_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::rrc_release:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_release_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* rrc_release_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"rrcRelease", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "rrc_release_s::crit_exts_c_::types");
}
// RRCResume ::= SEQUENCE
SRSASN_CODE rrc_resume_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_resume_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void rrc_resume_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("rrc-TransactionIdentifier", rrc_transaction_id);
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void rrc_resume_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
rrc_resume_ies_s& rrc_resume_s::crit_exts_c_::set_rrc_resume()
{
set(types::rrc_resume);
return c;
}
void rrc_resume_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void rrc_resume_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::rrc_resume:
j.write_fieldname("rrcResume");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_resume_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE rrc_resume_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::rrc_resume:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_resume_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_resume_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::rrc_resume:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_resume_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* rrc_resume_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"rrcResume", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "rrc_resume_s::crit_exts_c_::types");
}
// SecurityModeCommand ::= SEQUENCE
SRSASN_CODE security_mode_cmd_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE security_mode_cmd_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void security_mode_cmd_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("rrc-TransactionIdentifier", rrc_transaction_id);
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void security_mode_cmd_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
security_mode_cmd_ies_s& security_mode_cmd_s::crit_exts_c_::set_security_mode_cmd()
{
set(types::security_mode_cmd);
return c;
}
void security_mode_cmd_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void security_mode_cmd_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::security_mode_cmd:
j.write_fieldname("securityModeCommand");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "security_mode_cmd_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE security_mode_cmd_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::security_mode_cmd:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "security_mode_cmd_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE security_mode_cmd_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::security_mode_cmd:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "security_mode_cmd_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* security_mode_cmd_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"securityModeCommand", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "security_mode_cmd_s::crit_exts_c_::types");
}
// UECapabilityEnquiry ::= SEQUENCE
SRSASN_CODE ue_cap_enquiry_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_cap_enquiry_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void ue_cap_enquiry_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("rrc-TransactionIdentifier", rrc_transaction_id);
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void ue_cap_enquiry_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
ue_cap_enquiry_ies_s& ue_cap_enquiry_s::crit_exts_c_::set_ue_cap_enquiry()
{
set(types::ue_cap_enquiry);
return c;
}
void ue_cap_enquiry_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void ue_cap_enquiry_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::ue_cap_enquiry:
j.write_fieldname("ueCapabilityEnquiry");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "ue_cap_enquiry_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE ue_cap_enquiry_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::ue_cap_enquiry:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "ue_cap_enquiry_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_cap_enquiry_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::ue_cap_enquiry:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "ue_cap_enquiry_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* ue_cap_enquiry_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"ueCapabilityEnquiry", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "ue_cap_enquiry_s::crit_exts_c_::types");
}
// DL-DCCH-MessageType ::= CHOICE
void dl_dcch_msg_type_c::set(types::options e)
{
type_ = e;
}
dl_dcch_msg_type_c::c1_c_& dl_dcch_msg_type_c::set_c1()
{
set(types::c1);
return c;
}
void dl_dcch_msg_type_c::set_msg_class_ext()
{
set(types::msg_class_ext);
}
void dl_dcch_msg_type_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::c1:
j.write_fieldname("c1");
c.to_json(j);
break;
case types::msg_class_ext:
break;
default:
log_invalid_choice_id(type_, "dl_dcch_msg_type_c");
}
j.end_obj();
}
SRSASN_CODE dl_dcch_msg_type_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::c1:
HANDLE_CODE(c.pack(bref));
break;
case types::msg_class_ext:
break;
default:
log_invalid_choice_id(type_, "dl_dcch_msg_type_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE dl_dcch_msg_type_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::c1:
HANDLE_CODE(c.unpack(bref));
break;
case types::msg_class_ext:
break;
default:
log_invalid_choice_id(type_, "dl_dcch_msg_type_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
void dl_dcch_msg_type_c::c1_c_::destroy_()
{
switch (type_) {
case types::rrc_recfg:
c.destroy<rrc_recfg_s>();
break;
case types::rrc_resume:
c.destroy<rrc_resume_s>();
break;
case types::rrc_release:
c.destroy<rrc_release_s>();
break;
case types::rrc_reest:
c.destroy<rrc_reest_s>();
break;
case types::security_mode_cmd:
c.destroy<security_mode_cmd_s>();
break;
case types::dl_info_transfer:
c.destroy<dl_info_transfer_s>();
break;
case types::ue_cap_enquiry:
c.destroy<ue_cap_enquiry_s>();
break;
case types::counter_check:
c.destroy<counter_check_s>();
break;
case types::mob_from_nr_cmd:
c.destroy<mob_from_nr_cmd_s>();
break;
default:
break;
}
}
void dl_dcch_msg_type_c::c1_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::rrc_recfg:
c.init<rrc_recfg_s>();
break;
case types::rrc_resume:
c.init<rrc_resume_s>();
break;
case types::rrc_release:
c.init<rrc_release_s>();
break;
case types::rrc_reest:
c.init<rrc_reest_s>();
break;
case types::security_mode_cmd:
c.init<security_mode_cmd_s>();
break;
case types::dl_info_transfer:
c.init<dl_info_transfer_s>();
break;
case types::ue_cap_enquiry:
c.init<ue_cap_enquiry_s>();
break;
case types::counter_check:
c.init<counter_check_s>();
break;
case types::mob_from_nr_cmd:
c.init<mob_from_nr_cmd_s>();
break;
case types::spare7:
break;
case types::spare6:
break;
case types::spare5:
break;
case types::spare4:
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "dl_dcch_msg_type_c::c1_c_");
}
}
dl_dcch_msg_type_c::c1_c_::c1_c_(const dl_dcch_msg_type_c::c1_c_& other)
{
type_ = other.type();
switch (type_) {
case types::rrc_recfg:
c.init(other.c.get<rrc_recfg_s>());
break;
case types::rrc_resume:
c.init(other.c.get<rrc_resume_s>());
break;
case types::rrc_release:
c.init(other.c.get<rrc_release_s>());
break;
case types::rrc_reest:
c.init(other.c.get<rrc_reest_s>());
break;
case types::security_mode_cmd:
c.init(other.c.get<security_mode_cmd_s>());
break;
case types::dl_info_transfer:
c.init(other.c.get<dl_info_transfer_s>());
break;
case types::ue_cap_enquiry:
c.init(other.c.get<ue_cap_enquiry_s>());
break;
case types::counter_check:
c.init(other.c.get<counter_check_s>());
break;
case types::mob_from_nr_cmd:
c.init(other.c.get<mob_from_nr_cmd_s>());
break;
case types::spare7:
break;
case types::spare6:
break;
case types::spare5:
break;
case types::spare4:
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "dl_dcch_msg_type_c::c1_c_");
}
}
dl_dcch_msg_type_c::c1_c_& dl_dcch_msg_type_c::c1_c_::operator=(const dl_dcch_msg_type_c::c1_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::rrc_recfg:
c.set(other.c.get<rrc_recfg_s>());
break;
case types::rrc_resume:
c.set(other.c.get<rrc_resume_s>());
break;
case types::rrc_release:
c.set(other.c.get<rrc_release_s>());
break;
case types::rrc_reest:
c.set(other.c.get<rrc_reest_s>());
break;
case types::security_mode_cmd:
c.set(other.c.get<security_mode_cmd_s>());
break;
case types::dl_info_transfer:
c.set(other.c.get<dl_info_transfer_s>());
break;
case types::ue_cap_enquiry:
c.set(other.c.get<ue_cap_enquiry_s>());
break;
case types::counter_check:
c.set(other.c.get<counter_check_s>());
break;
case types::mob_from_nr_cmd:
c.set(other.c.get<mob_from_nr_cmd_s>());
break;
case types::spare7:
break;
case types::spare6:
break;
case types::spare5:
break;
case types::spare4:
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "dl_dcch_msg_type_c::c1_c_");
}
return *this;
}
rrc_recfg_s& dl_dcch_msg_type_c::c1_c_::set_rrc_recfg()
{
set(types::rrc_recfg);
return c.get<rrc_recfg_s>();
}
rrc_resume_s& dl_dcch_msg_type_c::c1_c_::set_rrc_resume()
{
set(types::rrc_resume);
return c.get<rrc_resume_s>();
}
rrc_release_s& dl_dcch_msg_type_c::c1_c_::set_rrc_release()
{
set(types::rrc_release);
return c.get<rrc_release_s>();
}
rrc_reest_s& dl_dcch_msg_type_c::c1_c_::set_rrc_reest()
{
set(types::rrc_reest);
return c.get<rrc_reest_s>();
}
security_mode_cmd_s& dl_dcch_msg_type_c::c1_c_::set_security_mode_cmd()
{
set(types::security_mode_cmd);
return c.get<security_mode_cmd_s>();
}
dl_info_transfer_s& dl_dcch_msg_type_c::c1_c_::set_dl_info_transfer()
{
set(types::dl_info_transfer);
return c.get<dl_info_transfer_s>();
}
ue_cap_enquiry_s& dl_dcch_msg_type_c::c1_c_::set_ue_cap_enquiry()
{
set(types::ue_cap_enquiry);
return c.get<ue_cap_enquiry_s>();
}
counter_check_s& dl_dcch_msg_type_c::c1_c_::set_counter_check()
{
set(types::counter_check);
return c.get<counter_check_s>();
}
mob_from_nr_cmd_s& dl_dcch_msg_type_c::c1_c_::set_mob_from_nr_cmd()
{
set(types::mob_from_nr_cmd);
return c.get<mob_from_nr_cmd_s>();
}
void dl_dcch_msg_type_c::c1_c_::set_spare7()
{
set(types::spare7);
}
void dl_dcch_msg_type_c::c1_c_::set_spare6()
{
set(types::spare6);
}
void dl_dcch_msg_type_c::c1_c_::set_spare5()
{
set(types::spare5);
}
void dl_dcch_msg_type_c::c1_c_::set_spare4()
{
set(types::spare4);
}
void dl_dcch_msg_type_c::c1_c_::set_spare3()
{
set(types::spare3);
}
void dl_dcch_msg_type_c::c1_c_::set_spare2()
{
set(types::spare2);
}
void dl_dcch_msg_type_c::c1_c_::set_spare1()
{
set(types::spare1);
}
void dl_dcch_msg_type_c::c1_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::rrc_recfg:
j.write_fieldname("rrcReconfiguration");
c.get<rrc_recfg_s>().to_json(j);
break;
case types::rrc_resume:
j.write_fieldname("rrcResume");
c.get<rrc_resume_s>().to_json(j);
break;
case types::rrc_release:
j.write_fieldname("rrcRelease");
c.get<rrc_release_s>().to_json(j);
break;
case types::rrc_reest:
j.write_fieldname("rrcReestablishment");
c.get<rrc_reest_s>().to_json(j);
break;
case types::security_mode_cmd:
j.write_fieldname("securityModeCommand");
c.get<security_mode_cmd_s>().to_json(j);
break;
case types::dl_info_transfer:
j.write_fieldname("dlInformationTransfer");
c.get<dl_info_transfer_s>().to_json(j);
break;
case types::ue_cap_enquiry:
j.write_fieldname("ueCapabilityEnquiry");
c.get<ue_cap_enquiry_s>().to_json(j);
break;
case types::counter_check:
j.write_fieldname("counterCheck");
c.get<counter_check_s>().to_json(j);
break;
case types::mob_from_nr_cmd:
j.write_fieldname("mobilityFromNRCommand");
c.get<mob_from_nr_cmd_s>().to_json(j);
break;
case types::spare7:
break;
case types::spare6:
break;
case types::spare5:
break;
case types::spare4:
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "dl_dcch_msg_type_c::c1_c_");
}
j.end_obj();
}
SRSASN_CODE dl_dcch_msg_type_c::c1_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::rrc_recfg:
HANDLE_CODE(c.get<rrc_recfg_s>().pack(bref));
break;
case types::rrc_resume:
HANDLE_CODE(c.get<rrc_resume_s>().pack(bref));
break;
case types::rrc_release:
HANDLE_CODE(c.get<rrc_release_s>().pack(bref));
break;
case types::rrc_reest:
HANDLE_CODE(c.get<rrc_reest_s>().pack(bref));
break;
case types::security_mode_cmd:
HANDLE_CODE(c.get<security_mode_cmd_s>().pack(bref));
break;
case types::dl_info_transfer:
HANDLE_CODE(c.get<dl_info_transfer_s>().pack(bref));
break;
case types::ue_cap_enquiry:
HANDLE_CODE(c.get<ue_cap_enquiry_s>().pack(bref));
break;
case types::counter_check:
HANDLE_CODE(c.get<counter_check_s>().pack(bref));
break;
case types::mob_from_nr_cmd:
HANDLE_CODE(c.get<mob_from_nr_cmd_s>().pack(bref));
break;
case types::spare7:
break;
case types::spare6:
break;
case types::spare5:
break;
case types::spare4:
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "dl_dcch_msg_type_c::c1_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE dl_dcch_msg_type_c::c1_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::rrc_recfg:
HANDLE_CODE(c.get<rrc_recfg_s>().unpack(bref));
break;
case types::rrc_resume:
HANDLE_CODE(c.get<rrc_resume_s>().unpack(bref));
break;
case types::rrc_release:
HANDLE_CODE(c.get<rrc_release_s>().unpack(bref));
break;
case types::rrc_reest:
HANDLE_CODE(c.get<rrc_reest_s>().unpack(bref));
break;
case types::security_mode_cmd:
HANDLE_CODE(c.get<security_mode_cmd_s>().unpack(bref));
break;
case types::dl_info_transfer:
HANDLE_CODE(c.get<dl_info_transfer_s>().unpack(bref));
break;
case types::ue_cap_enquiry:
HANDLE_CODE(c.get<ue_cap_enquiry_s>().unpack(bref));
break;
case types::counter_check:
HANDLE_CODE(c.get<counter_check_s>().unpack(bref));
break;
case types::mob_from_nr_cmd:
HANDLE_CODE(c.get<mob_from_nr_cmd_s>().unpack(bref));
break;
case types::spare7:
break;
case types::spare6:
break;
case types::spare5:
break;
case types::spare4:
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "dl_dcch_msg_type_c::c1_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* dl_dcch_msg_type_c::c1_c_::types_opts::to_string() const
{
static const char* options[] = {"rrcReconfiguration",
"rrcResume",
"rrcRelease",
"rrcReestablishment",
"securityModeCommand",
"dlInformationTransfer",
"ueCapabilityEnquiry",
"counterCheck",
"mobilityFromNRCommand",
"spare7",
"spare6",
"spare5",
"spare4",
"spare3",
"spare2",
"spare1"};
return convert_enum_idx(options, 16, value, "dl_dcch_msg_type_c::c1_c_::types");
}
const char* dl_dcch_msg_type_c::types_opts::to_string() const
{
static const char* options[] = {"c1", "messageClassExtension"};
return convert_enum_idx(options, 2, value, "dl_dcch_msg_type_c::types");
}
uint8_t dl_dcch_msg_type_c::types_opts::to_number() const
{
static const uint8_t options[] = {1};
return map_enum_number(options, 1, value, "dl_dcch_msg_type_c::types");
}
// DL-DCCH-Message ::= SEQUENCE
SRSASN_CODE dl_dcch_msg_s::pack(bit_ref& bref) const
{
HANDLE_CODE(msg.pack(bref));
bref.align_bytes_zero();
return SRSASN_SUCCESS;
}
SRSASN_CODE dl_dcch_msg_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(msg.unpack(bref));
bref.align_bytes();
return SRSASN_SUCCESS;
}
void dl_dcch_msg_s::to_json(json_writer& j) const
{
j.start_array();
j.start_obj();
j.start_obj("DL-DCCH-Message");
j.write_fieldname("message");
msg.to_json(j);
j.end_obj();
j.end_obj();
j.end_array();
}
// PagingUE-Identity ::= CHOICE
void paging_ue_id_c::destroy_()
{
switch (type_) {
case types::ng_minus5_g_s_tmsi:
c.destroy<fixed_bitstring<48> >();
break;
case types::full_i_rnti:
c.destroy<fixed_bitstring<40> >();
break;
default:
break;
}
}
void paging_ue_id_c::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::ng_minus5_g_s_tmsi:
c.init<fixed_bitstring<48> >();
break;
case types::full_i_rnti:
c.init<fixed_bitstring<40> >();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "paging_ue_id_c");
}
}
paging_ue_id_c::paging_ue_id_c(const paging_ue_id_c& other)
{
type_ = other.type();
switch (type_) {
case types::ng_minus5_g_s_tmsi:
c.init(other.c.get<fixed_bitstring<48> >());
break;
case types::full_i_rnti:
c.init(other.c.get<fixed_bitstring<40> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "paging_ue_id_c");
}
}
paging_ue_id_c& paging_ue_id_c::operator=(const paging_ue_id_c& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::ng_minus5_g_s_tmsi:
c.set(other.c.get<fixed_bitstring<48> >());
break;
case types::full_i_rnti:
c.set(other.c.get<fixed_bitstring<40> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "paging_ue_id_c");
}
return *this;
}
fixed_bitstring<48>& paging_ue_id_c::set_ng_minus5_g_s_tmsi()
{
set(types::ng_minus5_g_s_tmsi);
return c.get<fixed_bitstring<48> >();
}
fixed_bitstring<40>& paging_ue_id_c::set_full_i_rnti()
{
set(types::full_i_rnti);
return c.get<fixed_bitstring<40> >();
}
void paging_ue_id_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::ng_minus5_g_s_tmsi:
j.write_str("ng-5G-S-TMSI", c.get<fixed_bitstring<48> >().to_string());
break;
case types::full_i_rnti:
j.write_str("fullI-RNTI", c.get<fixed_bitstring<40> >().to_string());
break;
default:
log_invalid_choice_id(type_, "paging_ue_id_c");
}
j.end_obj();
}
SRSASN_CODE paging_ue_id_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::ng_minus5_g_s_tmsi:
HANDLE_CODE(c.get<fixed_bitstring<48> >().pack(bref));
break;
case types::full_i_rnti:
HANDLE_CODE(c.get<fixed_bitstring<40> >().pack(bref));
break;
default:
log_invalid_choice_id(type_, "paging_ue_id_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE paging_ue_id_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::ng_minus5_g_s_tmsi:
HANDLE_CODE(c.get<fixed_bitstring<48> >().unpack(bref));
break;
case types::full_i_rnti:
HANDLE_CODE(c.get<fixed_bitstring<40> >().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "paging_ue_id_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* paging_ue_id_c::types_opts::to_string() const
{
static const char* options[] = {"ng-5G-S-TMSI", "fullI-RNTI"};
return convert_enum_idx(options, 2, value, "paging_ue_id_c::types");
}
int8_t paging_ue_id_c::types_opts::to_number() const
{
static const int8_t options[] = {-5};
return map_enum_number(options, 1, value, "paging_ue_id_c::types");
}
// PagingRecord ::= SEQUENCE
SRSASN_CODE paging_record_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(access_type_present, 1));
HANDLE_CODE(ue_id.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE paging_record_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(access_type_present, 1));
HANDLE_CODE(ue_id.unpack(bref));
return SRSASN_SUCCESS;
}
void paging_record_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("ue-Identity");
ue_id.to_json(j);
if (access_type_present) {
j.write_str("accessType", "non3GPP");
}
j.end_obj();
}
// Paging ::= SEQUENCE
SRSASN_CODE paging_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(paging_record_list_present, 1));
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (paging_record_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, paging_record_list, 1, 32));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE paging_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(paging_record_list_present, 1));
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (paging_record_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(paging_record_list, bref, 1, 32));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void paging_s::to_json(json_writer& j) const
{
j.start_obj();
if (paging_record_list_present) {
j.start_array("pagingRecordList");
for (const auto& e1 : paging_record_list) {
e1.to_json(j);
}
j.end_array();
}
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// PCCH-MessageType ::= CHOICE
void pcch_msg_type_c::set(types::options e)
{
type_ = e;
}
pcch_msg_type_c::c1_c_& pcch_msg_type_c::set_c1()
{
set(types::c1);
return c;
}
void pcch_msg_type_c::set_msg_class_ext()
{
set(types::msg_class_ext);
}
void pcch_msg_type_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::c1:
j.write_fieldname("c1");
c.to_json(j);
break;
case types::msg_class_ext:
break;
default:
log_invalid_choice_id(type_, "pcch_msg_type_c");
}
j.end_obj();
}
SRSASN_CODE pcch_msg_type_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::c1:
HANDLE_CODE(c.pack(bref));
break;
case types::msg_class_ext:
break;
default:
log_invalid_choice_id(type_, "pcch_msg_type_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pcch_msg_type_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::c1:
HANDLE_CODE(c.unpack(bref));
break;
case types::msg_class_ext:
break;
default:
log_invalid_choice_id(type_, "pcch_msg_type_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
void pcch_msg_type_c::c1_c_::set(types::options e)
{
type_ = e;
}
paging_s& pcch_msg_type_c::c1_c_::set_paging()
{
set(types::paging);
return c;
}
void pcch_msg_type_c::c1_c_::set_spare1()
{
set(types::spare1);
}
void pcch_msg_type_c::c1_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::paging:
j.write_fieldname("paging");
c.to_json(j);
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "pcch_msg_type_c::c1_c_");
}
j.end_obj();
}
SRSASN_CODE pcch_msg_type_c::c1_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::paging:
HANDLE_CODE(c.pack(bref));
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "pcch_msg_type_c::c1_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pcch_msg_type_c::c1_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::paging:
HANDLE_CODE(c.unpack(bref));
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "pcch_msg_type_c::c1_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* pcch_msg_type_c::c1_c_::types_opts::to_string() const
{
static const char* options[] = {"paging", "spare1"};
return convert_enum_idx(options, 2, value, "pcch_msg_type_c::c1_c_::types");
}
const char* pcch_msg_type_c::types_opts::to_string() const
{
static const char* options[] = {"c1", "messageClassExtension"};
return convert_enum_idx(options, 2, value, "pcch_msg_type_c::types");
}
uint8_t pcch_msg_type_c::types_opts::to_number() const
{
static const uint8_t options[] = {1};
return map_enum_number(options, 1, value, "pcch_msg_type_c::types");
}
// PCCH-Message ::= SEQUENCE
SRSASN_CODE pcch_msg_s::pack(bit_ref& bref) const
{
HANDLE_CODE(msg.pack(bref));
bref.align_bytes_zero();
return SRSASN_SUCCESS;
}
SRSASN_CODE pcch_msg_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(msg.unpack(bref));
bref.align_bytes();
return SRSASN_SUCCESS;
}
void pcch_msg_s::to_json(json_writer& j) const
{
j.start_array();
j.start_obj();
j.start_obj("PCCH-Message");
j.write_fieldname("message");
msg.to_json(j);
j.end_obj();
j.end_obj();
j.end_array();
}
// EstablishmentCause ::= ENUMERATED
const char* establishment_cause_opts::to_string() const
{
static const char* options[] = {"emergency",
"highPriorityAccess",
"mt-Access",
"mo-Signalling",
"mo-Data",
"mo-VoiceCall",
"mo-VideoCall",
"mo-SMS",
"mps-PriorityAccess",
"mcs-PriorityAccess",
"spare6",
"spare5",
"spare4",
"spare3",
"spare2",
"spare1"};
return convert_enum_idx(options, 16, value, "establishment_cause_e");
}
// InitialUE-Identity ::= CHOICE
void init_ue_id_c::destroy_()
{
switch (type_) {
case types::ng_minus5_g_s_tmsi_part1:
c.destroy<fixed_bitstring<39> >();
break;
case types::random_value:
c.destroy<fixed_bitstring<39> >();
break;
default:
break;
}
}
void init_ue_id_c::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::ng_minus5_g_s_tmsi_part1:
c.init<fixed_bitstring<39> >();
break;
case types::random_value:
c.init<fixed_bitstring<39> >();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "init_ue_id_c");
}
}
init_ue_id_c::init_ue_id_c(const init_ue_id_c& other)
{
type_ = other.type();
switch (type_) {
case types::ng_minus5_g_s_tmsi_part1:
c.init(other.c.get<fixed_bitstring<39> >());
break;
case types::random_value:
c.init(other.c.get<fixed_bitstring<39> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "init_ue_id_c");
}
}
init_ue_id_c& init_ue_id_c::operator=(const init_ue_id_c& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::ng_minus5_g_s_tmsi_part1:
c.set(other.c.get<fixed_bitstring<39> >());
break;
case types::random_value:
c.set(other.c.get<fixed_bitstring<39> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "init_ue_id_c");
}
return *this;
}
fixed_bitstring<39>& init_ue_id_c::set_ng_minus5_g_s_tmsi_part1()
{
set(types::ng_minus5_g_s_tmsi_part1);
return c.get<fixed_bitstring<39> >();
}
fixed_bitstring<39>& init_ue_id_c::set_random_value()
{
set(types::random_value);
return c.get<fixed_bitstring<39> >();
}
void init_ue_id_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::ng_minus5_g_s_tmsi_part1:
j.write_str("ng-5G-S-TMSI-Part1", c.get<fixed_bitstring<39> >().to_string());
break;
case types::random_value:
j.write_str("randomValue", c.get<fixed_bitstring<39> >().to_string());
break;
default:
log_invalid_choice_id(type_, "init_ue_id_c");
}
j.end_obj();
}
SRSASN_CODE init_ue_id_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::ng_minus5_g_s_tmsi_part1:
HANDLE_CODE(c.get<fixed_bitstring<39> >().pack(bref));
break;
case types::random_value:
HANDLE_CODE(c.get<fixed_bitstring<39> >().pack(bref));
break;
default:
log_invalid_choice_id(type_, "init_ue_id_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE init_ue_id_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::ng_minus5_g_s_tmsi_part1:
HANDLE_CODE(c.get<fixed_bitstring<39> >().unpack(bref));
break;
case types::random_value:
HANDLE_CODE(c.get<fixed_bitstring<39> >().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "init_ue_id_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* init_ue_id_c::types_opts::to_string() const
{
static const char* options[] = {"ng-5G-S-TMSI-Part1", "randomValue"};
return convert_enum_idx(options, 2, value, "init_ue_id_c::types");
}
int8_t init_ue_id_c::types_opts::to_number() const
{
static const int8_t options[] = {-5};
return map_enum_number(options, 1, value, "init_ue_id_c::types");
}
// ReestabUE-Identity ::= SEQUENCE
SRSASN_CODE reestab_ue_id_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, c_rnti, (uint32_t)0u, (uint32_t)65535u));
HANDLE_CODE(pack_integer(bref, pci, (uint16_t)0u, (uint16_t)1007u));
HANDLE_CODE(short_mac_i.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE reestab_ue_id_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(c_rnti, bref, (uint32_t)0u, (uint32_t)65535u));
HANDLE_CODE(unpack_integer(pci, bref, (uint16_t)0u, (uint16_t)1007u));
HANDLE_CODE(short_mac_i.unpack(bref));
return SRSASN_SUCCESS;
}
void reestab_ue_id_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("c-RNTI", c_rnti);
j.write_int("physCellId", pci);
j.write_str("shortMAC-I", short_mac_i.to_string());
j.end_obj();
}
// ReestablishmentCause ::= ENUMERATED
const char* reest_cause_opts::to_string() const
{
static const char* options[] = {"reconfigurationFailure", "handoverFailure", "otherFailure", "spare1"};
return convert_enum_idx(options, 4, value, "reest_cause_e");
}
// ResumeCause ::= ENUMERATED
const char* resume_cause_opts::to_string() const
{
static const char* options[] = {"emergency",
"highPriorityAccess",
"mt-Access",
"mo-Signalling",
"mo-Data",
"mo-VoiceCall",
"mo-VideoCall",
"mo-SMS",
"rna-Update",
"mps-PriorityAccess",
"mcs-PriorityAccess",
"spare1",
"spare2",
"spare3",
"spare4",
"spare5"};
return convert_enum_idx(options, 16, value, "resume_cause_e");
}
// RRCReestablishmentRequest-IEs ::= SEQUENCE
SRSASN_CODE rrc_reest_request_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(ue_id.pack(bref));
HANDLE_CODE(reest_cause.pack(bref));
HANDLE_CODE(spare.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_reest_request_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(ue_id.unpack(bref));
HANDLE_CODE(reest_cause.unpack(bref));
HANDLE_CODE(spare.unpack(bref));
return SRSASN_SUCCESS;
}
void rrc_reest_request_ies_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("ue-Identity");
ue_id.to_json(j);
j.write_str("reestablishmentCause", reest_cause.to_string());
j.write_str("spare", spare.to_string());
j.end_obj();
}
// RRCResumeRequest-IEs ::= SEQUENCE
SRSASN_CODE rrc_resume_request_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(resume_id.pack(bref));
HANDLE_CODE(resume_mac_i.pack(bref));
HANDLE_CODE(resume_cause.pack(bref));
HANDLE_CODE(spare.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_resume_request_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(resume_id.unpack(bref));
HANDLE_CODE(resume_mac_i.unpack(bref));
HANDLE_CODE(resume_cause.unpack(bref));
HANDLE_CODE(spare.unpack(bref));
return SRSASN_SUCCESS;
}
void rrc_resume_request_ies_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("resumeIdentity", resume_id.to_string());
j.write_str("resumeMAC-I", resume_mac_i.to_string());
j.write_str("resumeCause", resume_cause.to_string());
j.write_str("spare", spare.to_string());
j.end_obj();
}
// RRCSetupRequest-IEs ::= SEQUENCE
SRSASN_CODE rrc_setup_request_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(ue_id.pack(bref));
HANDLE_CODE(establishment_cause.pack(bref));
HANDLE_CODE(spare.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_setup_request_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(ue_id.unpack(bref));
HANDLE_CODE(establishment_cause.unpack(bref));
HANDLE_CODE(spare.unpack(bref));
return SRSASN_SUCCESS;
}
void rrc_setup_request_ies_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("ue-Identity");
ue_id.to_json(j);
j.write_str("establishmentCause", establishment_cause.to_string());
j.write_str("spare", spare.to_string());
j.end_obj();
}
// RRCSystemInfoRequest-IEs ::= SEQUENCE
SRSASN_CODE rrc_sys_info_request_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(requested_si_list.pack(bref));
HANDLE_CODE(spare.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_sys_info_request_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(requested_si_list.unpack(bref));
HANDLE_CODE(spare.unpack(bref));
return SRSASN_SUCCESS;
}
void rrc_sys_info_request_ies_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("requested-SI-List", requested_si_list.to_string());
j.write_str("spare", spare.to_string());
j.end_obj();
}
// RRCReestablishmentRequest ::= SEQUENCE
SRSASN_CODE rrc_reest_request_s::pack(bit_ref& bref) const
{
HANDLE_CODE(rrc_reest_request.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_reest_request_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(rrc_reest_request.unpack(bref));
return SRSASN_SUCCESS;
}
void rrc_reest_request_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("rrcReestablishmentRequest");
rrc_reest_request.to_json(j);
j.end_obj();
}
// RRCResumeRequest ::= SEQUENCE
SRSASN_CODE rrc_resume_request_s::pack(bit_ref& bref) const
{
HANDLE_CODE(rrc_resume_request.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_resume_request_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(rrc_resume_request.unpack(bref));
return SRSASN_SUCCESS;
}
void rrc_resume_request_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("rrcResumeRequest");
rrc_resume_request.to_json(j);
j.end_obj();
}
// RRCSetupRequest ::= SEQUENCE
SRSASN_CODE rrc_setup_request_s::pack(bit_ref& bref) const
{
HANDLE_CODE(rrc_setup_request.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_setup_request_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(rrc_setup_request.unpack(bref));
return SRSASN_SUCCESS;
}
void rrc_setup_request_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("rrcSetupRequest");
rrc_setup_request.to_json(j);
j.end_obj();
}
// RRCSystemInfoRequest ::= SEQUENCE
SRSASN_CODE rrc_sys_info_request_s::pack(bit_ref& bref) const
{
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_sys_info_request_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void rrc_sys_info_request_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void rrc_sys_info_request_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
rrc_sys_info_request_ies_s& rrc_sys_info_request_s::crit_exts_c_::set_rrc_sys_info_request()
{
set(types::rrc_sys_info_request);
return c;
}
void rrc_sys_info_request_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void rrc_sys_info_request_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::rrc_sys_info_request:
j.write_fieldname("rrcSystemInfoRequest");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_sys_info_request_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE rrc_sys_info_request_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::rrc_sys_info_request:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_sys_info_request_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_sys_info_request_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::rrc_sys_info_request:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_sys_info_request_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* rrc_sys_info_request_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"rrcSystemInfoRequest", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "rrc_sys_info_request_s::crit_exts_c_::types");
}
// UL-CCCH-MessageType ::= CHOICE
void ul_ccch_msg_type_c::set(types::options e)
{
type_ = e;
}
ul_ccch_msg_type_c::c1_c_& ul_ccch_msg_type_c::set_c1()
{
set(types::c1);
return c;
}
void ul_ccch_msg_type_c::set_msg_class_ext()
{
set(types::msg_class_ext);
}
void ul_ccch_msg_type_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::c1:
j.write_fieldname("c1");
c.to_json(j);
break;
case types::msg_class_ext:
break;
default:
log_invalid_choice_id(type_, "ul_ccch_msg_type_c");
}
j.end_obj();
}
SRSASN_CODE ul_ccch_msg_type_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::c1:
HANDLE_CODE(c.pack(bref));
break;
case types::msg_class_ext:
break;
default:
log_invalid_choice_id(type_, "ul_ccch_msg_type_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ul_ccch_msg_type_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::c1:
HANDLE_CODE(c.unpack(bref));
break;
case types::msg_class_ext:
break;
default:
log_invalid_choice_id(type_, "ul_ccch_msg_type_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
void ul_ccch_msg_type_c::c1_c_::destroy_()
{
switch (type_) {
case types::rrc_setup_request:
c.destroy<rrc_setup_request_s>();
break;
case types::rrc_resume_request:
c.destroy<rrc_resume_request_s>();
break;
case types::rrc_reest_request:
c.destroy<rrc_reest_request_s>();
break;
case types::rrc_sys_info_request:
c.destroy<rrc_sys_info_request_s>();
break;
default:
break;
}
}
void ul_ccch_msg_type_c::c1_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::rrc_setup_request:
c.init<rrc_setup_request_s>();
break;
case types::rrc_resume_request:
c.init<rrc_resume_request_s>();
break;
case types::rrc_reest_request:
c.init<rrc_reest_request_s>();
break;
case types::rrc_sys_info_request:
c.init<rrc_sys_info_request_s>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "ul_ccch_msg_type_c::c1_c_");
}
}
ul_ccch_msg_type_c::c1_c_::c1_c_(const ul_ccch_msg_type_c::c1_c_& other)
{
type_ = other.type();
switch (type_) {
case types::rrc_setup_request:
c.init(other.c.get<rrc_setup_request_s>());
break;
case types::rrc_resume_request:
c.init(other.c.get<rrc_resume_request_s>());
break;
case types::rrc_reest_request:
c.init(other.c.get<rrc_reest_request_s>());
break;
case types::rrc_sys_info_request:
c.init(other.c.get<rrc_sys_info_request_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "ul_ccch_msg_type_c::c1_c_");
}
}
ul_ccch_msg_type_c::c1_c_& ul_ccch_msg_type_c::c1_c_::operator=(const ul_ccch_msg_type_c::c1_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::rrc_setup_request:
c.set(other.c.get<rrc_setup_request_s>());
break;
case types::rrc_resume_request:
c.set(other.c.get<rrc_resume_request_s>());
break;
case types::rrc_reest_request:
c.set(other.c.get<rrc_reest_request_s>());
break;
case types::rrc_sys_info_request:
c.set(other.c.get<rrc_sys_info_request_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "ul_ccch_msg_type_c::c1_c_");
}
return *this;
}
rrc_setup_request_s& ul_ccch_msg_type_c::c1_c_::set_rrc_setup_request()
{
set(types::rrc_setup_request);
return c.get<rrc_setup_request_s>();
}
rrc_resume_request_s& ul_ccch_msg_type_c::c1_c_::set_rrc_resume_request()
{
set(types::rrc_resume_request);
return c.get<rrc_resume_request_s>();
}
rrc_reest_request_s& ul_ccch_msg_type_c::c1_c_::set_rrc_reest_request()
{
set(types::rrc_reest_request);
return c.get<rrc_reest_request_s>();
}
rrc_sys_info_request_s& ul_ccch_msg_type_c::c1_c_::set_rrc_sys_info_request()
{
set(types::rrc_sys_info_request);
return c.get<rrc_sys_info_request_s>();
}
void ul_ccch_msg_type_c::c1_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::rrc_setup_request:
j.write_fieldname("rrcSetupRequest");
c.get<rrc_setup_request_s>().to_json(j);
break;
case types::rrc_resume_request:
j.write_fieldname("rrcResumeRequest");
c.get<rrc_resume_request_s>().to_json(j);
break;
case types::rrc_reest_request:
j.write_fieldname("rrcReestablishmentRequest");
c.get<rrc_reest_request_s>().to_json(j);
break;
case types::rrc_sys_info_request:
j.write_fieldname("rrcSystemInfoRequest");
c.get<rrc_sys_info_request_s>().to_json(j);
break;
default:
log_invalid_choice_id(type_, "ul_ccch_msg_type_c::c1_c_");
}
j.end_obj();
}
SRSASN_CODE ul_ccch_msg_type_c::c1_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::rrc_setup_request:
HANDLE_CODE(c.get<rrc_setup_request_s>().pack(bref));
break;
case types::rrc_resume_request:
HANDLE_CODE(c.get<rrc_resume_request_s>().pack(bref));
break;
case types::rrc_reest_request:
HANDLE_CODE(c.get<rrc_reest_request_s>().pack(bref));
break;
case types::rrc_sys_info_request:
HANDLE_CODE(c.get<rrc_sys_info_request_s>().pack(bref));
break;
default:
log_invalid_choice_id(type_, "ul_ccch_msg_type_c::c1_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ul_ccch_msg_type_c::c1_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::rrc_setup_request:
HANDLE_CODE(c.get<rrc_setup_request_s>().unpack(bref));
break;
case types::rrc_resume_request:
HANDLE_CODE(c.get<rrc_resume_request_s>().unpack(bref));
break;
case types::rrc_reest_request:
HANDLE_CODE(c.get<rrc_reest_request_s>().unpack(bref));
break;
case types::rrc_sys_info_request:
HANDLE_CODE(c.get<rrc_sys_info_request_s>().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "ul_ccch_msg_type_c::c1_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* ul_ccch_msg_type_c::c1_c_::types_opts::to_string() const
{
static const char* options[] = {
"rrcSetupRequest", "rrcResumeRequest", "rrcReestablishmentRequest", "rrcSystemInfoRequest"};
return convert_enum_idx(options, 4, value, "ul_ccch_msg_type_c::c1_c_::types");
}
const char* ul_ccch_msg_type_c::types_opts::to_string() const
{
static const char* options[] = {"c1", "messageClassExtension"};
return convert_enum_idx(options, 2, value, "ul_ccch_msg_type_c::types");
}
uint8_t ul_ccch_msg_type_c::types_opts::to_number() const
{
static const uint8_t options[] = {1};
return map_enum_number(options, 1, value, "ul_ccch_msg_type_c::types");
}
// UL-CCCH-Message ::= SEQUENCE
SRSASN_CODE ul_ccch_msg_s::pack(bit_ref& bref) const
{
HANDLE_CODE(msg.pack(bref));
bref.align_bytes_zero();
return SRSASN_SUCCESS;
}
SRSASN_CODE ul_ccch_msg_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(msg.unpack(bref));
bref.align_bytes();
return SRSASN_SUCCESS;
}
void ul_ccch_msg_s::to_json(json_writer& j) const
{
j.start_array();
j.start_obj();
j.start_obj("UL-CCCH-Message");
j.write_fieldname("message");
msg.to_json(j);
j.end_obj();
j.end_obj();
j.end_array();
}
// RRCResumeRequest1-IEs ::= SEQUENCE
SRSASN_CODE rrc_resume_request1_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(resume_id.pack(bref));
HANDLE_CODE(resume_mac_i.pack(bref));
HANDLE_CODE(resume_cause.pack(bref));
HANDLE_CODE(spare.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_resume_request1_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(resume_id.unpack(bref));
HANDLE_CODE(resume_mac_i.unpack(bref));
HANDLE_CODE(resume_cause.unpack(bref));
HANDLE_CODE(spare.unpack(bref));
return SRSASN_SUCCESS;
}
void rrc_resume_request1_ies_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("resumeIdentity", resume_id.to_string());
j.write_str("resumeMAC-I", resume_mac_i.to_string());
j.write_str("resumeCause", resume_cause.to_string());
j.write_str("spare", spare.to_string());
j.end_obj();
}
// RRCResumeRequest1 ::= SEQUENCE
SRSASN_CODE rrc_resume_request1_s::pack(bit_ref& bref) const
{
HANDLE_CODE(rrc_resume_request1.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_resume_request1_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(rrc_resume_request1.unpack(bref));
return SRSASN_SUCCESS;
}
void rrc_resume_request1_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("rrcResumeRequest1");
rrc_resume_request1.to_json(j);
j.end_obj();
}
// UL-CCCH1-MessageType ::= CHOICE
void ul_ccch1_msg_type_c::set(types::options e)
{
type_ = e;
}
ul_ccch1_msg_type_c::c1_c_& ul_ccch1_msg_type_c::set_c1()
{
set(types::c1);
return c;
}
void ul_ccch1_msg_type_c::set_msg_class_ext()
{
set(types::msg_class_ext);
}
void ul_ccch1_msg_type_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::c1:
j.write_fieldname("c1");
c.to_json(j);
break;
case types::msg_class_ext:
break;
default:
log_invalid_choice_id(type_, "ul_ccch1_msg_type_c");
}
j.end_obj();
}
SRSASN_CODE ul_ccch1_msg_type_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::c1:
HANDLE_CODE(c.pack(bref));
break;
case types::msg_class_ext:
break;
default:
log_invalid_choice_id(type_, "ul_ccch1_msg_type_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ul_ccch1_msg_type_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::c1:
HANDLE_CODE(c.unpack(bref));
break;
case types::msg_class_ext:
break;
default:
log_invalid_choice_id(type_, "ul_ccch1_msg_type_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
void ul_ccch1_msg_type_c::c1_c_::set(types::options e)
{
type_ = e;
}
rrc_resume_request1_s& ul_ccch1_msg_type_c::c1_c_::set_rrc_resume_request1()
{
set(types::rrc_resume_request1);
return c;
}
void ul_ccch1_msg_type_c::c1_c_::set_spare3()
{
set(types::spare3);
}
void ul_ccch1_msg_type_c::c1_c_::set_spare2()
{
set(types::spare2);
}
void ul_ccch1_msg_type_c::c1_c_::set_spare1()
{
set(types::spare1);
}
void ul_ccch1_msg_type_c::c1_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::rrc_resume_request1:
j.write_fieldname("rrcResumeRequest1");
c.to_json(j);
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "ul_ccch1_msg_type_c::c1_c_");
}
j.end_obj();
}
SRSASN_CODE ul_ccch1_msg_type_c::c1_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::rrc_resume_request1:
HANDLE_CODE(c.pack(bref));
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "ul_ccch1_msg_type_c::c1_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ul_ccch1_msg_type_c::c1_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::rrc_resume_request1:
HANDLE_CODE(c.unpack(bref));
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "ul_ccch1_msg_type_c::c1_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* ul_ccch1_msg_type_c::c1_c_::types_opts::to_string() const
{
static const char* options[] = {"rrcResumeRequest1", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 4, value, "ul_ccch1_msg_type_c::c1_c_::types");
}
uint8_t ul_ccch1_msg_type_c::c1_c_::types_opts::to_number() const
{
static const uint8_t options[] = {1};
return map_enum_number(options, 1, value, "ul_ccch1_msg_type_c::c1_c_::types");
}
const char* ul_ccch1_msg_type_c::types_opts::to_string() const
{
static const char* options[] = {"c1", "messageClassExtension"};
return convert_enum_idx(options, 2, value, "ul_ccch1_msg_type_c::types");
}
uint8_t ul_ccch1_msg_type_c::types_opts::to_number() const
{
static const uint8_t options[] = {1};
return map_enum_number(options, 1, value, "ul_ccch1_msg_type_c::types");
}
// UL-CCCH1-Message ::= SEQUENCE
SRSASN_CODE ul_ccch1_msg_s::pack(bit_ref& bref) const
{
HANDLE_CODE(msg.pack(bref));
bref.align_bytes_zero();
return SRSASN_SUCCESS;
}
SRSASN_CODE ul_ccch1_msg_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(msg.unpack(bref));
bref.align_bytes();
return SRSASN_SUCCESS;
}
void ul_ccch1_msg_s::to_json(json_writer& j) const
{
j.start_array();
j.start_obj();
j.start_obj("UL-CCCH1-Message");
j.write_fieldname("message");
msg.to_json(j);
j.end_obj();
j.end_obj();
j.end_array();
}
// MeasQuantityResults ::= SEQUENCE
SRSASN_CODE meas_quant_results_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(rsrp_present, 1));
HANDLE_CODE(bref.pack(rsrq_present, 1));
HANDLE_CODE(bref.pack(sinr_present, 1));
if (rsrp_present) {
HANDLE_CODE(pack_integer(bref, rsrp, (uint8_t)0u, (uint8_t)127u));
}
if (rsrq_present) {
HANDLE_CODE(pack_integer(bref, rsrq, (uint8_t)0u, (uint8_t)127u));
}
if (sinr_present) {
HANDLE_CODE(pack_integer(bref, sinr, (uint8_t)0u, (uint8_t)127u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_quant_results_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(rsrp_present, 1));
HANDLE_CODE(bref.unpack(rsrq_present, 1));
HANDLE_CODE(bref.unpack(sinr_present, 1));
if (rsrp_present) {
HANDLE_CODE(unpack_integer(rsrp, bref, (uint8_t)0u, (uint8_t)127u));
}
if (rsrq_present) {
HANDLE_CODE(unpack_integer(rsrq, bref, (uint8_t)0u, (uint8_t)127u));
}
if (sinr_present) {
HANDLE_CODE(unpack_integer(sinr, bref, (uint8_t)0u, (uint8_t)127u));
}
return SRSASN_SUCCESS;
}
void meas_quant_results_s::to_json(json_writer& j) const
{
j.start_obj();
if (rsrp_present) {
j.write_int("rsrp", rsrp);
}
if (rsrq_present) {
j.write_int("rsrq", rsrq);
}
if (sinr_present) {
j.write_int("sinr", sinr);
}
j.end_obj();
}
// PLMN-Identity-EUTRA-5GC ::= CHOICE
void plmn_id_eutra_minus5_gc_c::destroy_()
{
switch (type_) {
case types::plmn_id_eutra_minus5_gc:
c.destroy<plmn_id_s>();
break;
default:
break;
}
}
void plmn_id_eutra_minus5_gc_c::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::plmn_id_eutra_minus5_gc:
c.init<plmn_id_s>();
break;
case types::plmn_idx:
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "plmn_id_eutra_minus5_gc_c");
}
}
plmn_id_eutra_minus5_gc_c::plmn_id_eutra_minus5_gc_c(const plmn_id_eutra_minus5_gc_c& other)
{
type_ = other.type();
switch (type_) {
case types::plmn_id_eutra_minus5_gc:
c.init(other.c.get<plmn_id_s>());
break;
case types::plmn_idx:
c.init(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "plmn_id_eutra_minus5_gc_c");
}
}
plmn_id_eutra_minus5_gc_c& plmn_id_eutra_minus5_gc_c::operator=(const plmn_id_eutra_minus5_gc_c& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::plmn_id_eutra_minus5_gc:
c.set(other.c.get<plmn_id_s>());
break;
case types::plmn_idx:
c.set(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "plmn_id_eutra_minus5_gc_c");
}
return *this;
}
plmn_id_s& plmn_id_eutra_minus5_gc_c::set_plmn_id_eutra_minus5_gc()
{
set(types::plmn_id_eutra_minus5_gc);
return c.get<plmn_id_s>();
}
uint8_t& plmn_id_eutra_minus5_gc_c::set_plmn_idx()
{
set(types::plmn_idx);
return c.get<uint8_t>();
}
void plmn_id_eutra_minus5_gc_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::plmn_id_eutra_minus5_gc:
j.write_fieldname("plmn-Identity-EUTRA-5GC");
c.get<plmn_id_s>().to_json(j);
break;
case types::plmn_idx:
j.write_int("plmn-index", c.get<uint8_t>());
break;
default:
log_invalid_choice_id(type_, "plmn_id_eutra_minus5_gc_c");
}
j.end_obj();
}
SRSASN_CODE plmn_id_eutra_minus5_gc_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::plmn_id_eutra_minus5_gc:
HANDLE_CODE(c.get<plmn_id_s>().pack(bref));
break;
case types::plmn_idx:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)1u, (uint8_t)12u));
break;
default:
log_invalid_choice_id(type_, "plmn_id_eutra_minus5_gc_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE plmn_id_eutra_minus5_gc_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::plmn_id_eutra_minus5_gc:
HANDLE_CODE(c.get<plmn_id_s>().unpack(bref));
break;
case types::plmn_idx:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)1u, (uint8_t)12u));
break;
default:
log_invalid_choice_id(type_, "plmn_id_eutra_minus5_gc_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* plmn_id_eutra_minus5_gc_c::types_opts::to_string() const
{
static const char* options[] = {"plmn-Identity-EUTRA-5GC", "plmn-index"};
return convert_enum_idx(options, 2, value, "plmn_id_eutra_minus5_gc_c::types");
}
int8_t plmn_id_eutra_minus5_gc_c::types_opts::to_number() const
{
static const int8_t options[] = {-5};
return map_enum_number(options, 1, value, "plmn_id_eutra_minus5_gc_c::types");
}
// CellIdentity-EUTRA-5GC ::= CHOICE
void cell_id_eutra_minus5_gc_c::destroy_()
{
switch (type_) {
case types::cell_id_eutra:
c.destroy<fixed_bitstring<28> >();
break;
default:
break;
}
}
void cell_id_eutra_minus5_gc_c::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::cell_id_eutra:
c.init<fixed_bitstring<28> >();
break;
case types::cell_id_idx:
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "cell_id_eutra_minus5_gc_c");
}
}
cell_id_eutra_minus5_gc_c::cell_id_eutra_minus5_gc_c(const cell_id_eutra_minus5_gc_c& other)
{
type_ = other.type();
switch (type_) {
case types::cell_id_eutra:
c.init(other.c.get<fixed_bitstring<28> >());
break;
case types::cell_id_idx:
c.init(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "cell_id_eutra_minus5_gc_c");
}
}
cell_id_eutra_minus5_gc_c& cell_id_eutra_minus5_gc_c::operator=(const cell_id_eutra_minus5_gc_c& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::cell_id_eutra:
c.set(other.c.get<fixed_bitstring<28> >());
break;
case types::cell_id_idx:
c.set(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "cell_id_eutra_minus5_gc_c");
}
return *this;
}
fixed_bitstring<28>& cell_id_eutra_minus5_gc_c::set_cell_id_eutra()
{
set(types::cell_id_eutra);
return c.get<fixed_bitstring<28> >();
}
uint8_t& cell_id_eutra_minus5_gc_c::set_cell_id_idx()
{
set(types::cell_id_idx);
return c.get<uint8_t>();
}
void cell_id_eutra_minus5_gc_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::cell_id_eutra:
j.write_str("cellIdentity-EUTRA", c.get<fixed_bitstring<28> >().to_string());
break;
case types::cell_id_idx:
j.write_int("cellId-index", c.get<uint8_t>());
break;
default:
log_invalid_choice_id(type_, "cell_id_eutra_minus5_gc_c");
}
j.end_obj();
}
SRSASN_CODE cell_id_eutra_minus5_gc_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::cell_id_eutra:
HANDLE_CODE(c.get<fixed_bitstring<28> >().pack(bref));
break;
case types::cell_id_idx:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)1u, (uint8_t)12u));
break;
default:
log_invalid_choice_id(type_, "cell_id_eutra_minus5_gc_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE cell_id_eutra_minus5_gc_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::cell_id_eutra:
HANDLE_CODE(c.get<fixed_bitstring<28> >().unpack(bref));
break;
case types::cell_id_idx:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)1u, (uint8_t)12u));
break;
default:
log_invalid_choice_id(type_, "cell_id_eutra_minus5_gc_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* cell_id_eutra_minus5_gc_c::types_opts::to_string() const
{
static const char* options[] = {"cellIdentity-EUTRA", "cellId-index"};
return convert_enum_idx(options, 2, value, "cell_id_eutra_minus5_gc_c::types");
}
// ResultsPerCSI-RS-Index ::= SEQUENCE
SRSASN_CODE results_per_csi_rs_idx_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(csi_rs_results_present, 1));
HANDLE_CODE(pack_integer(bref, csi_rs_idx, (uint8_t)0u, (uint8_t)95u));
if (csi_rs_results_present) {
HANDLE_CODE(csi_rs_results.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE results_per_csi_rs_idx_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(csi_rs_results_present, 1));
HANDLE_CODE(unpack_integer(csi_rs_idx, bref, (uint8_t)0u, (uint8_t)95u));
if (csi_rs_results_present) {
HANDLE_CODE(csi_rs_results.unpack(bref));
}
return SRSASN_SUCCESS;
}
void results_per_csi_rs_idx_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("csi-RS-Index", csi_rs_idx);
if (csi_rs_results_present) {
j.write_fieldname("csi-RS-Results");
csi_rs_results.to_json(j);
}
j.end_obj();
}
// ResultsPerSSB-Index ::= SEQUENCE
SRSASN_CODE results_per_ssb_idx_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(ssb_results_present, 1));
HANDLE_CODE(pack_integer(bref, ssb_idx, (uint8_t)0u, (uint8_t)63u));
if (ssb_results_present) {
HANDLE_CODE(ssb_results.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE results_per_ssb_idx_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(ssb_results_present, 1));
HANDLE_CODE(unpack_integer(ssb_idx, bref, (uint8_t)0u, (uint8_t)63u));
if (ssb_results_present) {
HANDLE_CODE(ssb_results.unpack(bref));
}
return SRSASN_SUCCESS;
}
void results_per_ssb_idx_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("ssb-Index", ssb_idx);
if (ssb_results_present) {
j.write_fieldname("ssb-Results");
ssb_results.to_json(j);
}
j.end_obj();
}
// CGI-InfoNR ::= SEQUENCE
SRSASN_CODE cgi_info_nr_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(plmn_id_info_list_present, 1));
HANDLE_CODE(bref.pack(freq_band_list_present, 1));
HANDLE_CODE(bref.pack(no_sib1_present, 1));
if (plmn_id_info_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, plmn_id_info_list, 1, 12));
}
if (freq_band_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, freq_band_list, 1, 8, integer_packer<uint16_t>(1, 1024)));
}
if (no_sib1_present) {
HANDLE_CODE(pack_integer(bref, no_sib1.ssb_subcarrier_offset, (uint8_t)0u, (uint8_t)15u));
HANDLE_CODE(no_sib1.pdcch_cfg_sib1.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE cgi_info_nr_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(plmn_id_info_list_present, 1));
HANDLE_CODE(bref.unpack(freq_band_list_present, 1));
HANDLE_CODE(bref.unpack(no_sib1_present, 1));
if (plmn_id_info_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(plmn_id_info_list, bref, 1, 12));
}
if (freq_band_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(freq_band_list, bref, 1, 8, integer_packer<uint16_t>(1, 1024)));
}
if (no_sib1_present) {
HANDLE_CODE(unpack_integer(no_sib1.ssb_subcarrier_offset, bref, (uint8_t)0u, (uint8_t)15u));
HANDLE_CODE(no_sib1.pdcch_cfg_sib1.unpack(bref));
}
return SRSASN_SUCCESS;
}
void cgi_info_nr_s::to_json(json_writer& j) const
{
j.start_obj();
if (plmn_id_info_list_present) {
j.start_array("plmn-IdentityInfoList");
for (const auto& e1 : plmn_id_info_list) {
e1.to_json(j);
}
j.end_array();
}
if (freq_band_list_present) {
j.start_array("frequencyBandList");
for (const auto& e1 : freq_band_list) {
j.write_int(e1);
}
j.end_array();
}
if (no_sib1_present) {
j.write_fieldname("noSIB1");
j.start_obj();
j.write_int("ssb-SubcarrierOffset", no_sib1.ssb_subcarrier_offset);
j.write_fieldname("pdcch-ConfigSIB1");
no_sib1.pdcch_cfg_sib1.to_json(j);
j.end_obj();
}
j.end_obj();
}
// CellAccessRelatedInfo-EUTRA-5GC ::= SEQUENCE
SRSASN_CODE cell_access_related_info_eutra_minus5_gc_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(ranac_minus5gc_present, 1));
HANDLE_CODE(pack_dyn_seq_of(bref, plmn_id_list_eutra_minus5gc, 1, 12));
HANDLE_CODE(tac_eutra_minus5gc.pack(bref));
if (ranac_minus5gc_present) {
HANDLE_CODE(pack_integer(bref, ranac_minus5gc, (uint16_t)0u, (uint16_t)255u));
}
HANDLE_CODE(cell_id_eutra_minus5gc.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE cell_access_related_info_eutra_minus5_gc_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(ranac_minus5gc_present, 1));
HANDLE_CODE(unpack_dyn_seq_of(plmn_id_list_eutra_minus5gc, bref, 1, 12));
HANDLE_CODE(tac_eutra_minus5gc.unpack(bref));
if (ranac_minus5gc_present) {
HANDLE_CODE(unpack_integer(ranac_minus5gc, bref, (uint16_t)0u, (uint16_t)255u));
}
HANDLE_CODE(cell_id_eutra_minus5gc.unpack(bref));
return SRSASN_SUCCESS;
}
void cell_access_related_info_eutra_minus5_gc_s::to_json(json_writer& j) const
{
j.start_obj();
j.start_array("plmn-IdentityList-eutra-5gc");
for (const auto& e1 : plmn_id_list_eutra_minus5gc) {
e1.to_json(j);
}
j.end_array();
j.write_str("trackingAreaCode-eutra-5gc", tac_eutra_minus5gc.to_string());
if (ranac_minus5gc_present) {
j.write_int("ranac-5gc", ranac_minus5gc);
}
j.write_fieldname("cellIdentity-eutra-5gc");
cell_id_eutra_minus5gc.to_json(j);
j.end_obj();
}
// CellAccessRelatedInfo-EUTRA-EPC ::= SEQUENCE
SRSASN_CODE cell_access_related_info_eutra_epc_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_dyn_seq_of(bref, plmn_id_list_eutra_epc, 1, 12));
HANDLE_CODE(tac_eutra_epc.pack(bref));
HANDLE_CODE(cell_id_eutra_epc.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE cell_access_related_info_eutra_epc_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_dyn_seq_of(plmn_id_list_eutra_epc, bref, 1, 12));
HANDLE_CODE(tac_eutra_epc.unpack(bref));
HANDLE_CODE(cell_id_eutra_epc.unpack(bref));
return SRSASN_SUCCESS;
}
void cell_access_related_info_eutra_epc_s::to_json(json_writer& j) const
{
j.start_obj();
j.start_array("plmn-IdentityList-eutra-epc");
for (const auto& e1 : plmn_id_list_eutra_epc) {
e1.to_json(j);
}
j.end_array();
j.write_str("trackingAreaCode-eutra-epc", tac_eutra_epc.to_string());
j.write_str("cellIdentity-eutra-epc", cell_id_eutra_epc.to_string());
j.end_obj();
}
// CGI-InfoEUTRA ::= SEQUENCE
SRSASN_CODE cgi_info_eutra_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(cgi_info_epc_present, 1));
HANDLE_CODE(bref.pack(cgi_info_minus5_gc_present, 1));
HANDLE_CODE(bref.pack(multi_band_info_list_present, 1));
HANDLE_CODE(bref.pack(freq_band_ind_prio_present, 1));
if (cgi_info_epc_present) {
HANDLE_CODE(bref.pack(cgi_info_epc.cgi_info_epc_list_present, 1));
HANDLE_CODE(cgi_info_epc.cgi_info_epc_legacy.pack(bref));
if (cgi_info_epc.cgi_info_epc_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, cgi_info_epc.cgi_info_epc_list, 1, 12));
}
}
if (cgi_info_minus5_gc_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, cgi_info_minus5_gc, 1, 12));
}
HANDLE_CODE(pack_integer(bref, freq_band_ind, (uint16_t)1u, (uint16_t)256u));
if (multi_band_info_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, multi_band_info_list, 1, 8, integer_packer<uint16_t>(1, 256)));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE cgi_info_eutra_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(cgi_info_epc_present, 1));
HANDLE_CODE(bref.unpack(cgi_info_minus5_gc_present, 1));
HANDLE_CODE(bref.unpack(multi_band_info_list_present, 1));
HANDLE_CODE(bref.unpack(freq_band_ind_prio_present, 1));
if (cgi_info_epc_present) {
HANDLE_CODE(bref.unpack(cgi_info_epc.cgi_info_epc_list_present, 1));
HANDLE_CODE(cgi_info_epc.cgi_info_epc_legacy.unpack(bref));
if (cgi_info_epc.cgi_info_epc_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(cgi_info_epc.cgi_info_epc_list, bref, 1, 12));
}
}
if (cgi_info_minus5_gc_present) {
HANDLE_CODE(unpack_dyn_seq_of(cgi_info_minus5_gc, bref, 1, 12));
}
HANDLE_CODE(unpack_integer(freq_band_ind, bref, (uint16_t)1u, (uint16_t)256u));
if (multi_band_info_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(multi_band_info_list, bref, 1, 8, integer_packer<uint16_t>(1, 256)));
}
return SRSASN_SUCCESS;
}
void cgi_info_eutra_s::to_json(json_writer& j) const
{
j.start_obj();
if (cgi_info_epc_present) {
j.write_fieldname("cgi-info-EPC");
j.start_obj();
j.write_fieldname("cgi-info-EPC-legacy");
cgi_info_epc.cgi_info_epc_legacy.to_json(j);
if (cgi_info_epc.cgi_info_epc_list_present) {
j.start_array("cgi-info-EPC-list");
for (const auto& e1 : cgi_info_epc.cgi_info_epc_list) {
e1.to_json(j);
}
j.end_array();
}
j.end_obj();
}
if (cgi_info_minus5_gc_present) {
j.start_array("cgi-info-5GC");
for (const auto& e1 : cgi_info_minus5_gc) {
e1.to_json(j);
}
j.end_array();
}
j.write_int("freqBandIndicator", freq_band_ind);
if (multi_band_info_list_present) {
j.start_array("multiBandInfoList");
for (const auto& e1 : multi_band_info_list) {
j.write_int(e1);
}
j.end_array();
}
if (freq_band_ind_prio_present) {
j.write_str("freqBandIndicatorPriority", "true");
}
j.end_obj();
}
// MeasQuantityResultsEUTRA ::= SEQUENCE
SRSASN_CODE meas_quant_results_eutra_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(rsrp_present, 1));
HANDLE_CODE(bref.pack(rsrq_present, 1));
HANDLE_CODE(bref.pack(sinr_present, 1));
if (rsrp_present) {
HANDLE_CODE(pack_integer(bref, rsrp, (uint8_t)0u, (uint8_t)97u));
}
if (rsrq_present) {
HANDLE_CODE(pack_integer(bref, rsrq, (uint8_t)0u, (uint8_t)34u));
}
if (sinr_present) {
HANDLE_CODE(pack_integer(bref, sinr, (uint8_t)0u, (uint8_t)127u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_quant_results_eutra_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(rsrp_present, 1));
HANDLE_CODE(bref.unpack(rsrq_present, 1));
HANDLE_CODE(bref.unpack(sinr_present, 1));
if (rsrp_present) {
HANDLE_CODE(unpack_integer(rsrp, bref, (uint8_t)0u, (uint8_t)97u));
}
if (rsrq_present) {
HANDLE_CODE(unpack_integer(rsrq, bref, (uint8_t)0u, (uint8_t)34u));
}
if (sinr_present) {
HANDLE_CODE(unpack_integer(sinr, bref, (uint8_t)0u, (uint8_t)127u));
}
return SRSASN_SUCCESS;
}
void meas_quant_results_eutra_s::to_json(json_writer& j) const
{
j.start_obj();
if (rsrp_present) {
j.write_int("rsrp", rsrp);
}
if (rsrq_present) {
j.write_int("rsrq", rsrq);
}
if (sinr_present) {
j.write_int("sinr", sinr);
}
j.end_obj();
}
// MeasResultNR ::= SEQUENCE
SRSASN_CODE meas_result_nr_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(pci_present, 1));
if (pci_present) {
HANDLE_CODE(pack_integer(bref, pci, (uint16_t)0u, (uint16_t)1007u));
}
HANDLE_CODE(bref.pack(meas_result.rs_idx_results_present, 1));
HANDLE_CODE(bref.pack(meas_result.cell_results.results_ssb_cell_present, 1));
HANDLE_CODE(bref.pack(meas_result.cell_results.results_csi_rs_cell_present, 1));
if (meas_result.cell_results.results_ssb_cell_present) {
HANDLE_CODE(meas_result.cell_results.results_ssb_cell.pack(bref));
}
if (meas_result.cell_results.results_csi_rs_cell_present) {
HANDLE_CODE(meas_result.cell_results.results_csi_rs_cell.pack(bref));
}
if (meas_result.rs_idx_results_present) {
HANDLE_CODE(bref.pack(meas_result.rs_idx_results.results_ssb_idxes_present, 1));
HANDLE_CODE(bref.pack(meas_result.rs_idx_results.results_csi_rs_idxes_present, 1));
if (meas_result.rs_idx_results.results_ssb_idxes_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, meas_result.rs_idx_results.results_ssb_idxes, 1, 64));
}
if (meas_result.rs_idx_results.results_csi_rs_idxes_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, meas_result.rs_idx_results.results_csi_rs_idxes, 1, 64));
}
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= cgi_info.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(cgi_info.is_present(), 1));
if (cgi_info.is_present()) {
HANDLE_CODE(cgi_info->pack(bref));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_result_nr_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(pci_present, 1));
if (pci_present) {
HANDLE_CODE(unpack_integer(pci, bref, (uint16_t)0u, (uint16_t)1007u));
}
HANDLE_CODE(bref.unpack(meas_result.rs_idx_results_present, 1));
HANDLE_CODE(bref.unpack(meas_result.cell_results.results_ssb_cell_present, 1));
HANDLE_CODE(bref.unpack(meas_result.cell_results.results_csi_rs_cell_present, 1));
if (meas_result.cell_results.results_ssb_cell_present) {
HANDLE_CODE(meas_result.cell_results.results_ssb_cell.unpack(bref));
}
if (meas_result.cell_results.results_csi_rs_cell_present) {
HANDLE_CODE(meas_result.cell_results.results_csi_rs_cell.unpack(bref));
}
if (meas_result.rs_idx_results_present) {
HANDLE_CODE(bref.unpack(meas_result.rs_idx_results.results_ssb_idxes_present, 1));
HANDLE_CODE(bref.unpack(meas_result.rs_idx_results.results_csi_rs_idxes_present, 1));
if (meas_result.rs_idx_results.results_ssb_idxes_present) {
HANDLE_CODE(unpack_dyn_seq_of(meas_result.rs_idx_results.results_ssb_idxes, bref, 1, 64));
}
if (meas_result.rs_idx_results.results_csi_rs_idxes_present) {
HANDLE_CODE(unpack_dyn_seq_of(meas_result.rs_idx_results.results_csi_rs_idxes, bref, 1, 64));
}
}
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool cgi_info_present;
HANDLE_CODE(bref.unpack(cgi_info_present, 1));
cgi_info.set_present(cgi_info_present);
if (cgi_info.is_present()) {
HANDLE_CODE(cgi_info->unpack(bref));
}
}
}
return SRSASN_SUCCESS;
}
void meas_result_nr_s::to_json(json_writer& j) const
{
j.start_obj();
if (pci_present) {
j.write_int("physCellId", pci);
}
j.write_fieldname("measResult");
j.start_obj();
j.write_fieldname("cellResults");
j.start_obj();
if (meas_result.cell_results.results_ssb_cell_present) {
j.write_fieldname("resultsSSB-Cell");
meas_result.cell_results.results_ssb_cell.to_json(j);
}
if (meas_result.cell_results.results_csi_rs_cell_present) {
j.write_fieldname("resultsCSI-RS-Cell");
meas_result.cell_results.results_csi_rs_cell.to_json(j);
}
j.end_obj();
if (meas_result.rs_idx_results_present) {
j.write_fieldname("rsIndexResults");
j.start_obj();
if (meas_result.rs_idx_results.results_ssb_idxes_present) {
j.start_array("resultsSSB-Indexes");
for (const auto& e1 : meas_result.rs_idx_results.results_ssb_idxes) {
e1.to_json(j);
}
j.end_array();
}
if (meas_result.rs_idx_results.results_csi_rs_idxes_present) {
j.start_array("resultsCSI-RS-Indexes");
for (const auto& e1 : meas_result.rs_idx_results.results_csi_rs_idxes) {
e1.to_json(j);
}
j.end_array();
}
j.end_obj();
}
j.end_obj();
if (ext) {
if (cgi_info.is_present()) {
j.write_fieldname("cgi-Info");
cgi_info->to_json(j);
}
}
j.end_obj();
}
// MeasResultEUTRA ::= SEQUENCE
SRSASN_CODE meas_result_eutra_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(cgi_info_present, 1));
HANDLE_CODE(pack_integer(bref, eutra_pci, (uint16_t)0u, (uint16_t)1007u));
HANDLE_CODE(meas_result.pack(bref));
if (cgi_info_present) {
HANDLE_CODE(cgi_info.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_result_eutra_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(cgi_info_present, 1));
HANDLE_CODE(unpack_integer(eutra_pci, bref, (uint16_t)0u, (uint16_t)1007u));
HANDLE_CODE(meas_result.unpack(bref));
if (cgi_info_present) {
HANDLE_CODE(cgi_info.unpack(bref));
}
return SRSASN_SUCCESS;
}
void meas_result_eutra_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("eutra-PhysCellId", eutra_pci);
j.write_fieldname("measResult");
meas_result.to_json(j);
if (cgi_info_present) {
j.write_fieldname("cgi-Info");
cgi_info.to_json(j);
}
j.end_obj();
}
// UplinkTxDirectCurrentBWP ::= SEQUENCE
SRSASN_CODE ul_tx_direct_current_bwp_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, bwp_id, (uint8_t)0u, (uint8_t)4u));
HANDLE_CODE(bref.pack(shift7dot5k_hz, 1));
HANDLE_CODE(pack_integer(bref, tx_direct_current_location, (uint16_t)0u, (uint16_t)3301u));
return SRSASN_SUCCESS;
}
SRSASN_CODE ul_tx_direct_current_bwp_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(bwp_id, bref, (uint8_t)0u, (uint8_t)4u));
HANDLE_CODE(bref.unpack(shift7dot5k_hz, 1));
HANDLE_CODE(unpack_integer(tx_direct_current_location, bref, (uint16_t)0u, (uint16_t)3301u));
return SRSASN_SUCCESS;
}
void ul_tx_direct_current_bwp_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("bwp-Id", bwp_id);
j.write_bool("shift7dot5kHz", shift7dot5k_hz);
j.write_int("txDirectCurrentLocation", tx_direct_current_location);
j.end_obj();
}
// EUTRA-RSTD-Info ::= SEQUENCE
SRSASN_CODE eutra_rstd_info_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(pack_integer(bref, carrier_freq, (uint32_t)0u, (uint32_t)262143u));
HANDLE_CODE(pack_integer(bref, meas_prs_offset, (uint8_t)0u, (uint8_t)39u));
return SRSASN_SUCCESS;
}
SRSASN_CODE eutra_rstd_info_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(unpack_integer(carrier_freq, bref, (uint32_t)0u, (uint32_t)262143u));
HANDLE_CODE(unpack_integer(meas_prs_offset, bref, (uint8_t)0u, (uint8_t)39u));
return SRSASN_SUCCESS;
}
void eutra_rstd_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("carrierFreq", carrier_freq);
j.write_int("measPRS-Offset", meas_prs_offset);
j.end_obj();
}
// MIMO-LayersDL ::= ENUMERATED
const char* mimo_layers_dl_opts::to_string() const
{
static const char* options[] = {"twoLayers", "fourLayers", "eightLayers"};
return convert_enum_idx(options, 3, value, "mimo_layers_dl_e");
}
uint8_t mimo_layers_dl_opts::to_number() const
{
static const uint8_t options[] = {2, 4, 8};
return map_enum_number(options, 3, value, "mimo_layers_dl_e");
}
// MIMO-LayersUL ::= ENUMERATED
const char* mimo_layers_ul_opts::to_string() const
{
static const char* options[] = {"oneLayer", "twoLayers", "fourLayers"};
return convert_enum_idx(options, 3, value, "mimo_layers_ul_e");
}
uint8_t mimo_layers_ul_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 4};
return map_enum_number(options, 3, value, "mimo_layers_ul_e");
}
// MeasResult2EUTRA ::= SEQUENCE
SRSASN_CODE meas_result2_eutra_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(meas_result_serving_cell_present, 1));
HANDLE_CODE(bref.pack(meas_result_best_neigh_cell_present, 1));
HANDLE_CODE(pack_integer(bref, carrier_freq, (uint32_t)0u, (uint32_t)262143u));
if (meas_result_serving_cell_present) {
HANDLE_CODE(meas_result_serving_cell.pack(bref));
}
if (meas_result_best_neigh_cell_present) {
HANDLE_CODE(meas_result_best_neigh_cell.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_result2_eutra_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(meas_result_serving_cell_present, 1));
HANDLE_CODE(bref.unpack(meas_result_best_neigh_cell_present, 1));
HANDLE_CODE(unpack_integer(carrier_freq, bref, (uint32_t)0u, (uint32_t)262143u));
if (meas_result_serving_cell_present) {
HANDLE_CODE(meas_result_serving_cell.unpack(bref));
}
if (meas_result_best_neigh_cell_present) {
HANDLE_CODE(meas_result_best_neigh_cell.unpack(bref));
}
return SRSASN_SUCCESS;
}
void meas_result2_eutra_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("carrierFreq", carrier_freq);
if (meas_result_serving_cell_present) {
j.write_fieldname("measResultServingCell");
meas_result_serving_cell.to_json(j);
}
if (meas_result_best_neigh_cell_present) {
j.write_fieldname("measResultBestNeighCell");
meas_result_best_neigh_cell.to_json(j);
}
j.end_obj();
}
// MeasResult2NR ::= SEQUENCE
SRSASN_CODE meas_result2_nr_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(ssb_freq_present, 1));
HANDLE_CODE(bref.pack(ref_freq_csi_rs_present, 1));
HANDLE_CODE(bref.pack(meas_result_serving_cell_present, 1));
HANDLE_CODE(bref.pack(meas_result_neigh_cell_list_nr_present, 1));
if (ssb_freq_present) {
HANDLE_CODE(pack_integer(bref, ssb_freq, (uint32_t)0u, (uint32_t)3279165u));
}
if (ref_freq_csi_rs_present) {
HANDLE_CODE(pack_integer(bref, ref_freq_csi_rs, (uint32_t)0u, (uint32_t)3279165u));
}
if (meas_result_serving_cell_present) {
HANDLE_CODE(meas_result_serving_cell.pack(bref));
}
if (meas_result_neigh_cell_list_nr_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_neigh_cell_list_nr, 1, 8));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_result2_nr_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(ssb_freq_present, 1));
HANDLE_CODE(bref.unpack(ref_freq_csi_rs_present, 1));
HANDLE_CODE(bref.unpack(meas_result_serving_cell_present, 1));
HANDLE_CODE(bref.unpack(meas_result_neigh_cell_list_nr_present, 1));
if (ssb_freq_present) {
HANDLE_CODE(unpack_integer(ssb_freq, bref, (uint32_t)0u, (uint32_t)3279165u));
}
if (ref_freq_csi_rs_present) {
HANDLE_CODE(unpack_integer(ref_freq_csi_rs, bref, (uint32_t)0u, (uint32_t)3279165u));
}
if (meas_result_serving_cell_present) {
HANDLE_CODE(meas_result_serving_cell.unpack(bref));
}
if (meas_result_neigh_cell_list_nr_present) {
HANDLE_CODE(unpack_dyn_seq_of(meas_result_neigh_cell_list_nr, bref, 1, 8));
}
return SRSASN_SUCCESS;
}
void meas_result2_nr_s::to_json(json_writer& j) const
{
j.start_obj();
if (ssb_freq_present) {
j.write_int("ssbFrequency", ssb_freq);
}
if (ref_freq_csi_rs_present) {
j.write_int("refFreqCSI-RS", ref_freq_csi_rs);
}
if (meas_result_serving_cell_present) {
j.write_fieldname("measResultServingCell");
meas_result_serving_cell.to_json(j);
}
if (meas_result_neigh_cell_list_nr_present) {
j.start_array("measResultNeighCellListNR");
for (const auto& e1 : meas_result_neigh_cell_list_nr) {
e1.to_json(j);
}
j.end_array();
}
j.end_obj();
}
// MeasResultCellSFTD-NR ::= SEQUENCE
SRSASN_CODE meas_result_cell_sftd_nr_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(rsrp_result_present, 1));
HANDLE_CODE(pack_integer(bref, pci, (uint16_t)0u, (uint16_t)1007u));
HANDLE_CODE(pack_integer(bref, sfn_offset_result, (uint16_t)0u, (uint16_t)1023u));
HANDLE_CODE(pack_integer(bref, frame_boundary_offset_result, (int16_t)-30720, (int16_t)30719));
if (rsrp_result_present) {
HANDLE_CODE(pack_integer(bref, rsrp_result, (uint8_t)0u, (uint8_t)127u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_result_cell_sftd_nr_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(rsrp_result_present, 1));
HANDLE_CODE(unpack_integer(pci, bref, (uint16_t)0u, (uint16_t)1007u));
HANDLE_CODE(unpack_integer(sfn_offset_result, bref, (uint16_t)0u, (uint16_t)1023u));
HANDLE_CODE(unpack_integer(frame_boundary_offset_result, bref, (int16_t)-30720, (int16_t)30719));
if (rsrp_result_present) {
HANDLE_CODE(unpack_integer(rsrp_result, bref, (uint8_t)0u, (uint8_t)127u));
}
return SRSASN_SUCCESS;
}
void meas_result_cell_sftd_nr_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("physCellId", pci);
j.write_int("sfn-OffsetResult", sfn_offset_result);
j.write_int("frameBoundaryOffsetResult", frame_boundary_offset_result);
if (rsrp_result_present) {
j.write_int("rsrp-Result", rsrp_result);
}
j.end_obj();
}
// MeasResultServMO ::= SEQUENCE
SRSASN_CODE meas_result_serv_mo_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(meas_result_best_neigh_cell_present, 1));
HANDLE_CODE(pack_integer(bref, serv_cell_id, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(meas_result_serving_cell.pack(bref));
if (meas_result_best_neigh_cell_present) {
HANDLE_CODE(meas_result_best_neigh_cell.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_result_serv_mo_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(meas_result_best_neigh_cell_present, 1));
HANDLE_CODE(unpack_integer(serv_cell_id, bref, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(meas_result_serving_cell.unpack(bref));
if (meas_result_best_neigh_cell_present) {
HANDLE_CODE(meas_result_best_neigh_cell.unpack(bref));
}
return SRSASN_SUCCESS;
}
void meas_result_serv_mo_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("servCellId", serv_cell_id);
j.write_fieldname("measResultServingCell");
meas_result_serving_cell.to_json(j);
if (meas_result_best_neigh_cell_present) {
j.write_fieldname("measResultBestNeighCell");
meas_result_best_neigh_cell.to_json(j);
}
j.end_obj();
}
// ReducedAggregatedBandwidth ::= ENUMERATED
const char* reduced_aggregated_bw_opts::to_string() const
{
static const char* options[] = {
"mhz0", "mhz10", "mhz20", "mhz30", "mhz40", "mhz50", "mhz60", "mhz80", "mhz100", "mhz200", "mhz300", "mhz400"};
return convert_enum_idx(options, 12, value, "reduced_aggregated_bw_e");
}
uint16_t reduced_aggregated_bw_opts::to_number() const
{
static const uint16_t options[] = {0, 10, 20, 30, 40, 50, 60, 80, 100, 200, 300, 400};
return map_enum_number(options, 12, value, "reduced_aggregated_bw_e");
}
// UplinkTxDirectCurrentCell ::= SEQUENCE
SRSASN_CODE ul_tx_direct_current_cell_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(pack_integer(bref, serv_cell_idx, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(pack_dyn_seq_of(bref, ul_direct_current_bwp, 1, 4));
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= ul_direct_current_bwp_sul.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(ul_direct_current_bwp_sul.is_present(), 1));
if (ul_direct_current_bwp_sul.is_present()) {
HANDLE_CODE(pack_dyn_seq_of(bref, *ul_direct_current_bwp_sul, 1, 4));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ul_tx_direct_current_cell_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(unpack_integer(serv_cell_idx, bref, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(unpack_dyn_seq_of(ul_direct_current_bwp, bref, 1, 4));
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool ul_direct_current_bwp_sul_present;
HANDLE_CODE(bref.unpack(ul_direct_current_bwp_sul_present, 1));
ul_direct_current_bwp_sul.set_present(ul_direct_current_bwp_sul_present);
if (ul_direct_current_bwp_sul.is_present()) {
HANDLE_CODE(unpack_dyn_seq_of(*ul_direct_current_bwp_sul, bref, 1, 4));
}
}
}
return SRSASN_SUCCESS;
}
void ul_tx_direct_current_cell_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("servCellIndex", serv_cell_idx);
j.start_array("uplinkDirectCurrentBWP");
for (const auto& e1 : ul_direct_current_bwp) {
e1.to_json(j);
}
j.end_array();
if (ext) {
if (ul_direct_current_bwp_sul.is_present()) {
j.start_array("uplinkDirectCurrentBWP-SUL");
for (const auto& e1 : *ul_direct_current_bwp_sul) {
e1.to_json(j);
}
j.end_array();
}
}
j.end_obj();
}
// DRB-CountInfo ::= SEQUENCE
SRSASN_CODE drb_count_info_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, drb_id, (uint8_t)1u, (uint8_t)32u));
HANDLE_CODE(pack_integer(bref, count_ul, (uint64_t)0u, (uint64_t)4294967295u));
HANDLE_CODE(pack_integer(bref, count_dl, (uint64_t)0u, (uint64_t)4294967295u));
return SRSASN_SUCCESS;
}
SRSASN_CODE drb_count_info_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(drb_id, bref, (uint8_t)1u, (uint8_t)32u));
HANDLE_CODE(unpack_integer(count_ul, bref, (uint64_t)0u, (uint64_t)4294967295u));
HANDLE_CODE(unpack_integer(count_dl, bref, (uint64_t)0u, (uint64_t)4294967295u));
return SRSASN_SUCCESS;
}
void drb_count_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("drb-Identity", drb_id);
j.write_int("count-Uplink", count_ul);
j.write_int("count-Downlink", count_dl);
j.end_obj();
}
// MeasResultSFTD-EUTRA ::= SEQUENCE
SRSASN_CODE meas_result_sftd_eutra_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(rsrp_result_present, 1));
HANDLE_CODE(pack_integer(bref, eutra_pci, (uint16_t)0u, (uint16_t)503u));
HANDLE_CODE(pack_integer(bref, sfn_offset_result, (uint16_t)0u, (uint16_t)1023u));
HANDLE_CODE(pack_integer(bref, frame_boundary_offset_result, (int16_t)-30720, (int16_t)30719));
if (rsrp_result_present) {
HANDLE_CODE(pack_integer(bref, rsrp_result, (uint8_t)0u, (uint8_t)127u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_result_sftd_eutra_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(rsrp_result_present, 1));
HANDLE_CODE(unpack_integer(eutra_pci, bref, (uint16_t)0u, (uint16_t)503u));
HANDLE_CODE(unpack_integer(sfn_offset_result, bref, (uint16_t)0u, (uint16_t)1023u));
HANDLE_CODE(unpack_integer(frame_boundary_offset_result, bref, (int16_t)-30720, (int16_t)30719));
if (rsrp_result_present) {
HANDLE_CODE(unpack_integer(rsrp_result, bref, (uint8_t)0u, (uint8_t)127u));
}
return SRSASN_SUCCESS;
}
void meas_result_sftd_eutra_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("eutra-PhysCellId", eutra_pci);
j.write_int("sfn-OffsetResult", sfn_offset_result);
j.write_int("frameBoundaryOffsetResult", frame_boundary_offset_result);
if (rsrp_result_present) {
j.write_int("rsrp-Result", rsrp_result);
}
j.end_obj();
}
// OverheatingAssistance ::= SEQUENCE
SRSASN_CODE overheat_assist_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(reduced_max_ccs_present, 1));
HANDLE_CODE(bref.pack(reduced_max_bw_fr1_present, 1));
HANDLE_CODE(bref.pack(reduced_max_bw_fr2_present, 1));
HANDLE_CODE(bref.pack(reduced_max_mimo_layers_fr1_present, 1));
HANDLE_CODE(bref.pack(reduced_max_mimo_layers_fr2_present, 1));
if (reduced_max_ccs_present) {
HANDLE_CODE(pack_integer(bref, reduced_max_ccs.reduced_ccs_dl, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(pack_integer(bref, reduced_max_ccs.reduced_ccs_ul, (uint8_t)0u, (uint8_t)31u));
}
if (reduced_max_bw_fr1_present) {
HANDLE_CODE(reduced_max_bw_fr1.reduced_bw_fr1_dl.pack(bref));
HANDLE_CODE(reduced_max_bw_fr1.reduced_bw_fr1_ul.pack(bref));
}
if (reduced_max_bw_fr2_present) {
HANDLE_CODE(reduced_max_bw_fr2.reduced_bw_fr2_dl.pack(bref));
HANDLE_CODE(reduced_max_bw_fr2.reduced_bw_fr2_ul.pack(bref));
}
if (reduced_max_mimo_layers_fr1_present) {
HANDLE_CODE(reduced_max_mimo_layers_fr1.reduced_mimo_layers_fr1_dl.pack(bref));
HANDLE_CODE(reduced_max_mimo_layers_fr1.reduced_mimo_layers_fr1_ul.pack(bref));
}
if (reduced_max_mimo_layers_fr2_present) {
HANDLE_CODE(reduced_max_mimo_layers_fr2.reduced_mimo_layers_fr2_dl.pack(bref));
HANDLE_CODE(reduced_max_mimo_layers_fr2.reduced_mimo_layers_fr2_ul.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE overheat_assist_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(reduced_max_ccs_present, 1));
HANDLE_CODE(bref.unpack(reduced_max_bw_fr1_present, 1));
HANDLE_CODE(bref.unpack(reduced_max_bw_fr2_present, 1));
HANDLE_CODE(bref.unpack(reduced_max_mimo_layers_fr1_present, 1));
HANDLE_CODE(bref.unpack(reduced_max_mimo_layers_fr2_present, 1));
if (reduced_max_ccs_present) {
HANDLE_CODE(unpack_integer(reduced_max_ccs.reduced_ccs_dl, bref, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(unpack_integer(reduced_max_ccs.reduced_ccs_ul, bref, (uint8_t)0u, (uint8_t)31u));
}
if (reduced_max_bw_fr1_present) {
HANDLE_CODE(reduced_max_bw_fr1.reduced_bw_fr1_dl.unpack(bref));
HANDLE_CODE(reduced_max_bw_fr1.reduced_bw_fr1_ul.unpack(bref));
}
if (reduced_max_bw_fr2_present) {
HANDLE_CODE(reduced_max_bw_fr2.reduced_bw_fr2_dl.unpack(bref));
HANDLE_CODE(reduced_max_bw_fr2.reduced_bw_fr2_ul.unpack(bref));
}
if (reduced_max_mimo_layers_fr1_present) {
HANDLE_CODE(reduced_max_mimo_layers_fr1.reduced_mimo_layers_fr1_dl.unpack(bref));
HANDLE_CODE(reduced_max_mimo_layers_fr1.reduced_mimo_layers_fr1_ul.unpack(bref));
}
if (reduced_max_mimo_layers_fr2_present) {
HANDLE_CODE(reduced_max_mimo_layers_fr2.reduced_mimo_layers_fr2_dl.unpack(bref));
HANDLE_CODE(reduced_max_mimo_layers_fr2.reduced_mimo_layers_fr2_ul.unpack(bref));
}
return SRSASN_SUCCESS;
}
void overheat_assist_s::to_json(json_writer& j) const
{
j.start_obj();
if (reduced_max_ccs_present) {
j.write_fieldname("reducedMaxCCs");
j.start_obj();
j.write_int("reducedCCsDL", reduced_max_ccs.reduced_ccs_dl);
j.write_int("reducedCCsUL", reduced_max_ccs.reduced_ccs_ul);
j.end_obj();
}
if (reduced_max_bw_fr1_present) {
j.write_fieldname("reducedMaxBW-FR1");
j.start_obj();
j.write_str("reducedBW-FR1-DL", reduced_max_bw_fr1.reduced_bw_fr1_dl.to_string());
j.write_str("reducedBW-FR1-UL", reduced_max_bw_fr1.reduced_bw_fr1_ul.to_string());
j.end_obj();
}
if (reduced_max_bw_fr2_present) {
j.write_fieldname("reducedMaxBW-FR2");
j.start_obj();
j.write_str("reducedBW-FR2-DL", reduced_max_bw_fr2.reduced_bw_fr2_dl.to_string());
j.write_str("reducedBW-FR2-UL", reduced_max_bw_fr2.reduced_bw_fr2_ul.to_string());
j.end_obj();
}
if (reduced_max_mimo_layers_fr1_present) {
j.write_fieldname("reducedMaxMIMO-LayersFR1");
j.start_obj();
j.write_str("reducedMIMO-LayersFR1-DL", reduced_max_mimo_layers_fr1.reduced_mimo_layers_fr1_dl.to_string());
j.write_str("reducedMIMO-LayersFR1-UL", reduced_max_mimo_layers_fr1.reduced_mimo_layers_fr1_ul.to_string());
j.end_obj();
}
if (reduced_max_mimo_layers_fr2_present) {
j.write_fieldname("reducedMaxMIMO-LayersFR2");
j.start_obj();
j.write_str("reducedMIMO-LayersFR2-DL", reduced_max_mimo_layers_fr2.reduced_mimo_layers_fr2_dl.to_string());
j.write_str("reducedMIMO-LayersFR2-UL", reduced_max_mimo_layers_fr2.reduced_mimo_layers_fr2_ul.to_string());
j.end_obj();
}
j.end_obj();
}
// RRCReconfigurationComplete-v1560-IEs ::= SEQUENCE
SRSASN_CODE rrc_recfg_complete_v1560_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(scg_resp_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (scg_resp_present) {
HANDLE_CODE(scg_resp.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_recfg_complete_v1560_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(scg_resp_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (scg_resp_present) {
HANDLE_CODE(scg_resp.unpack(bref));
}
return SRSASN_SUCCESS;
}
void rrc_recfg_complete_v1560_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (scg_resp_present) {
j.write_fieldname("scg-Response");
scg_resp.to_json(j);
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
void rrc_recfg_complete_v1560_ies_s::scg_resp_c_::destroy_()
{
switch (type_) {
case types::nr_scg_resp:
c.destroy<dyn_octstring>();
break;
case types::eutra_scg_resp:
c.destroy<dyn_octstring>();
break;
default:
break;
}
}
void rrc_recfg_complete_v1560_ies_s::scg_resp_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::nr_scg_resp:
c.init<dyn_octstring>();
break;
case types::eutra_scg_resp:
c.init<dyn_octstring>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rrc_recfg_complete_v1560_ies_s::scg_resp_c_");
}
}
rrc_recfg_complete_v1560_ies_s::scg_resp_c_::scg_resp_c_(const rrc_recfg_complete_v1560_ies_s::scg_resp_c_& other)
{
type_ = other.type();
switch (type_) {
case types::nr_scg_resp:
c.init(other.c.get<dyn_octstring>());
break;
case types::eutra_scg_resp:
c.init(other.c.get<dyn_octstring>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rrc_recfg_complete_v1560_ies_s::scg_resp_c_");
}
}
rrc_recfg_complete_v1560_ies_s::scg_resp_c_&
rrc_recfg_complete_v1560_ies_s::scg_resp_c_::operator=(const rrc_recfg_complete_v1560_ies_s::scg_resp_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::nr_scg_resp:
c.set(other.c.get<dyn_octstring>());
break;
case types::eutra_scg_resp:
c.set(other.c.get<dyn_octstring>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rrc_recfg_complete_v1560_ies_s::scg_resp_c_");
}
return *this;
}
dyn_octstring& rrc_recfg_complete_v1560_ies_s::scg_resp_c_::set_nr_scg_resp()
{
set(types::nr_scg_resp);
return c.get<dyn_octstring>();
}
dyn_octstring& rrc_recfg_complete_v1560_ies_s::scg_resp_c_::set_eutra_scg_resp()
{
set(types::eutra_scg_resp);
return c.get<dyn_octstring>();
}
void rrc_recfg_complete_v1560_ies_s::scg_resp_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::nr_scg_resp:
j.write_str("nr-SCG-Response", c.get<dyn_octstring>().to_string());
break;
case types::eutra_scg_resp:
j.write_str("eutra-SCG-Response", c.get<dyn_octstring>().to_string());
break;
default:
log_invalid_choice_id(type_, "rrc_recfg_complete_v1560_ies_s::scg_resp_c_");
}
j.end_obj();
}
SRSASN_CODE rrc_recfg_complete_v1560_ies_s::scg_resp_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::nr_scg_resp:
HANDLE_CODE(c.get<dyn_octstring>().pack(bref));
break;
case types::eutra_scg_resp:
HANDLE_CODE(c.get<dyn_octstring>().pack(bref));
break;
default:
log_invalid_choice_id(type_, "rrc_recfg_complete_v1560_ies_s::scg_resp_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_recfg_complete_v1560_ies_s::scg_resp_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::nr_scg_resp:
HANDLE_CODE(c.get<dyn_octstring>().unpack(bref));
break;
case types::eutra_scg_resp:
HANDLE_CODE(c.get<dyn_octstring>().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "rrc_recfg_complete_v1560_ies_s::scg_resp_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* rrc_recfg_complete_v1560_ies_s::scg_resp_c_::types_opts::to_string() const
{
static const char* options[] = {"nr-SCG-Response", "eutra-SCG-Response"};
return convert_enum_idx(options, 2, value, "rrc_recfg_complete_v1560_ies_s::scg_resp_c_::types");
}
// UE-CapabilityRAT-Container ::= SEQUENCE
SRSASN_CODE ue_cap_rat_container_s::pack(bit_ref& bref) const
{
HANDLE_CODE(rat_type.pack(bref));
HANDLE_CODE(ue_cap_rat_container.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_cap_rat_container_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(rat_type.unpack(bref));
HANDLE_CODE(ue_cap_rat_container.unpack(bref));
return SRSASN_SUCCESS;
}
void ue_cap_rat_container_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("rat-Type", rat_type.to_string());
j.write_str("ue-CapabilityRAT-Container", ue_cap_rat_container.to_string());
j.end_obj();
}
// DelayBudgetReport ::= CHOICE
void delay_budget_report_c::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("type1", c.to_string());
j.end_obj();
}
SRSASN_CODE delay_budget_report_c::pack(bit_ref& bref) const
{
pack_enum(bref, type());
HANDLE_CODE(c.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE delay_budget_report_c::unpack(cbit_ref& bref)
{
types e;
unpack_enum(e, bref);
if (e != type()) {
log_invalid_choice_id(e, "delay_budget_report_c");
return SRSASN_ERROR_DECODE_FAIL;
}
HANDLE_CODE(c.unpack(bref));
return SRSASN_SUCCESS;
}
const char* delay_budget_report_c::type1_opts::to_string() const
{
static const char* options[] = {"msMinus1280",
"msMinus640",
"msMinus320",
"msMinus160",
"msMinus80",
"msMinus60",
"msMinus40",
"msMinus20",
"ms0",
"ms20",
"ms40",
"ms60",
"ms80",
"ms160",
"ms320",
"ms640",
"ms1280"};
return convert_enum_idx(options, 17, value, "delay_budget_report_c::type1_e_");
}
int16_t delay_budget_report_c::type1_opts::to_number() const
{
static const int16_t options[] = {
-1280, -640, -320, -160, -80, -60, -40, -20, 0, 20, 40, 60, 80, 160, 320, 640, 1280};
return map_enum_number(options, 17, value, "delay_budget_report_c::type1_e_");
}
const char* delay_budget_report_c::types_opts::to_string() const
{
static const char* options[] = {"type1"};
return convert_enum_idx(options, 1, value, "delay_budget_report_c::types");
}
uint8_t delay_budget_report_c::types_opts::to_number() const
{
static const uint8_t options[] = {1};
return map_enum_number(options, 1, value, "delay_budget_report_c::types");
}
// FailureInfoRLC-Bearer ::= SEQUENCE
SRSASN_CODE fail_info_rlc_bearer_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, cell_group_id, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(pack_integer(bref, lc_ch_id, (uint8_t)1u, (uint8_t)32u));
HANDLE_CODE(fail_type.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE fail_info_rlc_bearer_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(cell_group_id, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(unpack_integer(lc_ch_id, bref, (uint8_t)1u, (uint8_t)32u));
HANDLE_CODE(fail_type.unpack(bref));
return SRSASN_SUCCESS;
}
void fail_info_rlc_bearer_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("cellGroupId", cell_group_id);
j.write_int("logicalChannelIdentity", lc_ch_id);
j.write_str("failureType", fail_type.to_string());
j.end_obj();
}
const char* fail_info_rlc_bearer_s::fail_type_opts::to_string() const
{
static const char* options[] = {"rlc-failure", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 4, value, "fail_info_rlc_bearer_s::fail_type_e_");
}
// FailureReportSCG ::= SEQUENCE
SRSASN_CODE fail_report_scg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(meas_result_freq_list_present, 1));
HANDLE_CODE(bref.pack(meas_result_scg_fail_present, 1));
HANDLE_CODE(fail_type.pack(bref));
if (meas_result_freq_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_freq_list, 1, 8));
}
if (meas_result_scg_fail_present) {
HANDLE_CODE(meas_result_scg_fail.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE fail_report_scg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(meas_result_freq_list_present, 1));
HANDLE_CODE(bref.unpack(meas_result_scg_fail_present, 1));
HANDLE_CODE(fail_type.unpack(bref));
if (meas_result_freq_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(meas_result_freq_list, bref, 1, 8));
}
if (meas_result_scg_fail_present) {
HANDLE_CODE(meas_result_scg_fail.unpack(bref));
}
return SRSASN_SUCCESS;
}
void fail_report_scg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("failureType", fail_type.to_string());
if (meas_result_freq_list_present) {
j.start_array("measResultFreqList");
for (const auto& e1 : meas_result_freq_list) {
e1.to_json(j);
}
j.end_array();
}
if (meas_result_scg_fail_present) {
j.write_str("measResultSCG-Failure", meas_result_scg_fail.to_string());
}
j.end_obj();
}
const char* fail_report_scg_s::fail_type_opts::to_string() const
{
static const char* options[] = {"t310-Expiry",
"randomAccessProblem",
"rlc-MaxNumRetx",
"synchReconfigFailureSCG",
"scg-ReconfigFailure",
"srb3-IntegrityFailure",
"spare2",
"spare1"};
return convert_enum_idx(options, 8, value, "fail_report_scg_s::fail_type_e_");
}
uint16_t fail_report_scg_s::fail_type_opts::to_number() const
{
switch (value) {
case t310_expiry:
return 310;
case srb3_integrity_fail:
return 3;
default:
invalid_enum_number(value, "fail_report_scg_s::fail_type_e_");
}
return 0;
}
// FailureReportSCG-EUTRA ::= SEQUENCE
SRSASN_CODE fail_report_scg_eutra_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(meas_result_freq_list_mrdc_present, 1));
HANDLE_CODE(bref.pack(meas_result_scg_fail_mrdc_present, 1));
HANDLE_CODE(fail_type.pack(bref));
if (meas_result_freq_list_mrdc_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_freq_list_mrdc, 1, 8));
}
if (meas_result_scg_fail_mrdc_present) {
HANDLE_CODE(meas_result_scg_fail_mrdc.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE fail_report_scg_eutra_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(meas_result_freq_list_mrdc_present, 1));
HANDLE_CODE(bref.unpack(meas_result_scg_fail_mrdc_present, 1));
HANDLE_CODE(fail_type.unpack(bref));
if (meas_result_freq_list_mrdc_present) {
HANDLE_CODE(unpack_dyn_seq_of(meas_result_freq_list_mrdc, bref, 1, 8));
}
if (meas_result_scg_fail_mrdc_present) {
HANDLE_CODE(meas_result_scg_fail_mrdc.unpack(bref));
}
return SRSASN_SUCCESS;
}
void fail_report_scg_eutra_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("failureType", fail_type.to_string());
if (meas_result_freq_list_mrdc_present) {
j.start_array("measResultFreqListMRDC");
for (const auto& e1 : meas_result_freq_list_mrdc) {
e1.to_json(j);
}
j.end_array();
}
if (meas_result_scg_fail_mrdc_present) {
j.write_str("measResultSCG-FailureMRDC", meas_result_scg_fail_mrdc.to_string());
}
j.end_obj();
}
const char* fail_report_scg_eutra_s::fail_type_opts::to_string() const
{
static const char* options[] = {"t313-Expiry",
"randomAccessProblem",
"rlc-MaxNumRetx",
"scg-ChangeFailure",
"spare4",
"spare3",
"spare2",
"spare1"};
return convert_enum_idx(options, 8, value, "fail_report_scg_eutra_s::fail_type_e_");
}
uint16_t fail_report_scg_eutra_s::fail_type_opts::to_number() const
{
static const uint16_t options[] = {313};
return map_enum_number(options, 1, value, "fail_report_scg_eutra_s::fail_type_e_");
}
// LocationMeasurementInfo ::= CHOICE
void location_meas_info_c::set(types::options e)
{
type_ = e;
}
eutra_rstd_info_list_l& location_meas_info_c::set_eutra_rstd()
{
set(types::eutra_rstd);
return c;
}
void location_meas_info_c::set_eutra_fine_timing_detection()
{
set(types::eutra_fine_timing_detection);
}
void location_meas_info_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::eutra_rstd:
j.start_array("eutra-RSTD");
for (const auto& e1 : c) {
e1.to_json(j);
}
j.end_array();
break;
case types::eutra_fine_timing_detection:
break;
default:
log_invalid_choice_id(type_, "location_meas_info_c");
}
j.end_obj();
}
SRSASN_CODE location_meas_info_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::eutra_rstd:
HANDLE_CODE(pack_dyn_seq_of(bref, c, 1, 3));
break;
case types::eutra_fine_timing_detection:
break;
default:
log_invalid_choice_id(type_, "location_meas_info_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE location_meas_info_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::eutra_rstd:
HANDLE_CODE(unpack_dyn_seq_of(c, bref, 1, 3));
break;
case types::eutra_fine_timing_detection:
break;
default:
log_invalid_choice_id(type_, "location_meas_info_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* location_meas_info_c::types_opts::to_string() const
{
static const char* options[] = {"eutra-RSTD", "eutra-FineTimingDetection"};
return convert_enum_idx(options, 2, value, "location_meas_info_c::types");
}
// MeasResults ::= SEQUENCE
SRSASN_CODE meas_results_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(meas_result_neigh_cells_present, 1));
HANDLE_CODE(pack_integer(bref, meas_id, (uint8_t)1u, (uint8_t)64u));
HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_serving_mo_list, 1, 32));
if (meas_result_neigh_cells_present) {
HANDLE_CODE(meas_result_neigh_cells.pack(bref));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= meas_result_serv_freq_list_eutra_scg.is_present();
group_flags[0] |= meas_result_serv_freq_list_nr_scg.is_present();
group_flags[0] |= meas_result_sftd_eutra.is_present();
group_flags[0] |= meas_result_sftd_nr.is_present();
group_flags[1] |= meas_result_cell_list_sftd_nr.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(meas_result_serv_freq_list_eutra_scg.is_present(), 1));
HANDLE_CODE(bref.pack(meas_result_serv_freq_list_nr_scg.is_present(), 1));
HANDLE_CODE(bref.pack(meas_result_sftd_eutra.is_present(), 1));
HANDLE_CODE(bref.pack(meas_result_sftd_nr.is_present(), 1));
if (meas_result_serv_freq_list_eutra_scg.is_present()) {
HANDLE_CODE(pack_dyn_seq_of(bref, *meas_result_serv_freq_list_eutra_scg, 1, 32));
}
if (meas_result_serv_freq_list_nr_scg.is_present()) {
HANDLE_CODE(pack_dyn_seq_of(bref, *meas_result_serv_freq_list_nr_scg, 1, 32));
}
if (meas_result_sftd_eutra.is_present()) {
HANDLE_CODE(meas_result_sftd_eutra->pack(bref));
}
if (meas_result_sftd_nr.is_present()) {
HANDLE_CODE(meas_result_sftd_nr->pack(bref));
}
}
if (group_flags[1]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(meas_result_cell_list_sftd_nr.is_present(), 1));
if (meas_result_cell_list_sftd_nr.is_present()) {
HANDLE_CODE(pack_dyn_seq_of(bref, *meas_result_cell_list_sftd_nr, 1, 3));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_results_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(meas_result_neigh_cells_present, 1));
HANDLE_CODE(unpack_integer(meas_id, bref, (uint8_t)1u, (uint8_t)64u));
HANDLE_CODE(unpack_dyn_seq_of(meas_result_serving_mo_list, bref, 1, 32));
if (meas_result_neigh_cells_present) {
HANDLE_CODE(meas_result_neigh_cells.unpack(bref));
}
if (ext) {
ext_groups_unpacker_guard group_flags(2);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool meas_result_serv_freq_list_eutra_scg_present;
HANDLE_CODE(bref.unpack(meas_result_serv_freq_list_eutra_scg_present, 1));
meas_result_serv_freq_list_eutra_scg.set_present(meas_result_serv_freq_list_eutra_scg_present);
bool meas_result_serv_freq_list_nr_scg_present;
HANDLE_CODE(bref.unpack(meas_result_serv_freq_list_nr_scg_present, 1));
meas_result_serv_freq_list_nr_scg.set_present(meas_result_serv_freq_list_nr_scg_present);
bool meas_result_sftd_eutra_present;
HANDLE_CODE(bref.unpack(meas_result_sftd_eutra_present, 1));
meas_result_sftd_eutra.set_present(meas_result_sftd_eutra_present);
bool meas_result_sftd_nr_present;
HANDLE_CODE(bref.unpack(meas_result_sftd_nr_present, 1));
meas_result_sftd_nr.set_present(meas_result_sftd_nr_present);
if (meas_result_serv_freq_list_eutra_scg.is_present()) {
HANDLE_CODE(unpack_dyn_seq_of(*meas_result_serv_freq_list_eutra_scg, bref, 1, 32));
}
if (meas_result_serv_freq_list_nr_scg.is_present()) {
HANDLE_CODE(unpack_dyn_seq_of(*meas_result_serv_freq_list_nr_scg, bref, 1, 32));
}
if (meas_result_sftd_eutra.is_present()) {
HANDLE_CODE(meas_result_sftd_eutra->unpack(bref));
}
if (meas_result_sftd_nr.is_present()) {
HANDLE_CODE(meas_result_sftd_nr->unpack(bref));
}
}
if (group_flags[1]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool meas_result_cell_list_sftd_nr_present;
HANDLE_CODE(bref.unpack(meas_result_cell_list_sftd_nr_present, 1));
meas_result_cell_list_sftd_nr.set_present(meas_result_cell_list_sftd_nr_present);
if (meas_result_cell_list_sftd_nr.is_present()) {
HANDLE_CODE(unpack_dyn_seq_of(*meas_result_cell_list_sftd_nr, bref, 1, 3));
}
}
}
return SRSASN_SUCCESS;
}
void meas_results_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("measId", meas_id);
j.start_array("measResultServingMOList");
for (const auto& e1 : meas_result_serving_mo_list) {
e1.to_json(j);
}
j.end_array();
if (meas_result_neigh_cells_present) {
j.write_fieldname("measResultNeighCells");
meas_result_neigh_cells.to_json(j);
}
if (ext) {
if (meas_result_serv_freq_list_eutra_scg.is_present()) {
j.start_array("measResultServFreqListEUTRA-SCG");
for (const auto& e1 : *meas_result_serv_freq_list_eutra_scg) {
e1.to_json(j);
}
j.end_array();
}
if (meas_result_serv_freq_list_nr_scg.is_present()) {
j.start_array("measResultServFreqListNR-SCG");
for (const auto& e1 : *meas_result_serv_freq_list_nr_scg) {
e1.to_json(j);
}
j.end_array();
}
if (meas_result_sftd_eutra.is_present()) {
j.write_fieldname("measResultSFTD-EUTRA");
meas_result_sftd_eutra->to_json(j);
}
if (meas_result_sftd_nr.is_present()) {
j.write_fieldname("measResultSFTD-NR");
meas_result_sftd_nr->to_json(j);
}
if (meas_result_cell_list_sftd_nr.is_present()) {
j.start_array("measResultCellListSFTD-NR");
for (const auto& e1 : *meas_result_cell_list_sftd_nr) {
e1.to_json(j);
}
j.end_array();
}
}
j.end_obj();
}
void meas_results_s::meas_result_neigh_cells_c_::destroy_()
{
switch (type_) {
case types::meas_result_list_nr:
c.destroy<meas_result_list_nr_l>();
break;
case types::meas_result_list_eutra:
c.destroy<meas_result_list_eutra_l>();
break;
default:
break;
}
}
void meas_results_s::meas_result_neigh_cells_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::meas_result_list_nr:
c.init<meas_result_list_nr_l>();
break;
case types::meas_result_list_eutra:
c.init<meas_result_list_eutra_l>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "meas_results_s::meas_result_neigh_cells_c_");
}
}
meas_results_s::meas_result_neigh_cells_c_::meas_result_neigh_cells_c_(
const meas_results_s::meas_result_neigh_cells_c_& other)
{
type_ = other.type();
switch (type_) {
case types::meas_result_list_nr:
c.init(other.c.get<meas_result_list_nr_l>());
break;
case types::meas_result_list_eutra:
c.init(other.c.get<meas_result_list_eutra_l>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "meas_results_s::meas_result_neigh_cells_c_");
}
}
meas_results_s::meas_result_neigh_cells_c_&
meas_results_s::meas_result_neigh_cells_c_::operator=(const meas_results_s::meas_result_neigh_cells_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::meas_result_list_nr:
c.set(other.c.get<meas_result_list_nr_l>());
break;
case types::meas_result_list_eutra:
c.set(other.c.get<meas_result_list_eutra_l>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "meas_results_s::meas_result_neigh_cells_c_");
}
return *this;
}
meas_result_list_nr_l& meas_results_s::meas_result_neigh_cells_c_::set_meas_result_list_nr()
{
set(types::meas_result_list_nr);
return c.get<meas_result_list_nr_l>();
}
meas_result_list_eutra_l& meas_results_s::meas_result_neigh_cells_c_::set_meas_result_list_eutra()
{
set(types::meas_result_list_eutra);
return c.get<meas_result_list_eutra_l>();
}
void meas_results_s::meas_result_neigh_cells_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::meas_result_list_nr:
j.start_array("measResultListNR");
for (const auto& e1 : c.get<meas_result_list_nr_l>()) {
e1.to_json(j);
}
j.end_array();
break;
case types::meas_result_list_eutra:
j.start_array("measResultListEUTRA");
for (const auto& e1 : c.get<meas_result_list_eutra_l>()) {
e1.to_json(j);
}
j.end_array();
break;
default:
log_invalid_choice_id(type_, "meas_results_s::meas_result_neigh_cells_c_");
}
j.end_obj();
}
SRSASN_CODE meas_results_s::meas_result_neigh_cells_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::meas_result_list_nr:
HANDLE_CODE(pack_dyn_seq_of(bref, c.get<meas_result_list_nr_l>(), 1, 8));
break;
case types::meas_result_list_eutra: {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(pack_dyn_seq_of(bref, c.get<meas_result_list_eutra_l>(), 1, 8));
} break;
default:
log_invalid_choice_id(type_, "meas_results_s::meas_result_neigh_cells_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_results_s::meas_result_neigh_cells_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::meas_result_list_nr:
HANDLE_CODE(unpack_dyn_seq_of(c.get<meas_result_list_nr_l>(), bref, 1, 8));
break;
case types::meas_result_list_eutra: {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(unpack_dyn_seq_of(c.get<meas_result_list_eutra_l>(), bref, 1, 8));
} break;
default:
log_invalid_choice_id(type_, "meas_results_s::meas_result_neigh_cells_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* meas_results_s::meas_result_neigh_cells_c_::types_opts::to_string() const
{
static const char* options[] = {"measResultListNR", "measResultListEUTRA"};
return convert_enum_idx(options, 2, value, "meas_results_s::meas_result_neigh_cells_c_::types");
}
// RRCReconfigurationComplete-v1530-IEs ::= SEQUENCE
SRSASN_CODE rrc_recfg_complete_v1530_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(ul_tx_direct_current_list_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (ul_tx_direct_current_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, ul_tx_direct_current_list, 1, 32));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_recfg_complete_v1530_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(ul_tx_direct_current_list_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (ul_tx_direct_current_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(ul_tx_direct_current_list, bref, 1, 32));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void rrc_recfg_complete_v1530_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (ul_tx_direct_current_list_present) {
j.start_array("uplinkTxDirectCurrentList");
for (const auto& e1 : ul_tx_direct_current_list) {
e1.to_json(j);
}
j.end_array();
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
// RegisteredAMF ::= SEQUENCE
SRSASN_CODE registered_amf_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(plmn_id_present, 1));
if (plmn_id_present) {
HANDLE_CODE(plmn_id.pack(bref));
}
HANDLE_CODE(amf_id.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE registered_amf_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(plmn_id_present, 1));
if (plmn_id_present) {
HANDLE_CODE(plmn_id.unpack(bref));
}
HANDLE_CODE(amf_id.unpack(bref));
return SRSASN_SUCCESS;
}
void registered_amf_s::to_json(json_writer& j) const
{
j.start_obj();
if (plmn_id_present) {
j.write_fieldname("plmn-Identity");
plmn_id.to_json(j);
}
j.write_str("amf-Identifier", amf_id.to_string());
j.end_obj();
}
// S-NSSAI ::= CHOICE
void s_nssai_c::destroy_()
{
switch (type_) {
case types::sst:
c.destroy<fixed_bitstring<8> >();
break;
case types::sst_sd:
c.destroy<fixed_bitstring<32> >();
break;
default:
break;
}
}
void s_nssai_c::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::sst:
c.init<fixed_bitstring<8> >();
break;
case types::sst_sd:
c.init<fixed_bitstring<32> >();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "s_nssai_c");
}
}
s_nssai_c::s_nssai_c(const s_nssai_c& other)
{
type_ = other.type();
switch (type_) {
case types::sst:
c.init(other.c.get<fixed_bitstring<8> >());
break;
case types::sst_sd:
c.init(other.c.get<fixed_bitstring<32> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "s_nssai_c");
}
}
s_nssai_c& s_nssai_c::operator=(const s_nssai_c& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::sst:
c.set(other.c.get<fixed_bitstring<8> >());
break;
case types::sst_sd:
c.set(other.c.get<fixed_bitstring<32> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "s_nssai_c");
}
return *this;
}
fixed_bitstring<8>& s_nssai_c::set_sst()
{
set(types::sst);
return c.get<fixed_bitstring<8> >();
}
fixed_bitstring<32>& s_nssai_c::set_sst_sd()
{
set(types::sst_sd);
return c.get<fixed_bitstring<32> >();
}
void s_nssai_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::sst:
j.write_str("sst", c.get<fixed_bitstring<8> >().to_string());
break;
case types::sst_sd:
j.write_str("sst-SD", c.get<fixed_bitstring<32> >().to_string());
break;
default:
log_invalid_choice_id(type_, "s_nssai_c");
}
j.end_obj();
}
SRSASN_CODE s_nssai_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::sst:
HANDLE_CODE(c.get<fixed_bitstring<8> >().pack(bref));
break;
case types::sst_sd:
HANDLE_CODE(c.get<fixed_bitstring<32> >().pack(bref));
break;
default:
log_invalid_choice_id(type_, "s_nssai_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE s_nssai_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::sst:
HANDLE_CODE(c.get<fixed_bitstring<8> >().unpack(bref));
break;
case types::sst_sd:
HANDLE_CODE(c.get<fixed_bitstring<32> >().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "s_nssai_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* s_nssai_c::types_opts::to_string() const
{
static const char* options[] = {"sst", "sst-SD"};
return convert_enum_idx(options, 2, value, "s_nssai_c::types");
}
// SCGFailureInformation-v1590-IEs ::= SEQUENCE
SRSASN_CODE scg_fail_info_v1590_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE scg_fail_info_v1590_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void scg_fail_info_v1590_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// SCGFailureInformationEUTRA-v1590-IEs ::= SEQUENCE
SRSASN_CODE scg_fail_info_eutra_v1590_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE scg_fail_info_eutra_v1590_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void scg_fail_info_eutra_v1590_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// UEAssistanceInformation-v1540-IEs ::= SEQUENCE
SRSASN_CODE ueassist_info_v1540_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(overheat_assist_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (overheat_assist_present) {
HANDLE_CODE(overheat_assist.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ueassist_info_v1540_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(overheat_assist_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (overheat_assist_present) {
HANDLE_CODE(overheat_assist.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ueassist_info_v1540_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (overheat_assist_present) {
j.write_fieldname("overheatingAssistance");
overheat_assist.to_json(j);
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// CounterCheckResponse-IEs ::= SEQUENCE
SRSASN_CODE counter_check_resp_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
HANDLE_CODE(pack_dyn_seq_of(bref, drb_count_info_list, 0, 29));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE counter_check_resp_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
HANDLE_CODE(unpack_dyn_seq_of(drb_count_info_list, bref, 0, 29));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void counter_check_resp_ies_s::to_json(json_writer& j) const
{
j.start_obj();
j.start_array("drb-CountInfoList");
for (const auto& e1 : drb_count_info_list) {
e1.to_json(j);
}
j.end_array();
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// FailureInformation-IEs ::= SEQUENCE
SRSASN_CODE fail_info_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(fail_info_rlc_bearer_present, 1));
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (fail_info_rlc_bearer_present) {
HANDLE_CODE(fail_info_rlc_bearer.pack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE fail_info_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(fail_info_rlc_bearer_present, 1));
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (fail_info_rlc_bearer_present) {
HANDLE_CODE(fail_info_rlc_bearer.unpack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void fail_info_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (fail_info_rlc_bearer_present) {
j.write_fieldname("failureInfoRLC-Bearer");
fail_info_rlc_bearer.to_json(j);
}
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// LocationMeasurementIndication-IEs ::= SEQUENCE
SRSASN_CODE location_meas_ind_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
HANDLE_CODE(meas_ind.pack(bref));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE location_meas_ind_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
HANDLE_CODE(meas_ind.unpack(bref));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void location_meas_ind_ies_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("measurementIndication");
meas_ind.to_json(j);
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// MeasurementReport-IEs ::= SEQUENCE
SRSASN_CODE meas_report_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
HANDLE_CODE(meas_results.pack(bref));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_report_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
HANDLE_CODE(meas_results.unpack(bref));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void meas_report_ies_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("measResults");
meas_results.to_json(j);
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// RRCReconfigurationComplete-IEs ::= SEQUENCE
SRSASN_CODE rrc_recfg_complete_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_recfg_complete_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void rrc_recfg_complete_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
// RRCReestablishmentComplete-IEs ::= SEQUENCE
SRSASN_CODE rrc_reest_complete_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_reest_complete_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void rrc_reest_complete_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// RRCResumeComplete-IEs ::= SEQUENCE
SRSASN_CODE rrc_resume_complete_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(ded_nas_msg_present, 1));
HANDLE_CODE(bref.pack(sel_plmn_id_present, 1));
HANDLE_CODE(bref.pack(ul_tx_direct_current_list_present, 1));
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (ded_nas_msg_present) {
HANDLE_CODE(ded_nas_msg.pack(bref));
}
if (sel_plmn_id_present) {
HANDLE_CODE(pack_integer(bref, sel_plmn_id, (uint8_t)1u, (uint8_t)12u));
}
if (ul_tx_direct_current_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, ul_tx_direct_current_list, 1, 32));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_resume_complete_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(ded_nas_msg_present, 1));
HANDLE_CODE(bref.unpack(sel_plmn_id_present, 1));
HANDLE_CODE(bref.unpack(ul_tx_direct_current_list_present, 1));
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (ded_nas_msg_present) {
HANDLE_CODE(ded_nas_msg.unpack(bref));
}
if (sel_plmn_id_present) {
HANDLE_CODE(unpack_integer(sel_plmn_id, bref, (uint8_t)1u, (uint8_t)12u));
}
if (ul_tx_direct_current_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(ul_tx_direct_current_list, bref, 1, 32));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void rrc_resume_complete_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (ded_nas_msg_present) {
j.write_str("dedicatedNAS-Message", ded_nas_msg.to_string());
}
if (sel_plmn_id_present) {
j.write_int("selectedPLMN-Identity", sel_plmn_id);
}
if (ul_tx_direct_current_list_present) {
j.start_array("uplinkTxDirectCurrentList");
for (const auto& e1 : ul_tx_direct_current_list) {
e1.to_json(j);
}
j.end_array();
}
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// RRCSetupComplete-IEs ::= SEQUENCE
SRSASN_CODE rrc_setup_complete_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(registered_amf_present, 1));
HANDLE_CODE(bref.pack(guami_type_present, 1));
HANDLE_CODE(bref.pack(s_nssai_list_present, 1));
HANDLE_CODE(bref.pack(ng_minus5_g_s_tmsi_value_present, 1));
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
HANDLE_CODE(pack_integer(bref, sel_plmn_id, (uint8_t)1u, (uint8_t)12u));
if (registered_amf_present) {
HANDLE_CODE(registered_amf.pack(bref));
}
if (guami_type_present) {
HANDLE_CODE(guami_type.pack(bref));
}
if (s_nssai_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, s_nssai_list, 1, 8));
}
HANDLE_CODE(ded_nas_msg.pack(bref));
if (ng_minus5_g_s_tmsi_value_present) {
HANDLE_CODE(ng_minus5_g_s_tmsi_value.pack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_setup_complete_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(registered_amf_present, 1));
HANDLE_CODE(bref.unpack(guami_type_present, 1));
HANDLE_CODE(bref.unpack(s_nssai_list_present, 1));
HANDLE_CODE(bref.unpack(ng_minus5_g_s_tmsi_value_present, 1));
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
HANDLE_CODE(unpack_integer(sel_plmn_id, bref, (uint8_t)1u, (uint8_t)12u));
if (registered_amf_present) {
HANDLE_CODE(registered_amf.unpack(bref));
}
if (guami_type_present) {
HANDLE_CODE(guami_type.unpack(bref));
}
if (s_nssai_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(s_nssai_list, bref, 1, 8));
}
HANDLE_CODE(ded_nas_msg.unpack(bref));
if (ng_minus5_g_s_tmsi_value_present) {
HANDLE_CODE(ng_minus5_g_s_tmsi_value.unpack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void rrc_setup_complete_ies_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("selectedPLMN-Identity", sel_plmn_id);
if (registered_amf_present) {
j.write_fieldname("registeredAMF");
registered_amf.to_json(j);
}
if (guami_type_present) {
j.write_str("guami-Type", guami_type.to_string());
}
if (s_nssai_list_present) {
j.start_array("s-NSSAI-List");
for (const auto& e1 : s_nssai_list) {
e1.to_json(j);
}
j.end_array();
}
j.write_str("dedicatedNAS-Message", ded_nas_msg.to_string());
if (ng_minus5_g_s_tmsi_value_present) {
j.write_fieldname("ng-5G-S-TMSI-Value");
ng_minus5_g_s_tmsi_value.to_json(j);
}
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
const char* rrc_setup_complete_ies_s::guami_type_opts::to_string() const
{
static const char* options[] = {"native", "mapped"};
return convert_enum_idx(options, 2, value, "rrc_setup_complete_ies_s::guami_type_e_");
}
void rrc_setup_complete_ies_s::ng_minus5_g_s_tmsi_value_c_::destroy_()
{
switch (type_) {
case types::ng_minus5_g_s_tmsi:
c.destroy<fixed_bitstring<48> >();
break;
case types::ng_minus5_g_s_tmsi_part2:
c.destroy<fixed_bitstring<9> >();
break;
default:
break;
}
}
void rrc_setup_complete_ies_s::ng_minus5_g_s_tmsi_value_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::ng_minus5_g_s_tmsi:
c.init<fixed_bitstring<48> >();
break;
case types::ng_minus5_g_s_tmsi_part2:
c.init<fixed_bitstring<9> >();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rrc_setup_complete_ies_s::ng_minus5_g_s_tmsi_value_c_");
}
}
rrc_setup_complete_ies_s::ng_minus5_g_s_tmsi_value_c_::ng_minus5_g_s_tmsi_value_c_(
const rrc_setup_complete_ies_s::ng_minus5_g_s_tmsi_value_c_& other)
{
type_ = other.type();
switch (type_) {
case types::ng_minus5_g_s_tmsi:
c.init(other.c.get<fixed_bitstring<48> >());
break;
case types::ng_minus5_g_s_tmsi_part2:
c.init(other.c.get<fixed_bitstring<9> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rrc_setup_complete_ies_s::ng_minus5_g_s_tmsi_value_c_");
}
}
rrc_setup_complete_ies_s::ng_minus5_g_s_tmsi_value_c_& rrc_setup_complete_ies_s::ng_minus5_g_s_tmsi_value_c_::operator=(
const rrc_setup_complete_ies_s::ng_minus5_g_s_tmsi_value_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::ng_minus5_g_s_tmsi:
c.set(other.c.get<fixed_bitstring<48> >());
break;
case types::ng_minus5_g_s_tmsi_part2:
c.set(other.c.get<fixed_bitstring<9> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rrc_setup_complete_ies_s::ng_minus5_g_s_tmsi_value_c_");
}
return *this;
}
fixed_bitstring<48>& rrc_setup_complete_ies_s::ng_minus5_g_s_tmsi_value_c_::set_ng_minus5_g_s_tmsi()
{
set(types::ng_minus5_g_s_tmsi);
return c.get<fixed_bitstring<48> >();
}
fixed_bitstring<9>& rrc_setup_complete_ies_s::ng_minus5_g_s_tmsi_value_c_::set_ng_minus5_g_s_tmsi_part2()
{
set(types::ng_minus5_g_s_tmsi_part2);
return c.get<fixed_bitstring<9> >();
}
void rrc_setup_complete_ies_s::ng_minus5_g_s_tmsi_value_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::ng_minus5_g_s_tmsi:
j.write_str("ng-5G-S-TMSI", c.get<fixed_bitstring<48> >().to_string());
break;
case types::ng_minus5_g_s_tmsi_part2:
j.write_str("ng-5G-S-TMSI-Part2", c.get<fixed_bitstring<9> >().to_string());
break;
default:
log_invalid_choice_id(type_, "rrc_setup_complete_ies_s::ng_minus5_g_s_tmsi_value_c_");
}
j.end_obj();
}
SRSASN_CODE rrc_setup_complete_ies_s::ng_minus5_g_s_tmsi_value_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::ng_minus5_g_s_tmsi:
HANDLE_CODE(c.get<fixed_bitstring<48> >().pack(bref));
break;
case types::ng_minus5_g_s_tmsi_part2:
HANDLE_CODE(c.get<fixed_bitstring<9> >().pack(bref));
break;
default:
log_invalid_choice_id(type_, "rrc_setup_complete_ies_s::ng_minus5_g_s_tmsi_value_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_setup_complete_ies_s::ng_minus5_g_s_tmsi_value_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::ng_minus5_g_s_tmsi:
HANDLE_CODE(c.get<fixed_bitstring<48> >().unpack(bref));
break;
case types::ng_minus5_g_s_tmsi_part2:
HANDLE_CODE(c.get<fixed_bitstring<9> >().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "rrc_setup_complete_ies_s::ng_minus5_g_s_tmsi_value_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* rrc_setup_complete_ies_s::ng_minus5_g_s_tmsi_value_c_::types_opts::to_string() const
{
static const char* options[] = {"ng-5G-S-TMSI", "ng-5G-S-TMSI-Part2"};
return convert_enum_idx(options, 2, value, "rrc_setup_complete_ies_s::ng_minus5_g_s_tmsi_value_c_::types");
}
// SCGFailureInformation-IEs ::= SEQUENCE
SRSASN_CODE scg_fail_info_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(fail_report_scg_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (fail_report_scg_present) {
HANDLE_CODE(fail_report_scg.pack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE scg_fail_info_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(fail_report_scg_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (fail_report_scg_present) {
HANDLE_CODE(fail_report_scg.unpack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void scg_fail_info_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (fail_report_scg_present) {
j.write_fieldname("failureReportSCG");
fail_report_scg.to_json(j);
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
// SCGFailureInformationEUTRA-IEs ::= SEQUENCE
SRSASN_CODE scg_fail_info_eutra_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(fail_report_scg_eutra_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (fail_report_scg_eutra_present) {
HANDLE_CODE(fail_report_scg_eutra.pack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE scg_fail_info_eutra_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(fail_report_scg_eutra_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (fail_report_scg_eutra_present) {
HANDLE_CODE(fail_report_scg_eutra.unpack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void scg_fail_info_eutra_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (fail_report_scg_eutra_present) {
j.write_fieldname("failureReportSCG-EUTRA");
fail_report_scg_eutra.to_json(j);
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
// SecurityModeComplete-IEs ::= SEQUENCE
SRSASN_CODE security_mode_complete_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE security_mode_complete_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void security_mode_complete_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// SecurityModeFailure-IEs ::= SEQUENCE
SRSASN_CODE security_mode_fail_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE security_mode_fail_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void security_mode_fail_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// UEAssistanceInformation-IEs ::= SEQUENCE
SRSASN_CODE ueassist_info_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(delay_budget_report_present, 1));
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (delay_budget_report_present) {
HANDLE_CODE(delay_budget_report.pack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ueassist_info_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(delay_budget_report_present, 1));
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (delay_budget_report_present) {
HANDLE_CODE(delay_budget_report.unpack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ueassist_info_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (delay_budget_report_present) {
j.write_fieldname("delayBudgetReport");
delay_budget_report.to_json(j);
}
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
// UECapabilityInformation-IEs ::= SEQUENCE
SRSASN_CODE ue_cap_info_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(ue_cap_rat_container_list_present, 1));
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (ue_cap_rat_container_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, ue_cap_rat_container_list, 0, 8));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_cap_info_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(ue_cap_rat_container_list_present, 1));
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (ue_cap_rat_container_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(ue_cap_rat_container_list, bref, 0, 8));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ue_cap_info_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (ue_cap_rat_container_list_present) {
j.start_array("ue-CapabilityRAT-ContainerList");
for (const auto& e1 : ue_cap_rat_container_list) {
e1.to_json(j);
}
j.end_array();
}
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// ULInformationTransfer-IEs ::= SEQUENCE
SRSASN_CODE ul_info_transfer_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(ded_nas_msg_present, 1));
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (ded_nas_msg_present) {
HANDLE_CODE(ded_nas_msg.pack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ul_info_transfer_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(ded_nas_msg_present, 1));
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (ded_nas_msg_present) {
HANDLE_CODE(ded_nas_msg.unpack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ul_info_transfer_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (ded_nas_msg_present) {
j.write_str("dedicatedNAS-Message", ded_nas_msg.to_string());
}
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// ULInformationTransferMRDC-IEs ::= SEQUENCE
SRSASN_CODE ul_info_transfer_mrdc_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(ul_dcch_msg_nr_present, 1));
HANDLE_CODE(bref.pack(ul_dcch_msg_eutra_present, 1));
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (ul_dcch_msg_nr_present) {
HANDLE_CODE(ul_dcch_msg_nr.pack(bref));
}
if (ul_dcch_msg_eutra_present) {
HANDLE_CODE(ul_dcch_msg_eutra.pack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ul_info_transfer_mrdc_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(ul_dcch_msg_nr_present, 1));
HANDLE_CODE(bref.unpack(ul_dcch_msg_eutra_present, 1));
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (ul_dcch_msg_nr_present) {
HANDLE_CODE(ul_dcch_msg_nr.unpack(bref));
}
if (ul_dcch_msg_eutra_present) {
HANDLE_CODE(ul_dcch_msg_eutra.unpack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ul_info_transfer_mrdc_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (ul_dcch_msg_nr_present) {
j.write_str("ul-DCCH-MessageNR", ul_dcch_msg_nr.to_string());
}
if (ul_dcch_msg_eutra_present) {
j.write_str("ul-DCCH-MessageEUTRA", ul_dcch_msg_eutra.to_string());
}
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// CounterCheckResponse ::= SEQUENCE
SRSASN_CODE counter_check_resp_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE counter_check_resp_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void counter_check_resp_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("rrc-TransactionIdentifier", rrc_transaction_id);
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void counter_check_resp_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
counter_check_resp_ies_s& counter_check_resp_s::crit_exts_c_::set_counter_check_resp()
{
set(types::counter_check_resp);
return c;
}
void counter_check_resp_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void counter_check_resp_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::counter_check_resp:
j.write_fieldname("counterCheckResponse");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "counter_check_resp_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE counter_check_resp_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::counter_check_resp:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "counter_check_resp_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE counter_check_resp_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::counter_check_resp:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "counter_check_resp_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* counter_check_resp_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"counterCheckResponse", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "counter_check_resp_s::crit_exts_c_::types");
}
// FailureInformation ::= SEQUENCE
SRSASN_CODE fail_info_s::pack(bit_ref& bref) const
{
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE fail_info_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void fail_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void fail_info_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
fail_info_ies_s& fail_info_s::crit_exts_c_::set_fail_info()
{
set(types::fail_info);
return c;
}
void fail_info_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void fail_info_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::fail_info:
j.write_fieldname("failureInformation");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "fail_info_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE fail_info_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::fail_info:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "fail_info_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE fail_info_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::fail_info:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "fail_info_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* fail_info_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"failureInformation", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "fail_info_s::crit_exts_c_::types");
}
// LocationMeasurementIndication ::= SEQUENCE
SRSASN_CODE location_meas_ind_s::pack(bit_ref& bref) const
{
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE location_meas_ind_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void location_meas_ind_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void location_meas_ind_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
location_meas_ind_ies_s& location_meas_ind_s::crit_exts_c_::set_location_meas_ind()
{
set(types::location_meas_ind);
return c;
}
void location_meas_ind_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void location_meas_ind_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::location_meas_ind:
j.write_fieldname("locationMeasurementIndication");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "location_meas_ind_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE location_meas_ind_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::location_meas_ind:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "location_meas_ind_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE location_meas_ind_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::location_meas_ind:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "location_meas_ind_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* location_meas_ind_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"locationMeasurementIndication", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "location_meas_ind_s::crit_exts_c_::types");
}
// MeasurementReport ::= SEQUENCE
SRSASN_CODE meas_report_s::pack(bit_ref& bref) const
{
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_report_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void meas_report_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void meas_report_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
meas_report_ies_s& meas_report_s::crit_exts_c_::set_meas_report()
{
set(types::meas_report);
return c;
}
void meas_report_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void meas_report_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::meas_report:
j.write_fieldname("measurementReport");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "meas_report_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE meas_report_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::meas_report:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "meas_report_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_report_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::meas_report:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "meas_report_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* meas_report_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"measurementReport", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "meas_report_s::crit_exts_c_::types");
}
// RRCReconfigurationComplete ::= SEQUENCE
SRSASN_CODE rrc_recfg_complete_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_recfg_complete_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void rrc_recfg_complete_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("rrc-TransactionIdentifier", rrc_transaction_id);
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void rrc_recfg_complete_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
rrc_recfg_complete_ies_s& rrc_recfg_complete_s::crit_exts_c_::set_rrc_recfg_complete()
{
set(types::rrc_recfg_complete);
return c;
}
void rrc_recfg_complete_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void rrc_recfg_complete_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::rrc_recfg_complete:
j.write_fieldname("rrcReconfigurationComplete");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_recfg_complete_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE rrc_recfg_complete_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::rrc_recfg_complete:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_recfg_complete_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_recfg_complete_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::rrc_recfg_complete:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_recfg_complete_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* rrc_recfg_complete_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"rrcReconfigurationComplete", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "rrc_recfg_complete_s::crit_exts_c_::types");
}
// RRCReestablishmentComplete ::= SEQUENCE
SRSASN_CODE rrc_reest_complete_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_reest_complete_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void rrc_reest_complete_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("rrc-TransactionIdentifier", rrc_transaction_id);
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void rrc_reest_complete_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
rrc_reest_complete_ies_s& rrc_reest_complete_s::crit_exts_c_::set_rrc_reest_complete()
{
set(types::rrc_reest_complete);
return c;
}
void rrc_reest_complete_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void rrc_reest_complete_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::rrc_reest_complete:
j.write_fieldname("rrcReestablishmentComplete");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_reest_complete_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE rrc_reest_complete_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::rrc_reest_complete:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_reest_complete_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_reest_complete_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::rrc_reest_complete:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_reest_complete_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* rrc_reest_complete_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"rrcReestablishmentComplete", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "rrc_reest_complete_s::crit_exts_c_::types");
}
// RRCResumeComplete ::= SEQUENCE
SRSASN_CODE rrc_resume_complete_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_resume_complete_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void rrc_resume_complete_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("rrc-TransactionIdentifier", rrc_transaction_id);
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void rrc_resume_complete_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
rrc_resume_complete_ies_s& rrc_resume_complete_s::crit_exts_c_::set_rrc_resume_complete()
{
set(types::rrc_resume_complete);
return c;
}
void rrc_resume_complete_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void rrc_resume_complete_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::rrc_resume_complete:
j.write_fieldname("rrcResumeComplete");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_resume_complete_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE rrc_resume_complete_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::rrc_resume_complete:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_resume_complete_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_resume_complete_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::rrc_resume_complete:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_resume_complete_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* rrc_resume_complete_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"rrcResumeComplete", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "rrc_resume_complete_s::crit_exts_c_::types");
}
// RRCSetupComplete ::= SEQUENCE
SRSASN_CODE rrc_setup_complete_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_setup_complete_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void rrc_setup_complete_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("rrc-TransactionIdentifier", rrc_transaction_id);
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void rrc_setup_complete_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
rrc_setup_complete_ies_s& rrc_setup_complete_s::crit_exts_c_::set_rrc_setup_complete()
{
set(types::rrc_setup_complete);
return c;
}
void rrc_setup_complete_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void rrc_setup_complete_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::rrc_setup_complete:
j.write_fieldname("rrcSetupComplete");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_setup_complete_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE rrc_setup_complete_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::rrc_setup_complete:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_setup_complete_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_setup_complete_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::rrc_setup_complete:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "rrc_setup_complete_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* rrc_setup_complete_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"rrcSetupComplete", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "rrc_setup_complete_s::crit_exts_c_::types");
}
// SCGFailureInformation ::= SEQUENCE
SRSASN_CODE scg_fail_info_s::pack(bit_ref& bref) const
{
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE scg_fail_info_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void scg_fail_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void scg_fail_info_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
scg_fail_info_ies_s& scg_fail_info_s::crit_exts_c_::set_scg_fail_info()
{
set(types::scg_fail_info);
return c;
}
void scg_fail_info_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void scg_fail_info_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::scg_fail_info:
j.write_fieldname("scgFailureInformation");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "scg_fail_info_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE scg_fail_info_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::scg_fail_info:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "scg_fail_info_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE scg_fail_info_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::scg_fail_info:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "scg_fail_info_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* scg_fail_info_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"scgFailureInformation", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "scg_fail_info_s::crit_exts_c_::types");
}
// SCGFailureInformationEUTRA ::= SEQUENCE
SRSASN_CODE scg_fail_info_eutra_s::pack(bit_ref& bref) const
{
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE scg_fail_info_eutra_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void scg_fail_info_eutra_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void scg_fail_info_eutra_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
scg_fail_info_eutra_ies_s& scg_fail_info_eutra_s::crit_exts_c_::set_scg_fail_info_eutra()
{
set(types::scg_fail_info_eutra);
return c;
}
void scg_fail_info_eutra_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void scg_fail_info_eutra_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::scg_fail_info_eutra:
j.write_fieldname("scgFailureInformationEUTRA");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "scg_fail_info_eutra_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE scg_fail_info_eutra_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::scg_fail_info_eutra:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "scg_fail_info_eutra_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE scg_fail_info_eutra_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::scg_fail_info_eutra:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "scg_fail_info_eutra_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* scg_fail_info_eutra_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"scgFailureInformationEUTRA", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "scg_fail_info_eutra_s::crit_exts_c_::types");
}
// SecurityModeComplete ::= SEQUENCE
SRSASN_CODE security_mode_complete_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE security_mode_complete_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void security_mode_complete_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("rrc-TransactionIdentifier", rrc_transaction_id);
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void security_mode_complete_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
security_mode_complete_ies_s& security_mode_complete_s::crit_exts_c_::set_security_mode_complete()
{
set(types::security_mode_complete);
return c;
}
void security_mode_complete_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void security_mode_complete_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::security_mode_complete:
j.write_fieldname("securityModeComplete");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "security_mode_complete_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE security_mode_complete_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::security_mode_complete:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "security_mode_complete_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE security_mode_complete_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::security_mode_complete:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "security_mode_complete_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* security_mode_complete_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"securityModeComplete", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "security_mode_complete_s::crit_exts_c_::types");
}
// SecurityModeFailure ::= SEQUENCE
SRSASN_CODE security_mode_fail_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE security_mode_fail_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void security_mode_fail_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("rrc-TransactionIdentifier", rrc_transaction_id);
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void security_mode_fail_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
security_mode_fail_ies_s& security_mode_fail_s::crit_exts_c_::set_security_mode_fail()
{
set(types::security_mode_fail);
return c;
}
void security_mode_fail_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void security_mode_fail_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::security_mode_fail:
j.write_fieldname("securityModeFailure");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "security_mode_fail_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE security_mode_fail_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::security_mode_fail:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "security_mode_fail_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE security_mode_fail_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::security_mode_fail:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "security_mode_fail_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* security_mode_fail_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"securityModeFailure", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "security_mode_fail_s::crit_exts_c_::types");
}
// UEAssistanceInformation ::= SEQUENCE
SRSASN_CODE ueassist_info_s::pack(bit_ref& bref) const
{
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE ueassist_info_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void ueassist_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void ueassist_info_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
ueassist_info_ies_s& ueassist_info_s::crit_exts_c_::set_ue_assist_info()
{
set(types::ue_assist_info);
return c;
}
void ueassist_info_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void ueassist_info_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::ue_assist_info:
j.write_fieldname("ueAssistanceInformation");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "ueassist_info_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE ueassist_info_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::ue_assist_info:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "ueassist_info_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ueassist_info_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::ue_assist_info:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "ueassist_info_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* ueassist_info_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"ueAssistanceInformation", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "ueassist_info_s::crit_exts_c_::types");
}
// UECapabilityInformation ::= SEQUENCE
SRSASN_CODE ue_cap_info_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, rrc_transaction_id, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_cap_info_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(rrc_transaction_id, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void ue_cap_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("rrc-TransactionIdentifier", rrc_transaction_id);
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void ue_cap_info_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
ue_cap_info_ies_s& ue_cap_info_s::crit_exts_c_::set_ue_cap_info()
{
set(types::ue_cap_info);
return c;
}
void ue_cap_info_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void ue_cap_info_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::ue_cap_info:
j.write_fieldname("ueCapabilityInformation");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "ue_cap_info_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE ue_cap_info_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::ue_cap_info:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "ue_cap_info_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_cap_info_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::ue_cap_info:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "ue_cap_info_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* ue_cap_info_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"ueCapabilityInformation", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "ue_cap_info_s::crit_exts_c_::types");
}
// ULInformationTransfer ::= SEQUENCE
SRSASN_CODE ul_info_transfer_s::pack(bit_ref& bref) const
{
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE ul_info_transfer_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void ul_info_transfer_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void ul_info_transfer_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
ul_info_transfer_ies_s& ul_info_transfer_s::crit_exts_c_::set_ul_info_transfer()
{
set(types::ul_info_transfer);
return c;
}
void ul_info_transfer_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void ul_info_transfer_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::ul_info_transfer:
j.write_fieldname("ulInformationTransfer");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "ul_info_transfer_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE ul_info_transfer_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::ul_info_transfer:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "ul_info_transfer_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ul_info_transfer_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::ul_info_transfer:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "ul_info_transfer_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* ul_info_transfer_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"ulInformationTransfer", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "ul_info_transfer_s::crit_exts_c_::types");
}
// ULInformationTransferMRDC ::= SEQUENCE
SRSASN_CODE ul_info_transfer_mrdc_s::pack(bit_ref& bref) const
{
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE ul_info_transfer_mrdc_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void ul_info_transfer_mrdc_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void ul_info_transfer_mrdc_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
ul_info_transfer_mrdc_s::crit_exts_c_::c1_c_& ul_info_transfer_mrdc_s::crit_exts_c_::set_c1()
{
set(types::c1);
return c;
}
void ul_info_transfer_mrdc_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void ul_info_transfer_mrdc_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::c1:
j.write_fieldname("c1");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "ul_info_transfer_mrdc_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE ul_info_transfer_mrdc_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::c1:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "ul_info_transfer_mrdc_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ul_info_transfer_mrdc_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::c1:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "ul_info_transfer_mrdc_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
void ul_info_transfer_mrdc_s::crit_exts_c_::c1_c_::set(types::options e)
{
type_ = e;
}
ul_info_transfer_mrdc_ies_s& ul_info_transfer_mrdc_s::crit_exts_c_::c1_c_::set_ul_info_transfer_mrdc()
{
set(types::ul_info_transfer_mrdc);
return c;
}
void ul_info_transfer_mrdc_s::crit_exts_c_::c1_c_::set_spare3()
{
set(types::spare3);
}
void ul_info_transfer_mrdc_s::crit_exts_c_::c1_c_::set_spare2()
{
set(types::spare2);
}
void ul_info_transfer_mrdc_s::crit_exts_c_::c1_c_::set_spare1()
{
set(types::spare1);
}
void ul_info_transfer_mrdc_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::ul_info_transfer_mrdc:
j.write_fieldname("ulInformationTransferMRDC");
c.to_json(j);
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "ul_info_transfer_mrdc_s::crit_exts_c_::c1_c_");
}
j.end_obj();
}
SRSASN_CODE ul_info_transfer_mrdc_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::ul_info_transfer_mrdc:
HANDLE_CODE(c.pack(bref));
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "ul_info_transfer_mrdc_s::crit_exts_c_::c1_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ul_info_transfer_mrdc_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::ul_info_transfer_mrdc:
HANDLE_CODE(c.unpack(bref));
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "ul_info_transfer_mrdc_s::crit_exts_c_::c1_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* ul_info_transfer_mrdc_s::crit_exts_c_::c1_c_::types_opts::to_string() const
{
static const char* options[] = {"ulInformationTransferMRDC", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 4, value, "ul_info_transfer_mrdc_s::crit_exts_c_::c1_c_::types");
}
const char* ul_info_transfer_mrdc_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"c1", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "ul_info_transfer_mrdc_s::crit_exts_c_::types");
}
uint8_t ul_info_transfer_mrdc_s::crit_exts_c_::types_opts::to_number() const
{
static const uint8_t options[] = {1};
return map_enum_number(options, 1, value, "ul_info_transfer_mrdc_s::crit_exts_c_::types");
}
// UL-DCCH-MessageType ::= CHOICE
void ul_dcch_msg_type_c::set(types::options e)
{
type_ = e;
}
ul_dcch_msg_type_c::c1_c_& ul_dcch_msg_type_c::set_c1()
{
set(types::c1);
return c;
}
void ul_dcch_msg_type_c::set_msg_class_ext()
{
set(types::msg_class_ext);
}
void ul_dcch_msg_type_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::c1:
j.write_fieldname("c1");
c.to_json(j);
break;
case types::msg_class_ext:
break;
default:
log_invalid_choice_id(type_, "ul_dcch_msg_type_c");
}
j.end_obj();
}
SRSASN_CODE ul_dcch_msg_type_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::c1:
HANDLE_CODE(c.pack(bref));
break;
case types::msg_class_ext:
break;
default:
log_invalid_choice_id(type_, "ul_dcch_msg_type_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ul_dcch_msg_type_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::c1:
HANDLE_CODE(c.unpack(bref));
break;
case types::msg_class_ext:
break;
default:
log_invalid_choice_id(type_, "ul_dcch_msg_type_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
void ul_dcch_msg_type_c::c1_c_::destroy_()
{
switch (type_) {
case types::meas_report:
c.destroy<meas_report_s>();
break;
case types::rrc_recfg_complete:
c.destroy<rrc_recfg_complete_s>();
break;
case types::rrc_setup_complete:
c.destroy<rrc_setup_complete_s>();
break;
case types::rrc_reest_complete:
c.destroy<rrc_reest_complete_s>();
break;
case types::rrc_resume_complete:
c.destroy<rrc_resume_complete_s>();
break;
case types::security_mode_complete:
c.destroy<security_mode_complete_s>();
break;
case types::security_mode_fail:
c.destroy<security_mode_fail_s>();
break;
case types::ul_info_transfer:
c.destroy<ul_info_transfer_s>();
break;
case types::location_meas_ind:
c.destroy<location_meas_ind_s>();
break;
case types::ue_cap_info:
c.destroy<ue_cap_info_s>();
break;
case types::counter_check_resp:
c.destroy<counter_check_resp_s>();
break;
case types::ue_assist_info:
c.destroy<ueassist_info_s>();
break;
case types::fail_info:
c.destroy<fail_info_s>();
break;
case types::ul_info_transfer_mrdc:
c.destroy<ul_info_transfer_mrdc_s>();
break;
case types::scg_fail_info:
c.destroy<scg_fail_info_s>();
break;
case types::scg_fail_info_eutra:
c.destroy<scg_fail_info_eutra_s>();
break;
default:
break;
}
}
void ul_dcch_msg_type_c::c1_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::meas_report:
c.init<meas_report_s>();
break;
case types::rrc_recfg_complete:
c.init<rrc_recfg_complete_s>();
break;
case types::rrc_setup_complete:
c.init<rrc_setup_complete_s>();
break;
case types::rrc_reest_complete:
c.init<rrc_reest_complete_s>();
break;
case types::rrc_resume_complete:
c.init<rrc_resume_complete_s>();
break;
case types::security_mode_complete:
c.init<security_mode_complete_s>();
break;
case types::security_mode_fail:
c.init<security_mode_fail_s>();
break;
case types::ul_info_transfer:
c.init<ul_info_transfer_s>();
break;
case types::location_meas_ind:
c.init<location_meas_ind_s>();
break;
case types::ue_cap_info:
c.init<ue_cap_info_s>();
break;
case types::counter_check_resp:
c.init<counter_check_resp_s>();
break;
case types::ue_assist_info:
c.init<ueassist_info_s>();
break;
case types::fail_info:
c.init<fail_info_s>();
break;
case types::ul_info_transfer_mrdc:
c.init<ul_info_transfer_mrdc_s>();
break;
case types::scg_fail_info:
c.init<scg_fail_info_s>();
break;
case types::scg_fail_info_eutra:
c.init<scg_fail_info_eutra_s>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "ul_dcch_msg_type_c::c1_c_");
}
}
ul_dcch_msg_type_c::c1_c_::c1_c_(const ul_dcch_msg_type_c::c1_c_& other)
{
type_ = other.type();
switch (type_) {
case types::meas_report:
c.init(other.c.get<meas_report_s>());
break;
case types::rrc_recfg_complete:
c.init(other.c.get<rrc_recfg_complete_s>());
break;
case types::rrc_setup_complete:
c.init(other.c.get<rrc_setup_complete_s>());
break;
case types::rrc_reest_complete:
c.init(other.c.get<rrc_reest_complete_s>());
break;
case types::rrc_resume_complete:
c.init(other.c.get<rrc_resume_complete_s>());
break;
case types::security_mode_complete:
c.init(other.c.get<security_mode_complete_s>());
break;
case types::security_mode_fail:
c.init(other.c.get<security_mode_fail_s>());
break;
case types::ul_info_transfer:
c.init(other.c.get<ul_info_transfer_s>());
break;
case types::location_meas_ind:
c.init(other.c.get<location_meas_ind_s>());
break;
case types::ue_cap_info:
c.init(other.c.get<ue_cap_info_s>());
break;
case types::counter_check_resp:
c.init(other.c.get<counter_check_resp_s>());
break;
case types::ue_assist_info:
c.init(other.c.get<ueassist_info_s>());
break;
case types::fail_info:
c.init(other.c.get<fail_info_s>());
break;
case types::ul_info_transfer_mrdc:
c.init(other.c.get<ul_info_transfer_mrdc_s>());
break;
case types::scg_fail_info:
c.init(other.c.get<scg_fail_info_s>());
break;
case types::scg_fail_info_eutra:
c.init(other.c.get<scg_fail_info_eutra_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "ul_dcch_msg_type_c::c1_c_");
}
}
ul_dcch_msg_type_c::c1_c_& ul_dcch_msg_type_c::c1_c_::operator=(const ul_dcch_msg_type_c::c1_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::meas_report:
c.set(other.c.get<meas_report_s>());
break;
case types::rrc_recfg_complete:
c.set(other.c.get<rrc_recfg_complete_s>());
break;
case types::rrc_setup_complete:
c.set(other.c.get<rrc_setup_complete_s>());
break;
case types::rrc_reest_complete:
c.set(other.c.get<rrc_reest_complete_s>());
break;
case types::rrc_resume_complete:
c.set(other.c.get<rrc_resume_complete_s>());
break;
case types::security_mode_complete:
c.set(other.c.get<security_mode_complete_s>());
break;
case types::security_mode_fail:
c.set(other.c.get<security_mode_fail_s>());
break;
case types::ul_info_transfer:
c.set(other.c.get<ul_info_transfer_s>());
break;
case types::location_meas_ind:
c.set(other.c.get<location_meas_ind_s>());
break;
case types::ue_cap_info:
c.set(other.c.get<ue_cap_info_s>());
break;
case types::counter_check_resp:
c.set(other.c.get<counter_check_resp_s>());
break;
case types::ue_assist_info:
c.set(other.c.get<ueassist_info_s>());
break;
case types::fail_info:
c.set(other.c.get<fail_info_s>());
break;
case types::ul_info_transfer_mrdc:
c.set(other.c.get<ul_info_transfer_mrdc_s>());
break;
case types::scg_fail_info:
c.set(other.c.get<scg_fail_info_s>());
break;
case types::scg_fail_info_eutra:
c.set(other.c.get<scg_fail_info_eutra_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "ul_dcch_msg_type_c::c1_c_");
}
return *this;
}
meas_report_s& ul_dcch_msg_type_c::c1_c_::set_meas_report()
{
set(types::meas_report);
return c.get<meas_report_s>();
}
rrc_recfg_complete_s& ul_dcch_msg_type_c::c1_c_::set_rrc_recfg_complete()
{
set(types::rrc_recfg_complete);
return c.get<rrc_recfg_complete_s>();
}
rrc_setup_complete_s& ul_dcch_msg_type_c::c1_c_::set_rrc_setup_complete()
{
set(types::rrc_setup_complete);
return c.get<rrc_setup_complete_s>();
}
rrc_reest_complete_s& ul_dcch_msg_type_c::c1_c_::set_rrc_reest_complete()
{
set(types::rrc_reest_complete);
return c.get<rrc_reest_complete_s>();
}
rrc_resume_complete_s& ul_dcch_msg_type_c::c1_c_::set_rrc_resume_complete()
{
set(types::rrc_resume_complete);
return c.get<rrc_resume_complete_s>();
}
security_mode_complete_s& ul_dcch_msg_type_c::c1_c_::set_security_mode_complete()
{
set(types::security_mode_complete);
return c.get<security_mode_complete_s>();
}
security_mode_fail_s& ul_dcch_msg_type_c::c1_c_::set_security_mode_fail()
{
set(types::security_mode_fail);
return c.get<security_mode_fail_s>();
}
ul_info_transfer_s& ul_dcch_msg_type_c::c1_c_::set_ul_info_transfer()
{
set(types::ul_info_transfer);
return c.get<ul_info_transfer_s>();
}
location_meas_ind_s& ul_dcch_msg_type_c::c1_c_::set_location_meas_ind()
{
set(types::location_meas_ind);
return c.get<location_meas_ind_s>();
}
ue_cap_info_s& ul_dcch_msg_type_c::c1_c_::set_ue_cap_info()
{
set(types::ue_cap_info);
return c.get<ue_cap_info_s>();
}
counter_check_resp_s& ul_dcch_msg_type_c::c1_c_::set_counter_check_resp()
{
set(types::counter_check_resp);
return c.get<counter_check_resp_s>();
}
ueassist_info_s& ul_dcch_msg_type_c::c1_c_::set_ue_assist_info()
{
set(types::ue_assist_info);
return c.get<ueassist_info_s>();
}
fail_info_s& ul_dcch_msg_type_c::c1_c_::set_fail_info()
{
set(types::fail_info);
return c.get<fail_info_s>();
}
ul_info_transfer_mrdc_s& ul_dcch_msg_type_c::c1_c_::set_ul_info_transfer_mrdc()
{
set(types::ul_info_transfer_mrdc);
return c.get<ul_info_transfer_mrdc_s>();
}
scg_fail_info_s& ul_dcch_msg_type_c::c1_c_::set_scg_fail_info()
{
set(types::scg_fail_info);
return c.get<scg_fail_info_s>();
}
scg_fail_info_eutra_s& ul_dcch_msg_type_c::c1_c_::set_scg_fail_info_eutra()
{
set(types::scg_fail_info_eutra);
return c.get<scg_fail_info_eutra_s>();
}
void ul_dcch_msg_type_c::c1_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::meas_report:
j.write_fieldname("measurementReport");
c.get<meas_report_s>().to_json(j);
break;
case types::rrc_recfg_complete:
j.write_fieldname("rrcReconfigurationComplete");
c.get<rrc_recfg_complete_s>().to_json(j);
break;
case types::rrc_setup_complete:
j.write_fieldname("rrcSetupComplete");
c.get<rrc_setup_complete_s>().to_json(j);
break;
case types::rrc_reest_complete:
j.write_fieldname("rrcReestablishmentComplete");
c.get<rrc_reest_complete_s>().to_json(j);
break;
case types::rrc_resume_complete:
j.write_fieldname("rrcResumeComplete");
c.get<rrc_resume_complete_s>().to_json(j);
break;
case types::security_mode_complete:
j.write_fieldname("securityModeComplete");
c.get<security_mode_complete_s>().to_json(j);
break;
case types::security_mode_fail:
j.write_fieldname("securityModeFailure");
c.get<security_mode_fail_s>().to_json(j);
break;
case types::ul_info_transfer:
j.write_fieldname("ulInformationTransfer");
c.get<ul_info_transfer_s>().to_json(j);
break;
case types::location_meas_ind:
j.write_fieldname("locationMeasurementIndication");
c.get<location_meas_ind_s>().to_json(j);
break;
case types::ue_cap_info:
j.write_fieldname("ueCapabilityInformation");
c.get<ue_cap_info_s>().to_json(j);
break;
case types::counter_check_resp:
j.write_fieldname("counterCheckResponse");
c.get<counter_check_resp_s>().to_json(j);
break;
case types::ue_assist_info:
j.write_fieldname("ueAssistanceInformation");
c.get<ueassist_info_s>().to_json(j);
break;
case types::fail_info:
j.write_fieldname("failureInformation");
c.get<fail_info_s>().to_json(j);
break;
case types::ul_info_transfer_mrdc:
j.write_fieldname("ulInformationTransferMRDC");
c.get<ul_info_transfer_mrdc_s>().to_json(j);
break;
case types::scg_fail_info:
j.write_fieldname("scgFailureInformation");
c.get<scg_fail_info_s>().to_json(j);
break;
case types::scg_fail_info_eutra:
j.write_fieldname("scgFailureInformationEUTRA");
c.get<scg_fail_info_eutra_s>().to_json(j);
break;
default:
log_invalid_choice_id(type_, "ul_dcch_msg_type_c::c1_c_");
}
j.end_obj();
}
SRSASN_CODE ul_dcch_msg_type_c::c1_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::meas_report:
HANDLE_CODE(c.get<meas_report_s>().pack(bref));
break;
case types::rrc_recfg_complete:
HANDLE_CODE(c.get<rrc_recfg_complete_s>().pack(bref));
break;
case types::rrc_setup_complete:
HANDLE_CODE(c.get<rrc_setup_complete_s>().pack(bref));
break;
case types::rrc_reest_complete:
HANDLE_CODE(c.get<rrc_reest_complete_s>().pack(bref));
break;
case types::rrc_resume_complete:
HANDLE_CODE(c.get<rrc_resume_complete_s>().pack(bref));
break;
case types::security_mode_complete:
HANDLE_CODE(c.get<security_mode_complete_s>().pack(bref));
break;
case types::security_mode_fail:
HANDLE_CODE(c.get<security_mode_fail_s>().pack(bref));
break;
case types::ul_info_transfer:
HANDLE_CODE(c.get<ul_info_transfer_s>().pack(bref));
break;
case types::location_meas_ind:
HANDLE_CODE(c.get<location_meas_ind_s>().pack(bref));
break;
case types::ue_cap_info:
HANDLE_CODE(c.get<ue_cap_info_s>().pack(bref));
break;
case types::counter_check_resp:
HANDLE_CODE(c.get<counter_check_resp_s>().pack(bref));
break;
case types::ue_assist_info:
HANDLE_CODE(c.get<ueassist_info_s>().pack(bref));
break;
case types::fail_info:
HANDLE_CODE(c.get<fail_info_s>().pack(bref));
break;
case types::ul_info_transfer_mrdc:
HANDLE_CODE(c.get<ul_info_transfer_mrdc_s>().pack(bref));
break;
case types::scg_fail_info:
HANDLE_CODE(c.get<scg_fail_info_s>().pack(bref));
break;
case types::scg_fail_info_eutra:
HANDLE_CODE(c.get<scg_fail_info_eutra_s>().pack(bref));
break;
default:
log_invalid_choice_id(type_, "ul_dcch_msg_type_c::c1_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ul_dcch_msg_type_c::c1_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::meas_report:
HANDLE_CODE(c.get<meas_report_s>().unpack(bref));
break;
case types::rrc_recfg_complete:
HANDLE_CODE(c.get<rrc_recfg_complete_s>().unpack(bref));
break;
case types::rrc_setup_complete:
HANDLE_CODE(c.get<rrc_setup_complete_s>().unpack(bref));
break;
case types::rrc_reest_complete:
HANDLE_CODE(c.get<rrc_reest_complete_s>().unpack(bref));
break;
case types::rrc_resume_complete:
HANDLE_CODE(c.get<rrc_resume_complete_s>().unpack(bref));
break;
case types::security_mode_complete:
HANDLE_CODE(c.get<security_mode_complete_s>().unpack(bref));
break;
case types::security_mode_fail:
HANDLE_CODE(c.get<security_mode_fail_s>().unpack(bref));
break;
case types::ul_info_transfer:
HANDLE_CODE(c.get<ul_info_transfer_s>().unpack(bref));
break;
case types::location_meas_ind:
HANDLE_CODE(c.get<location_meas_ind_s>().unpack(bref));
break;
case types::ue_cap_info:
HANDLE_CODE(c.get<ue_cap_info_s>().unpack(bref));
break;
case types::counter_check_resp:
HANDLE_CODE(c.get<counter_check_resp_s>().unpack(bref));
break;
case types::ue_assist_info:
HANDLE_CODE(c.get<ueassist_info_s>().unpack(bref));
break;
case types::fail_info:
HANDLE_CODE(c.get<fail_info_s>().unpack(bref));
break;
case types::ul_info_transfer_mrdc:
HANDLE_CODE(c.get<ul_info_transfer_mrdc_s>().unpack(bref));
break;
case types::scg_fail_info:
HANDLE_CODE(c.get<scg_fail_info_s>().unpack(bref));
break;
case types::scg_fail_info_eutra:
HANDLE_CODE(c.get<scg_fail_info_eutra_s>().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "ul_dcch_msg_type_c::c1_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* ul_dcch_msg_type_c::c1_c_::types_opts::to_string() const
{
static const char* options[] = {"measurementReport",
"rrcReconfigurationComplete",
"rrcSetupComplete",
"rrcReestablishmentComplete",
"rrcResumeComplete",
"securityModeComplete",
"securityModeFailure",
"ulInformationTransfer",
"locationMeasurementIndication",
"ueCapabilityInformation",
"counterCheckResponse",
"ueAssistanceInformation",
"failureInformation",
"ulInformationTransferMRDC",
"scgFailureInformation",
"scgFailureInformationEUTRA"};
return convert_enum_idx(options, 16, value, "ul_dcch_msg_type_c::c1_c_::types");
}
const char* ul_dcch_msg_type_c::types_opts::to_string() const
{
static const char* options[] = {"c1", "messageClassExtension"};
return convert_enum_idx(options, 2, value, "ul_dcch_msg_type_c::types");
}
uint8_t ul_dcch_msg_type_c::types_opts::to_number() const
{
static const uint8_t options[] = {1};
return map_enum_number(options, 1, value, "ul_dcch_msg_type_c::types");
}
// UL-DCCH-Message ::= SEQUENCE
SRSASN_CODE ul_dcch_msg_s::pack(bit_ref& bref) const
{
HANDLE_CODE(msg.pack(bref));
bref.align_bytes_zero();
return SRSASN_SUCCESS;
}
SRSASN_CODE ul_dcch_msg_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(msg.unpack(bref));
bref.align_bytes();
return SRSASN_SUCCESS;
}
void ul_dcch_msg_s::to_json(json_writer& j) const
{
j.start_array();
j.start_obj();
j.start_obj("UL-DCCH-Message");
j.write_fieldname("message");
msg.to_json(j);
j.end_obj();
j.end_obj();
j.end_array();
}
// BFR-CSIRS-Resource ::= SEQUENCE
SRSASN_CODE bfr_csirs_res_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(ra_occasion_list_present, 1));
HANDLE_CODE(bref.pack(ra_preamb_idx_present, 1));
HANDLE_CODE(pack_integer(bref, csi_rs, (uint8_t)0u, (uint8_t)191u));
if (ra_occasion_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, ra_occasion_list, 1, 64, integer_packer<uint16_t>(0, 511)));
}
if (ra_preamb_idx_present) {
HANDLE_CODE(pack_integer(bref, ra_preamb_idx, (uint8_t)0u, (uint8_t)63u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE bfr_csirs_res_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(ra_occasion_list_present, 1));
HANDLE_CODE(bref.unpack(ra_preamb_idx_present, 1));
HANDLE_CODE(unpack_integer(csi_rs, bref, (uint8_t)0u, (uint8_t)191u));
if (ra_occasion_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(ra_occasion_list, bref, 1, 64, integer_packer<uint16_t>(0, 511)));
}
if (ra_preamb_idx_present) {
HANDLE_CODE(unpack_integer(ra_preamb_idx, bref, (uint8_t)0u, (uint8_t)63u));
}
return SRSASN_SUCCESS;
}
void bfr_csirs_res_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("csi-RS", csi_rs);
if (ra_occasion_list_present) {
j.start_array("ra-OccasionList");
for (const auto& e1 : ra_occasion_list) {
j.write_int(e1);
}
j.end_array();
}
if (ra_preamb_idx_present) {
j.write_int("ra-PreambleIndex", ra_preamb_idx);
}
j.end_obj();
}
// BFR-SSB-Resource ::= SEQUENCE
SRSASN_CODE bfr_ssb_res_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(pack_integer(bref, ssb, (uint8_t)0u, (uint8_t)63u));
HANDLE_CODE(pack_integer(bref, ra_preamb_idx, (uint8_t)0u, (uint8_t)63u));
return SRSASN_SUCCESS;
}
SRSASN_CODE bfr_ssb_res_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(unpack_integer(ssb, bref, (uint8_t)0u, (uint8_t)63u));
HANDLE_CODE(unpack_integer(ra_preamb_idx, bref, (uint8_t)0u, (uint8_t)63u));
return SRSASN_SUCCESS;
}
void bfr_ssb_res_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("ssb", ssb);
j.write_int("ra-PreambleIndex", ra_preamb_idx);
j.end_obj();
}
// CSI-FrequencyOccupation ::= SEQUENCE
SRSASN_CODE csi_freq_occupation_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(pack_integer(bref, start_rb, (uint16_t)0u, (uint16_t)274u));
HANDLE_CODE(pack_integer(bref, nrof_rbs, (uint16_t)24u, (uint16_t)276u));
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_freq_occupation_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(unpack_integer(start_rb, bref, (uint16_t)0u, (uint16_t)274u));
HANDLE_CODE(unpack_integer(nrof_rbs, bref, (uint16_t)24u, (uint16_t)276u));
return SRSASN_SUCCESS;
}
void csi_freq_occupation_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("startingRB", start_rb);
j.write_int("nrofRBs", nrof_rbs);
j.end_obj();
}
// CSI-RS-ResourceMapping ::= SEQUENCE
SRSASN_CODE csi_rs_res_map_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(first_ofdm_symbol_in_time_domain2_present, 1));
HANDLE_CODE(freq_domain_alloc.pack(bref));
HANDLE_CODE(nrof_ports.pack(bref));
HANDLE_CODE(pack_integer(bref, first_ofdm_symbol_in_time_domain, (uint8_t)0u, (uint8_t)13u));
if (first_ofdm_symbol_in_time_domain2_present) {
HANDLE_CODE(pack_integer(bref, first_ofdm_symbol_in_time_domain2, (uint8_t)2u, (uint8_t)12u));
}
HANDLE_CODE(cdm_type.pack(bref));
HANDLE_CODE(density.pack(bref));
HANDLE_CODE(freq_band.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_rs_res_map_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(first_ofdm_symbol_in_time_domain2_present, 1));
HANDLE_CODE(freq_domain_alloc.unpack(bref));
HANDLE_CODE(nrof_ports.unpack(bref));
HANDLE_CODE(unpack_integer(first_ofdm_symbol_in_time_domain, bref, (uint8_t)0u, (uint8_t)13u));
if (first_ofdm_symbol_in_time_domain2_present) {
HANDLE_CODE(unpack_integer(first_ofdm_symbol_in_time_domain2, bref, (uint8_t)2u, (uint8_t)12u));
}
HANDLE_CODE(cdm_type.unpack(bref));
HANDLE_CODE(density.unpack(bref));
HANDLE_CODE(freq_band.unpack(bref));
return SRSASN_SUCCESS;
}
void csi_rs_res_map_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("frequencyDomainAllocation");
freq_domain_alloc.to_json(j);
j.write_str("nrofPorts", nrof_ports.to_string());
j.write_int("firstOFDMSymbolInTimeDomain", first_ofdm_symbol_in_time_domain);
if (first_ofdm_symbol_in_time_domain2_present) {
j.write_int("firstOFDMSymbolInTimeDomain2", first_ofdm_symbol_in_time_domain2);
}
j.write_str("cdm-Type", cdm_type.to_string());
j.write_fieldname("density");
density.to_json(j);
j.write_fieldname("freqBand");
freq_band.to_json(j);
j.end_obj();
}
void csi_rs_res_map_s::freq_domain_alloc_c_::destroy_()
{
switch (type_) {
case types::row1:
c.destroy<fixed_bitstring<4> >();
break;
case types::row2:
c.destroy<fixed_bitstring<12> >();
break;
case types::row4:
c.destroy<fixed_bitstring<3> >();
break;
case types::other:
c.destroy<fixed_bitstring<6> >();
break;
default:
break;
}
}
void csi_rs_res_map_s::freq_domain_alloc_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::row1:
c.init<fixed_bitstring<4> >();
break;
case types::row2:
c.init<fixed_bitstring<12> >();
break;
case types::row4:
c.init<fixed_bitstring<3> >();
break;
case types::other:
c.init<fixed_bitstring<6> >();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "csi_rs_res_map_s::freq_domain_alloc_c_");
}
}
csi_rs_res_map_s::freq_domain_alloc_c_::freq_domain_alloc_c_(const csi_rs_res_map_s::freq_domain_alloc_c_& other)
{
type_ = other.type();
switch (type_) {
case types::row1:
c.init(other.c.get<fixed_bitstring<4> >());
break;
case types::row2:
c.init(other.c.get<fixed_bitstring<12> >());
break;
case types::row4:
c.init(other.c.get<fixed_bitstring<3> >());
break;
case types::other:
c.init(other.c.get<fixed_bitstring<6> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "csi_rs_res_map_s::freq_domain_alloc_c_");
}
}
csi_rs_res_map_s::freq_domain_alloc_c_&
csi_rs_res_map_s::freq_domain_alloc_c_::operator=(const csi_rs_res_map_s::freq_domain_alloc_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::row1:
c.set(other.c.get<fixed_bitstring<4> >());
break;
case types::row2:
c.set(other.c.get<fixed_bitstring<12> >());
break;
case types::row4:
c.set(other.c.get<fixed_bitstring<3> >());
break;
case types::other:
c.set(other.c.get<fixed_bitstring<6> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "csi_rs_res_map_s::freq_domain_alloc_c_");
}
return *this;
}
fixed_bitstring<4>& csi_rs_res_map_s::freq_domain_alloc_c_::set_row1()
{
set(types::row1);
return c.get<fixed_bitstring<4> >();
}
fixed_bitstring<12>& csi_rs_res_map_s::freq_domain_alloc_c_::set_row2()
{
set(types::row2);
return c.get<fixed_bitstring<12> >();
}
fixed_bitstring<3>& csi_rs_res_map_s::freq_domain_alloc_c_::set_row4()
{
set(types::row4);
return c.get<fixed_bitstring<3> >();
}
fixed_bitstring<6>& csi_rs_res_map_s::freq_domain_alloc_c_::set_other()
{
set(types::other);
return c.get<fixed_bitstring<6> >();
}
void csi_rs_res_map_s::freq_domain_alloc_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::row1:
j.write_str("row1", c.get<fixed_bitstring<4> >().to_string());
break;
case types::row2:
j.write_str("row2", c.get<fixed_bitstring<12> >().to_string());
break;
case types::row4:
j.write_str("row4", c.get<fixed_bitstring<3> >().to_string());
break;
case types::other:
j.write_str("other", c.get<fixed_bitstring<6> >().to_string());
break;
default:
log_invalid_choice_id(type_, "csi_rs_res_map_s::freq_domain_alloc_c_");
}
j.end_obj();
}
SRSASN_CODE csi_rs_res_map_s::freq_domain_alloc_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::row1:
HANDLE_CODE(c.get<fixed_bitstring<4> >().pack(bref));
break;
case types::row2:
HANDLE_CODE(c.get<fixed_bitstring<12> >().pack(bref));
break;
case types::row4:
HANDLE_CODE(c.get<fixed_bitstring<3> >().pack(bref));
break;
case types::other:
HANDLE_CODE(c.get<fixed_bitstring<6> >().pack(bref));
break;
default:
log_invalid_choice_id(type_, "csi_rs_res_map_s::freq_domain_alloc_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_rs_res_map_s::freq_domain_alloc_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::row1:
HANDLE_CODE(c.get<fixed_bitstring<4> >().unpack(bref));
break;
case types::row2:
HANDLE_CODE(c.get<fixed_bitstring<12> >().unpack(bref));
break;
case types::row4:
HANDLE_CODE(c.get<fixed_bitstring<3> >().unpack(bref));
break;
case types::other:
HANDLE_CODE(c.get<fixed_bitstring<6> >().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "csi_rs_res_map_s::freq_domain_alloc_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* csi_rs_res_map_s::freq_domain_alloc_c_::types_opts::to_string() const
{
static const char* options[] = {"row1", "row2", "row4", "other"};
return convert_enum_idx(options, 4, value, "csi_rs_res_map_s::freq_domain_alloc_c_::types");
}
uint8_t csi_rs_res_map_s::freq_domain_alloc_c_::types_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 4};
return map_enum_number(options, 3, value, "csi_rs_res_map_s::freq_domain_alloc_c_::types");
}
const char* csi_rs_res_map_s::nrof_ports_opts::to_string() const
{
static const char* options[] = {"p1", "p2", "p4", "p8", "p12", "p16", "p24", "p32"};
return convert_enum_idx(options, 8, value, "csi_rs_res_map_s::nrof_ports_e_");
}
uint8_t csi_rs_res_map_s::nrof_ports_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 4, 8, 12, 16, 24, 32};
return map_enum_number(options, 8, value, "csi_rs_res_map_s::nrof_ports_e_");
}
const char* csi_rs_res_map_s::cdm_type_opts::to_string() const
{
static const char* options[] = {"noCDM", "fd-CDM2", "cdm4-FD2-TD2", "cdm8-FD2-TD4"};
return convert_enum_idx(options, 4, value, "csi_rs_res_map_s::cdm_type_e_");
}
uint8_t csi_rs_res_map_s::cdm_type_opts::to_number() const
{
switch (value) {
case fd_cdm2:
return 2;
case cdm4_fd2_td2:
return 4;
case cdm8_fd2_td4:
return 8;
default:
invalid_enum_number(value, "csi_rs_res_map_s::cdm_type_e_");
}
return 0;
}
void csi_rs_res_map_s::density_c_::set(types::options e)
{
type_ = e;
}
csi_rs_res_map_s::density_c_::dot5_e_& csi_rs_res_map_s::density_c_::set_dot5()
{
set(types::dot5);
return c;
}
void csi_rs_res_map_s::density_c_::set_one()
{
set(types::one);
}
void csi_rs_res_map_s::density_c_::set_three()
{
set(types::three);
}
void csi_rs_res_map_s::density_c_::set_spare()
{
set(types::spare);
}
void csi_rs_res_map_s::density_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::dot5:
j.write_str("dot5", c.to_string());
break;
case types::one:
break;
case types::three:
break;
case types::spare:
break;
default:
log_invalid_choice_id(type_, "csi_rs_res_map_s::density_c_");
}
j.end_obj();
}
SRSASN_CODE csi_rs_res_map_s::density_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::dot5:
HANDLE_CODE(c.pack(bref));
break;
case types::one:
break;
case types::three:
break;
case types::spare:
break;
default:
log_invalid_choice_id(type_, "csi_rs_res_map_s::density_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_rs_res_map_s::density_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::dot5:
HANDLE_CODE(c.unpack(bref));
break;
case types::one:
break;
case types::three:
break;
case types::spare:
break;
default:
log_invalid_choice_id(type_, "csi_rs_res_map_s::density_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* csi_rs_res_map_s::density_c_::dot5_opts::to_string() const
{
static const char* options[] = {"evenPRBs", "oddPRBs"};
return convert_enum_idx(options, 2, value, "csi_rs_res_map_s::density_c_::dot5_e_");
}
const char* csi_rs_res_map_s::density_c_::types_opts::to_string() const
{
static const char* options[] = {"dot5", "one", "three", "spare"};
return convert_enum_idx(options, 4, value, "csi_rs_res_map_s::density_c_::types");
}
uint8_t csi_rs_res_map_s::density_c_::types_opts::to_number() const
{
static const uint8_t options[] = {5, 1, 3};
return map_enum_number(options, 3, value, "csi_rs_res_map_s::density_c_::types");
}
// CSI-ResourcePeriodicityAndOffset ::= CHOICE
void csi_res_periodicity_and_offset_c::destroy_() {}
void csi_res_periodicity_and_offset_c::set(types::options e)
{
destroy_();
type_ = e;
}
csi_res_periodicity_and_offset_c::csi_res_periodicity_and_offset_c(const csi_res_periodicity_and_offset_c& other)
{
type_ = other.type();
switch (type_) {
case types::slots4:
c.init(other.c.get<uint8_t>());
break;
case types::slots5:
c.init(other.c.get<uint8_t>());
break;
case types::slots8:
c.init(other.c.get<uint8_t>());
break;
case types::slots10:
c.init(other.c.get<uint8_t>());
break;
case types::slots16:
c.init(other.c.get<uint8_t>());
break;
case types::slots20:
c.init(other.c.get<uint8_t>());
break;
case types::slots32:
c.init(other.c.get<uint8_t>());
break;
case types::slots40:
c.init(other.c.get<uint8_t>());
break;
case types::slots64:
c.init(other.c.get<uint8_t>());
break;
case types::slots80:
c.init(other.c.get<uint8_t>());
break;
case types::slots160:
c.init(other.c.get<uint8_t>());
break;
case types::slots320:
c.init(other.c.get<uint16_t>());
break;
case types::slots640:
c.init(other.c.get<uint16_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "csi_res_periodicity_and_offset_c");
}
}
csi_res_periodicity_and_offset_c&
csi_res_periodicity_and_offset_c::operator=(const csi_res_periodicity_and_offset_c& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::slots4:
c.set(other.c.get<uint8_t>());
break;
case types::slots5:
c.set(other.c.get<uint8_t>());
break;
case types::slots8:
c.set(other.c.get<uint8_t>());
break;
case types::slots10:
c.set(other.c.get<uint8_t>());
break;
case types::slots16:
c.set(other.c.get<uint8_t>());
break;
case types::slots20:
c.set(other.c.get<uint8_t>());
break;
case types::slots32:
c.set(other.c.get<uint8_t>());
break;
case types::slots40:
c.set(other.c.get<uint8_t>());
break;
case types::slots64:
c.set(other.c.get<uint8_t>());
break;
case types::slots80:
c.set(other.c.get<uint8_t>());
break;
case types::slots160:
c.set(other.c.get<uint8_t>());
break;
case types::slots320:
c.set(other.c.get<uint16_t>());
break;
case types::slots640:
c.set(other.c.get<uint16_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "csi_res_periodicity_and_offset_c");
}
return *this;
}
uint8_t& csi_res_periodicity_and_offset_c::set_slots4()
{
set(types::slots4);
return c.get<uint8_t>();
}
uint8_t& csi_res_periodicity_and_offset_c::set_slots5()
{
set(types::slots5);
return c.get<uint8_t>();
}
uint8_t& csi_res_periodicity_and_offset_c::set_slots8()
{
set(types::slots8);
return c.get<uint8_t>();
}
uint8_t& csi_res_periodicity_and_offset_c::set_slots10()
{
set(types::slots10);
return c.get<uint8_t>();
}
uint8_t& csi_res_periodicity_and_offset_c::set_slots16()
{
set(types::slots16);
return c.get<uint8_t>();
}
uint8_t& csi_res_periodicity_and_offset_c::set_slots20()
{
set(types::slots20);
return c.get<uint8_t>();
}
uint8_t& csi_res_periodicity_and_offset_c::set_slots32()
{
set(types::slots32);
return c.get<uint8_t>();
}
uint8_t& csi_res_periodicity_and_offset_c::set_slots40()
{
set(types::slots40);
return c.get<uint8_t>();
}
uint8_t& csi_res_periodicity_and_offset_c::set_slots64()
{
set(types::slots64);
return c.get<uint8_t>();
}
uint8_t& csi_res_periodicity_and_offset_c::set_slots80()
{
set(types::slots80);
return c.get<uint8_t>();
}
uint8_t& csi_res_periodicity_and_offset_c::set_slots160()
{
set(types::slots160);
return c.get<uint8_t>();
}
uint16_t& csi_res_periodicity_and_offset_c::set_slots320()
{
set(types::slots320);
return c.get<uint16_t>();
}
uint16_t& csi_res_periodicity_and_offset_c::set_slots640()
{
set(types::slots640);
return c.get<uint16_t>();
}
void csi_res_periodicity_and_offset_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::slots4:
j.write_int("slots4", c.get<uint8_t>());
break;
case types::slots5:
j.write_int("slots5", c.get<uint8_t>());
break;
case types::slots8:
j.write_int("slots8", c.get<uint8_t>());
break;
case types::slots10:
j.write_int("slots10", c.get<uint8_t>());
break;
case types::slots16:
j.write_int("slots16", c.get<uint8_t>());
break;
case types::slots20:
j.write_int("slots20", c.get<uint8_t>());
break;
case types::slots32:
j.write_int("slots32", c.get<uint8_t>());
break;
case types::slots40:
j.write_int("slots40", c.get<uint8_t>());
break;
case types::slots64:
j.write_int("slots64", c.get<uint8_t>());
break;
case types::slots80:
j.write_int("slots80", c.get<uint8_t>());
break;
case types::slots160:
j.write_int("slots160", c.get<uint8_t>());
break;
case types::slots320:
j.write_int("slots320", c.get<uint16_t>());
break;
case types::slots640:
j.write_int("slots640", c.get<uint16_t>());
break;
default:
log_invalid_choice_id(type_, "csi_res_periodicity_and_offset_c");
}
j.end_obj();
}
SRSASN_CODE csi_res_periodicity_and_offset_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::slots4:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)3u));
break;
case types::slots5:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)4u));
break;
case types::slots8:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)7u));
break;
case types::slots10:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)9u));
break;
case types::slots16:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)15u));
break;
case types::slots20:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)19u));
break;
case types::slots32:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)31u));
break;
case types::slots40:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)39u));
break;
case types::slots64:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)63u));
break;
case types::slots80:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)79u));
break;
case types::slots160:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)159u));
break;
case types::slots320:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)319u));
break;
case types::slots640:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)639u));
break;
default:
log_invalid_choice_id(type_, "csi_res_periodicity_and_offset_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_res_periodicity_and_offset_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::slots4:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)3u));
break;
case types::slots5:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)4u));
break;
case types::slots8:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)7u));
break;
case types::slots10:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)9u));
break;
case types::slots16:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)15u));
break;
case types::slots20:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)19u));
break;
case types::slots32:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)31u));
break;
case types::slots40:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)39u));
break;
case types::slots64:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)63u));
break;
case types::slots80:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)79u));
break;
case types::slots160:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)159u));
break;
case types::slots320:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)319u));
break;
case types::slots640:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)639u));
break;
default:
log_invalid_choice_id(type_, "csi_res_periodicity_and_offset_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* csi_res_periodicity_and_offset_c::types_opts::to_string() const
{
static const char* options[] = {"slots4",
"slots5",
"slots8",
"slots10",
"slots16",
"slots20",
"slots32",
"slots40",
"slots64",
"slots80",
"slots160",
"slots320",
"slots640"};
return convert_enum_idx(options, 13, value, "csi_res_periodicity_and_offset_c::types");
}
uint16_t csi_res_periodicity_and_offset_c::types_opts::to_number() const
{
static const uint16_t options[] = {4, 5, 8, 10, 16, 20, 32, 40, 64, 80, 160, 320, 640};
return map_enum_number(options, 13, value, "csi_res_periodicity_and_offset_c::types");
}
// INT-ConfigurationPerServingCell ::= SEQUENCE
SRSASN_CODE int_cfg_per_serving_cell_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, serving_cell_id, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(pack_integer(bref, position_in_dci, (uint8_t)0u, (uint8_t)125u));
return SRSASN_SUCCESS;
}
SRSASN_CODE int_cfg_per_serving_cell_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(serving_cell_id, bref, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(unpack_integer(position_in_dci, bref, (uint8_t)0u, (uint8_t)125u));
return SRSASN_SUCCESS;
}
void int_cfg_per_serving_cell_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("servingCellId", serving_cell_id);
j.write_int("positionInDCI", position_in_dci);
j.end_obj();
}
// PTRS-DownlinkConfig ::= SEQUENCE
SRSASN_CODE ptrs_dl_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(freq_density_present, 1));
HANDLE_CODE(bref.pack(time_density_present, 1));
HANDLE_CODE(bref.pack(epre_ratio_present, 1));
HANDLE_CODE(bref.pack(res_elem_offset_present, 1));
if (freq_density_present) {
HANDLE_CODE(pack_fixed_seq_of(bref, &(freq_density)[0], freq_density.size(), integer_packer<uint16_t>(1, 276)));
}
if (time_density_present) {
HANDLE_CODE(pack_fixed_seq_of(bref, &(time_density)[0], time_density.size(), integer_packer<uint8_t>(0, 29)));
}
if (epre_ratio_present) {
HANDLE_CODE(pack_integer(bref, epre_ratio, (uint8_t)0u, (uint8_t)3u));
}
if (res_elem_offset_present) {
HANDLE_CODE(res_elem_offset.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ptrs_dl_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(freq_density_present, 1));
HANDLE_CODE(bref.unpack(time_density_present, 1));
HANDLE_CODE(bref.unpack(epre_ratio_present, 1));
HANDLE_CODE(bref.unpack(res_elem_offset_present, 1));
if (freq_density_present) {
HANDLE_CODE(unpack_fixed_seq_of(&(freq_density)[0], bref, freq_density.size(), integer_packer<uint16_t>(1, 276)));
}
if (time_density_present) {
HANDLE_CODE(unpack_fixed_seq_of(&(time_density)[0], bref, time_density.size(), integer_packer<uint8_t>(0, 29)));
}
if (epre_ratio_present) {
HANDLE_CODE(unpack_integer(epre_ratio, bref, (uint8_t)0u, (uint8_t)3u));
}
if (res_elem_offset_present) {
HANDLE_CODE(res_elem_offset.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ptrs_dl_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (freq_density_present) {
j.start_array("frequencyDensity");
for (const auto& e1 : freq_density) {
j.write_int(e1);
}
j.end_array();
}
if (time_density_present) {
j.start_array("timeDensity");
for (const auto& e1 : time_density) {
j.write_int(e1);
}
j.end_array();
}
if (epre_ratio_present) {
j.write_int("epre-Ratio", epre_ratio);
}
if (res_elem_offset_present) {
j.write_str("resourceElementOffset", res_elem_offset.to_string());
}
j.end_obj();
}
const char* ptrs_dl_cfg_s::res_elem_offset_opts::to_string() const
{
static const char* options[] = {"offset01", "offset10", "offset11"};
return convert_enum_idx(options, 3, value, "ptrs_dl_cfg_s::res_elem_offset_e_");
}
float ptrs_dl_cfg_s::res_elem_offset_opts::to_number() const
{
static const float options[] = {0.1, 1.0, 1.1};
return map_enum_number(options, 3, value, "ptrs_dl_cfg_s::res_elem_offset_e_");
}
const char* ptrs_dl_cfg_s::res_elem_offset_opts::to_number_string() const
{
static const char* options[] = {"0.1", "1.0", "1.1"};
return convert_enum_idx(options, 3, value, "ptrs_dl_cfg_s::res_elem_offset_e_");
}
// QCL-Info ::= SEQUENCE
SRSASN_CODE qcl_info_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(cell_present, 1));
HANDLE_CODE(bref.pack(bwp_id_present, 1));
if (cell_present) {
HANDLE_CODE(pack_integer(bref, cell, (uint8_t)0u, (uint8_t)31u));
}
if (bwp_id_present) {
HANDLE_CODE(pack_integer(bref, bwp_id, (uint8_t)0u, (uint8_t)4u));
}
HANDLE_CODE(ref_sig.pack(bref));
HANDLE_CODE(qcl_type.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE qcl_info_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(cell_present, 1));
HANDLE_CODE(bref.unpack(bwp_id_present, 1));
if (cell_present) {
HANDLE_CODE(unpack_integer(cell, bref, (uint8_t)0u, (uint8_t)31u));
}
if (bwp_id_present) {
HANDLE_CODE(unpack_integer(bwp_id, bref, (uint8_t)0u, (uint8_t)4u));
}
HANDLE_CODE(ref_sig.unpack(bref));
HANDLE_CODE(qcl_type.unpack(bref));
return SRSASN_SUCCESS;
}
void qcl_info_s::to_json(json_writer& j) const
{
j.start_obj();
if (cell_present) {
j.write_int("cell", cell);
}
if (bwp_id_present) {
j.write_int("bwp-Id", bwp_id);
}
j.write_fieldname("referenceSignal");
ref_sig.to_json(j);
j.write_str("qcl-Type", qcl_type.to_string());
j.end_obj();
}
void qcl_info_s::ref_sig_c_::destroy_() {}
void qcl_info_s::ref_sig_c_::set(types::options e)
{
destroy_();
type_ = e;
}
qcl_info_s::ref_sig_c_::ref_sig_c_(const qcl_info_s::ref_sig_c_& other)
{
type_ = other.type();
switch (type_) {
case types::csi_rs:
c.init(other.c.get<uint8_t>());
break;
case types::ssb:
c.init(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "qcl_info_s::ref_sig_c_");
}
}
qcl_info_s::ref_sig_c_& qcl_info_s::ref_sig_c_::operator=(const qcl_info_s::ref_sig_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::csi_rs:
c.set(other.c.get<uint8_t>());
break;
case types::ssb:
c.set(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "qcl_info_s::ref_sig_c_");
}
return *this;
}
uint8_t& qcl_info_s::ref_sig_c_::set_csi_rs()
{
set(types::csi_rs);
return c.get<uint8_t>();
}
uint8_t& qcl_info_s::ref_sig_c_::set_ssb()
{
set(types::ssb);
return c.get<uint8_t>();
}
void qcl_info_s::ref_sig_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::csi_rs:
j.write_int("csi-rs", c.get<uint8_t>());
break;
case types::ssb:
j.write_int("ssb", c.get<uint8_t>());
break;
default:
log_invalid_choice_id(type_, "qcl_info_s::ref_sig_c_");
}
j.end_obj();
}
SRSASN_CODE qcl_info_s::ref_sig_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::csi_rs:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)191u));
break;
case types::ssb:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)63u));
break;
default:
log_invalid_choice_id(type_, "qcl_info_s::ref_sig_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE qcl_info_s::ref_sig_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::csi_rs:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)191u));
break;
case types::ssb:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)63u));
break;
default:
log_invalid_choice_id(type_, "qcl_info_s::ref_sig_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* qcl_info_s::ref_sig_c_::types_opts::to_string() const
{
static const char* options[] = {"csi-rs", "ssb"};
return convert_enum_idx(options, 2, value, "qcl_info_s::ref_sig_c_::types");
}
const char* qcl_info_s::qcl_type_opts::to_string() const
{
static const char* options[] = {"typeA", "typeB", "typeC", "typeD"};
return convert_enum_idx(options, 4, value, "qcl_info_s::qcl_type_e_");
}
// DMRS-DownlinkConfig ::= SEQUENCE
SRSASN_CODE dmrs_dl_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(dmrs_type_present, 1));
HANDLE_CODE(bref.pack(dmrs_add_position_present, 1));
HANDLE_CODE(bref.pack(max_len_present, 1));
HANDLE_CODE(bref.pack(scrambling_id0_present, 1));
HANDLE_CODE(bref.pack(scrambling_id1_present, 1));
HANDLE_CODE(bref.pack(phase_tracking_rs_present, 1));
if (dmrs_add_position_present) {
HANDLE_CODE(dmrs_add_position.pack(bref));
}
if (scrambling_id0_present) {
HANDLE_CODE(pack_integer(bref, scrambling_id0, (uint32_t)0u, (uint32_t)65535u));
}
if (scrambling_id1_present) {
HANDLE_CODE(pack_integer(bref, scrambling_id1, (uint32_t)0u, (uint32_t)65535u));
}
if (phase_tracking_rs_present) {
HANDLE_CODE(phase_tracking_rs.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE dmrs_dl_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(dmrs_type_present, 1));
HANDLE_CODE(bref.unpack(dmrs_add_position_present, 1));
HANDLE_CODE(bref.unpack(max_len_present, 1));
HANDLE_CODE(bref.unpack(scrambling_id0_present, 1));
HANDLE_CODE(bref.unpack(scrambling_id1_present, 1));
HANDLE_CODE(bref.unpack(phase_tracking_rs_present, 1));
if (dmrs_add_position_present) {
HANDLE_CODE(dmrs_add_position.unpack(bref));
}
if (scrambling_id0_present) {
HANDLE_CODE(unpack_integer(scrambling_id0, bref, (uint32_t)0u, (uint32_t)65535u));
}
if (scrambling_id1_present) {
HANDLE_CODE(unpack_integer(scrambling_id1, bref, (uint32_t)0u, (uint32_t)65535u));
}
if (phase_tracking_rs_present) {
HANDLE_CODE(phase_tracking_rs.unpack(bref));
}
return SRSASN_SUCCESS;
}
void dmrs_dl_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (dmrs_type_present) {
j.write_str("dmrs-Type", "type2");
}
if (dmrs_add_position_present) {
j.write_str("dmrs-AdditionalPosition", dmrs_add_position.to_string());
}
if (max_len_present) {
j.write_str("maxLength", "len2");
}
if (scrambling_id0_present) {
j.write_int("scramblingID0", scrambling_id0);
}
if (scrambling_id1_present) {
j.write_int("scramblingID1", scrambling_id1);
}
if (phase_tracking_rs_present) {
j.write_fieldname("phaseTrackingRS");
phase_tracking_rs.to_json(j);
}
j.end_obj();
}
const char* dmrs_dl_cfg_s::dmrs_add_position_opts::to_string() const
{
static const char* options[] = {"pos0", "pos1", "pos3"};
return convert_enum_idx(options, 3, value, "dmrs_dl_cfg_s::dmrs_add_position_e_");
}
uint8_t dmrs_dl_cfg_s::dmrs_add_position_opts::to_number() const
{
static const uint8_t options[] = {0, 1, 3};
return map_enum_number(options, 3, value, "dmrs_dl_cfg_s::dmrs_add_position_e_");
}
// DownlinkPreemption ::= SEQUENCE
SRSASN_CODE dl_preemption_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(pack_integer(bref, int_rnti, (uint32_t)0u, (uint32_t)65535u));
HANDLE_CODE(time_freq_set.pack(bref));
HANDLE_CODE(pack_integer(bref, dci_payload_size, (uint8_t)0u, (uint8_t)126u));
HANDLE_CODE(pack_dyn_seq_of(bref, int_cfg_per_serving_cell, 1, 32));
return SRSASN_SUCCESS;
}
SRSASN_CODE dl_preemption_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(unpack_integer(int_rnti, bref, (uint32_t)0u, (uint32_t)65535u));
HANDLE_CODE(time_freq_set.unpack(bref));
HANDLE_CODE(unpack_integer(dci_payload_size, bref, (uint8_t)0u, (uint8_t)126u));
HANDLE_CODE(unpack_dyn_seq_of(int_cfg_per_serving_cell, bref, 1, 32));
return SRSASN_SUCCESS;
}
void dl_preemption_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("int-RNTI", int_rnti);
j.write_str("timeFrequencySet", time_freq_set.to_string());
j.write_int("dci-PayloadSize", dci_payload_size);
j.start_array("int-ConfigurationPerServingCell");
for (const auto& e1 : int_cfg_per_serving_cell) {
e1.to_json(j);
}
j.end_array();
j.end_obj();
}
const char* dl_preemption_s::time_freq_set_opts::to_string() const
{
static const char* options[] = {"set0", "set1"};
return convert_enum_idx(options, 2, value, "dl_preemption_s::time_freq_set_e_");
}
uint8_t dl_preemption_s::time_freq_set_opts::to_number() const
{
static const uint8_t options[] = {0, 1};
return map_enum_number(options, 2, value, "dl_preemption_s::time_freq_set_e_");
}
// PUCCH-TPC-CommandConfig ::= SEQUENCE
SRSASN_CODE pucch_tpc_cmd_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(tpc_idx_pcell_present, 1));
HANDLE_CODE(bref.pack(tpc_idx_pucch_scell_present, 1));
if (tpc_idx_pcell_present) {
HANDLE_CODE(pack_integer(bref, tpc_idx_pcell, (uint8_t)1u, (uint8_t)15u));
}
if (tpc_idx_pucch_scell_present) {
HANDLE_CODE(pack_integer(bref, tpc_idx_pucch_scell, (uint8_t)1u, (uint8_t)15u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pucch_tpc_cmd_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(tpc_idx_pcell_present, 1));
HANDLE_CODE(bref.unpack(tpc_idx_pucch_scell_present, 1));
if (tpc_idx_pcell_present) {
HANDLE_CODE(unpack_integer(tpc_idx_pcell, bref, (uint8_t)1u, (uint8_t)15u));
}
if (tpc_idx_pucch_scell_present) {
HANDLE_CODE(unpack_integer(tpc_idx_pucch_scell, bref, (uint8_t)1u, (uint8_t)15u));
}
return SRSASN_SUCCESS;
}
void pucch_tpc_cmd_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (tpc_idx_pcell_present) {
j.write_int("tpc-IndexPCell", tpc_idx_pcell);
}
if (tpc_idx_pucch_scell_present) {
j.write_int("tpc-IndexPUCCH-SCell", tpc_idx_pucch_scell);
}
j.end_obj();
}
// PUSCH-TPC-CommandConfig ::= SEQUENCE
SRSASN_CODE pusch_tpc_cmd_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(tpc_idx_present, 1));
HANDLE_CODE(bref.pack(tpc_idx_sul_present, 1));
HANDLE_CODE(bref.pack(target_cell_present, 1));
if (tpc_idx_present) {
HANDLE_CODE(pack_integer(bref, tpc_idx, (uint8_t)1u, (uint8_t)15u));
}
if (tpc_idx_sul_present) {
HANDLE_CODE(pack_integer(bref, tpc_idx_sul, (uint8_t)1u, (uint8_t)15u));
}
if (target_cell_present) {
HANDLE_CODE(pack_integer(bref, target_cell, (uint8_t)0u, (uint8_t)31u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pusch_tpc_cmd_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(tpc_idx_present, 1));
HANDLE_CODE(bref.unpack(tpc_idx_sul_present, 1));
HANDLE_CODE(bref.unpack(target_cell_present, 1));
if (tpc_idx_present) {
HANDLE_CODE(unpack_integer(tpc_idx, bref, (uint8_t)1u, (uint8_t)15u));
}
if (tpc_idx_sul_present) {
HANDLE_CODE(unpack_integer(tpc_idx_sul, bref, (uint8_t)1u, (uint8_t)15u));
}
if (target_cell_present) {
HANDLE_CODE(unpack_integer(target_cell, bref, (uint8_t)0u, (uint8_t)31u));
}
return SRSASN_SUCCESS;
}
void pusch_tpc_cmd_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (tpc_idx_present) {
j.write_int("tpc-Index", tpc_idx);
}
if (tpc_idx_sul_present) {
j.write_int("tpc-IndexSUL", tpc_idx_sul);
}
if (target_cell_present) {
j.write_int("targetCell", target_cell);
}
j.end_obj();
}
// RadioLinkMonitoringRS ::= SEQUENCE
SRSASN_CODE radio_link_monitoring_rs_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(pack_integer(bref, radio_link_monitoring_rs_id, (uint8_t)0u, (uint8_t)9u));
HANDLE_CODE(purpose.pack(bref));
HANDLE_CODE(detection_res.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE radio_link_monitoring_rs_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(unpack_integer(radio_link_monitoring_rs_id, bref, (uint8_t)0u, (uint8_t)9u));
HANDLE_CODE(purpose.unpack(bref));
HANDLE_CODE(detection_res.unpack(bref));
return SRSASN_SUCCESS;
}
void radio_link_monitoring_rs_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("radioLinkMonitoringRS-Id", radio_link_monitoring_rs_id);
j.write_str("purpose", purpose.to_string());
j.write_fieldname("detectionResource");
detection_res.to_json(j);
j.end_obj();
}
const char* radio_link_monitoring_rs_s::purpose_opts::to_string() const
{
static const char* options[] = {"beamFailure", "rlf", "both"};
return convert_enum_idx(options, 3, value, "radio_link_monitoring_rs_s::purpose_e_");
}
void radio_link_monitoring_rs_s::detection_res_c_::destroy_() {}
void radio_link_monitoring_rs_s::detection_res_c_::set(types::options e)
{
destroy_();
type_ = e;
}
radio_link_monitoring_rs_s::detection_res_c_::detection_res_c_(
const radio_link_monitoring_rs_s::detection_res_c_& other)
{
type_ = other.type();
switch (type_) {
case types::ssb_idx:
c.init(other.c.get<uint8_t>());
break;
case types::csi_rs_idx:
c.init(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "radio_link_monitoring_rs_s::detection_res_c_");
}
}
radio_link_monitoring_rs_s::detection_res_c_&
radio_link_monitoring_rs_s::detection_res_c_::operator=(const radio_link_monitoring_rs_s::detection_res_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::ssb_idx:
c.set(other.c.get<uint8_t>());
break;
case types::csi_rs_idx:
c.set(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "radio_link_monitoring_rs_s::detection_res_c_");
}
return *this;
}
uint8_t& radio_link_monitoring_rs_s::detection_res_c_::set_ssb_idx()
{
set(types::ssb_idx);
return c.get<uint8_t>();
}
uint8_t& radio_link_monitoring_rs_s::detection_res_c_::set_csi_rs_idx()
{
set(types::csi_rs_idx);
return c.get<uint8_t>();
}
void radio_link_monitoring_rs_s::detection_res_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::ssb_idx:
j.write_int("ssb-Index", c.get<uint8_t>());
break;
case types::csi_rs_idx:
j.write_int("csi-RS-Index", c.get<uint8_t>());
break;
default:
log_invalid_choice_id(type_, "radio_link_monitoring_rs_s::detection_res_c_");
}
j.end_obj();
}
SRSASN_CODE radio_link_monitoring_rs_s::detection_res_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::ssb_idx:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)63u));
break;
case types::csi_rs_idx:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)191u));
break;
default:
log_invalid_choice_id(type_, "radio_link_monitoring_rs_s::detection_res_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE radio_link_monitoring_rs_s::detection_res_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::ssb_idx:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)63u));
break;
case types::csi_rs_idx:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)191u));
break;
default:
log_invalid_choice_id(type_, "radio_link_monitoring_rs_s::detection_res_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* radio_link_monitoring_rs_s::detection_res_c_::types_opts::to_string() const
{
static const char* options[] = {"ssb-Index", "csi-RS-Index"};
return convert_enum_idx(options, 2, value, "radio_link_monitoring_rs_s::detection_res_c_::types");
}
// RateMatchPattern ::= SEQUENCE
SRSASN_CODE rate_match_pattern_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(subcarrier_spacing_present, 1));
HANDLE_CODE(pack_integer(bref, rate_match_pattern_id, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(pattern_type.pack(bref));
if (subcarrier_spacing_present) {
HANDLE_CODE(subcarrier_spacing.pack(bref));
}
HANDLE_CODE(dummy.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE rate_match_pattern_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(subcarrier_spacing_present, 1));
HANDLE_CODE(unpack_integer(rate_match_pattern_id, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(pattern_type.unpack(bref));
if (subcarrier_spacing_present) {
HANDLE_CODE(subcarrier_spacing.unpack(bref));
}
HANDLE_CODE(dummy.unpack(bref));
return SRSASN_SUCCESS;
}
void rate_match_pattern_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("rateMatchPatternId", rate_match_pattern_id);
j.write_fieldname("patternType");
pattern_type.to_json(j);
if (subcarrier_spacing_present) {
j.write_str("subcarrierSpacing", subcarrier_spacing.to_string());
}
j.write_str("dummy", dummy.to_string());
j.end_obj();
}
void rate_match_pattern_s::pattern_type_c_::destroy_()
{
switch (type_) {
case types::bitmaps:
c.destroy<bitmaps_s_>();
break;
default:
break;
}
}
void rate_match_pattern_s::pattern_type_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::bitmaps:
c.init<bitmaps_s_>();
break;
case types::ctrl_res_set:
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rate_match_pattern_s::pattern_type_c_");
}
}
rate_match_pattern_s::pattern_type_c_::pattern_type_c_(const rate_match_pattern_s::pattern_type_c_& other)
{
type_ = other.type();
switch (type_) {
case types::bitmaps:
c.init(other.c.get<bitmaps_s_>());
break;
case types::ctrl_res_set:
c.init(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rate_match_pattern_s::pattern_type_c_");
}
}
rate_match_pattern_s::pattern_type_c_&
rate_match_pattern_s::pattern_type_c_::operator=(const rate_match_pattern_s::pattern_type_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::bitmaps:
c.set(other.c.get<bitmaps_s_>());
break;
case types::ctrl_res_set:
c.set(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rate_match_pattern_s::pattern_type_c_");
}
return *this;
}
rate_match_pattern_s::pattern_type_c_::bitmaps_s_& rate_match_pattern_s::pattern_type_c_::set_bitmaps()
{
set(types::bitmaps);
return c.get<bitmaps_s_>();
}
uint8_t& rate_match_pattern_s::pattern_type_c_::set_ctrl_res_set()
{
set(types::ctrl_res_set);
return c.get<uint8_t>();
}
void rate_match_pattern_s::pattern_type_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::bitmaps:
j.write_fieldname("bitmaps");
j.start_obj();
j.write_str("resourceBlocks", c.get<bitmaps_s_>().res_blocks.to_string());
j.write_fieldname("symbolsInResourceBlock");
c.get<bitmaps_s_>().symbols_in_res_block.to_json(j);
if (c.get<bitmaps_s_>().periodicity_and_pattern_present) {
j.write_fieldname("periodicityAndPattern");
c.get<bitmaps_s_>().periodicity_and_pattern.to_json(j);
}
j.end_obj();
break;
case types::ctrl_res_set:
j.write_int("controlResourceSet", c.get<uint8_t>());
break;
default:
log_invalid_choice_id(type_, "rate_match_pattern_s::pattern_type_c_");
}
j.end_obj();
}
SRSASN_CODE rate_match_pattern_s::pattern_type_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::bitmaps:
bref.pack(c.get<bitmaps_s_>().ext, 1);
HANDLE_CODE(bref.pack(c.get<bitmaps_s_>().periodicity_and_pattern_present, 1));
HANDLE_CODE(c.get<bitmaps_s_>().res_blocks.pack(bref));
HANDLE_CODE(c.get<bitmaps_s_>().symbols_in_res_block.pack(bref));
if (c.get<bitmaps_s_>().periodicity_and_pattern_present) {
HANDLE_CODE(c.get<bitmaps_s_>().periodicity_and_pattern.pack(bref));
}
break;
case types::ctrl_res_set:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)11u));
break;
default:
log_invalid_choice_id(type_, "rate_match_pattern_s::pattern_type_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rate_match_pattern_s::pattern_type_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::bitmaps:
bref.unpack(c.get<bitmaps_s_>().ext, 1);
HANDLE_CODE(bref.unpack(c.get<bitmaps_s_>().periodicity_and_pattern_present, 1));
HANDLE_CODE(c.get<bitmaps_s_>().res_blocks.unpack(bref));
HANDLE_CODE(c.get<bitmaps_s_>().symbols_in_res_block.unpack(bref));
if (c.get<bitmaps_s_>().periodicity_and_pattern_present) {
HANDLE_CODE(c.get<bitmaps_s_>().periodicity_and_pattern.unpack(bref));
}
break;
case types::ctrl_res_set:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)11u));
break;
default:
log_invalid_choice_id(type_, "rate_match_pattern_s::pattern_type_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
void rate_match_pattern_s::pattern_type_c_::bitmaps_s_::symbols_in_res_block_c_::destroy_()
{
switch (type_) {
case types::one_slot:
c.destroy<fixed_bitstring<14> >();
break;
case types::two_slots:
c.destroy<fixed_bitstring<28> >();
break;
default:
break;
}
}
void rate_match_pattern_s::pattern_type_c_::bitmaps_s_::symbols_in_res_block_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::one_slot:
c.init<fixed_bitstring<14> >();
break;
case types::two_slots:
c.init<fixed_bitstring<28> >();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rate_match_pattern_s::pattern_type_c_::bitmaps_s_::symbols_in_res_block_c_");
}
}
rate_match_pattern_s::pattern_type_c_::bitmaps_s_::symbols_in_res_block_c_::symbols_in_res_block_c_(
const rate_match_pattern_s::pattern_type_c_::bitmaps_s_::symbols_in_res_block_c_& other)
{
type_ = other.type();
switch (type_) {
case types::one_slot:
c.init(other.c.get<fixed_bitstring<14> >());
break;
case types::two_slots:
c.init(other.c.get<fixed_bitstring<28> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rate_match_pattern_s::pattern_type_c_::bitmaps_s_::symbols_in_res_block_c_");
}
}
rate_match_pattern_s::pattern_type_c_::bitmaps_s_::symbols_in_res_block_c_&
rate_match_pattern_s::pattern_type_c_::bitmaps_s_::symbols_in_res_block_c_::operator=(
const rate_match_pattern_s::pattern_type_c_::bitmaps_s_::symbols_in_res_block_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::one_slot:
c.set(other.c.get<fixed_bitstring<14> >());
break;
case types::two_slots:
c.set(other.c.get<fixed_bitstring<28> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rate_match_pattern_s::pattern_type_c_::bitmaps_s_::symbols_in_res_block_c_");
}
return *this;
}
fixed_bitstring<14>& rate_match_pattern_s::pattern_type_c_::bitmaps_s_::symbols_in_res_block_c_::set_one_slot()
{
set(types::one_slot);
return c.get<fixed_bitstring<14> >();
}
fixed_bitstring<28>& rate_match_pattern_s::pattern_type_c_::bitmaps_s_::symbols_in_res_block_c_::set_two_slots()
{
set(types::two_slots);
return c.get<fixed_bitstring<28> >();
}
void rate_match_pattern_s::pattern_type_c_::bitmaps_s_::symbols_in_res_block_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::one_slot:
j.write_str("oneSlot", c.get<fixed_bitstring<14> >().to_string());
break;
case types::two_slots:
j.write_str("twoSlots", c.get<fixed_bitstring<28> >().to_string());
break;
default:
log_invalid_choice_id(type_, "rate_match_pattern_s::pattern_type_c_::bitmaps_s_::symbols_in_res_block_c_");
}
j.end_obj();
}
SRSASN_CODE rate_match_pattern_s::pattern_type_c_::bitmaps_s_::symbols_in_res_block_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::one_slot:
HANDLE_CODE(c.get<fixed_bitstring<14> >().pack(bref));
break;
case types::two_slots:
HANDLE_CODE(c.get<fixed_bitstring<28> >().pack(bref));
break;
default:
log_invalid_choice_id(type_, "rate_match_pattern_s::pattern_type_c_::bitmaps_s_::symbols_in_res_block_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rate_match_pattern_s::pattern_type_c_::bitmaps_s_::symbols_in_res_block_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::one_slot:
HANDLE_CODE(c.get<fixed_bitstring<14> >().unpack(bref));
break;
case types::two_slots:
HANDLE_CODE(c.get<fixed_bitstring<28> >().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "rate_match_pattern_s::pattern_type_c_::bitmaps_s_::symbols_in_res_block_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* rate_match_pattern_s::pattern_type_c_::bitmaps_s_::symbols_in_res_block_c_::types_opts::to_string() const
{
static const char* options[] = {"oneSlot", "twoSlots"};
return convert_enum_idx(
options, 2, value, "rate_match_pattern_s::pattern_type_c_::bitmaps_s_::symbols_in_res_block_c_::types");
}
uint8_t rate_match_pattern_s::pattern_type_c_::bitmaps_s_::symbols_in_res_block_c_::types_opts::to_number() const
{
static const uint8_t options[] = {1, 2};
return map_enum_number(
options, 2, value, "rate_match_pattern_s::pattern_type_c_::bitmaps_s_::symbols_in_res_block_c_::types");
}
void rate_match_pattern_s::pattern_type_c_::bitmaps_s_::periodicity_and_pattern_c_::destroy_()
{
switch (type_) {
case types::n2:
c.destroy<fixed_bitstring<2> >();
break;
case types::n4:
c.destroy<fixed_bitstring<4> >();
break;
case types::n5:
c.destroy<fixed_bitstring<5> >();
break;
case types::n8:
c.destroy<fixed_bitstring<8> >();
break;
case types::n10:
c.destroy<fixed_bitstring<10> >();
break;
case types::n20:
c.destroy<fixed_bitstring<20> >();
break;
case types::n40:
c.destroy<fixed_bitstring<40> >();
break;
default:
break;
}
}
void rate_match_pattern_s::pattern_type_c_::bitmaps_s_::periodicity_and_pattern_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::n2:
c.init<fixed_bitstring<2> >();
break;
case types::n4:
c.init<fixed_bitstring<4> >();
break;
case types::n5:
c.init<fixed_bitstring<5> >();
break;
case types::n8:
c.init<fixed_bitstring<8> >();
break;
case types::n10:
c.init<fixed_bitstring<10> >();
break;
case types::n20:
c.init<fixed_bitstring<20> >();
break;
case types::n40:
c.init<fixed_bitstring<40> >();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rate_match_pattern_s::pattern_type_c_::bitmaps_s_::periodicity_and_pattern_c_");
}
}
rate_match_pattern_s::pattern_type_c_::bitmaps_s_::periodicity_and_pattern_c_::periodicity_and_pattern_c_(
const rate_match_pattern_s::pattern_type_c_::bitmaps_s_::periodicity_and_pattern_c_& other)
{
type_ = other.type();
switch (type_) {
case types::n2:
c.init(other.c.get<fixed_bitstring<2> >());
break;
case types::n4:
c.init(other.c.get<fixed_bitstring<4> >());
break;
case types::n5:
c.init(other.c.get<fixed_bitstring<5> >());
break;
case types::n8:
c.init(other.c.get<fixed_bitstring<8> >());
break;
case types::n10:
c.init(other.c.get<fixed_bitstring<10> >());
break;
case types::n20:
c.init(other.c.get<fixed_bitstring<20> >());
break;
case types::n40:
c.init(other.c.get<fixed_bitstring<40> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rate_match_pattern_s::pattern_type_c_::bitmaps_s_::periodicity_and_pattern_c_");
}
}
rate_match_pattern_s::pattern_type_c_::bitmaps_s_::periodicity_and_pattern_c_&
rate_match_pattern_s::pattern_type_c_::bitmaps_s_::periodicity_and_pattern_c_::operator=(
const rate_match_pattern_s::pattern_type_c_::bitmaps_s_::periodicity_and_pattern_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::n2:
c.set(other.c.get<fixed_bitstring<2> >());
break;
case types::n4:
c.set(other.c.get<fixed_bitstring<4> >());
break;
case types::n5:
c.set(other.c.get<fixed_bitstring<5> >());
break;
case types::n8:
c.set(other.c.get<fixed_bitstring<8> >());
break;
case types::n10:
c.set(other.c.get<fixed_bitstring<10> >());
break;
case types::n20:
c.set(other.c.get<fixed_bitstring<20> >());
break;
case types::n40:
c.set(other.c.get<fixed_bitstring<40> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rate_match_pattern_s::pattern_type_c_::bitmaps_s_::periodicity_and_pattern_c_");
}
return *this;
}
fixed_bitstring<2>& rate_match_pattern_s::pattern_type_c_::bitmaps_s_::periodicity_and_pattern_c_::set_n2()
{
set(types::n2);
return c.get<fixed_bitstring<2> >();
}
fixed_bitstring<4>& rate_match_pattern_s::pattern_type_c_::bitmaps_s_::periodicity_and_pattern_c_::set_n4()
{
set(types::n4);
return c.get<fixed_bitstring<4> >();
}
fixed_bitstring<5>& rate_match_pattern_s::pattern_type_c_::bitmaps_s_::periodicity_and_pattern_c_::set_n5()
{
set(types::n5);
return c.get<fixed_bitstring<5> >();
}
fixed_bitstring<8>& rate_match_pattern_s::pattern_type_c_::bitmaps_s_::periodicity_and_pattern_c_::set_n8()
{
set(types::n8);
return c.get<fixed_bitstring<8> >();
}
fixed_bitstring<10>& rate_match_pattern_s::pattern_type_c_::bitmaps_s_::periodicity_and_pattern_c_::set_n10()
{
set(types::n10);
return c.get<fixed_bitstring<10> >();
}
fixed_bitstring<20>& rate_match_pattern_s::pattern_type_c_::bitmaps_s_::periodicity_and_pattern_c_::set_n20()
{
set(types::n20);
return c.get<fixed_bitstring<20> >();
}
fixed_bitstring<40>& rate_match_pattern_s::pattern_type_c_::bitmaps_s_::periodicity_and_pattern_c_::set_n40()
{
set(types::n40);
return c.get<fixed_bitstring<40> >();
}
void rate_match_pattern_s::pattern_type_c_::bitmaps_s_::periodicity_and_pattern_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::n2:
j.write_str("n2", c.get<fixed_bitstring<2> >().to_string());
break;
case types::n4:
j.write_str("n4", c.get<fixed_bitstring<4> >().to_string());
break;
case types::n5:
j.write_str("n5", c.get<fixed_bitstring<5> >().to_string());
break;
case types::n8:
j.write_str("n8", c.get<fixed_bitstring<8> >().to_string());
break;
case types::n10:
j.write_str("n10", c.get<fixed_bitstring<10> >().to_string());
break;
case types::n20:
j.write_str("n20", c.get<fixed_bitstring<20> >().to_string());
break;
case types::n40:
j.write_str("n40", c.get<fixed_bitstring<40> >().to_string());
break;
default:
log_invalid_choice_id(type_, "rate_match_pattern_s::pattern_type_c_::bitmaps_s_::periodicity_and_pattern_c_");
}
j.end_obj();
}
SRSASN_CODE rate_match_pattern_s::pattern_type_c_::bitmaps_s_::periodicity_and_pattern_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::n2:
HANDLE_CODE(c.get<fixed_bitstring<2> >().pack(bref));
break;
case types::n4:
HANDLE_CODE(c.get<fixed_bitstring<4> >().pack(bref));
break;
case types::n5:
HANDLE_CODE(c.get<fixed_bitstring<5> >().pack(bref));
break;
case types::n8:
HANDLE_CODE(c.get<fixed_bitstring<8> >().pack(bref));
break;
case types::n10:
HANDLE_CODE(c.get<fixed_bitstring<10> >().pack(bref));
break;
case types::n20:
HANDLE_CODE(c.get<fixed_bitstring<20> >().pack(bref));
break;
case types::n40:
HANDLE_CODE(c.get<fixed_bitstring<40> >().pack(bref));
break;
default:
log_invalid_choice_id(type_, "rate_match_pattern_s::pattern_type_c_::bitmaps_s_::periodicity_and_pattern_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rate_match_pattern_s::pattern_type_c_::bitmaps_s_::periodicity_and_pattern_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::n2:
HANDLE_CODE(c.get<fixed_bitstring<2> >().unpack(bref));
break;
case types::n4:
HANDLE_CODE(c.get<fixed_bitstring<4> >().unpack(bref));
break;
case types::n5:
HANDLE_CODE(c.get<fixed_bitstring<5> >().unpack(bref));
break;
case types::n8:
HANDLE_CODE(c.get<fixed_bitstring<8> >().unpack(bref));
break;
case types::n10:
HANDLE_CODE(c.get<fixed_bitstring<10> >().unpack(bref));
break;
case types::n20:
HANDLE_CODE(c.get<fixed_bitstring<20> >().unpack(bref));
break;
case types::n40:
HANDLE_CODE(c.get<fixed_bitstring<40> >().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "rate_match_pattern_s::pattern_type_c_::bitmaps_s_::periodicity_and_pattern_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* rate_match_pattern_s::pattern_type_c_::bitmaps_s_::periodicity_and_pattern_c_::types_opts::to_string() const
{
static const char* options[] = {"n2", "n4", "n5", "n8", "n10", "n20", "n40"};
return convert_enum_idx(
options, 7, value, "rate_match_pattern_s::pattern_type_c_::bitmaps_s_::periodicity_and_pattern_c_::types");
}
uint8_t rate_match_pattern_s::pattern_type_c_::bitmaps_s_::periodicity_and_pattern_c_::types_opts::to_number() const
{
static const uint8_t options[] = {2, 4, 5, 8, 10, 20, 40};
return map_enum_number(
options, 7, value, "rate_match_pattern_s::pattern_type_c_::bitmaps_s_::periodicity_and_pattern_c_::types");
}
const char* rate_match_pattern_s::pattern_type_c_::types_opts::to_string() const
{
static const char* options[] = {"bitmaps", "controlResourceSet"};
return convert_enum_idx(options, 2, value, "rate_match_pattern_s::pattern_type_c_::types");
}
const char* rate_match_pattern_s::dummy_opts::to_string() const
{
static const char* options[] = {"dynamic", "semiStatic"};
return convert_enum_idx(options, 2, value, "rate_match_pattern_s::dummy_e_");
}
void rate_match_pattern_group_item_c_::destroy_() {}
void rate_match_pattern_group_item_c_::set(types::options e)
{
destroy_();
type_ = e;
}
rate_match_pattern_group_item_c_::rate_match_pattern_group_item_c_(const rate_match_pattern_group_item_c_& other)
{
type_ = other.type();
switch (type_) {
case types::cell_level:
c.init(other.c.get<uint8_t>());
break;
case types::bwp_level:
c.init(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rate_match_pattern_group_item_c_");
}
}
rate_match_pattern_group_item_c_&
rate_match_pattern_group_item_c_::operator=(const rate_match_pattern_group_item_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::cell_level:
c.set(other.c.get<uint8_t>());
break;
case types::bwp_level:
c.set(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rate_match_pattern_group_item_c_");
}
return *this;
}
uint8_t& rate_match_pattern_group_item_c_::set_cell_level()
{
set(types::cell_level);
return c.get<uint8_t>();
}
uint8_t& rate_match_pattern_group_item_c_::set_bwp_level()
{
set(types::bwp_level);
return c.get<uint8_t>();
}
void rate_match_pattern_group_item_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::cell_level:
j.write_int("cellLevel", c.get<uint8_t>());
break;
case types::bwp_level:
j.write_int("bwpLevel", c.get<uint8_t>());
break;
default:
log_invalid_choice_id(type_, "rate_match_pattern_group_item_c_");
}
j.end_obj();
}
SRSASN_CODE rate_match_pattern_group_item_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::cell_level:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)3u));
break;
case types::bwp_level:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)3u));
break;
default:
log_invalid_choice_id(type_, "rate_match_pattern_group_item_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rate_match_pattern_group_item_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::cell_level:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)3u));
break;
case types::bwp_level:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)3u));
break;
default:
log_invalid_choice_id(type_, "rate_match_pattern_group_item_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* rate_match_pattern_group_item_c_::types_opts::to_string() const
{
static const char* options[] = {"cellLevel", "bwpLevel"};
return convert_enum_idx(options, 2, value, "rate_match_pattern_group_item_c_::types");
}
// SRS-TPC-CommandConfig ::= SEQUENCE
SRSASN_CODE srs_tpc_cmd_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(start_bit_of_format2_minus3_present, 1));
HANDLE_CODE(bref.pack(field_type_format2_minus3_present, 1));
if (start_bit_of_format2_minus3_present) {
HANDLE_CODE(pack_integer(bref, start_bit_of_format2_minus3, (uint8_t)1u, (uint8_t)31u));
}
if (field_type_format2_minus3_present) {
HANDLE_CODE(pack_integer(bref, field_type_format2_minus3, (uint8_t)0u, (uint8_t)1u));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= start_bit_of_format2_minus3_sul_present;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(start_bit_of_format2_minus3_sul_present, 1));
if (start_bit_of_format2_minus3_sul_present) {
HANDLE_CODE(pack_integer(bref, start_bit_of_format2_minus3_sul, (uint8_t)1u, (uint8_t)31u));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE srs_tpc_cmd_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(start_bit_of_format2_minus3_present, 1));
HANDLE_CODE(bref.unpack(field_type_format2_minus3_present, 1));
if (start_bit_of_format2_minus3_present) {
HANDLE_CODE(unpack_integer(start_bit_of_format2_minus3, bref, (uint8_t)1u, (uint8_t)31u));
}
if (field_type_format2_minus3_present) {
HANDLE_CODE(unpack_integer(field_type_format2_minus3, bref, (uint8_t)0u, (uint8_t)1u));
}
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(start_bit_of_format2_minus3_sul_present, 1));
if (start_bit_of_format2_minus3_sul_present) {
HANDLE_CODE(unpack_integer(start_bit_of_format2_minus3_sul, bref, (uint8_t)1u, (uint8_t)31u));
}
}
}
return SRSASN_SUCCESS;
}
void srs_tpc_cmd_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (start_bit_of_format2_minus3_present) {
j.write_int("startingBitOfFormat2-3", start_bit_of_format2_minus3);
}
if (field_type_format2_minus3_present) {
j.write_int("fieldTypeFormat2-3", field_type_format2_minus3);
}
if (ext) {
if (start_bit_of_format2_minus3_sul_present) {
j.write_int("startingBitOfFormat2-3SUL", start_bit_of_format2_minus3_sul);
}
}
j.end_obj();
}
// TCI-State ::= SEQUENCE
SRSASN_CODE tci_state_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(qcl_type2_present, 1));
HANDLE_CODE(pack_integer(bref, tci_state_id, (uint8_t)0u, (uint8_t)127u));
HANDLE_CODE(qcl_type1.pack(bref));
if (qcl_type2_present) {
HANDLE_CODE(qcl_type2.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE tci_state_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(qcl_type2_present, 1));
HANDLE_CODE(unpack_integer(tci_state_id, bref, (uint8_t)0u, (uint8_t)127u));
HANDLE_CODE(qcl_type1.unpack(bref));
if (qcl_type2_present) {
HANDLE_CODE(qcl_type2.unpack(bref));
}
return SRSASN_SUCCESS;
}
void tci_state_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("tci-StateId", tci_state_id);
j.write_fieldname("qcl-Type1");
qcl_type1.to_json(j);
if (qcl_type2_present) {
j.write_fieldname("qcl-Type2");
qcl_type2.to_json(j);
}
j.end_obj();
}
// ZP-CSI-RS-Resource ::= SEQUENCE
SRSASN_CODE zp_csi_rs_res_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(periodicity_and_offset_present, 1));
HANDLE_CODE(pack_integer(bref, zp_csi_rs_res_id, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(res_map.pack(bref));
if (periodicity_and_offset_present) {
HANDLE_CODE(periodicity_and_offset.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE zp_csi_rs_res_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(periodicity_and_offset_present, 1));
HANDLE_CODE(unpack_integer(zp_csi_rs_res_id, bref, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(res_map.unpack(bref));
if (periodicity_and_offset_present) {
HANDLE_CODE(periodicity_and_offset.unpack(bref));
}
return SRSASN_SUCCESS;
}
void zp_csi_rs_res_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("zp-CSI-RS-ResourceId", zp_csi_rs_res_id);
j.write_fieldname("resourceMapping");
res_map.to_json(j);
if (periodicity_and_offset_present) {
j.write_fieldname("periodicityAndOffset");
periodicity_and_offset.to_json(j);
}
j.end_obj();
}
// ZP-CSI-RS-ResourceSet ::= SEQUENCE
SRSASN_CODE zp_csi_rs_res_set_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(pack_integer(bref, zp_csi_rs_res_set_id, (uint8_t)0u, (uint8_t)15u));
HANDLE_CODE(pack_dyn_seq_of(bref, zp_csi_rs_res_id_list, 1, 16, integer_packer<uint8_t>(0, 31)));
return SRSASN_SUCCESS;
}
SRSASN_CODE zp_csi_rs_res_set_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(unpack_integer(zp_csi_rs_res_set_id, bref, (uint8_t)0u, (uint8_t)15u));
HANDLE_CODE(unpack_dyn_seq_of(zp_csi_rs_res_id_list, bref, 1, 16, integer_packer<uint8_t>(0, 31)));
return SRSASN_SUCCESS;
}
void zp_csi_rs_res_set_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("zp-CSI-RS-ResourceSetId", zp_csi_rs_res_set_id);
j.start_array("zp-CSI-RS-ResourceIdList");
for (const auto& e1 : zp_csi_rs_res_id_list) {
j.write_int(e1);
}
j.end_array();
j.end_obj();
}
// PDCCH-Config ::= SEQUENCE
SRSASN_CODE pdcch_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(ctrl_res_set_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(ctrl_res_set_to_release_list_present, 1));
HANDLE_CODE(bref.pack(search_spaces_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(search_spaces_to_release_list_present, 1));
HANDLE_CODE(bref.pack(dl_preemption_present, 1));
HANDLE_CODE(bref.pack(tpc_pusch_present, 1));
HANDLE_CODE(bref.pack(tpc_pucch_present, 1));
HANDLE_CODE(bref.pack(tpc_srs_present, 1));
if (ctrl_res_set_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, ctrl_res_set_to_add_mod_list, 1, 3));
}
if (ctrl_res_set_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, ctrl_res_set_to_release_list, 1, 3, integer_packer<uint8_t>(0, 11)));
}
if (search_spaces_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, search_spaces_to_add_mod_list, 1, 10));
}
if (search_spaces_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, search_spaces_to_release_list, 1, 10, integer_packer<uint8_t>(0, 39)));
}
if (dl_preemption_present) {
HANDLE_CODE(dl_preemption.pack(bref));
}
if (tpc_pusch_present) {
HANDLE_CODE(tpc_pusch.pack(bref));
}
if (tpc_pucch_present) {
HANDLE_CODE(tpc_pucch.pack(bref));
}
if (tpc_srs_present) {
HANDLE_CODE(tpc_srs.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pdcch_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(ctrl_res_set_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(ctrl_res_set_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(search_spaces_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(search_spaces_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(dl_preemption_present, 1));
HANDLE_CODE(bref.unpack(tpc_pusch_present, 1));
HANDLE_CODE(bref.unpack(tpc_pucch_present, 1));
HANDLE_CODE(bref.unpack(tpc_srs_present, 1));
if (ctrl_res_set_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(ctrl_res_set_to_add_mod_list, bref, 1, 3));
}
if (ctrl_res_set_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(ctrl_res_set_to_release_list, bref, 1, 3, integer_packer<uint8_t>(0, 11)));
}
if (search_spaces_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(search_spaces_to_add_mod_list, bref, 1, 10));
}
if (search_spaces_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(search_spaces_to_release_list, bref, 1, 10, integer_packer<uint8_t>(0, 39)));
}
if (dl_preemption_present) {
HANDLE_CODE(dl_preemption.unpack(bref));
}
if (tpc_pusch_present) {
HANDLE_CODE(tpc_pusch.unpack(bref));
}
if (tpc_pucch_present) {
HANDLE_CODE(tpc_pucch.unpack(bref));
}
if (tpc_srs_present) {
HANDLE_CODE(tpc_srs.unpack(bref));
}
return SRSASN_SUCCESS;
}
void pdcch_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (ctrl_res_set_to_add_mod_list_present) {
j.start_array("controlResourceSetToAddModList");
for (const auto& e1 : ctrl_res_set_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (ctrl_res_set_to_release_list_present) {
j.start_array("controlResourceSetToReleaseList");
for (const auto& e1 : ctrl_res_set_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (search_spaces_to_add_mod_list_present) {
j.start_array("searchSpacesToAddModList");
for (const auto& e1 : search_spaces_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (search_spaces_to_release_list_present) {
j.start_array("searchSpacesToReleaseList");
for (const auto& e1 : search_spaces_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (dl_preemption_present) {
j.write_fieldname("downlinkPreemption");
dl_preemption.to_json(j);
}
if (tpc_pusch_present) {
j.write_fieldname("tpc-PUSCH");
tpc_pusch.to_json(j);
}
if (tpc_pucch_present) {
j.write_fieldname("tpc-PUCCH");
tpc_pucch.to_json(j);
}
if (tpc_srs_present) {
j.write_fieldname("tpc-SRS");
tpc_srs.to_json(j);
}
j.end_obj();
}
// PDSCH-Config ::= SEQUENCE
SRSASN_CODE pdsch_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(data_scrambling_id_pdsch_present, 1));
HANDLE_CODE(bref.pack(dmrs_dl_for_pdsch_map_type_a_present, 1));
HANDLE_CODE(bref.pack(dmrs_dl_for_pdsch_map_type_b_present, 1));
HANDLE_CODE(bref.pack(tci_states_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(tci_states_to_release_list_present, 1));
HANDLE_CODE(bref.pack(vrb_to_prb_interleaver_present, 1));
HANDLE_CODE(bref.pack(pdsch_time_domain_alloc_list_present, 1));
HANDLE_CODE(bref.pack(pdsch_aggregation_factor_present, 1));
HANDLE_CODE(bref.pack(rate_match_pattern_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(rate_match_pattern_to_release_list_present, 1));
HANDLE_CODE(bref.pack(rate_match_pattern_group1_present, 1));
HANDLE_CODE(bref.pack(rate_match_pattern_group2_present, 1));
HANDLE_CODE(bref.pack(mcs_table_present, 1));
HANDLE_CODE(bref.pack(max_nrof_code_words_sched_by_dci_present, 1));
HANDLE_CODE(bref.pack(zp_csi_rs_res_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(zp_csi_rs_res_to_release_list_present, 1));
HANDLE_CODE(bref.pack(aperiodic_zp_csi_rs_res_sets_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(aperiodic_zp_csi_rs_res_sets_to_release_list_present, 1));
HANDLE_CODE(bref.pack(sp_zp_csi_rs_res_sets_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(sp_zp_csi_rs_res_sets_to_release_list_present, 1));
HANDLE_CODE(bref.pack(p_zp_csi_rs_res_set_present, 1));
if (data_scrambling_id_pdsch_present) {
HANDLE_CODE(pack_integer(bref, data_scrambling_id_pdsch, (uint16_t)0u, (uint16_t)1023u));
}
if (dmrs_dl_for_pdsch_map_type_a_present) {
HANDLE_CODE(dmrs_dl_for_pdsch_map_type_a.pack(bref));
}
if (dmrs_dl_for_pdsch_map_type_b_present) {
HANDLE_CODE(dmrs_dl_for_pdsch_map_type_b.pack(bref));
}
if (tci_states_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, tci_states_to_add_mod_list, 1, 128));
}
if (tci_states_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, tci_states_to_release_list, 1, 128, integer_packer<uint8_t>(0, 127)));
}
if (vrb_to_prb_interleaver_present) {
HANDLE_CODE(vrb_to_prb_interleaver.pack(bref));
}
HANDLE_CODE(res_alloc.pack(bref));
if (pdsch_time_domain_alloc_list_present) {
HANDLE_CODE(pdsch_time_domain_alloc_list.pack(bref));
}
if (pdsch_aggregation_factor_present) {
HANDLE_CODE(pdsch_aggregation_factor.pack(bref));
}
if (rate_match_pattern_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, rate_match_pattern_to_add_mod_list, 1, 4));
}
if (rate_match_pattern_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, rate_match_pattern_to_release_list, 1, 4, integer_packer<uint8_t>(0, 3)));
}
if (rate_match_pattern_group1_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, rate_match_pattern_group1, 1, 8));
}
if (rate_match_pattern_group2_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, rate_match_pattern_group2, 1, 8));
}
HANDLE_CODE(rbg_size.pack(bref));
if (mcs_table_present) {
HANDLE_CODE(mcs_table.pack(bref));
}
if (max_nrof_code_words_sched_by_dci_present) {
HANDLE_CODE(max_nrof_code_words_sched_by_dci.pack(bref));
}
HANDLE_CODE(prb_bundling_type.pack(bref));
if (zp_csi_rs_res_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, zp_csi_rs_res_to_add_mod_list, 1, 32));
}
if (zp_csi_rs_res_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, zp_csi_rs_res_to_release_list, 1, 32, integer_packer<uint8_t>(0, 31)));
}
if (aperiodic_zp_csi_rs_res_sets_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, aperiodic_zp_csi_rs_res_sets_to_add_mod_list, 1, 16));
}
if (aperiodic_zp_csi_rs_res_sets_to_release_list_present) {
HANDLE_CODE(
pack_dyn_seq_of(bref, aperiodic_zp_csi_rs_res_sets_to_release_list, 1, 16, integer_packer<uint8_t>(0, 15)));
}
if (sp_zp_csi_rs_res_sets_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, sp_zp_csi_rs_res_sets_to_add_mod_list, 1, 16));
}
if (sp_zp_csi_rs_res_sets_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, sp_zp_csi_rs_res_sets_to_release_list, 1, 16, integer_packer<uint8_t>(0, 15)));
}
if (p_zp_csi_rs_res_set_present) {
HANDLE_CODE(p_zp_csi_rs_res_set.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pdsch_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(data_scrambling_id_pdsch_present, 1));
HANDLE_CODE(bref.unpack(dmrs_dl_for_pdsch_map_type_a_present, 1));
HANDLE_CODE(bref.unpack(dmrs_dl_for_pdsch_map_type_b_present, 1));
HANDLE_CODE(bref.unpack(tci_states_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(tci_states_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(vrb_to_prb_interleaver_present, 1));
HANDLE_CODE(bref.unpack(pdsch_time_domain_alloc_list_present, 1));
HANDLE_CODE(bref.unpack(pdsch_aggregation_factor_present, 1));
HANDLE_CODE(bref.unpack(rate_match_pattern_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(rate_match_pattern_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(rate_match_pattern_group1_present, 1));
HANDLE_CODE(bref.unpack(rate_match_pattern_group2_present, 1));
HANDLE_CODE(bref.unpack(mcs_table_present, 1));
HANDLE_CODE(bref.unpack(max_nrof_code_words_sched_by_dci_present, 1));
HANDLE_CODE(bref.unpack(zp_csi_rs_res_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(zp_csi_rs_res_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(aperiodic_zp_csi_rs_res_sets_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(aperiodic_zp_csi_rs_res_sets_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(sp_zp_csi_rs_res_sets_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(sp_zp_csi_rs_res_sets_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(p_zp_csi_rs_res_set_present, 1));
if (data_scrambling_id_pdsch_present) {
HANDLE_CODE(unpack_integer(data_scrambling_id_pdsch, bref, (uint16_t)0u, (uint16_t)1023u));
}
if (dmrs_dl_for_pdsch_map_type_a_present) {
HANDLE_CODE(dmrs_dl_for_pdsch_map_type_a.unpack(bref));
}
if (dmrs_dl_for_pdsch_map_type_b_present) {
HANDLE_CODE(dmrs_dl_for_pdsch_map_type_b.unpack(bref));
}
if (tci_states_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(tci_states_to_add_mod_list, bref, 1, 128));
}
if (tci_states_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(tci_states_to_release_list, bref, 1, 128, integer_packer<uint8_t>(0, 127)));
}
if (vrb_to_prb_interleaver_present) {
HANDLE_CODE(vrb_to_prb_interleaver.unpack(bref));
}
HANDLE_CODE(res_alloc.unpack(bref));
if (pdsch_time_domain_alloc_list_present) {
HANDLE_CODE(pdsch_time_domain_alloc_list.unpack(bref));
}
if (pdsch_aggregation_factor_present) {
HANDLE_CODE(pdsch_aggregation_factor.unpack(bref));
}
if (rate_match_pattern_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(rate_match_pattern_to_add_mod_list, bref, 1, 4));
}
if (rate_match_pattern_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(rate_match_pattern_to_release_list, bref, 1, 4, integer_packer<uint8_t>(0, 3)));
}
if (rate_match_pattern_group1_present) {
HANDLE_CODE(unpack_dyn_seq_of(rate_match_pattern_group1, bref, 1, 8));
}
if (rate_match_pattern_group2_present) {
HANDLE_CODE(unpack_dyn_seq_of(rate_match_pattern_group2, bref, 1, 8));
}
HANDLE_CODE(rbg_size.unpack(bref));
if (mcs_table_present) {
HANDLE_CODE(mcs_table.unpack(bref));
}
if (max_nrof_code_words_sched_by_dci_present) {
HANDLE_CODE(max_nrof_code_words_sched_by_dci.unpack(bref));
}
HANDLE_CODE(prb_bundling_type.unpack(bref));
if (zp_csi_rs_res_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(zp_csi_rs_res_to_add_mod_list, bref, 1, 32));
}
if (zp_csi_rs_res_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(zp_csi_rs_res_to_release_list, bref, 1, 32, integer_packer<uint8_t>(0, 31)));
}
if (aperiodic_zp_csi_rs_res_sets_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(aperiodic_zp_csi_rs_res_sets_to_add_mod_list, bref, 1, 16));
}
if (aperiodic_zp_csi_rs_res_sets_to_release_list_present) {
HANDLE_CODE(
unpack_dyn_seq_of(aperiodic_zp_csi_rs_res_sets_to_release_list, bref, 1, 16, integer_packer<uint8_t>(0, 15)));
}
if (sp_zp_csi_rs_res_sets_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(sp_zp_csi_rs_res_sets_to_add_mod_list, bref, 1, 16));
}
if (sp_zp_csi_rs_res_sets_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(sp_zp_csi_rs_res_sets_to_release_list, bref, 1, 16, integer_packer<uint8_t>(0, 15)));
}
if (p_zp_csi_rs_res_set_present) {
HANDLE_CODE(p_zp_csi_rs_res_set.unpack(bref));
}
return SRSASN_SUCCESS;
}
void pdsch_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (data_scrambling_id_pdsch_present) {
j.write_int("dataScramblingIdentityPDSCH", data_scrambling_id_pdsch);
}
if (dmrs_dl_for_pdsch_map_type_a_present) {
j.write_fieldname("dmrs-DownlinkForPDSCH-MappingTypeA");
dmrs_dl_for_pdsch_map_type_a.to_json(j);
}
if (dmrs_dl_for_pdsch_map_type_b_present) {
j.write_fieldname("dmrs-DownlinkForPDSCH-MappingTypeB");
dmrs_dl_for_pdsch_map_type_b.to_json(j);
}
if (tci_states_to_add_mod_list_present) {
j.start_array("tci-StatesToAddModList");
for (const auto& e1 : tci_states_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (tci_states_to_release_list_present) {
j.start_array("tci-StatesToReleaseList");
for (const auto& e1 : tci_states_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (vrb_to_prb_interleaver_present) {
j.write_str("vrb-ToPRB-Interleaver", vrb_to_prb_interleaver.to_string());
}
j.write_str("resourceAllocation", res_alloc.to_string());
if (pdsch_time_domain_alloc_list_present) {
j.write_fieldname("pdsch-TimeDomainAllocationList");
pdsch_time_domain_alloc_list.to_json(j);
}
if (pdsch_aggregation_factor_present) {
j.write_str("pdsch-AggregationFactor", pdsch_aggregation_factor.to_string());
}
if (rate_match_pattern_to_add_mod_list_present) {
j.start_array("rateMatchPatternToAddModList");
for (const auto& e1 : rate_match_pattern_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (rate_match_pattern_to_release_list_present) {
j.start_array("rateMatchPatternToReleaseList");
for (const auto& e1 : rate_match_pattern_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (rate_match_pattern_group1_present) {
j.start_array("rateMatchPatternGroup1");
for (const auto& e1 : rate_match_pattern_group1) {
e1.to_json(j);
}
j.end_array();
}
if (rate_match_pattern_group2_present) {
j.start_array("rateMatchPatternGroup2");
for (const auto& e1 : rate_match_pattern_group2) {
e1.to_json(j);
}
j.end_array();
}
j.write_str("rbg-Size", rbg_size.to_string());
if (mcs_table_present) {
j.write_str("mcs-Table", mcs_table.to_string());
}
if (max_nrof_code_words_sched_by_dci_present) {
j.write_str("maxNrofCodeWordsScheduledByDCI", max_nrof_code_words_sched_by_dci.to_string());
}
j.write_fieldname("prb-BundlingType");
prb_bundling_type.to_json(j);
if (zp_csi_rs_res_to_add_mod_list_present) {
j.start_array("zp-CSI-RS-ResourceToAddModList");
for (const auto& e1 : zp_csi_rs_res_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (zp_csi_rs_res_to_release_list_present) {
j.start_array("zp-CSI-RS-ResourceToReleaseList");
for (const auto& e1 : zp_csi_rs_res_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (aperiodic_zp_csi_rs_res_sets_to_add_mod_list_present) {
j.start_array("aperiodic-ZP-CSI-RS-ResourceSetsToAddModList");
for (const auto& e1 : aperiodic_zp_csi_rs_res_sets_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (aperiodic_zp_csi_rs_res_sets_to_release_list_present) {
j.start_array("aperiodic-ZP-CSI-RS-ResourceSetsToReleaseList");
for (const auto& e1 : aperiodic_zp_csi_rs_res_sets_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (sp_zp_csi_rs_res_sets_to_add_mod_list_present) {
j.start_array("sp-ZP-CSI-RS-ResourceSetsToAddModList");
for (const auto& e1 : sp_zp_csi_rs_res_sets_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (sp_zp_csi_rs_res_sets_to_release_list_present) {
j.start_array("sp-ZP-CSI-RS-ResourceSetsToReleaseList");
for (const auto& e1 : sp_zp_csi_rs_res_sets_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (p_zp_csi_rs_res_set_present) {
j.write_fieldname("p-ZP-CSI-RS-ResourceSet");
p_zp_csi_rs_res_set.to_json(j);
}
j.end_obj();
}
const char* pdsch_cfg_s::vrb_to_prb_interleaver_opts::to_string() const
{
static const char* options[] = {"n2", "n4"};
return convert_enum_idx(options, 2, value, "pdsch_cfg_s::vrb_to_prb_interleaver_e_");
}
uint8_t pdsch_cfg_s::vrb_to_prb_interleaver_opts::to_number() const
{
static const uint8_t options[] = {2, 4};
return map_enum_number(options, 2, value, "pdsch_cfg_s::vrb_to_prb_interleaver_e_");
}
const char* pdsch_cfg_s::res_alloc_opts::to_string() const
{
static const char* options[] = {"resourceAllocationType0", "resourceAllocationType1", "dynamicSwitch"};
return convert_enum_idx(options, 3, value, "pdsch_cfg_s::res_alloc_e_");
}
uint8_t pdsch_cfg_s::res_alloc_opts::to_number() const
{
static const uint8_t options[] = {0, 1};
return map_enum_number(options, 2, value, "pdsch_cfg_s::res_alloc_e_");
}
const char* pdsch_cfg_s::pdsch_aggregation_factor_opts::to_string() const
{
static const char* options[] = {"n2", "n4", "n8"};
return convert_enum_idx(options, 3, value, "pdsch_cfg_s::pdsch_aggregation_factor_e_");
}
uint8_t pdsch_cfg_s::pdsch_aggregation_factor_opts::to_number() const
{
static const uint8_t options[] = {2, 4, 8};
return map_enum_number(options, 3, value, "pdsch_cfg_s::pdsch_aggregation_factor_e_");
}
const char* pdsch_cfg_s::rbg_size_opts::to_string() const
{
static const char* options[] = {"config1", "config2"};
return convert_enum_idx(options, 2, value, "pdsch_cfg_s::rbg_size_e_");
}
uint8_t pdsch_cfg_s::rbg_size_opts::to_number() const
{
static const uint8_t options[] = {1, 2};
return map_enum_number(options, 2, value, "pdsch_cfg_s::rbg_size_e_");
}
const char* pdsch_cfg_s::mcs_table_opts::to_string() const
{
static const char* options[] = {"qam256", "qam64LowSE"};
return convert_enum_idx(options, 2, value, "pdsch_cfg_s::mcs_table_e_");
}
uint16_t pdsch_cfg_s::mcs_table_opts::to_number() const
{
static const uint16_t options[] = {256, 64};
return map_enum_number(options, 2, value, "pdsch_cfg_s::mcs_table_e_");
}
const char* pdsch_cfg_s::max_nrof_code_words_sched_by_dci_opts::to_string() const
{
static const char* options[] = {"n1", "n2"};
return convert_enum_idx(options, 2, value, "pdsch_cfg_s::max_nrof_code_words_sched_by_dci_e_");
}
uint8_t pdsch_cfg_s::max_nrof_code_words_sched_by_dci_opts::to_number() const
{
static const uint8_t options[] = {1, 2};
return map_enum_number(options, 2, value, "pdsch_cfg_s::max_nrof_code_words_sched_by_dci_e_");
}
void pdsch_cfg_s::prb_bundling_type_c_::destroy_()
{
switch (type_) {
case types::static_bundling:
c.destroy<static_bundling_s_>();
break;
case types::dynamic_bundling:
c.destroy<dynamic_bundling_s_>();
break;
default:
break;
}
}
void pdsch_cfg_s::prb_bundling_type_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::static_bundling:
c.init<static_bundling_s_>();
break;
case types::dynamic_bundling:
c.init<dynamic_bundling_s_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "pdsch_cfg_s::prb_bundling_type_c_");
}
}
pdsch_cfg_s::prb_bundling_type_c_::prb_bundling_type_c_(const pdsch_cfg_s::prb_bundling_type_c_& other)
{
type_ = other.type();
switch (type_) {
case types::static_bundling:
c.init(other.c.get<static_bundling_s_>());
break;
case types::dynamic_bundling:
c.init(other.c.get<dynamic_bundling_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "pdsch_cfg_s::prb_bundling_type_c_");
}
}
pdsch_cfg_s::prb_bundling_type_c_&
pdsch_cfg_s::prb_bundling_type_c_::operator=(const pdsch_cfg_s::prb_bundling_type_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::static_bundling:
c.set(other.c.get<static_bundling_s_>());
break;
case types::dynamic_bundling:
c.set(other.c.get<dynamic_bundling_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "pdsch_cfg_s::prb_bundling_type_c_");
}
return *this;
}
pdsch_cfg_s::prb_bundling_type_c_::static_bundling_s_& pdsch_cfg_s::prb_bundling_type_c_::set_static_bundling()
{
set(types::static_bundling);
return c.get<static_bundling_s_>();
}
pdsch_cfg_s::prb_bundling_type_c_::dynamic_bundling_s_& pdsch_cfg_s::prb_bundling_type_c_::set_dynamic_bundling()
{
set(types::dynamic_bundling);
return c.get<dynamic_bundling_s_>();
}
void pdsch_cfg_s::prb_bundling_type_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::static_bundling:
j.write_fieldname("staticBundling");
j.start_obj();
if (c.get<static_bundling_s_>().bundle_size_present) {
j.write_str("bundleSize", c.get<static_bundling_s_>().bundle_size.to_string());
}
j.end_obj();
break;
case types::dynamic_bundling:
j.write_fieldname("dynamicBundling");
j.start_obj();
if (c.get<dynamic_bundling_s_>().bundle_size_set1_present) {
j.write_str("bundleSizeSet1", c.get<dynamic_bundling_s_>().bundle_size_set1.to_string());
}
if (c.get<dynamic_bundling_s_>().bundle_size_set2_present) {
j.write_str("bundleSizeSet2", c.get<dynamic_bundling_s_>().bundle_size_set2.to_string());
}
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "pdsch_cfg_s::prb_bundling_type_c_");
}
j.end_obj();
}
SRSASN_CODE pdsch_cfg_s::prb_bundling_type_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::static_bundling:
HANDLE_CODE(bref.pack(c.get<static_bundling_s_>().bundle_size_present, 1));
if (c.get<static_bundling_s_>().bundle_size_present) {
HANDLE_CODE(c.get<static_bundling_s_>().bundle_size.pack(bref));
}
break;
case types::dynamic_bundling:
HANDLE_CODE(bref.pack(c.get<dynamic_bundling_s_>().bundle_size_set1_present, 1));
HANDLE_CODE(bref.pack(c.get<dynamic_bundling_s_>().bundle_size_set2_present, 1));
if (c.get<dynamic_bundling_s_>().bundle_size_set1_present) {
HANDLE_CODE(c.get<dynamic_bundling_s_>().bundle_size_set1.pack(bref));
}
if (c.get<dynamic_bundling_s_>().bundle_size_set2_present) {
HANDLE_CODE(c.get<dynamic_bundling_s_>().bundle_size_set2.pack(bref));
}
break;
default:
log_invalid_choice_id(type_, "pdsch_cfg_s::prb_bundling_type_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pdsch_cfg_s::prb_bundling_type_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::static_bundling:
HANDLE_CODE(bref.unpack(c.get<static_bundling_s_>().bundle_size_present, 1));
if (c.get<static_bundling_s_>().bundle_size_present) {
HANDLE_CODE(c.get<static_bundling_s_>().bundle_size.unpack(bref));
}
break;
case types::dynamic_bundling:
HANDLE_CODE(bref.unpack(c.get<dynamic_bundling_s_>().bundle_size_set1_present, 1));
HANDLE_CODE(bref.unpack(c.get<dynamic_bundling_s_>().bundle_size_set2_present, 1));
if (c.get<dynamic_bundling_s_>().bundle_size_set1_present) {
HANDLE_CODE(c.get<dynamic_bundling_s_>().bundle_size_set1.unpack(bref));
}
if (c.get<dynamic_bundling_s_>().bundle_size_set2_present) {
HANDLE_CODE(c.get<dynamic_bundling_s_>().bundle_size_set2.unpack(bref));
}
break;
default:
log_invalid_choice_id(type_, "pdsch_cfg_s::prb_bundling_type_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* pdsch_cfg_s::prb_bundling_type_c_::static_bundling_s_::bundle_size_opts::to_string() const
{
static const char* options[] = {"n4", "wideband"};
return convert_enum_idx(options, 2, value, "pdsch_cfg_s::prb_bundling_type_c_::static_bundling_s_::bundle_size_e_");
}
uint8_t pdsch_cfg_s::prb_bundling_type_c_::static_bundling_s_::bundle_size_opts::to_number() const
{
static const uint8_t options[] = {4};
return map_enum_number(options, 1, value, "pdsch_cfg_s::prb_bundling_type_c_::static_bundling_s_::bundle_size_e_");
}
const char* pdsch_cfg_s::prb_bundling_type_c_::dynamic_bundling_s_::bundle_size_set1_opts::to_string() const
{
static const char* options[] = {"n4", "wideband", "n2-wideband", "n4-wideband"};
return convert_enum_idx(
options, 4, value, "pdsch_cfg_s::prb_bundling_type_c_::dynamic_bundling_s_::bundle_size_set1_e_");
}
const char* pdsch_cfg_s::prb_bundling_type_c_::dynamic_bundling_s_::bundle_size_set2_opts::to_string() const
{
static const char* options[] = {"n4", "wideband"};
return convert_enum_idx(
options, 2, value, "pdsch_cfg_s::prb_bundling_type_c_::dynamic_bundling_s_::bundle_size_set2_e_");
}
uint8_t pdsch_cfg_s::prb_bundling_type_c_::dynamic_bundling_s_::bundle_size_set2_opts::to_number() const
{
static const uint8_t options[] = {4};
return map_enum_number(
options, 1, value, "pdsch_cfg_s::prb_bundling_type_c_::dynamic_bundling_s_::bundle_size_set2_e_");
}
const char* pdsch_cfg_s::prb_bundling_type_c_::types_opts::to_string() const
{
static const char* options[] = {"staticBundling", "dynamicBundling"};
return convert_enum_idx(options, 2, value, "pdsch_cfg_s::prb_bundling_type_c_::types");
}
// RadioLinkMonitoringConfig ::= SEQUENCE
SRSASN_CODE radio_link_monitoring_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(fail_detection_res_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(fail_detection_res_to_release_list_present, 1));
HANDLE_CODE(bref.pack(beam_fail_instance_max_count_present, 1));
HANDLE_CODE(bref.pack(beam_fail_detection_timer_present, 1));
if (fail_detection_res_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, fail_detection_res_to_add_mod_list, 1, 10));
}
if (fail_detection_res_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, fail_detection_res_to_release_list, 1, 10, integer_packer<uint8_t>(0, 9)));
}
if (beam_fail_instance_max_count_present) {
HANDLE_CODE(beam_fail_instance_max_count.pack(bref));
}
if (beam_fail_detection_timer_present) {
HANDLE_CODE(beam_fail_detection_timer.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE radio_link_monitoring_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(fail_detection_res_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(fail_detection_res_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(beam_fail_instance_max_count_present, 1));
HANDLE_CODE(bref.unpack(beam_fail_detection_timer_present, 1));
if (fail_detection_res_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(fail_detection_res_to_add_mod_list, bref, 1, 10));
}
if (fail_detection_res_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(fail_detection_res_to_release_list, bref, 1, 10, integer_packer<uint8_t>(0, 9)));
}
if (beam_fail_instance_max_count_present) {
HANDLE_CODE(beam_fail_instance_max_count.unpack(bref));
}
if (beam_fail_detection_timer_present) {
HANDLE_CODE(beam_fail_detection_timer.unpack(bref));
}
return SRSASN_SUCCESS;
}
void radio_link_monitoring_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (fail_detection_res_to_add_mod_list_present) {
j.start_array("failureDetectionResourcesToAddModList");
for (const auto& e1 : fail_detection_res_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (fail_detection_res_to_release_list_present) {
j.start_array("failureDetectionResourcesToReleaseList");
for (const auto& e1 : fail_detection_res_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (beam_fail_instance_max_count_present) {
j.write_str("beamFailureInstanceMaxCount", beam_fail_instance_max_count.to_string());
}
if (beam_fail_detection_timer_present) {
j.write_str("beamFailureDetectionTimer", beam_fail_detection_timer.to_string());
}
j.end_obj();
}
const char* radio_link_monitoring_cfg_s::beam_fail_instance_max_count_opts::to_string() const
{
static const char* options[] = {"n1", "n2", "n3", "n4", "n5", "n6", "n8", "n10"};
return convert_enum_idx(options, 8, value, "radio_link_monitoring_cfg_s::beam_fail_instance_max_count_e_");
}
uint8_t radio_link_monitoring_cfg_s::beam_fail_instance_max_count_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 3, 4, 5, 6, 8, 10};
return map_enum_number(options, 8, value, "radio_link_monitoring_cfg_s::beam_fail_instance_max_count_e_");
}
const char* radio_link_monitoring_cfg_s::beam_fail_detection_timer_opts::to_string() const
{
static const char* options[] = {"pbfd1", "pbfd2", "pbfd3", "pbfd4", "pbfd5", "pbfd6", "pbfd8", "pbfd10"};
return convert_enum_idx(options, 8, value, "radio_link_monitoring_cfg_s::beam_fail_detection_timer_e_");
}
uint8_t radio_link_monitoring_cfg_s::beam_fail_detection_timer_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 3, 4, 5, 6, 8, 10};
return map_enum_number(options, 8, value, "radio_link_monitoring_cfg_s::beam_fail_detection_timer_e_");
}
// SPS-Config ::= SEQUENCE
SRSASN_CODE sps_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(n1_pucch_an_present, 1));
HANDLE_CODE(bref.pack(mcs_table_present, 1));
HANDLE_CODE(periodicity.pack(bref));
HANDLE_CODE(pack_integer(bref, nrof_harq_processes, (uint8_t)1u, (uint8_t)8u));
if (n1_pucch_an_present) {
HANDLE_CODE(pack_integer(bref, n1_pucch_an, (uint8_t)0u, (uint8_t)127u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE sps_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(n1_pucch_an_present, 1));
HANDLE_CODE(bref.unpack(mcs_table_present, 1));
HANDLE_CODE(periodicity.unpack(bref));
HANDLE_CODE(unpack_integer(nrof_harq_processes, bref, (uint8_t)1u, (uint8_t)8u));
if (n1_pucch_an_present) {
HANDLE_CODE(unpack_integer(n1_pucch_an, bref, (uint8_t)0u, (uint8_t)127u));
}
return SRSASN_SUCCESS;
}
void sps_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("periodicity", periodicity.to_string());
j.write_int("nrofHARQ-Processes", nrof_harq_processes);
if (n1_pucch_an_present) {
j.write_int("n1PUCCH-AN", n1_pucch_an);
}
if (mcs_table_present) {
j.write_str("mcs-Table", "qam64LowSE");
}
j.end_obj();
}
const char* sps_cfg_s::periodicity_opts::to_string() const
{
static const char* options[] = {"ms10",
"ms20",
"ms32",
"ms40",
"ms64",
"ms80",
"ms128",
"ms160",
"ms320",
"ms640",
"spare6",
"spare5",
"spare4",
"spare3",
"spare2",
"spare1"};
return convert_enum_idx(options, 16, value, "sps_cfg_s::periodicity_e_");
}
uint16_t sps_cfg_s::periodicity_opts::to_number() const
{
static const uint16_t options[] = {10, 20, 32, 40, 64, 80, 128, 160, 320, 640};
return map_enum_number(options, 10, value, "sps_cfg_s::periodicity_e_");
}
// BWP-DownlinkDedicated ::= SEQUENCE
SRSASN_CODE bwp_dl_ded_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(pdcch_cfg_present, 1));
HANDLE_CODE(bref.pack(pdsch_cfg_present, 1));
HANDLE_CODE(bref.pack(sps_cfg_present, 1));
HANDLE_CODE(bref.pack(radio_link_monitoring_cfg_present, 1));
if (pdcch_cfg_present) {
HANDLE_CODE(pdcch_cfg.pack(bref));
}
if (pdsch_cfg_present) {
HANDLE_CODE(pdsch_cfg.pack(bref));
}
if (sps_cfg_present) {
HANDLE_CODE(sps_cfg.pack(bref));
}
if (radio_link_monitoring_cfg_present) {
HANDLE_CODE(radio_link_monitoring_cfg.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE bwp_dl_ded_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(pdcch_cfg_present, 1));
HANDLE_CODE(bref.unpack(pdsch_cfg_present, 1));
HANDLE_CODE(bref.unpack(sps_cfg_present, 1));
HANDLE_CODE(bref.unpack(radio_link_monitoring_cfg_present, 1));
if (pdcch_cfg_present) {
HANDLE_CODE(pdcch_cfg.unpack(bref));
}
if (pdsch_cfg_present) {
HANDLE_CODE(pdsch_cfg.unpack(bref));
}
if (sps_cfg_present) {
HANDLE_CODE(sps_cfg.unpack(bref));
}
if (radio_link_monitoring_cfg_present) {
HANDLE_CODE(radio_link_monitoring_cfg.unpack(bref));
}
return SRSASN_SUCCESS;
}
void bwp_dl_ded_s::to_json(json_writer& j) const
{
j.start_obj();
if (pdcch_cfg_present) {
j.write_fieldname("pdcch-Config");
pdcch_cfg.to_json(j);
}
if (pdsch_cfg_present) {
j.write_fieldname("pdsch-Config");
pdsch_cfg.to_json(j);
}
if (sps_cfg_present) {
j.write_fieldname("sps-Config");
sps_cfg.to_json(j);
}
if (radio_link_monitoring_cfg_present) {
j.write_fieldname("radioLinkMonitoringConfig");
radio_link_monitoring_cfg.to_json(j);
}
j.end_obj();
}
// BWP-Downlink ::= SEQUENCE
SRSASN_CODE bwp_dl_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(bwp_common_present, 1));
HANDLE_CODE(bref.pack(bwp_ded_present, 1));
HANDLE_CODE(pack_integer(bref, bwp_id, (uint8_t)0u, (uint8_t)4u));
if (bwp_common_present) {
HANDLE_CODE(bwp_common.pack(bref));
}
if (bwp_ded_present) {
HANDLE_CODE(bwp_ded.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE bwp_dl_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(bwp_common_present, 1));
HANDLE_CODE(bref.unpack(bwp_ded_present, 1));
HANDLE_CODE(unpack_integer(bwp_id, bref, (uint8_t)0u, (uint8_t)4u));
if (bwp_common_present) {
HANDLE_CODE(bwp_common.unpack(bref));
}
if (bwp_ded_present) {
HANDLE_CODE(bwp_ded.unpack(bref));
}
return SRSASN_SUCCESS;
}
void bwp_dl_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("bwp-Id", bwp_id);
if (bwp_common_present) {
j.write_fieldname("bwp-Common");
bwp_common.to_json(j);
}
if (bwp_ded_present) {
j.write_fieldname("bwp-Dedicated");
bwp_ded.to_json(j);
}
j.end_obj();
}
// Alpha ::= ENUMERATED
const char* alpha_opts::to_string() const
{
static const char* options[] = {"alpha0", "alpha04", "alpha05", "alpha06", "alpha07", "alpha08", "alpha09", "alpha1"};
return convert_enum_idx(options, 8, value, "alpha_e");
}
float alpha_opts::to_number() const
{
static const float options[] = {0.0, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0};
return map_enum_number(options, 8, value, "alpha_e");
}
const char* alpha_opts::to_number_string() const
{
static const char* options[] = {"0", "0.4", "0.5", "0.6", "0.7", "0.8", "0.9", "1"};
return convert_enum_idx(options, 8, value, "alpha_e");
}
// BetaOffsets ::= SEQUENCE
SRSASN_CODE beta_offsets_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(beta_offset_ack_idx1_present, 1));
HANDLE_CODE(bref.pack(beta_offset_ack_idx2_present, 1));
HANDLE_CODE(bref.pack(beta_offset_ack_idx3_present, 1));
HANDLE_CODE(bref.pack(beta_offset_csi_part1_idx1_present, 1));
HANDLE_CODE(bref.pack(beta_offset_csi_part1_idx2_present, 1));
HANDLE_CODE(bref.pack(beta_offset_csi_part2_idx1_present, 1));
HANDLE_CODE(bref.pack(beta_offset_csi_part2_idx2_present, 1));
if (beta_offset_ack_idx1_present) {
HANDLE_CODE(pack_integer(bref, beta_offset_ack_idx1, (uint8_t)0u, (uint8_t)31u));
}
if (beta_offset_ack_idx2_present) {
HANDLE_CODE(pack_integer(bref, beta_offset_ack_idx2, (uint8_t)0u, (uint8_t)31u));
}
if (beta_offset_ack_idx3_present) {
HANDLE_CODE(pack_integer(bref, beta_offset_ack_idx3, (uint8_t)0u, (uint8_t)31u));
}
if (beta_offset_csi_part1_idx1_present) {
HANDLE_CODE(pack_integer(bref, beta_offset_csi_part1_idx1, (uint8_t)0u, (uint8_t)31u));
}
if (beta_offset_csi_part1_idx2_present) {
HANDLE_CODE(pack_integer(bref, beta_offset_csi_part1_idx2, (uint8_t)0u, (uint8_t)31u));
}
if (beta_offset_csi_part2_idx1_present) {
HANDLE_CODE(pack_integer(bref, beta_offset_csi_part2_idx1, (uint8_t)0u, (uint8_t)31u));
}
if (beta_offset_csi_part2_idx2_present) {
HANDLE_CODE(pack_integer(bref, beta_offset_csi_part2_idx2, (uint8_t)0u, (uint8_t)31u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE beta_offsets_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(beta_offset_ack_idx1_present, 1));
HANDLE_CODE(bref.unpack(beta_offset_ack_idx2_present, 1));
HANDLE_CODE(bref.unpack(beta_offset_ack_idx3_present, 1));
HANDLE_CODE(bref.unpack(beta_offset_csi_part1_idx1_present, 1));
HANDLE_CODE(bref.unpack(beta_offset_csi_part1_idx2_present, 1));
HANDLE_CODE(bref.unpack(beta_offset_csi_part2_idx1_present, 1));
HANDLE_CODE(bref.unpack(beta_offset_csi_part2_idx2_present, 1));
if (beta_offset_ack_idx1_present) {
HANDLE_CODE(unpack_integer(beta_offset_ack_idx1, bref, (uint8_t)0u, (uint8_t)31u));
}
if (beta_offset_ack_idx2_present) {
HANDLE_CODE(unpack_integer(beta_offset_ack_idx2, bref, (uint8_t)0u, (uint8_t)31u));
}
if (beta_offset_ack_idx3_present) {
HANDLE_CODE(unpack_integer(beta_offset_ack_idx3, bref, (uint8_t)0u, (uint8_t)31u));
}
if (beta_offset_csi_part1_idx1_present) {
HANDLE_CODE(unpack_integer(beta_offset_csi_part1_idx1, bref, (uint8_t)0u, (uint8_t)31u));
}
if (beta_offset_csi_part1_idx2_present) {
HANDLE_CODE(unpack_integer(beta_offset_csi_part1_idx2, bref, (uint8_t)0u, (uint8_t)31u));
}
if (beta_offset_csi_part2_idx1_present) {
HANDLE_CODE(unpack_integer(beta_offset_csi_part2_idx1, bref, (uint8_t)0u, (uint8_t)31u));
}
if (beta_offset_csi_part2_idx2_present) {
HANDLE_CODE(unpack_integer(beta_offset_csi_part2_idx2, bref, (uint8_t)0u, (uint8_t)31u));
}
return SRSASN_SUCCESS;
}
void beta_offsets_s::to_json(json_writer& j) const
{
j.start_obj();
if (beta_offset_ack_idx1_present) {
j.write_int("betaOffsetACK-Index1", beta_offset_ack_idx1);
}
if (beta_offset_ack_idx2_present) {
j.write_int("betaOffsetACK-Index2", beta_offset_ack_idx2);
}
if (beta_offset_ack_idx3_present) {
j.write_int("betaOffsetACK-Index3", beta_offset_ack_idx3);
}
if (beta_offset_csi_part1_idx1_present) {
j.write_int("betaOffsetCSI-Part1-Index1", beta_offset_csi_part1_idx1);
}
if (beta_offset_csi_part1_idx2_present) {
j.write_int("betaOffsetCSI-Part1-Index2", beta_offset_csi_part1_idx2);
}
if (beta_offset_csi_part2_idx1_present) {
j.write_int("betaOffsetCSI-Part2-Index1", beta_offset_csi_part2_idx1);
}
if (beta_offset_csi_part2_idx2_present) {
j.write_int("betaOffsetCSI-Part2-Index2", beta_offset_csi_part2_idx2);
}
j.end_obj();
}
// P0-PUCCH ::= SEQUENCE
SRSASN_CODE p0_pucch_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, p0_pucch_id, (uint8_t)1u, (uint8_t)8u));
HANDLE_CODE(pack_integer(bref, p0_pucch_value, (int8_t)-16, (int8_t)15));
return SRSASN_SUCCESS;
}
SRSASN_CODE p0_pucch_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(p0_pucch_id, bref, (uint8_t)1u, (uint8_t)8u));
HANDLE_CODE(unpack_integer(p0_pucch_value, bref, (int8_t)-16, (int8_t)15));
return SRSASN_SUCCESS;
}
void p0_pucch_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("p0-PUCCH-Id", p0_pucch_id);
j.write_int("p0-PUCCH-Value", p0_pucch_value);
j.end_obj();
}
// P0-PUSCH-AlphaSet ::= SEQUENCE
SRSASN_CODE p0_pusch_alpha_set_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(p0_present, 1));
HANDLE_CODE(bref.pack(alpha_present, 1));
HANDLE_CODE(pack_integer(bref, p0_pusch_alpha_set_id, (uint8_t)0u, (uint8_t)29u));
if (p0_present) {
HANDLE_CODE(pack_integer(bref, p0, (int8_t)-16, (int8_t)15));
}
if (alpha_present) {
HANDLE_CODE(alpha.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE p0_pusch_alpha_set_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(p0_present, 1));
HANDLE_CODE(bref.unpack(alpha_present, 1));
HANDLE_CODE(unpack_integer(p0_pusch_alpha_set_id, bref, (uint8_t)0u, (uint8_t)29u));
if (p0_present) {
HANDLE_CODE(unpack_integer(p0, bref, (int8_t)-16, (int8_t)15));
}
if (alpha_present) {
HANDLE_CODE(alpha.unpack(bref));
}
return SRSASN_SUCCESS;
}
void p0_pusch_alpha_set_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("p0-PUSCH-AlphaSetId", p0_pusch_alpha_set_id);
if (p0_present) {
j.write_int("p0", p0);
}
if (alpha_present) {
j.write_str("alpha", alpha.to_string());
}
j.end_obj();
}
// PTRS-UplinkConfig ::= SEQUENCE
SRSASN_CODE ptrs_ul_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(transform_precoder_disabled_present, 1));
HANDLE_CODE(bref.pack(transform_precoder_enabled_present, 1));
if (transform_precoder_disabled_present) {
HANDLE_CODE(bref.pack(transform_precoder_disabled.freq_density_present, 1));
HANDLE_CODE(bref.pack(transform_precoder_disabled.time_density_present, 1));
HANDLE_CODE(bref.pack(transform_precoder_disabled.res_elem_offset_present, 1));
if (transform_precoder_disabled.freq_density_present) {
HANDLE_CODE(pack_fixed_seq_of(bref,
&(transform_precoder_disabled.freq_density)[0],
transform_precoder_disabled.freq_density.size(),
integer_packer<uint16_t>(1, 276)));
}
if (transform_precoder_disabled.time_density_present) {
HANDLE_CODE(pack_fixed_seq_of(bref,
&(transform_precoder_disabled.time_density)[0],
transform_precoder_disabled.time_density.size(),
integer_packer<uint8_t>(0, 29)));
}
HANDLE_CODE(transform_precoder_disabled.max_nrof_ports.pack(bref));
if (transform_precoder_disabled.res_elem_offset_present) {
HANDLE_CODE(transform_precoder_disabled.res_elem_offset.pack(bref));
}
HANDLE_CODE(transform_precoder_disabled.ptrs_pwr.pack(bref));
}
if (transform_precoder_enabled_present) {
HANDLE_CODE(bref.pack(transform_precoder_enabled.time_density_transform_precoding_present, 1));
HANDLE_CODE(pack_fixed_seq_of(bref,
&(transform_precoder_enabled.sample_density)[0],
transform_precoder_enabled.sample_density.size(),
integer_packer<uint16_t>(1, 276)));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ptrs_ul_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(transform_precoder_disabled_present, 1));
HANDLE_CODE(bref.unpack(transform_precoder_enabled_present, 1));
if (transform_precoder_disabled_present) {
HANDLE_CODE(bref.unpack(transform_precoder_disabled.freq_density_present, 1));
HANDLE_CODE(bref.unpack(transform_precoder_disabled.time_density_present, 1));
HANDLE_CODE(bref.unpack(transform_precoder_disabled.res_elem_offset_present, 1));
if (transform_precoder_disabled.freq_density_present) {
HANDLE_CODE(unpack_fixed_seq_of(&(transform_precoder_disabled.freq_density)[0],
bref,
transform_precoder_disabled.freq_density.size(),
integer_packer<uint16_t>(1, 276)));
}
if (transform_precoder_disabled.time_density_present) {
HANDLE_CODE(unpack_fixed_seq_of(&(transform_precoder_disabled.time_density)[0],
bref,
transform_precoder_disabled.time_density.size(),
integer_packer<uint8_t>(0, 29)));
}
HANDLE_CODE(transform_precoder_disabled.max_nrof_ports.unpack(bref));
if (transform_precoder_disabled.res_elem_offset_present) {
HANDLE_CODE(transform_precoder_disabled.res_elem_offset.unpack(bref));
}
HANDLE_CODE(transform_precoder_disabled.ptrs_pwr.unpack(bref));
}
if (transform_precoder_enabled_present) {
HANDLE_CODE(bref.unpack(transform_precoder_enabled.time_density_transform_precoding_present, 1));
HANDLE_CODE(unpack_fixed_seq_of(&(transform_precoder_enabled.sample_density)[0],
bref,
transform_precoder_enabled.sample_density.size(),
integer_packer<uint16_t>(1, 276)));
}
return SRSASN_SUCCESS;
}
void ptrs_ul_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (transform_precoder_disabled_present) {
j.write_fieldname("transformPrecoderDisabled");
j.start_obj();
if (transform_precoder_disabled.freq_density_present) {
j.start_array("frequencyDensity");
for (const auto& e1 : transform_precoder_disabled.freq_density) {
j.write_int(e1);
}
j.end_array();
}
if (transform_precoder_disabled.time_density_present) {
j.start_array("timeDensity");
for (const auto& e1 : transform_precoder_disabled.time_density) {
j.write_int(e1);
}
j.end_array();
}
j.write_str("maxNrofPorts", transform_precoder_disabled.max_nrof_ports.to_string());
if (transform_precoder_disabled.res_elem_offset_present) {
j.write_str("resourceElementOffset", transform_precoder_disabled.res_elem_offset.to_string());
}
j.write_str("ptrs-Power", transform_precoder_disabled.ptrs_pwr.to_string());
j.end_obj();
}
if (transform_precoder_enabled_present) {
j.write_fieldname("transformPrecoderEnabled");
j.start_obj();
j.start_array("sampleDensity");
for (const auto& e1 : transform_precoder_enabled.sample_density) {
j.write_int(e1);
}
j.end_array();
if (transform_precoder_enabled.time_density_transform_precoding_present) {
j.write_str("timeDensityTransformPrecoding", "d2");
}
j.end_obj();
}
j.end_obj();
}
const char* ptrs_ul_cfg_s::transform_precoder_disabled_s_::max_nrof_ports_opts::to_string() const
{
static const char* options[] = {"n1", "n2"};
return convert_enum_idx(options, 2, value, "ptrs_ul_cfg_s::transform_precoder_disabled_s_::max_nrof_ports_e_");
}
uint8_t ptrs_ul_cfg_s::transform_precoder_disabled_s_::max_nrof_ports_opts::to_number() const
{
static const uint8_t options[] = {1, 2};
return map_enum_number(options, 2, value, "ptrs_ul_cfg_s::transform_precoder_disabled_s_::max_nrof_ports_e_");
}
const char* ptrs_ul_cfg_s::transform_precoder_disabled_s_::res_elem_offset_opts::to_string() const
{
static const char* options[] = {"offset01", "offset10", "offset11"};
return convert_enum_idx(options, 3, value, "ptrs_ul_cfg_s::transform_precoder_disabled_s_::res_elem_offset_e_");
}
float ptrs_ul_cfg_s::transform_precoder_disabled_s_::res_elem_offset_opts::to_number() const
{
static const float options[] = {0.1, 1.0, 1.1};
return map_enum_number(options, 3, value, "ptrs_ul_cfg_s::transform_precoder_disabled_s_::res_elem_offset_e_");
}
const char* ptrs_ul_cfg_s::transform_precoder_disabled_s_::res_elem_offset_opts::to_number_string() const
{
static const char* options[] = {"0.1", "1.0", "1.1"};
return convert_enum_idx(options, 3, value, "ptrs_ul_cfg_s::transform_precoder_disabled_s_::res_elem_offset_e_");
}
const char* ptrs_ul_cfg_s::transform_precoder_disabled_s_::ptrs_pwr_opts::to_string() const
{
static const char* options[] = {"p00", "p01", "p10", "p11"};
return convert_enum_idx(options, 4, value, "ptrs_ul_cfg_s::transform_precoder_disabled_s_::ptrs_pwr_e_");
}
float ptrs_ul_cfg_s::transform_precoder_disabled_s_::ptrs_pwr_opts::to_number() const
{
static const float options[] = {0.0, 0.1, 1.0, 1.1};
return map_enum_number(options, 4, value, "ptrs_ul_cfg_s::transform_precoder_disabled_s_::ptrs_pwr_e_");
}
const char* ptrs_ul_cfg_s::transform_precoder_disabled_s_::ptrs_pwr_opts::to_number_string() const
{
static const char* options[] = {"0.0", "0.1", "1.0", "1.1"};
return convert_enum_idx(options, 4, value, "ptrs_ul_cfg_s::transform_precoder_disabled_s_::ptrs_pwr_e_");
}
// PUCCH-MaxCodeRate ::= ENUMERATED
const char* pucch_max_code_rate_opts::to_string() const
{
static const char* options[] = {
"zeroDot08", "zeroDot15", "zeroDot25", "zeroDot35", "zeroDot45", "zeroDot60", "zeroDot80"};
return convert_enum_idx(options, 7, value, "pucch_max_code_rate_e");
}
float pucch_max_code_rate_opts::to_number() const
{
static const float options[] = {0.08, 0.15, 0.25, 0.35, 0.45, 0.6, 0.8};
return map_enum_number(options, 7, value, "pucch_max_code_rate_e");
}
const char* pucch_max_code_rate_opts::to_number_string() const
{
static const char* options[] = {"0.08", "0.15", "0.25", "0.35", "0.45", "0.60", "0.80"};
return convert_enum_idx(options, 7, value, "pucch_max_code_rate_e");
}
// PUCCH-PathlossReferenceRS ::= SEQUENCE
SRSASN_CODE pucch_pathloss_ref_rs_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, pucch_pathloss_ref_rs_id, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(ref_sig.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE pucch_pathloss_ref_rs_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(pucch_pathloss_ref_rs_id, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(ref_sig.unpack(bref));
return SRSASN_SUCCESS;
}
void pucch_pathloss_ref_rs_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("pucch-PathlossReferenceRS-Id", pucch_pathloss_ref_rs_id);
j.write_fieldname("referenceSignal");
ref_sig.to_json(j);
j.end_obj();
}
void pucch_pathloss_ref_rs_s::ref_sig_c_::destroy_() {}
void pucch_pathloss_ref_rs_s::ref_sig_c_::set(types::options e)
{
destroy_();
type_ = e;
}
pucch_pathloss_ref_rs_s::ref_sig_c_::ref_sig_c_(const pucch_pathloss_ref_rs_s::ref_sig_c_& other)
{
type_ = other.type();
switch (type_) {
case types::ssb_idx:
c.init(other.c.get<uint8_t>());
break;
case types::csi_rs_idx:
c.init(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "pucch_pathloss_ref_rs_s::ref_sig_c_");
}
}
pucch_pathloss_ref_rs_s::ref_sig_c_&
pucch_pathloss_ref_rs_s::ref_sig_c_::operator=(const pucch_pathloss_ref_rs_s::ref_sig_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::ssb_idx:
c.set(other.c.get<uint8_t>());
break;
case types::csi_rs_idx:
c.set(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "pucch_pathloss_ref_rs_s::ref_sig_c_");
}
return *this;
}
uint8_t& pucch_pathloss_ref_rs_s::ref_sig_c_::set_ssb_idx()
{
set(types::ssb_idx);
return c.get<uint8_t>();
}
uint8_t& pucch_pathloss_ref_rs_s::ref_sig_c_::set_csi_rs_idx()
{
set(types::csi_rs_idx);
return c.get<uint8_t>();
}
void pucch_pathloss_ref_rs_s::ref_sig_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::ssb_idx:
j.write_int("ssb-Index", c.get<uint8_t>());
break;
case types::csi_rs_idx:
j.write_int("csi-RS-Index", c.get<uint8_t>());
break;
default:
log_invalid_choice_id(type_, "pucch_pathloss_ref_rs_s::ref_sig_c_");
}
j.end_obj();
}
SRSASN_CODE pucch_pathloss_ref_rs_s::ref_sig_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::ssb_idx:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)63u));
break;
case types::csi_rs_idx:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)191u));
break;
default:
log_invalid_choice_id(type_, "pucch_pathloss_ref_rs_s::ref_sig_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pucch_pathloss_ref_rs_s::ref_sig_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::ssb_idx:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)63u));
break;
case types::csi_rs_idx:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)191u));
break;
default:
log_invalid_choice_id(type_, "pucch_pathloss_ref_rs_s::ref_sig_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* pucch_pathloss_ref_rs_s::ref_sig_c_::types_opts::to_string() const
{
static const char* options[] = {"ssb-Index", "csi-RS-Index"};
return convert_enum_idx(options, 2, value, "pucch_pathloss_ref_rs_s::ref_sig_c_::types");
}
// PUCCH-format0 ::= SEQUENCE
SRSASN_CODE pucch_format0_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, init_cyclic_shift, (uint8_t)0u, (uint8_t)11u));
HANDLE_CODE(pack_integer(bref, nrof_symbols, (uint8_t)1u, (uint8_t)2u));
HANDLE_CODE(pack_integer(bref, start_symbol_idx, (uint8_t)0u, (uint8_t)13u));
return SRSASN_SUCCESS;
}
SRSASN_CODE pucch_format0_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(init_cyclic_shift, bref, (uint8_t)0u, (uint8_t)11u));
HANDLE_CODE(unpack_integer(nrof_symbols, bref, (uint8_t)1u, (uint8_t)2u));
HANDLE_CODE(unpack_integer(start_symbol_idx, bref, (uint8_t)0u, (uint8_t)13u));
return SRSASN_SUCCESS;
}
void pucch_format0_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("initialCyclicShift", init_cyclic_shift);
j.write_int("nrofSymbols", nrof_symbols);
j.write_int("startingSymbolIndex", start_symbol_idx);
j.end_obj();
}
// PUCCH-format1 ::= SEQUENCE
SRSASN_CODE pucch_format1_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, init_cyclic_shift, (uint8_t)0u, (uint8_t)11u));
HANDLE_CODE(pack_integer(bref, nrof_symbols, (uint8_t)4u, (uint8_t)14u));
HANDLE_CODE(pack_integer(bref, start_symbol_idx, (uint8_t)0u, (uint8_t)10u));
HANDLE_CODE(pack_integer(bref, time_domain_occ, (uint8_t)0u, (uint8_t)6u));
return SRSASN_SUCCESS;
}
SRSASN_CODE pucch_format1_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(init_cyclic_shift, bref, (uint8_t)0u, (uint8_t)11u));
HANDLE_CODE(unpack_integer(nrof_symbols, bref, (uint8_t)4u, (uint8_t)14u));
HANDLE_CODE(unpack_integer(start_symbol_idx, bref, (uint8_t)0u, (uint8_t)10u));
HANDLE_CODE(unpack_integer(time_domain_occ, bref, (uint8_t)0u, (uint8_t)6u));
return SRSASN_SUCCESS;
}
void pucch_format1_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("initialCyclicShift", init_cyclic_shift);
j.write_int("nrofSymbols", nrof_symbols);
j.write_int("startingSymbolIndex", start_symbol_idx);
j.write_int("timeDomainOCC", time_domain_occ);
j.end_obj();
}
// PUCCH-format2 ::= SEQUENCE
SRSASN_CODE pucch_format2_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, nrof_prbs, (uint8_t)1u, (uint8_t)16u));
HANDLE_CODE(pack_integer(bref, nrof_symbols, (uint8_t)1u, (uint8_t)2u));
HANDLE_CODE(pack_integer(bref, start_symbol_idx, (uint8_t)0u, (uint8_t)13u));
return SRSASN_SUCCESS;
}
SRSASN_CODE pucch_format2_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(nrof_prbs, bref, (uint8_t)1u, (uint8_t)16u));
HANDLE_CODE(unpack_integer(nrof_symbols, bref, (uint8_t)1u, (uint8_t)2u));
HANDLE_CODE(unpack_integer(start_symbol_idx, bref, (uint8_t)0u, (uint8_t)13u));
return SRSASN_SUCCESS;
}
void pucch_format2_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("nrofPRBs", nrof_prbs);
j.write_int("nrofSymbols", nrof_symbols);
j.write_int("startingSymbolIndex", start_symbol_idx);
j.end_obj();
}
// PUCCH-format3 ::= SEQUENCE
SRSASN_CODE pucch_format3_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, nrof_prbs, (uint8_t)1u, (uint8_t)16u));
HANDLE_CODE(pack_integer(bref, nrof_symbols, (uint8_t)4u, (uint8_t)14u));
HANDLE_CODE(pack_integer(bref, start_symbol_idx, (uint8_t)0u, (uint8_t)10u));
return SRSASN_SUCCESS;
}
SRSASN_CODE pucch_format3_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(nrof_prbs, bref, (uint8_t)1u, (uint8_t)16u));
HANDLE_CODE(unpack_integer(nrof_symbols, bref, (uint8_t)4u, (uint8_t)14u));
HANDLE_CODE(unpack_integer(start_symbol_idx, bref, (uint8_t)0u, (uint8_t)10u));
return SRSASN_SUCCESS;
}
void pucch_format3_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("nrofPRBs", nrof_prbs);
j.write_int("nrofSymbols", nrof_symbols);
j.write_int("startingSymbolIndex", start_symbol_idx);
j.end_obj();
}
// PUCCH-format4 ::= SEQUENCE
SRSASN_CODE pucch_format4_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, nrof_symbols, (uint8_t)4u, (uint8_t)14u));
HANDLE_CODE(occ_len.pack(bref));
HANDLE_CODE(occ_idx.pack(bref));
HANDLE_CODE(pack_integer(bref, start_symbol_idx, (uint8_t)0u, (uint8_t)10u));
return SRSASN_SUCCESS;
}
SRSASN_CODE pucch_format4_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(nrof_symbols, bref, (uint8_t)4u, (uint8_t)14u));
HANDLE_CODE(occ_len.unpack(bref));
HANDLE_CODE(occ_idx.unpack(bref));
HANDLE_CODE(unpack_integer(start_symbol_idx, bref, (uint8_t)0u, (uint8_t)10u));
return SRSASN_SUCCESS;
}
void pucch_format4_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("nrofSymbols", nrof_symbols);
j.write_str("occ-Length", occ_len.to_string());
j.write_str("occ-Index", occ_idx.to_string());
j.write_int("startingSymbolIndex", start_symbol_idx);
j.end_obj();
}
const char* pucch_format4_s::occ_len_opts::to_string() const
{
static const char* options[] = {"n2", "n4"};
return convert_enum_idx(options, 2, value, "pucch_format4_s::occ_len_e_");
}
uint8_t pucch_format4_s::occ_len_opts::to_number() const
{
static const uint8_t options[] = {2, 4};
return map_enum_number(options, 2, value, "pucch_format4_s::occ_len_e_");
}
const char* pucch_format4_s::occ_idx_opts::to_string() const
{
static const char* options[] = {"n0", "n1", "n2", "n3"};
return convert_enum_idx(options, 4, value, "pucch_format4_s::occ_idx_e_");
}
uint8_t pucch_format4_s::occ_idx_opts::to_number() const
{
static const uint8_t options[] = {0, 1, 2, 3};
return map_enum_number(options, 4, value, "pucch_format4_s::occ_idx_e_");
}
// PUSCH-PathlossReferenceRS ::= SEQUENCE
SRSASN_CODE pusch_pathloss_ref_rs_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, pusch_pathloss_ref_rs_id, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(ref_sig.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE pusch_pathloss_ref_rs_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(pusch_pathloss_ref_rs_id, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(ref_sig.unpack(bref));
return SRSASN_SUCCESS;
}
void pusch_pathloss_ref_rs_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("pusch-PathlossReferenceRS-Id", pusch_pathloss_ref_rs_id);
j.write_fieldname("referenceSignal");
ref_sig.to_json(j);
j.end_obj();
}
void pusch_pathloss_ref_rs_s::ref_sig_c_::destroy_() {}
void pusch_pathloss_ref_rs_s::ref_sig_c_::set(types::options e)
{
destroy_();
type_ = e;
}
pusch_pathloss_ref_rs_s::ref_sig_c_::ref_sig_c_(const pusch_pathloss_ref_rs_s::ref_sig_c_& other)
{
type_ = other.type();
switch (type_) {
case types::ssb_idx:
c.init(other.c.get<uint8_t>());
break;
case types::csi_rs_idx:
c.init(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "pusch_pathloss_ref_rs_s::ref_sig_c_");
}
}
pusch_pathloss_ref_rs_s::ref_sig_c_&
pusch_pathloss_ref_rs_s::ref_sig_c_::operator=(const pusch_pathloss_ref_rs_s::ref_sig_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::ssb_idx:
c.set(other.c.get<uint8_t>());
break;
case types::csi_rs_idx:
c.set(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "pusch_pathloss_ref_rs_s::ref_sig_c_");
}
return *this;
}
uint8_t& pusch_pathloss_ref_rs_s::ref_sig_c_::set_ssb_idx()
{
set(types::ssb_idx);
return c.get<uint8_t>();
}
uint8_t& pusch_pathloss_ref_rs_s::ref_sig_c_::set_csi_rs_idx()
{
set(types::csi_rs_idx);
return c.get<uint8_t>();
}
void pusch_pathloss_ref_rs_s::ref_sig_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::ssb_idx:
j.write_int("ssb-Index", c.get<uint8_t>());
break;
case types::csi_rs_idx:
j.write_int("csi-RS-Index", c.get<uint8_t>());
break;
default:
log_invalid_choice_id(type_, "pusch_pathloss_ref_rs_s::ref_sig_c_");
}
j.end_obj();
}
SRSASN_CODE pusch_pathloss_ref_rs_s::ref_sig_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::ssb_idx:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)63u));
break;
case types::csi_rs_idx:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)191u));
break;
default:
log_invalid_choice_id(type_, "pusch_pathloss_ref_rs_s::ref_sig_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pusch_pathloss_ref_rs_s::ref_sig_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::ssb_idx:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)63u));
break;
case types::csi_rs_idx:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)191u));
break;
default:
log_invalid_choice_id(type_, "pusch_pathloss_ref_rs_s::ref_sig_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* pusch_pathloss_ref_rs_s::ref_sig_c_::types_opts::to_string() const
{
static const char* options[] = {"ssb-Index", "csi-RS-Index"};
return convert_enum_idx(options, 2, value, "pusch_pathloss_ref_rs_s::ref_sig_c_::types");
}
// SRI-PUSCH-PowerControl ::= SEQUENCE
SRSASN_CODE sri_pusch_pwr_ctrl_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, sri_pusch_pwr_ctrl_id, (uint8_t)0u, (uint8_t)15u));
HANDLE_CODE(pack_integer(bref, sri_pusch_pathloss_ref_rs_id, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(pack_integer(bref, sri_p0_pusch_alpha_set_id, (uint8_t)0u, (uint8_t)29u));
HANDLE_CODE(sri_pusch_closed_loop_idx.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE sri_pusch_pwr_ctrl_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(sri_pusch_pwr_ctrl_id, bref, (uint8_t)0u, (uint8_t)15u));
HANDLE_CODE(unpack_integer(sri_pusch_pathloss_ref_rs_id, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(unpack_integer(sri_p0_pusch_alpha_set_id, bref, (uint8_t)0u, (uint8_t)29u));
HANDLE_CODE(sri_pusch_closed_loop_idx.unpack(bref));
return SRSASN_SUCCESS;
}
void sri_pusch_pwr_ctrl_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("sri-PUSCH-PowerControlId", sri_pusch_pwr_ctrl_id);
j.write_int("sri-PUSCH-PathlossReferenceRS-Id", sri_pusch_pathloss_ref_rs_id);
j.write_int("sri-P0-PUSCH-AlphaSetId", sri_p0_pusch_alpha_set_id);
j.write_str("sri-PUSCH-ClosedLoopIndex", sri_pusch_closed_loop_idx.to_string());
j.end_obj();
}
const char* sri_pusch_pwr_ctrl_s::sri_pusch_closed_loop_idx_opts::to_string() const
{
static const char* options[] = {"i0", "i1"};
return convert_enum_idx(options, 2, value, "sri_pusch_pwr_ctrl_s::sri_pusch_closed_loop_idx_e_");
}
uint8_t sri_pusch_pwr_ctrl_s::sri_pusch_closed_loop_idx_opts::to_number() const
{
static const uint8_t options[] = {0, 1};
return map_enum_number(options, 2, value, "sri_pusch_pwr_ctrl_s::sri_pusch_closed_loop_idx_e_");
}
// SRS-PeriodicityAndOffset ::= CHOICE
void srs_periodicity_and_offset_c::destroy_() {}
void srs_periodicity_and_offset_c::set(types::options e)
{
destroy_();
type_ = e;
}
srs_periodicity_and_offset_c::srs_periodicity_and_offset_c(const srs_periodicity_and_offset_c& other)
{
type_ = other.type();
switch (type_) {
case types::sl1:
break;
case types::sl2:
c.init(other.c.get<uint8_t>());
break;
case types::sl4:
c.init(other.c.get<uint8_t>());
break;
case types::sl5:
c.init(other.c.get<uint8_t>());
break;
case types::sl8:
c.init(other.c.get<uint8_t>());
break;
case types::sl10:
c.init(other.c.get<uint8_t>());
break;
case types::sl16:
c.init(other.c.get<uint8_t>());
break;
case types::sl20:
c.init(other.c.get<uint8_t>());
break;
case types::sl32:
c.init(other.c.get<uint8_t>());
break;
case types::sl40:
c.init(other.c.get<uint8_t>());
break;
case types::sl64:
c.init(other.c.get<uint8_t>());
break;
case types::sl80:
c.init(other.c.get<uint8_t>());
break;
case types::sl160:
c.init(other.c.get<uint8_t>());
break;
case types::sl320:
c.init(other.c.get<uint16_t>());
break;
case types::sl640:
c.init(other.c.get<uint16_t>());
break;
case types::sl1280:
c.init(other.c.get<uint16_t>());
break;
case types::sl2560:
c.init(other.c.get<uint16_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "srs_periodicity_and_offset_c");
}
}
srs_periodicity_and_offset_c& srs_periodicity_and_offset_c::operator=(const srs_periodicity_and_offset_c& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::sl1:
break;
case types::sl2:
c.set(other.c.get<uint8_t>());
break;
case types::sl4:
c.set(other.c.get<uint8_t>());
break;
case types::sl5:
c.set(other.c.get<uint8_t>());
break;
case types::sl8:
c.set(other.c.get<uint8_t>());
break;
case types::sl10:
c.set(other.c.get<uint8_t>());
break;
case types::sl16:
c.set(other.c.get<uint8_t>());
break;
case types::sl20:
c.set(other.c.get<uint8_t>());
break;
case types::sl32:
c.set(other.c.get<uint8_t>());
break;
case types::sl40:
c.set(other.c.get<uint8_t>());
break;
case types::sl64:
c.set(other.c.get<uint8_t>());
break;
case types::sl80:
c.set(other.c.get<uint8_t>());
break;
case types::sl160:
c.set(other.c.get<uint8_t>());
break;
case types::sl320:
c.set(other.c.get<uint16_t>());
break;
case types::sl640:
c.set(other.c.get<uint16_t>());
break;
case types::sl1280:
c.set(other.c.get<uint16_t>());
break;
case types::sl2560:
c.set(other.c.get<uint16_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "srs_periodicity_and_offset_c");
}
return *this;
}
void srs_periodicity_and_offset_c::set_sl1()
{
set(types::sl1);
}
uint8_t& srs_periodicity_and_offset_c::set_sl2()
{
set(types::sl2);
return c.get<uint8_t>();
}
uint8_t& srs_periodicity_and_offset_c::set_sl4()
{
set(types::sl4);
return c.get<uint8_t>();
}
uint8_t& srs_periodicity_and_offset_c::set_sl5()
{
set(types::sl5);
return c.get<uint8_t>();
}
uint8_t& srs_periodicity_and_offset_c::set_sl8()
{
set(types::sl8);
return c.get<uint8_t>();
}
uint8_t& srs_periodicity_and_offset_c::set_sl10()
{
set(types::sl10);
return c.get<uint8_t>();
}
uint8_t& srs_periodicity_and_offset_c::set_sl16()
{
set(types::sl16);
return c.get<uint8_t>();
}
uint8_t& srs_periodicity_and_offset_c::set_sl20()
{
set(types::sl20);
return c.get<uint8_t>();
}
uint8_t& srs_periodicity_and_offset_c::set_sl32()
{
set(types::sl32);
return c.get<uint8_t>();
}
uint8_t& srs_periodicity_and_offset_c::set_sl40()
{
set(types::sl40);
return c.get<uint8_t>();
}
uint8_t& srs_periodicity_and_offset_c::set_sl64()
{
set(types::sl64);
return c.get<uint8_t>();
}
uint8_t& srs_periodicity_and_offset_c::set_sl80()
{
set(types::sl80);
return c.get<uint8_t>();
}
uint8_t& srs_periodicity_and_offset_c::set_sl160()
{
set(types::sl160);
return c.get<uint8_t>();
}
uint16_t& srs_periodicity_and_offset_c::set_sl320()
{
set(types::sl320);
return c.get<uint16_t>();
}
uint16_t& srs_periodicity_and_offset_c::set_sl640()
{
set(types::sl640);
return c.get<uint16_t>();
}
uint16_t& srs_periodicity_and_offset_c::set_sl1280()
{
set(types::sl1280);
return c.get<uint16_t>();
}
uint16_t& srs_periodicity_and_offset_c::set_sl2560()
{
set(types::sl2560);
return c.get<uint16_t>();
}
void srs_periodicity_and_offset_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::sl1:
break;
case types::sl2:
j.write_int("sl2", c.get<uint8_t>());
break;
case types::sl4:
j.write_int("sl4", c.get<uint8_t>());
break;
case types::sl5:
j.write_int("sl5", c.get<uint8_t>());
break;
case types::sl8:
j.write_int("sl8", c.get<uint8_t>());
break;
case types::sl10:
j.write_int("sl10", c.get<uint8_t>());
break;
case types::sl16:
j.write_int("sl16", c.get<uint8_t>());
break;
case types::sl20:
j.write_int("sl20", c.get<uint8_t>());
break;
case types::sl32:
j.write_int("sl32", c.get<uint8_t>());
break;
case types::sl40:
j.write_int("sl40", c.get<uint8_t>());
break;
case types::sl64:
j.write_int("sl64", c.get<uint8_t>());
break;
case types::sl80:
j.write_int("sl80", c.get<uint8_t>());
break;
case types::sl160:
j.write_int("sl160", c.get<uint8_t>());
break;
case types::sl320:
j.write_int("sl320", c.get<uint16_t>());
break;
case types::sl640:
j.write_int("sl640", c.get<uint16_t>());
break;
case types::sl1280:
j.write_int("sl1280", c.get<uint16_t>());
break;
case types::sl2560:
j.write_int("sl2560", c.get<uint16_t>());
break;
default:
log_invalid_choice_id(type_, "srs_periodicity_and_offset_c");
}
j.end_obj();
}
SRSASN_CODE srs_periodicity_and_offset_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::sl1:
break;
case types::sl2:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)1u));
break;
case types::sl4:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)3u));
break;
case types::sl5:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)4u));
break;
case types::sl8:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)7u));
break;
case types::sl10:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)9u));
break;
case types::sl16:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)15u));
break;
case types::sl20:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)19u));
break;
case types::sl32:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)31u));
break;
case types::sl40:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)39u));
break;
case types::sl64:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)63u));
break;
case types::sl80:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)79u));
break;
case types::sl160:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)159u));
break;
case types::sl320:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)319u));
break;
case types::sl640:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)639u));
break;
case types::sl1280:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)1279u));
break;
case types::sl2560:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)2559u));
break;
default:
log_invalid_choice_id(type_, "srs_periodicity_and_offset_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE srs_periodicity_and_offset_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::sl1:
break;
case types::sl2:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)1u));
break;
case types::sl4:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)3u));
break;
case types::sl5:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)4u));
break;
case types::sl8:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)7u));
break;
case types::sl10:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)9u));
break;
case types::sl16:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)15u));
break;
case types::sl20:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)19u));
break;
case types::sl32:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)31u));
break;
case types::sl40:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)39u));
break;
case types::sl64:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)63u));
break;
case types::sl80:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)79u));
break;
case types::sl160:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)159u));
break;
case types::sl320:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)319u));
break;
case types::sl640:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)639u));
break;
case types::sl1280:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)1279u));
break;
case types::sl2560:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)2559u));
break;
default:
log_invalid_choice_id(type_, "srs_periodicity_and_offset_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* srs_periodicity_and_offset_c::types_opts::to_string() const
{
static const char* options[] = {"sl1",
"sl2",
"sl4",
"sl5",
"sl8",
"sl10",
"sl16",
"sl20",
"sl32",
"sl40",
"sl64",
"sl80",
"sl160",
"sl320",
"sl640",
"sl1280",
"sl2560"};
return convert_enum_idx(options, 17, value, "srs_periodicity_and_offset_c::types");
}
uint16_t srs_periodicity_and_offset_c::types_opts::to_number() const
{
static const uint16_t options[] = {1, 2, 4, 5, 8, 10, 16, 20, 32, 40, 64, 80, 160, 320, 640, 1280, 2560};
return map_enum_number(options, 17, value, "srs_periodicity_and_offset_c::types");
}
// SRS-SpatialRelationInfo ::= SEQUENCE
SRSASN_CODE srs_spatial_relation_info_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(serving_cell_id_present, 1));
if (serving_cell_id_present) {
HANDLE_CODE(pack_integer(bref, serving_cell_id, (uint8_t)0u, (uint8_t)31u));
}
HANDLE_CODE(ref_sig.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE srs_spatial_relation_info_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(serving_cell_id_present, 1));
if (serving_cell_id_present) {
HANDLE_CODE(unpack_integer(serving_cell_id, bref, (uint8_t)0u, (uint8_t)31u));
}
HANDLE_CODE(ref_sig.unpack(bref));
return SRSASN_SUCCESS;
}
void srs_spatial_relation_info_s::to_json(json_writer& j) const
{
j.start_obj();
if (serving_cell_id_present) {
j.write_int("servingCellId", serving_cell_id);
}
j.write_fieldname("referenceSignal");
ref_sig.to_json(j);
j.end_obj();
}
void srs_spatial_relation_info_s::ref_sig_c_::destroy_()
{
switch (type_) {
case types::srs:
c.destroy<srs_s_>();
break;
default:
break;
}
}
void srs_spatial_relation_info_s::ref_sig_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::ssb_idx:
break;
case types::csi_rs_idx:
break;
case types::srs:
c.init<srs_s_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "srs_spatial_relation_info_s::ref_sig_c_");
}
}
srs_spatial_relation_info_s::ref_sig_c_::ref_sig_c_(const srs_spatial_relation_info_s::ref_sig_c_& other)
{
type_ = other.type();
switch (type_) {
case types::ssb_idx:
c.init(other.c.get<uint8_t>());
break;
case types::csi_rs_idx:
c.init(other.c.get<uint8_t>());
break;
case types::srs:
c.init(other.c.get<srs_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "srs_spatial_relation_info_s::ref_sig_c_");
}
}
srs_spatial_relation_info_s::ref_sig_c_&
srs_spatial_relation_info_s::ref_sig_c_::operator=(const srs_spatial_relation_info_s::ref_sig_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::ssb_idx:
c.set(other.c.get<uint8_t>());
break;
case types::csi_rs_idx:
c.set(other.c.get<uint8_t>());
break;
case types::srs:
c.set(other.c.get<srs_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "srs_spatial_relation_info_s::ref_sig_c_");
}
return *this;
}
uint8_t& srs_spatial_relation_info_s::ref_sig_c_::set_ssb_idx()
{
set(types::ssb_idx);
return c.get<uint8_t>();
}
uint8_t& srs_spatial_relation_info_s::ref_sig_c_::set_csi_rs_idx()
{
set(types::csi_rs_idx);
return c.get<uint8_t>();
}
srs_spatial_relation_info_s::ref_sig_c_::srs_s_& srs_spatial_relation_info_s::ref_sig_c_::set_srs()
{
set(types::srs);
return c.get<srs_s_>();
}
void srs_spatial_relation_info_s::ref_sig_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::ssb_idx:
j.write_int("ssb-Index", c.get<uint8_t>());
break;
case types::csi_rs_idx:
j.write_int("csi-RS-Index", c.get<uint8_t>());
break;
case types::srs:
j.write_fieldname("srs");
j.start_obj();
j.write_int("resourceId", c.get<srs_s_>().res_id);
j.write_int("uplinkBWP", c.get<srs_s_>().ul_bwp);
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "srs_spatial_relation_info_s::ref_sig_c_");
}
j.end_obj();
}
SRSASN_CODE srs_spatial_relation_info_s::ref_sig_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::ssb_idx:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)63u));
break;
case types::csi_rs_idx:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)191u));
break;
case types::srs:
HANDLE_CODE(pack_integer(bref, c.get<srs_s_>().res_id, (uint8_t)0u, (uint8_t)63u));
HANDLE_CODE(pack_integer(bref, c.get<srs_s_>().ul_bwp, (uint8_t)0u, (uint8_t)4u));
break;
default:
log_invalid_choice_id(type_, "srs_spatial_relation_info_s::ref_sig_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE srs_spatial_relation_info_s::ref_sig_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::ssb_idx:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)63u));
break;
case types::csi_rs_idx:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)191u));
break;
case types::srs:
HANDLE_CODE(unpack_integer(c.get<srs_s_>().res_id, bref, (uint8_t)0u, (uint8_t)63u));
HANDLE_CODE(unpack_integer(c.get<srs_s_>().ul_bwp, bref, (uint8_t)0u, (uint8_t)4u));
break;
default:
log_invalid_choice_id(type_, "srs_spatial_relation_info_s::ref_sig_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* srs_spatial_relation_info_s::ref_sig_c_::types_opts::to_string() const
{
static const char* options[] = {"ssb-Index", "csi-RS-Index", "srs"};
return convert_enum_idx(options, 3, value, "srs_spatial_relation_info_s::ref_sig_c_::types");
}
// CG-UCI-OnPUSCH ::= CHOICE
void cg_uci_on_pusch_c::destroy_()
{
switch (type_) {
case types::dynamic_type:
c.destroy<dynamic_l_>();
break;
case types::semi_static:
c.destroy<beta_offsets_s>();
break;
default:
break;
}
}
void cg_uci_on_pusch_c::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::dynamic_type:
c.init<dynamic_l_>();
break;
case types::semi_static:
c.init<beta_offsets_s>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "cg_uci_on_pusch_c");
}
}
cg_uci_on_pusch_c::cg_uci_on_pusch_c(const cg_uci_on_pusch_c& other)
{
type_ = other.type();
switch (type_) {
case types::dynamic_type:
c.init(other.c.get<dynamic_l_>());
break;
case types::semi_static:
c.init(other.c.get<beta_offsets_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "cg_uci_on_pusch_c");
}
}
cg_uci_on_pusch_c& cg_uci_on_pusch_c::operator=(const cg_uci_on_pusch_c& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::dynamic_type:
c.set(other.c.get<dynamic_l_>());
break;
case types::semi_static:
c.set(other.c.get<beta_offsets_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "cg_uci_on_pusch_c");
}
return *this;
}
cg_uci_on_pusch_c::dynamic_l_& cg_uci_on_pusch_c::set_dynamic_type()
{
set(types::dynamic_type);
return c.get<dynamic_l_>();
}
beta_offsets_s& cg_uci_on_pusch_c::set_semi_static()
{
set(types::semi_static);
return c.get<beta_offsets_s>();
}
void cg_uci_on_pusch_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::dynamic_type:
j.start_array("dynamic");
for (const auto& e1 : c.get<dynamic_l_>()) {
e1.to_json(j);
}
j.end_array();
break;
case types::semi_static:
j.write_fieldname("semiStatic");
c.get<beta_offsets_s>().to_json(j);
break;
default:
log_invalid_choice_id(type_, "cg_uci_on_pusch_c");
}
j.end_obj();
}
SRSASN_CODE cg_uci_on_pusch_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::dynamic_type:
HANDLE_CODE(pack_dyn_seq_of(bref, c.get<dynamic_l_>(), 1, 4));
break;
case types::semi_static:
HANDLE_CODE(c.get<beta_offsets_s>().pack(bref));
break;
default:
log_invalid_choice_id(type_, "cg_uci_on_pusch_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE cg_uci_on_pusch_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::dynamic_type:
HANDLE_CODE(unpack_dyn_seq_of(c.get<dynamic_l_>(), bref, 1, 4));
break;
case types::semi_static:
HANDLE_CODE(c.get<beta_offsets_s>().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "cg_uci_on_pusch_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* cg_uci_on_pusch_c::types_opts::to_string() const
{
static const char* options[] = {"dynamic", "semiStatic"};
return convert_enum_idx(options, 2, value, "cg_uci_on_pusch_c::types");
}
// DMRS-UplinkConfig ::= SEQUENCE
SRSASN_CODE dmrs_ul_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(dmrs_type_present, 1));
HANDLE_CODE(bref.pack(dmrs_add_position_present, 1));
HANDLE_CODE(bref.pack(phase_tracking_rs_present, 1));
HANDLE_CODE(bref.pack(max_len_present, 1));
HANDLE_CODE(bref.pack(transform_precoding_disabled_present, 1));
HANDLE_CODE(bref.pack(transform_precoding_enabled_present, 1));
if (dmrs_add_position_present) {
HANDLE_CODE(dmrs_add_position.pack(bref));
}
if (phase_tracking_rs_present) {
HANDLE_CODE(phase_tracking_rs.pack(bref));
}
if (transform_precoding_disabled_present) {
bref.pack(transform_precoding_disabled.ext, 1);
HANDLE_CODE(bref.pack(transform_precoding_disabled.scrambling_id0_present, 1));
HANDLE_CODE(bref.pack(transform_precoding_disabled.scrambling_id1_present, 1));
if (transform_precoding_disabled.scrambling_id0_present) {
HANDLE_CODE(pack_integer(bref, transform_precoding_disabled.scrambling_id0, (uint32_t)0u, (uint32_t)65535u));
}
if (transform_precoding_disabled.scrambling_id1_present) {
HANDLE_CODE(pack_integer(bref, transform_precoding_disabled.scrambling_id1, (uint32_t)0u, (uint32_t)65535u));
}
}
if (transform_precoding_enabled_present) {
bref.pack(transform_precoding_enabled.ext, 1);
HANDLE_CODE(bref.pack(transform_precoding_enabled.npusch_id_present, 1));
HANDLE_CODE(bref.pack(transform_precoding_enabled.seq_group_hop_present, 1));
HANDLE_CODE(bref.pack(transform_precoding_enabled.seq_hop_present, 1));
if (transform_precoding_enabled.npusch_id_present) {
HANDLE_CODE(pack_integer(bref, transform_precoding_enabled.npusch_id, (uint16_t)0u, (uint16_t)1007u));
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE dmrs_ul_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(dmrs_type_present, 1));
HANDLE_CODE(bref.unpack(dmrs_add_position_present, 1));
HANDLE_CODE(bref.unpack(phase_tracking_rs_present, 1));
HANDLE_CODE(bref.unpack(max_len_present, 1));
HANDLE_CODE(bref.unpack(transform_precoding_disabled_present, 1));
HANDLE_CODE(bref.unpack(transform_precoding_enabled_present, 1));
if (dmrs_add_position_present) {
HANDLE_CODE(dmrs_add_position.unpack(bref));
}
if (phase_tracking_rs_present) {
HANDLE_CODE(phase_tracking_rs.unpack(bref));
}
if (transform_precoding_disabled_present) {
bref.unpack(transform_precoding_disabled.ext, 1);
HANDLE_CODE(bref.unpack(transform_precoding_disabled.scrambling_id0_present, 1));
HANDLE_CODE(bref.unpack(transform_precoding_disabled.scrambling_id1_present, 1));
if (transform_precoding_disabled.scrambling_id0_present) {
HANDLE_CODE(unpack_integer(transform_precoding_disabled.scrambling_id0, bref, (uint32_t)0u, (uint32_t)65535u));
}
if (transform_precoding_disabled.scrambling_id1_present) {
HANDLE_CODE(unpack_integer(transform_precoding_disabled.scrambling_id1, bref, (uint32_t)0u, (uint32_t)65535u));
}
}
if (transform_precoding_enabled_present) {
bref.unpack(transform_precoding_enabled.ext, 1);
HANDLE_CODE(bref.unpack(transform_precoding_enabled.npusch_id_present, 1));
HANDLE_CODE(bref.unpack(transform_precoding_enabled.seq_group_hop_present, 1));
HANDLE_CODE(bref.unpack(transform_precoding_enabled.seq_hop_present, 1));
if (transform_precoding_enabled.npusch_id_present) {
HANDLE_CODE(unpack_integer(transform_precoding_enabled.npusch_id, bref, (uint16_t)0u, (uint16_t)1007u));
}
}
return SRSASN_SUCCESS;
}
void dmrs_ul_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (dmrs_type_present) {
j.write_str("dmrs-Type", "type2");
}
if (dmrs_add_position_present) {
j.write_str("dmrs-AdditionalPosition", dmrs_add_position.to_string());
}
if (phase_tracking_rs_present) {
j.write_fieldname("phaseTrackingRS");
phase_tracking_rs.to_json(j);
}
if (max_len_present) {
j.write_str("maxLength", "len2");
}
if (transform_precoding_disabled_present) {
j.write_fieldname("transformPrecodingDisabled");
j.start_obj();
if (transform_precoding_disabled.scrambling_id0_present) {
j.write_int("scramblingID0", transform_precoding_disabled.scrambling_id0);
}
if (transform_precoding_disabled.scrambling_id1_present) {
j.write_int("scramblingID1", transform_precoding_disabled.scrambling_id1);
}
j.end_obj();
}
if (transform_precoding_enabled_present) {
j.write_fieldname("transformPrecodingEnabled");
j.start_obj();
if (transform_precoding_enabled.npusch_id_present) {
j.write_int("nPUSCH-Identity", transform_precoding_enabled.npusch_id);
}
if (transform_precoding_enabled.seq_group_hop_present) {
j.write_str("sequenceGroupHopping", "disabled");
}
if (transform_precoding_enabled.seq_hop_present) {
j.write_str("sequenceHopping", "enabled");
}
j.end_obj();
}
j.end_obj();
}
const char* dmrs_ul_cfg_s::dmrs_add_position_opts::to_string() const
{
static const char* options[] = {"pos0", "pos1", "pos3"};
return convert_enum_idx(options, 3, value, "dmrs_ul_cfg_s::dmrs_add_position_e_");
}
uint8_t dmrs_ul_cfg_s::dmrs_add_position_opts::to_number() const
{
static const uint8_t options[] = {0, 1, 3};
return map_enum_number(options, 3, value, "dmrs_ul_cfg_s::dmrs_add_position_e_");
}
// PRACH-ResourceDedicatedBFR ::= CHOICE
void prach_res_ded_bfr_c::destroy_()
{
switch (type_) {
case types::ssb:
c.destroy<bfr_ssb_res_s>();
break;
case types::csi_rs:
c.destroy<bfr_csirs_res_s>();
break;
default:
break;
}
}
void prach_res_ded_bfr_c::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::ssb:
c.init<bfr_ssb_res_s>();
break;
case types::csi_rs:
c.init<bfr_csirs_res_s>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "prach_res_ded_bfr_c");
}
}
prach_res_ded_bfr_c::prach_res_ded_bfr_c(const prach_res_ded_bfr_c& other)
{
type_ = other.type();
switch (type_) {
case types::ssb:
c.init(other.c.get<bfr_ssb_res_s>());
break;
case types::csi_rs:
c.init(other.c.get<bfr_csirs_res_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "prach_res_ded_bfr_c");
}
}
prach_res_ded_bfr_c& prach_res_ded_bfr_c::operator=(const prach_res_ded_bfr_c& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::ssb:
c.set(other.c.get<bfr_ssb_res_s>());
break;
case types::csi_rs:
c.set(other.c.get<bfr_csirs_res_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "prach_res_ded_bfr_c");
}
return *this;
}
bfr_ssb_res_s& prach_res_ded_bfr_c::set_ssb()
{
set(types::ssb);
return c.get<bfr_ssb_res_s>();
}
bfr_csirs_res_s& prach_res_ded_bfr_c::set_csi_rs()
{
set(types::csi_rs);
return c.get<bfr_csirs_res_s>();
}
void prach_res_ded_bfr_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::ssb:
j.write_fieldname("ssb");
c.get<bfr_ssb_res_s>().to_json(j);
break;
case types::csi_rs:
j.write_fieldname("csi-RS");
c.get<bfr_csirs_res_s>().to_json(j);
break;
default:
log_invalid_choice_id(type_, "prach_res_ded_bfr_c");
}
j.end_obj();
}
SRSASN_CODE prach_res_ded_bfr_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::ssb:
HANDLE_CODE(c.get<bfr_ssb_res_s>().pack(bref));
break;
case types::csi_rs:
HANDLE_CODE(c.get<bfr_csirs_res_s>().pack(bref));
break;
default:
log_invalid_choice_id(type_, "prach_res_ded_bfr_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE prach_res_ded_bfr_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::ssb:
HANDLE_CODE(c.get<bfr_ssb_res_s>().unpack(bref));
break;
case types::csi_rs:
HANDLE_CODE(c.get<bfr_csirs_res_s>().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "prach_res_ded_bfr_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* prach_res_ded_bfr_c::types_opts::to_string() const
{
static const char* options[] = {"ssb", "csi-RS"};
return convert_enum_idx(options, 2, value, "prach_res_ded_bfr_c::types");
}
// PUCCH-FormatConfig ::= SEQUENCE
SRSASN_CODE pucch_format_cfg_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(interslot_freq_hop_present, 1));
HANDLE_CODE(bref.pack(add_dmrs_present, 1));
HANDLE_CODE(bref.pack(max_code_rate_present, 1));
HANDLE_CODE(bref.pack(nrof_slots_present, 1));
HANDLE_CODE(bref.pack(pi2_bpsk_present, 1));
HANDLE_CODE(bref.pack(simul_harq_ack_csi_present, 1));
if (max_code_rate_present) {
HANDLE_CODE(max_code_rate.pack(bref));
}
if (nrof_slots_present) {
HANDLE_CODE(nrof_slots.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pucch_format_cfg_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(interslot_freq_hop_present, 1));
HANDLE_CODE(bref.unpack(add_dmrs_present, 1));
HANDLE_CODE(bref.unpack(max_code_rate_present, 1));
HANDLE_CODE(bref.unpack(nrof_slots_present, 1));
HANDLE_CODE(bref.unpack(pi2_bpsk_present, 1));
HANDLE_CODE(bref.unpack(simul_harq_ack_csi_present, 1));
if (max_code_rate_present) {
HANDLE_CODE(max_code_rate.unpack(bref));
}
if (nrof_slots_present) {
HANDLE_CODE(nrof_slots.unpack(bref));
}
return SRSASN_SUCCESS;
}
void pucch_format_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (interslot_freq_hop_present) {
j.write_str("interslotFrequencyHopping", "enabled");
}
if (add_dmrs_present) {
j.write_str("additionalDMRS", "true");
}
if (max_code_rate_present) {
j.write_str("maxCodeRate", max_code_rate.to_string());
}
if (nrof_slots_present) {
j.write_str("nrofSlots", nrof_slots.to_string());
}
if (pi2_bpsk_present) {
j.write_str("pi2BPSK", "enabled");
}
if (simul_harq_ack_csi_present) {
j.write_str("simultaneousHARQ-ACK-CSI", "true");
}
j.end_obj();
}
const char* pucch_format_cfg_s::nrof_slots_opts::to_string() const
{
static const char* options[] = {"n2", "n4", "n8"};
return convert_enum_idx(options, 3, value, "pucch_format_cfg_s::nrof_slots_e_");
}
uint8_t pucch_format_cfg_s::nrof_slots_opts::to_number() const
{
static const uint8_t options[] = {2, 4, 8};
return map_enum_number(options, 3, value, "pucch_format_cfg_s::nrof_slots_e_");
}
// PUCCH-PowerControl ::= SEQUENCE
SRSASN_CODE pucch_pwr_ctrl_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(delta_f_pucch_f0_present, 1));
HANDLE_CODE(bref.pack(delta_f_pucch_f1_present, 1));
HANDLE_CODE(bref.pack(delta_f_pucch_f2_present, 1));
HANDLE_CODE(bref.pack(delta_f_pucch_f3_present, 1));
HANDLE_CODE(bref.pack(delta_f_pucch_f4_present, 1));
HANDLE_CODE(bref.pack(p0_set_present, 1));
HANDLE_CODE(bref.pack(pathloss_ref_rss_present, 1));
HANDLE_CODE(bref.pack(two_pucch_pc_adjustment_states_present, 1));
if (delta_f_pucch_f0_present) {
HANDLE_CODE(pack_integer(bref, delta_f_pucch_f0, (int8_t)-16, (int8_t)15));
}
if (delta_f_pucch_f1_present) {
HANDLE_CODE(pack_integer(bref, delta_f_pucch_f1, (int8_t)-16, (int8_t)15));
}
if (delta_f_pucch_f2_present) {
HANDLE_CODE(pack_integer(bref, delta_f_pucch_f2, (int8_t)-16, (int8_t)15));
}
if (delta_f_pucch_f3_present) {
HANDLE_CODE(pack_integer(bref, delta_f_pucch_f3, (int8_t)-16, (int8_t)15));
}
if (delta_f_pucch_f4_present) {
HANDLE_CODE(pack_integer(bref, delta_f_pucch_f4, (int8_t)-16, (int8_t)15));
}
if (p0_set_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, p0_set, 1, 8));
}
if (pathloss_ref_rss_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, pathloss_ref_rss, 1, 4));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pucch_pwr_ctrl_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(delta_f_pucch_f0_present, 1));
HANDLE_CODE(bref.unpack(delta_f_pucch_f1_present, 1));
HANDLE_CODE(bref.unpack(delta_f_pucch_f2_present, 1));
HANDLE_CODE(bref.unpack(delta_f_pucch_f3_present, 1));
HANDLE_CODE(bref.unpack(delta_f_pucch_f4_present, 1));
HANDLE_CODE(bref.unpack(p0_set_present, 1));
HANDLE_CODE(bref.unpack(pathloss_ref_rss_present, 1));
HANDLE_CODE(bref.unpack(two_pucch_pc_adjustment_states_present, 1));
if (delta_f_pucch_f0_present) {
HANDLE_CODE(unpack_integer(delta_f_pucch_f0, bref, (int8_t)-16, (int8_t)15));
}
if (delta_f_pucch_f1_present) {
HANDLE_CODE(unpack_integer(delta_f_pucch_f1, bref, (int8_t)-16, (int8_t)15));
}
if (delta_f_pucch_f2_present) {
HANDLE_CODE(unpack_integer(delta_f_pucch_f2, bref, (int8_t)-16, (int8_t)15));
}
if (delta_f_pucch_f3_present) {
HANDLE_CODE(unpack_integer(delta_f_pucch_f3, bref, (int8_t)-16, (int8_t)15));
}
if (delta_f_pucch_f4_present) {
HANDLE_CODE(unpack_integer(delta_f_pucch_f4, bref, (int8_t)-16, (int8_t)15));
}
if (p0_set_present) {
HANDLE_CODE(unpack_dyn_seq_of(p0_set, bref, 1, 8));
}
if (pathloss_ref_rss_present) {
HANDLE_CODE(unpack_dyn_seq_of(pathloss_ref_rss, bref, 1, 4));
}
return SRSASN_SUCCESS;
}
void pucch_pwr_ctrl_s::to_json(json_writer& j) const
{
j.start_obj();
if (delta_f_pucch_f0_present) {
j.write_int("deltaF-PUCCH-f0", delta_f_pucch_f0);
}
if (delta_f_pucch_f1_present) {
j.write_int("deltaF-PUCCH-f1", delta_f_pucch_f1);
}
if (delta_f_pucch_f2_present) {
j.write_int("deltaF-PUCCH-f2", delta_f_pucch_f2);
}
if (delta_f_pucch_f3_present) {
j.write_int("deltaF-PUCCH-f3", delta_f_pucch_f3);
}
if (delta_f_pucch_f4_present) {
j.write_int("deltaF-PUCCH-f4", delta_f_pucch_f4);
}
if (p0_set_present) {
j.start_array("p0-Set");
for (const auto& e1 : p0_set) {
e1.to_json(j);
}
j.end_array();
}
if (pathloss_ref_rss_present) {
j.start_array("pathlossReferenceRSs");
for (const auto& e1 : pathloss_ref_rss) {
e1.to_json(j);
}
j.end_array();
}
if (two_pucch_pc_adjustment_states_present) {
j.write_str("twoPUCCH-PC-AdjustmentStates", "twoStates");
}
j.end_obj();
}
// PUCCH-Resource ::= SEQUENCE
SRSASN_CODE pucch_res_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(intra_slot_freq_hop_present, 1));
HANDLE_CODE(bref.pack(second_hop_prb_present, 1));
HANDLE_CODE(pack_integer(bref, pucch_res_id, (uint8_t)0u, (uint8_t)127u));
HANDLE_CODE(pack_integer(bref, start_prb, (uint16_t)0u, (uint16_t)274u));
if (second_hop_prb_present) {
HANDLE_CODE(pack_integer(bref, second_hop_prb, (uint16_t)0u, (uint16_t)274u));
}
HANDLE_CODE(format.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE pucch_res_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(intra_slot_freq_hop_present, 1));
HANDLE_CODE(bref.unpack(second_hop_prb_present, 1));
HANDLE_CODE(unpack_integer(pucch_res_id, bref, (uint8_t)0u, (uint8_t)127u));
HANDLE_CODE(unpack_integer(start_prb, bref, (uint16_t)0u, (uint16_t)274u));
if (second_hop_prb_present) {
HANDLE_CODE(unpack_integer(second_hop_prb, bref, (uint16_t)0u, (uint16_t)274u));
}
HANDLE_CODE(format.unpack(bref));
return SRSASN_SUCCESS;
}
void pucch_res_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("pucch-ResourceId", pucch_res_id);
j.write_int("startingPRB", start_prb);
if (intra_slot_freq_hop_present) {
j.write_str("intraSlotFrequencyHopping", "enabled");
}
if (second_hop_prb_present) {
j.write_int("secondHopPRB", second_hop_prb);
}
j.write_fieldname("format");
format.to_json(j);
j.end_obj();
}
void pucch_res_s::format_c_::destroy_()
{
switch (type_) {
case types::format0:
c.destroy<pucch_format0_s>();
break;
case types::format1:
c.destroy<pucch_format1_s>();
break;
case types::format2:
c.destroy<pucch_format2_s>();
break;
case types::format3:
c.destroy<pucch_format3_s>();
break;
case types::format4:
c.destroy<pucch_format4_s>();
break;
default:
break;
}
}
void pucch_res_s::format_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::format0:
c.init<pucch_format0_s>();
break;
case types::format1:
c.init<pucch_format1_s>();
break;
case types::format2:
c.init<pucch_format2_s>();
break;
case types::format3:
c.init<pucch_format3_s>();
break;
case types::format4:
c.init<pucch_format4_s>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "pucch_res_s::format_c_");
}
}
pucch_res_s::format_c_::format_c_(const pucch_res_s::format_c_& other)
{
type_ = other.type();
switch (type_) {
case types::format0:
c.init(other.c.get<pucch_format0_s>());
break;
case types::format1:
c.init(other.c.get<pucch_format1_s>());
break;
case types::format2:
c.init(other.c.get<pucch_format2_s>());
break;
case types::format3:
c.init(other.c.get<pucch_format3_s>());
break;
case types::format4:
c.init(other.c.get<pucch_format4_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "pucch_res_s::format_c_");
}
}
pucch_res_s::format_c_& pucch_res_s::format_c_::operator=(const pucch_res_s::format_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::format0:
c.set(other.c.get<pucch_format0_s>());
break;
case types::format1:
c.set(other.c.get<pucch_format1_s>());
break;
case types::format2:
c.set(other.c.get<pucch_format2_s>());
break;
case types::format3:
c.set(other.c.get<pucch_format3_s>());
break;
case types::format4:
c.set(other.c.get<pucch_format4_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "pucch_res_s::format_c_");
}
return *this;
}
pucch_format0_s& pucch_res_s::format_c_::set_format0()
{
set(types::format0);
return c.get<pucch_format0_s>();
}
pucch_format1_s& pucch_res_s::format_c_::set_format1()
{
set(types::format1);
return c.get<pucch_format1_s>();
}
pucch_format2_s& pucch_res_s::format_c_::set_format2()
{
set(types::format2);
return c.get<pucch_format2_s>();
}
pucch_format3_s& pucch_res_s::format_c_::set_format3()
{
set(types::format3);
return c.get<pucch_format3_s>();
}
pucch_format4_s& pucch_res_s::format_c_::set_format4()
{
set(types::format4);
return c.get<pucch_format4_s>();
}
void pucch_res_s::format_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::format0:
j.write_fieldname("format0");
c.get<pucch_format0_s>().to_json(j);
break;
case types::format1:
j.write_fieldname("format1");
c.get<pucch_format1_s>().to_json(j);
break;
case types::format2:
j.write_fieldname("format2");
c.get<pucch_format2_s>().to_json(j);
break;
case types::format3:
j.write_fieldname("format3");
c.get<pucch_format3_s>().to_json(j);
break;
case types::format4:
j.write_fieldname("format4");
c.get<pucch_format4_s>().to_json(j);
break;
default:
log_invalid_choice_id(type_, "pucch_res_s::format_c_");
}
j.end_obj();
}
SRSASN_CODE pucch_res_s::format_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::format0:
HANDLE_CODE(c.get<pucch_format0_s>().pack(bref));
break;
case types::format1:
HANDLE_CODE(c.get<pucch_format1_s>().pack(bref));
break;
case types::format2:
HANDLE_CODE(c.get<pucch_format2_s>().pack(bref));
break;
case types::format3:
HANDLE_CODE(c.get<pucch_format3_s>().pack(bref));
break;
case types::format4:
HANDLE_CODE(c.get<pucch_format4_s>().pack(bref));
break;
default:
log_invalid_choice_id(type_, "pucch_res_s::format_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pucch_res_s::format_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::format0:
HANDLE_CODE(c.get<pucch_format0_s>().unpack(bref));
break;
case types::format1:
HANDLE_CODE(c.get<pucch_format1_s>().unpack(bref));
break;
case types::format2:
HANDLE_CODE(c.get<pucch_format2_s>().unpack(bref));
break;
case types::format3:
HANDLE_CODE(c.get<pucch_format3_s>().unpack(bref));
break;
case types::format4:
HANDLE_CODE(c.get<pucch_format4_s>().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "pucch_res_s::format_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* pucch_res_s::format_c_::types_opts::to_string() const
{
static const char* options[] = {"format0", "format1", "format2", "format3", "format4"};
return convert_enum_idx(options, 5, value, "pucch_res_s::format_c_::types");
}
uint8_t pucch_res_s::format_c_::types_opts::to_number() const
{
static const uint8_t options[] = {0, 1, 2, 3, 4};
return map_enum_number(options, 5, value, "pucch_res_s::format_c_::types");
}
// PUCCH-ResourceSet ::= SEQUENCE
SRSASN_CODE pucch_res_set_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(max_payload_size_present, 1));
HANDLE_CODE(pack_integer(bref, pucch_res_set_id, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(pack_dyn_seq_of(bref, res_list, 1, 32, integer_packer<uint8_t>(0, 127)));
if (max_payload_size_present) {
HANDLE_CODE(pack_integer(bref, max_payload_size, (uint16_t)4u, (uint16_t)256u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pucch_res_set_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(max_payload_size_present, 1));
HANDLE_CODE(unpack_integer(pucch_res_set_id, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(unpack_dyn_seq_of(res_list, bref, 1, 32, integer_packer<uint8_t>(0, 127)));
if (max_payload_size_present) {
HANDLE_CODE(unpack_integer(max_payload_size, bref, (uint16_t)4u, (uint16_t)256u));
}
return SRSASN_SUCCESS;
}
void pucch_res_set_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("pucch-ResourceSetId", pucch_res_set_id);
j.start_array("resourceList");
for (const auto& e1 : res_list) {
j.write_int(e1);
}
j.end_array();
if (max_payload_size_present) {
j.write_int("maxPayloadSize", max_payload_size);
}
j.end_obj();
}
// PUCCH-SpatialRelationInfo ::= SEQUENCE
SRSASN_CODE pucch_spatial_relation_info_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(serving_cell_id_present, 1));
HANDLE_CODE(pack_integer(bref, pucch_spatial_relation_info_id, (uint8_t)1u, (uint8_t)8u));
if (serving_cell_id_present) {
HANDLE_CODE(pack_integer(bref, serving_cell_id, (uint8_t)0u, (uint8_t)31u));
}
HANDLE_CODE(ref_sig.pack(bref));
HANDLE_CODE(pack_integer(bref, pucch_pathloss_ref_rs_id, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(pack_integer(bref, p0_pucch_id, (uint8_t)1u, (uint8_t)8u));
HANDLE_CODE(closed_loop_idx.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE pucch_spatial_relation_info_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(serving_cell_id_present, 1));
HANDLE_CODE(unpack_integer(pucch_spatial_relation_info_id, bref, (uint8_t)1u, (uint8_t)8u));
if (serving_cell_id_present) {
HANDLE_CODE(unpack_integer(serving_cell_id, bref, (uint8_t)0u, (uint8_t)31u));
}
HANDLE_CODE(ref_sig.unpack(bref));
HANDLE_CODE(unpack_integer(pucch_pathloss_ref_rs_id, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(unpack_integer(p0_pucch_id, bref, (uint8_t)1u, (uint8_t)8u));
HANDLE_CODE(closed_loop_idx.unpack(bref));
return SRSASN_SUCCESS;
}
void pucch_spatial_relation_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("pucch-SpatialRelationInfoId", pucch_spatial_relation_info_id);
if (serving_cell_id_present) {
j.write_int("servingCellId", serving_cell_id);
}
j.write_fieldname("referenceSignal");
ref_sig.to_json(j);
j.write_int("pucch-PathlossReferenceRS-Id", pucch_pathloss_ref_rs_id);
j.write_int("p0-PUCCH-Id", p0_pucch_id);
j.write_str("closedLoopIndex", closed_loop_idx.to_string());
j.end_obj();
}
void pucch_spatial_relation_info_s::ref_sig_c_::destroy_()
{
switch (type_) {
case types::srs:
c.destroy<srs_s_>();
break;
default:
break;
}
}
void pucch_spatial_relation_info_s::ref_sig_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::ssb_idx:
break;
case types::csi_rs_idx:
break;
case types::srs:
c.init<srs_s_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "pucch_spatial_relation_info_s::ref_sig_c_");
}
}
pucch_spatial_relation_info_s::ref_sig_c_::ref_sig_c_(const pucch_spatial_relation_info_s::ref_sig_c_& other)
{
type_ = other.type();
switch (type_) {
case types::ssb_idx:
c.init(other.c.get<uint8_t>());
break;
case types::csi_rs_idx:
c.init(other.c.get<uint8_t>());
break;
case types::srs:
c.init(other.c.get<srs_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "pucch_spatial_relation_info_s::ref_sig_c_");
}
}
pucch_spatial_relation_info_s::ref_sig_c_&
pucch_spatial_relation_info_s::ref_sig_c_::operator=(const pucch_spatial_relation_info_s::ref_sig_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::ssb_idx:
c.set(other.c.get<uint8_t>());
break;
case types::csi_rs_idx:
c.set(other.c.get<uint8_t>());
break;
case types::srs:
c.set(other.c.get<srs_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "pucch_spatial_relation_info_s::ref_sig_c_");
}
return *this;
}
uint8_t& pucch_spatial_relation_info_s::ref_sig_c_::set_ssb_idx()
{
set(types::ssb_idx);
return c.get<uint8_t>();
}
uint8_t& pucch_spatial_relation_info_s::ref_sig_c_::set_csi_rs_idx()
{
set(types::csi_rs_idx);
return c.get<uint8_t>();
}
pucch_spatial_relation_info_s::ref_sig_c_::srs_s_& pucch_spatial_relation_info_s::ref_sig_c_::set_srs()
{
set(types::srs);
return c.get<srs_s_>();
}
void pucch_spatial_relation_info_s::ref_sig_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::ssb_idx:
j.write_int("ssb-Index", c.get<uint8_t>());
break;
case types::csi_rs_idx:
j.write_int("csi-RS-Index", c.get<uint8_t>());
break;
case types::srs:
j.write_fieldname("srs");
j.start_obj();
j.write_int("resource", c.get<srs_s_>().res);
j.write_int("uplinkBWP", c.get<srs_s_>().ul_bwp);
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "pucch_spatial_relation_info_s::ref_sig_c_");
}
j.end_obj();
}
SRSASN_CODE pucch_spatial_relation_info_s::ref_sig_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::ssb_idx:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)63u));
break;
case types::csi_rs_idx:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)191u));
break;
case types::srs:
HANDLE_CODE(pack_integer(bref, c.get<srs_s_>().res, (uint8_t)0u, (uint8_t)63u));
HANDLE_CODE(pack_integer(bref, c.get<srs_s_>().ul_bwp, (uint8_t)0u, (uint8_t)4u));
break;
default:
log_invalid_choice_id(type_, "pucch_spatial_relation_info_s::ref_sig_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pucch_spatial_relation_info_s::ref_sig_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::ssb_idx:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)63u));
break;
case types::csi_rs_idx:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)191u));
break;
case types::srs:
HANDLE_CODE(unpack_integer(c.get<srs_s_>().res, bref, (uint8_t)0u, (uint8_t)63u));
HANDLE_CODE(unpack_integer(c.get<srs_s_>().ul_bwp, bref, (uint8_t)0u, (uint8_t)4u));
break;
default:
log_invalid_choice_id(type_, "pucch_spatial_relation_info_s::ref_sig_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* pucch_spatial_relation_info_s::ref_sig_c_::types_opts::to_string() const
{
static const char* options[] = {"ssb-Index", "csi-RS-Index", "srs"};
return convert_enum_idx(options, 3, value, "pucch_spatial_relation_info_s::ref_sig_c_::types");
}
const char* pucch_spatial_relation_info_s::closed_loop_idx_opts::to_string() const
{
static const char* options[] = {"i0", "i1"};
return convert_enum_idx(options, 2, value, "pucch_spatial_relation_info_s::closed_loop_idx_e_");
}
uint8_t pucch_spatial_relation_info_s::closed_loop_idx_opts::to_number() const
{
static const uint8_t options[] = {0, 1};
return map_enum_number(options, 2, value, "pucch_spatial_relation_info_s::closed_loop_idx_e_");
}
// PUSCH-PowerControl ::= SEQUENCE
SRSASN_CODE pusch_pwr_ctrl_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(tpc_accumulation_present, 1));
HANDLE_CODE(bref.pack(msg3_alpha_present, 1));
HANDLE_CODE(bref.pack(p0_nominal_without_grant_present, 1));
HANDLE_CODE(bref.pack(p0_alpha_sets_present, 1));
HANDLE_CODE(bref.pack(pathloss_ref_rs_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(pathloss_ref_rs_to_release_list_present, 1));
HANDLE_CODE(bref.pack(two_pusch_pc_adjustment_states_present, 1));
HANDLE_CODE(bref.pack(delta_mcs_present, 1));
HANDLE_CODE(bref.pack(sri_pusch_map_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(sri_pusch_map_to_release_list_present, 1));
if (msg3_alpha_present) {
HANDLE_CODE(msg3_alpha.pack(bref));
}
if (p0_nominal_without_grant_present) {
HANDLE_CODE(pack_integer(bref, p0_nominal_without_grant, (int16_t)-202, (int16_t)24));
}
if (p0_alpha_sets_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, p0_alpha_sets, 1, 30));
}
if (pathloss_ref_rs_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, pathloss_ref_rs_to_add_mod_list, 1, 4));
}
if (pathloss_ref_rs_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, pathloss_ref_rs_to_release_list, 1, 4, integer_packer<uint8_t>(0, 3)));
}
if (sri_pusch_map_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, sri_pusch_map_to_add_mod_list, 1, 16));
}
if (sri_pusch_map_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, sri_pusch_map_to_release_list, 1, 16, integer_packer<uint8_t>(0, 15)));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pusch_pwr_ctrl_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(tpc_accumulation_present, 1));
HANDLE_CODE(bref.unpack(msg3_alpha_present, 1));
HANDLE_CODE(bref.unpack(p0_nominal_without_grant_present, 1));
HANDLE_CODE(bref.unpack(p0_alpha_sets_present, 1));
HANDLE_CODE(bref.unpack(pathloss_ref_rs_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(pathloss_ref_rs_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(two_pusch_pc_adjustment_states_present, 1));
HANDLE_CODE(bref.unpack(delta_mcs_present, 1));
HANDLE_CODE(bref.unpack(sri_pusch_map_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(sri_pusch_map_to_release_list_present, 1));
if (msg3_alpha_present) {
HANDLE_CODE(msg3_alpha.unpack(bref));
}
if (p0_nominal_without_grant_present) {
HANDLE_CODE(unpack_integer(p0_nominal_without_grant, bref, (int16_t)-202, (int16_t)24));
}
if (p0_alpha_sets_present) {
HANDLE_CODE(unpack_dyn_seq_of(p0_alpha_sets, bref, 1, 30));
}
if (pathloss_ref_rs_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(pathloss_ref_rs_to_add_mod_list, bref, 1, 4));
}
if (pathloss_ref_rs_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(pathloss_ref_rs_to_release_list, bref, 1, 4, integer_packer<uint8_t>(0, 3)));
}
if (sri_pusch_map_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(sri_pusch_map_to_add_mod_list, bref, 1, 16));
}
if (sri_pusch_map_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(sri_pusch_map_to_release_list, bref, 1, 16, integer_packer<uint8_t>(0, 15)));
}
return SRSASN_SUCCESS;
}
void pusch_pwr_ctrl_s::to_json(json_writer& j) const
{
j.start_obj();
if (tpc_accumulation_present) {
j.write_str("tpc-Accumulation", "disabled");
}
if (msg3_alpha_present) {
j.write_str("msg3-Alpha", msg3_alpha.to_string());
}
if (p0_nominal_without_grant_present) {
j.write_int("p0-NominalWithoutGrant", p0_nominal_without_grant);
}
if (p0_alpha_sets_present) {
j.start_array("p0-AlphaSets");
for (const auto& e1 : p0_alpha_sets) {
e1.to_json(j);
}
j.end_array();
}
if (pathloss_ref_rs_to_add_mod_list_present) {
j.start_array("pathlossReferenceRSToAddModList");
for (const auto& e1 : pathloss_ref_rs_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (pathloss_ref_rs_to_release_list_present) {
j.start_array("pathlossReferenceRSToReleaseList");
for (const auto& e1 : pathloss_ref_rs_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (two_pusch_pc_adjustment_states_present) {
j.write_str("twoPUSCH-PC-AdjustmentStates", "twoStates");
}
if (delta_mcs_present) {
j.write_str("deltaMCS", "enabled");
}
if (sri_pusch_map_to_add_mod_list_present) {
j.start_array("sri-PUSCH-MappingToAddModList");
for (const auto& e1 : sri_pusch_map_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (sri_pusch_map_to_release_list_present) {
j.start_array("sri-PUSCH-MappingToReleaseList");
for (const auto& e1 : sri_pusch_map_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
j.end_obj();
}
// RA-Prioritization ::= SEQUENCE
SRSASN_CODE ra_prioritization_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(scaling_factor_bi_present, 1));
HANDLE_CODE(pwr_ramp_step_high_prio.pack(bref));
if (scaling_factor_bi_present) {
HANDLE_CODE(scaling_factor_bi.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ra_prioritization_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(scaling_factor_bi_present, 1));
HANDLE_CODE(pwr_ramp_step_high_prio.unpack(bref));
if (scaling_factor_bi_present) {
HANDLE_CODE(scaling_factor_bi.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ra_prioritization_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("powerRampingStepHighPriority", pwr_ramp_step_high_prio.to_string());
if (scaling_factor_bi_present) {
j.write_str("scalingFactorBI", scaling_factor_bi.to_string());
}
j.end_obj();
}
const char* ra_prioritization_s::pwr_ramp_step_high_prio_opts::to_string() const
{
static const char* options[] = {"dB0", "dB2", "dB4", "dB6"};
return convert_enum_idx(options, 4, value, "ra_prioritization_s::pwr_ramp_step_high_prio_e_");
}
uint8_t ra_prioritization_s::pwr_ramp_step_high_prio_opts::to_number() const
{
static const uint8_t options[] = {0, 2, 4, 6};
return map_enum_number(options, 4, value, "ra_prioritization_s::pwr_ramp_step_high_prio_e_");
}
const char* ra_prioritization_s::scaling_factor_bi_opts::to_string() const
{
static const char* options[] = {"zero", "dot25", "dot5", "dot75"};
return convert_enum_idx(options, 4, value, "ra_prioritization_s::scaling_factor_bi_e_");
}
uint8_t ra_prioritization_s::scaling_factor_bi_opts::to_number() const
{
static const uint8_t options[] = {0, 25, 5, 75};
return map_enum_number(options, 4, value, "ra_prioritization_s::scaling_factor_bi_e_");
}
// SRS-Resource ::= SEQUENCE
SRSASN_CODE srs_res_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(ptrs_port_idx_present, 1));
HANDLE_CODE(bref.pack(spatial_relation_info_present, 1));
HANDLE_CODE(pack_integer(bref, srs_res_id, (uint8_t)0u, (uint8_t)63u));
HANDLE_CODE(nrof_srs_ports.pack(bref));
if (ptrs_port_idx_present) {
HANDLE_CODE(ptrs_port_idx.pack(bref));
}
HANDLE_CODE(tx_comb.pack(bref));
HANDLE_CODE(pack_integer(bref, res_map.start_position, (uint8_t)0u, (uint8_t)5u));
HANDLE_CODE(res_map.nrof_symbols.pack(bref));
HANDLE_CODE(res_map.repeat_factor.pack(bref));
HANDLE_CODE(pack_integer(bref, freq_domain_position, (uint8_t)0u, (uint8_t)67u));
HANDLE_CODE(pack_integer(bref, freq_domain_shift, (uint16_t)0u, (uint16_t)268u));
HANDLE_CODE(pack_integer(bref, freq_hop.c_srs, (uint8_t)0u, (uint8_t)63u));
HANDLE_CODE(pack_integer(bref, freq_hop.b_srs, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(pack_integer(bref, freq_hop.b_hop, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(group_or_seq_hop.pack(bref));
HANDLE_CODE(res_type.pack(bref));
HANDLE_CODE(pack_integer(bref, seq_id, (uint16_t)0u, (uint16_t)1023u));
if (spatial_relation_info_present) {
HANDLE_CODE(spatial_relation_info.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE srs_res_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(ptrs_port_idx_present, 1));
HANDLE_CODE(bref.unpack(spatial_relation_info_present, 1));
HANDLE_CODE(unpack_integer(srs_res_id, bref, (uint8_t)0u, (uint8_t)63u));
HANDLE_CODE(nrof_srs_ports.unpack(bref));
if (ptrs_port_idx_present) {
HANDLE_CODE(ptrs_port_idx.unpack(bref));
}
HANDLE_CODE(tx_comb.unpack(bref));
HANDLE_CODE(unpack_integer(res_map.start_position, bref, (uint8_t)0u, (uint8_t)5u));
HANDLE_CODE(res_map.nrof_symbols.unpack(bref));
HANDLE_CODE(res_map.repeat_factor.unpack(bref));
HANDLE_CODE(unpack_integer(freq_domain_position, bref, (uint8_t)0u, (uint8_t)67u));
HANDLE_CODE(unpack_integer(freq_domain_shift, bref, (uint16_t)0u, (uint16_t)268u));
HANDLE_CODE(unpack_integer(freq_hop.c_srs, bref, (uint8_t)0u, (uint8_t)63u));
HANDLE_CODE(unpack_integer(freq_hop.b_srs, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(unpack_integer(freq_hop.b_hop, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(group_or_seq_hop.unpack(bref));
HANDLE_CODE(res_type.unpack(bref));
HANDLE_CODE(unpack_integer(seq_id, bref, (uint16_t)0u, (uint16_t)1023u));
if (spatial_relation_info_present) {
HANDLE_CODE(spatial_relation_info.unpack(bref));
}
return SRSASN_SUCCESS;
}
void srs_res_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("srs-ResourceId", srs_res_id);
j.write_str("nrofSRS-Ports", nrof_srs_ports.to_string());
if (ptrs_port_idx_present) {
j.write_str("ptrs-PortIndex", ptrs_port_idx.to_string());
}
j.write_fieldname("transmissionComb");
tx_comb.to_json(j);
j.write_fieldname("resourceMapping");
j.start_obj();
j.write_int("startPosition", res_map.start_position);
j.write_str("nrofSymbols", res_map.nrof_symbols.to_string());
j.write_str("repetitionFactor", res_map.repeat_factor.to_string());
j.end_obj();
j.write_int("freqDomainPosition", freq_domain_position);
j.write_int("freqDomainShift", freq_domain_shift);
j.write_fieldname("freqHopping");
j.start_obj();
j.write_int("c-SRS", freq_hop.c_srs);
j.write_int("b-SRS", freq_hop.b_srs);
j.write_int("b-hop", freq_hop.b_hop);
j.end_obj();
j.write_str("groupOrSequenceHopping", group_or_seq_hop.to_string());
j.write_fieldname("resourceType");
res_type.to_json(j);
j.write_int("sequenceId", seq_id);
if (spatial_relation_info_present) {
j.write_fieldname("spatialRelationInfo");
spatial_relation_info.to_json(j);
}
j.end_obj();
}
const char* srs_res_s::nrof_srs_ports_opts::to_string() const
{
static const char* options[] = {"port1", "ports2", "ports4"};
return convert_enum_idx(options, 3, value, "srs_res_s::nrof_srs_ports_e_");
}
uint8_t srs_res_s::nrof_srs_ports_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 4};
return map_enum_number(options, 3, value, "srs_res_s::nrof_srs_ports_e_");
}
const char* srs_res_s::ptrs_port_idx_opts::to_string() const
{
static const char* options[] = {"n0", "n1"};
return convert_enum_idx(options, 2, value, "srs_res_s::ptrs_port_idx_e_");
}
uint8_t srs_res_s::ptrs_port_idx_opts::to_number() const
{
static const uint8_t options[] = {0, 1};
return map_enum_number(options, 2, value, "srs_res_s::ptrs_port_idx_e_");
}
void srs_res_s::tx_comb_c_::destroy_()
{
switch (type_) {
case types::n2:
c.destroy<n2_s_>();
break;
case types::n4:
c.destroy<n4_s_>();
break;
default:
break;
}
}
void srs_res_s::tx_comb_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::n2:
c.init<n2_s_>();
break;
case types::n4:
c.init<n4_s_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "srs_res_s::tx_comb_c_");
}
}
srs_res_s::tx_comb_c_::tx_comb_c_(const srs_res_s::tx_comb_c_& other)
{
type_ = other.type();
switch (type_) {
case types::n2:
c.init(other.c.get<n2_s_>());
break;
case types::n4:
c.init(other.c.get<n4_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "srs_res_s::tx_comb_c_");
}
}
srs_res_s::tx_comb_c_& srs_res_s::tx_comb_c_::operator=(const srs_res_s::tx_comb_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::n2:
c.set(other.c.get<n2_s_>());
break;
case types::n4:
c.set(other.c.get<n4_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "srs_res_s::tx_comb_c_");
}
return *this;
}
srs_res_s::tx_comb_c_::n2_s_& srs_res_s::tx_comb_c_::set_n2()
{
set(types::n2);
return c.get<n2_s_>();
}
srs_res_s::tx_comb_c_::n4_s_& srs_res_s::tx_comb_c_::set_n4()
{
set(types::n4);
return c.get<n4_s_>();
}
void srs_res_s::tx_comb_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::n2:
j.write_fieldname("n2");
j.start_obj();
j.write_int("combOffset-n2", c.get<n2_s_>().comb_offset_n2);
j.write_int("cyclicShift-n2", c.get<n2_s_>().cyclic_shift_n2);
j.end_obj();
break;
case types::n4:
j.write_fieldname("n4");
j.start_obj();
j.write_int("combOffset-n4", c.get<n4_s_>().comb_offset_n4);
j.write_int("cyclicShift-n4", c.get<n4_s_>().cyclic_shift_n4);
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "srs_res_s::tx_comb_c_");
}
j.end_obj();
}
SRSASN_CODE srs_res_s::tx_comb_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::n2:
HANDLE_CODE(pack_integer(bref, c.get<n2_s_>().comb_offset_n2, (uint8_t)0u, (uint8_t)1u));
HANDLE_CODE(pack_integer(bref, c.get<n2_s_>().cyclic_shift_n2, (uint8_t)0u, (uint8_t)7u));
break;
case types::n4:
HANDLE_CODE(pack_integer(bref, c.get<n4_s_>().comb_offset_n4, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(pack_integer(bref, c.get<n4_s_>().cyclic_shift_n4, (uint8_t)0u, (uint8_t)11u));
break;
default:
log_invalid_choice_id(type_, "srs_res_s::tx_comb_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE srs_res_s::tx_comb_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::n2:
HANDLE_CODE(unpack_integer(c.get<n2_s_>().comb_offset_n2, bref, (uint8_t)0u, (uint8_t)1u));
HANDLE_CODE(unpack_integer(c.get<n2_s_>().cyclic_shift_n2, bref, (uint8_t)0u, (uint8_t)7u));
break;
case types::n4:
HANDLE_CODE(unpack_integer(c.get<n4_s_>().comb_offset_n4, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(unpack_integer(c.get<n4_s_>().cyclic_shift_n4, bref, (uint8_t)0u, (uint8_t)11u));
break;
default:
log_invalid_choice_id(type_, "srs_res_s::tx_comb_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* srs_res_s::tx_comb_c_::types_opts::to_string() const
{
static const char* options[] = {"n2", "n4"};
return convert_enum_idx(options, 2, value, "srs_res_s::tx_comb_c_::types");
}
uint8_t srs_res_s::tx_comb_c_::types_opts::to_number() const
{
static const uint8_t options[] = {2, 4};
return map_enum_number(options, 2, value, "srs_res_s::tx_comb_c_::types");
}
const char* srs_res_s::res_map_s_::nrof_symbols_opts::to_string() const
{
static const char* options[] = {"n1", "n2", "n4"};
return convert_enum_idx(options, 3, value, "srs_res_s::res_map_s_::nrof_symbols_e_");
}
uint8_t srs_res_s::res_map_s_::nrof_symbols_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 4};
return map_enum_number(options, 3, value, "srs_res_s::res_map_s_::nrof_symbols_e_");
}
const char* srs_res_s::res_map_s_::repeat_factor_opts::to_string() const
{
static const char* options[] = {"n1", "n2", "n4"};
return convert_enum_idx(options, 3, value, "srs_res_s::res_map_s_::repeat_factor_e_");
}
uint8_t srs_res_s::res_map_s_::repeat_factor_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 4};
return map_enum_number(options, 3, value, "srs_res_s::res_map_s_::repeat_factor_e_");
}
const char* srs_res_s::group_or_seq_hop_opts::to_string() const
{
static const char* options[] = {"neither", "groupHopping", "sequenceHopping"};
return convert_enum_idx(options, 3, value, "srs_res_s::group_or_seq_hop_e_");
}
void srs_res_s::res_type_c_::destroy_()
{
switch (type_) {
case types::aperiodic:
c.destroy<aperiodic_s_>();
break;
case types::semi_persistent:
c.destroy<semi_persistent_s_>();
break;
case types::periodic:
c.destroy<periodic_s_>();
break;
default:
break;
}
}
void srs_res_s::res_type_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::aperiodic:
c.init<aperiodic_s_>();
break;
case types::semi_persistent:
c.init<semi_persistent_s_>();
break;
case types::periodic:
c.init<periodic_s_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "srs_res_s::res_type_c_");
}
}
srs_res_s::res_type_c_::res_type_c_(const srs_res_s::res_type_c_& other)
{
type_ = other.type();
switch (type_) {
case types::aperiodic:
c.init(other.c.get<aperiodic_s_>());
break;
case types::semi_persistent:
c.init(other.c.get<semi_persistent_s_>());
break;
case types::periodic:
c.init(other.c.get<periodic_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "srs_res_s::res_type_c_");
}
}
srs_res_s::res_type_c_& srs_res_s::res_type_c_::operator=(const srs_res_s::res_type_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::aperiodic:
c.set(other.c.get<aperiodic_s_>());
break;
case types::semi_persistent:
c.set(other.c.get<semi_persistent_s_>());
break;
case types::periodic:
c.set(other.c.get<periodic_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "srs_res_s::res_type_c_");
}
return *this;
}
srs_res_s::res_type_c_::aperiodic_s_& srs_res_s::res_type_c_::set_aperiodic()
{
set(types::aperiodic);
return c.get<aperiodic_s_>();
}
srs_res_s::res_type_c_::semi_persistent_s_& srs_res_s::res_type_c_::set_semi_persistent()
{
set(types::semi_persistent);
return c.get<semi_persistent_s_>();
}
srs_res_s::res_type_c_::periodic_s_& srs_res_s::res_type_c_::set_periodic()
{
set(types::periodic);
return c.get<periodic_s_>();
}
void srs_res_s::res_type_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::aperiodic:
j.write_fieldname("aperiodic");
j.start_obj();
j.end_obj();
break;
case types::semi_persistent:
j.write_fieldname("semi-persistent");
j.start_obj();
j.write_fieldname("periodicityAndOffset-sp");
c.get<semi_persistent_s_>().periodicity_and_offset_sp.to_json(j);
j.end_obj();
break;
case types::periodic:
j.write_fieldname("periodic");
j.start_obj();
j.write_fieldname("periodicityAndOffset-p");
c.get<periodic_s_>().periodicity_and_offset_p.to_json(j);
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "srs_res_s::res_type_c_");
}
j.end_obj();
}
SRSASN_CODE srs_res_s::res_type_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::aperiodic:
bref.pack(c.get<aperiodic_s_>().ext, 1);
break;
case types::semi_persistent:
bref.pack(c.get<semi_persistent_s_>().ext, 1);
HANDLE_CODE(c.get<semi_persistent_s_>().periodicity_and_offset_sp.pack(bref));
break;
case types::periodic:
bref.pack(c.get<periodic_s_>().ext, 1);
HANDLE_CODE(c.get<periodic_s_>().periodicity_and_offset_p.pack(bref));
break;
default:
log_invalid_choice_id(type_, "srs_res_s::res_type_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE srs_res_s::res_type_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::aperiodic:
bref.unpack(c.get<aperiodic_s_>().ext, 1);
break;
case types::semi_persistent:
bref.unpack(c.get<semi_persistent_s_>().ext, 1);
HANDLE_CODE(c.get<semi_persistent_s_>().periodicity_and_offset_sp.unpack(bref));
break;
case types::periodic:
bref.unpack(c.get<periodic_s_>().ext, 1);
HANDLE_CODE(c.get<periodic_s_>().periodicity_and_offset_p.unpack(bref));
break;
default:
log_invalid_choice_id(type_, "srs_res_s::res_type_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* srs_res_s::res_type_c_::types_opts::to_string() const
{
static const char* options[] = {"aperiodic", "semi-persistent", "periodic"};
return convert_enum_idx(options, 3, value, "srs_res_s::res_type_c_::types");
}
// SRS-ResourceSet ::= SEQUENCE
SRSASN_CODE srs_res_set_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(srs_res_id_list_present, 1));
HANDLE_CODE(bref.pack(alpha_present, 1));
HANDLE_CODE(bref.pack(p0_present, 1));
HANDLE_CODE(bref.pack(pathloss_ref_rs_present, 1));
HANDLE_CODE(bref.pack(srs_pwr_ctrl_adjustment_states_present, 1));
HANDLE_CODE(pack_integer(bref, srs_res_set_id, (uint8_t)0u, (uint8_t)15u));
if (srs_res_id_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, srs_res_id_list, 1, 16, integer_packer<uint8_t>(0, 63)));
}
HANDLE_CODE(res_type.pack(bref));
HANDLE_CODE(usage.pack(bref));
if (alpha_present) {
HANDLE_CODE(alpha.pack(bref));
}
if (p0_present) {
HANDLE_CODE(pack_integer(bref, p0, (int16_t)-202, (int16_t)24));
}
if (pathloss_ref_rs_present) {
HANDLE_CODE(pathloss_ref_rs.pack(bref));
}
if (srs_pwr_ctrl_adjustment_states_present) {
HANDLE_CODE(srs_pwr_ctrl_adjustment_states.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE srs_res_set_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(srs_res_id_list_present, 1));
HANDLE_CODE(bref.unpack(alpha_present, 1));
HANDLE_CODE(bref.unpack(p0_present, 1));
HANDLE_CODE(bref.unpack(pathloss_ref_rs_present, 1));
HANDLE_CODE(bref.unpack(srs_pwr_ctrl_adjustment_states_present, 1));
HANDLE_CODE(unpack_integer(srs_res_set_id, bref, (uint8_t)0u, (uint8_t)15u));
if (srs_res_id_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(srs_res_id_list, bref, 1, 16, integer_packer<uint8_t>(0, 63)));
}
HANDLE_CODE(res_type.unpack(bref));
HANDLE_CODE(usage.unpack(bref));
if (alpha_present) {
HANDLE_CODE(alpha.unpack(bref));
}
if (p0_present) {
HANDLE_CODE(unpack_integer(p0, bref, (int16_t)-202, (int16_t)24));
}
if (pathloss_ref_rs_present) {
HANDLE_CODE(pathloss_ref_rs.unpack(bref));
}
if (srs_pwr_ctrl_adjustment_states_present) {
HANDLE_CODE(srs_pwr_ctrl_adjustment_states.unpack(bref));
}
return SRSASN_SUCCESS;
}
void srs_res_set_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("srs-ResourceSetId", srs_res_set_id);
if (srs_res_id_list_present) {
j.start_array("srs-ResourceIdList");
for (const auto& e1 : srs_res_id_list) {
j.write_int(e1);
}
j.end_array();
}
j.write_fieldname("resourceType");
res_type.to_json(j);
j.write_str("usage", usage.to_string());
if (alpha_present) {
j.write_str("alpha", alpha.to_string());
}
if (p0_present) {
j.write_int("p0", p0);
}
if (pathloss_ref_rs_present) {
j.write_fieldname("pathlossReferenceRS");
pathloss_ref_rs.to_json(j);
}
if (srs_pwr_ctrl_adjustment_states_present) {
j.write_str("srs-PowerControlAdjustmentStates", srs_pwr_ctrl_adjustment_states.to_string());
}
j.end_obj();
}
void srs_res_set_s::res_type_c_::destroy_()
{
switch (type_) {
case types::aperiodic:
c.destroy<aperiodic_s_>();
break;
case types::semi_persistent:
c.destroy<semi_persistent_s_>();
break;
case types::periodic:
c.destroy<periodic_s_>();
break;
default:
break;
}
}
void srs_res_set_s::res_type_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::aperiodic:
c.init<aperiodic_s_>();
break;
case types::semi_persistent:
c.init<semi_persistent_s_>();
break;
case types::periodic:
c.init<periodic_s_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "srs_res_set_s::res_type_c_");
}
}
srs_res_set_s::res_type_c_::res_type_c_(const srs_res_set_s::res_type_c_& other)
{
type_ = other.type();
switch (type_) {
case types::aperiodic:
c.init(other.c.get<aperiodic_s_>());
break;
case types::semi_persistent:
c.init(other.c.get<semi_persistent_s_>());
break;
case types::periodic:
c.init(other.c.get<periodic_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "srs_res_set_s::res_type_c_");
}
}
srs_res_set_s::res_type_c_& srs_res_set_s::res_type_c_::operator=(const srs_res_set_s::res_type_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::aperiodic:
c.set(other.c.get<aperiodic_s_>());
break;
case types::semi_persistent:
c.set(other.c.get<semi_persistent_s_>());
break;
case types::periodic:
c.set(other.c.get<periodic_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "srs_res_set_s::res_type_c_");
}
return *this;
}
srs_res_set_s::res_type_c_::aperiodic_s_& srs_res_set_s::res_type_c_::set_aperiodic()
{
set(types::aperiodic);
return c.get<aperiodic_s_>();
}
srs_res_set_s::res_type_c_::semi_persistent_s_& srs_res_set_s::res_type_c_::set_semi_persistent()
{
set(types::semi_persistent);
return c.get<semi_persistent_s_>();
}
srs_res_set_s::res_type_c_::periodic_s_& srs_res_set_s::res_type_c_::set_periodic()
{
set(types::periodic);
return c.get<periodic_s_>();
}
void srs_res_set_s::res_type_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::aperiodic:
j.write_fieldname("aperiodic");
c.get<aperiodic_s_>().to_json(j);
break;
case types::semi_persistent:
j.write_fieldname("semi-persistent");
j.start_obj();
if (c.get<semi_persistent_s_>().associated_csi_rs_present) {
j.write_int("associatedCSI-RS", c.get<semi_persistent_s_>().associated_csi_rs);
}
j.end_obj();
break;
case types::periodic:
j.write_fieldname("periodic");
j.start_obj();
if (c.get<periodic_s_>().associated_csi_rs_present) {
j.write_int("associatedCSI-RS", c.get<periodic_s_>().associated_csi_rs);
}
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "srs_res_set_s::res_type_c_");
}
j.end_obj();
}
SRSASN_CODE srs_res_set_s::res_type_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::aperiodic:
HANDLE_CODE(c.get<aperiodic_s_>().pack(bref));
break;
case types::semi_persistent:
bref.pack(c.get<semi_persistent_s_>().ext, 1);
HANDLE_CODE(bref.pack(c.get<semi_persistent_s_>().associated_csi_rs_present, 1));
if (c.get<semi_persistent_s_>().associated_csi_rs_present) {
HANDLE_CODE(pack_integer(bref, c.get<semi_persistent_s_>().associated_csi_rs, (uint8_t)0u, (uint8_t)191u));
}
break;
case types::periodic:
bref.pack(c.get<periodic_s_>().ext, 1);
HANDLE_CODE(bref.pack(c.get<periodic_s_>().associated_csi_rs_present, 1));
if (c.get<periodic_s_>().associated_csi_rs_present) {
HANDLE_CODE(pack_integer(bref, c.get<periodic_s_>().associated_csi_rs, (uint8_t)0u, (uint8_t)191u));
}
break;
default:
log_invalid_choice_id(type_, "srs_res_set_s::res_type_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE srs_res_set_s::res_type_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::aperiodic:
HANDLE_CODE(c.get<aperiodic_s_>().unpack(bref));
break;
case types::semi_persistent:
bref.unpack(c.get<semi_persistent_s_>().ext, 1);
HANDLE_CODE(bref.unpack(c.get<semi_persistent_s_>().associated_csi_rs_present, 1));
if (c.get<semi_persistent_s_>().associated_csi_rs_present) {
HANDLE_CODE(unpack_integer(c.get<semi_persistent_s_>().associated_csi_rs, bref, (uint8_t)0u, (uint8_t)191u));
}
break;
case types::periodic:
bref.unpack(c.get<periodic_s_>().ext, 1);
HANDLE_CODE(bref.unpack(c.get<periodic_s_>().associated_csi_rs_present, 1));
if (c.get<periodic_s_>().associated_csi_rs_present) {
HANDLE_CODE(unpack_integer(c.get<periodic_s_>().associated_csi_rs, bref, (uint8_t)0u, (uint8_t)191u));
}
break;
default:
log_invalid_choice_id(type_, "srs_res_set_s::res_type_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE srs_res_set_s::res_type_c_::aperiodic_s_::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(csi_rs_present, 1));
HANDLE_CODE(bref.pack(slot_offset_present, 1));
HANDLE_CODE(pack_integer(bref, aperiodic_srs_res_trigger, (uint8_t)1u, (uint8_t)3u));
if (csi_rs_present) {
HANDLE_CODE(pack_integer(bref, csi_rs, (uint8_t)0u, (uint8_t)191u));
}
if (slot_offset_present) {
HANDLE_CODE(pack_integer(bref, slot_offset, (uint8_t)1u, (uint8_t)32u));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= aperiodic_srs_res_trigger_list.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(aperiodic_srs_res_trigger_list.is_present(), 1));
if (aperiodic_srs_res_trigger_list.is_present()) {
HANDLE_CODE(pack_dyn_seq_of(bref, *aperiodic_srs_res_trigger_list, 1, 2, integer_packer<uint8_t>(1, 3)));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE srs_res_set_s::res_type_c_::aperiodic_s_::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(csi_rs_present, 1));
HANDLE_CODE(bref.unpack(slot_offset_present, 1));
HANDLE_CODE(unpack_integer(aperiodic_srs_res_trigger, bref, (uint8_t)1u, (uint8_t)3u));
if (csi_rs_present) {
HANDLE_CODE(unpack_integer(csi_rs, bref, (uint8_t)0u, (uint8_t)191u));
}
if (slot_offset_present) {
HANDLE_CODE(unpack_integer(slot_offset, bref, (uint8_t)1u, (uint8_t)32u));
}
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool aperiodic_srs_res_trigger_list_present;
HANDLE_CODE(bref.unpack(aperiodic_srs_res_trigger_list_present, 1));
aperiodic_srs_res_trigger_list.set_present(aperiodic_srs_res_trigger_list_present);
if (aperiodic_srs_res_trigger_list.is_present()) {
HANDLE_CODE(unpack_dyn_seq_of(*aperiodic_srs_res_trigger_list, bref, 1, 2, integer_packer<uint8_t>(1, 3)));
}
}
}
return SRSASN_SUCCESS;
}
void srs_res_set_s::res_type_c_::aperiodic_s_::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("aperiodicSRS-ResourceTrigger", aperiodic_srs_res_trigger);
if (csi_rs_present) {
j.write_int("csi-RS", csi_rs);
}
if (slot_offset_present) {
j.write_int("slotOffset", slot_offset);
}
if (ext) {
if (aperiodic_srs_res_trigger_list.is_present()) {
j.start_array("aperiodicSRS-ResourceTriggerList");
for (const auto& e1 : *aperiodic_srs_res_trigger_list) {
j.write_int(e1);
}
j.end_array();
}
}
j.end_obj();
}
const char* srs_res_set_s::res_type_c_::types_opts::to_string() const
{
static const char* options[] = {"aperiodic", "semi-persistent", "periodic"};
return convert_enum_idx(options, 3, value, "srs_res_set_s::res_type_c_::types");
}
const char* srs_res_set_s::usage_opts::to_string() const
{
static const char* options[] = {"beamManagement", "codebook", "nonCodebook", "antennaSwitching"};
return convert_enum_idx(options, 4, value, "srs_res_set_s::usage_e_");
}
void srs_res_set_s::pathloss_ref_rs_c_::destroy_() {}
void srs_res_set_s::pathloss_ref_rs_c_::set(types::options e)
{
destroy_();
type_ = e;
}
srs_res_set_s::pathloss_ref_rs_c_::pathloss_ref_rs_c_(const srs_res_set_s::pathloss_ref_rs_c_& other)
{
type_ = other.type();
switch (type_) {
case types::ssb_idx:
c.init(other.c.get<uint8_t>());
break;
case types::csi_rs_idx:
c.init(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "srs_res_set_s::pathloss_ref_rs_c_");
}
}
srs_res_set_s::pathloss_ref_rs_c_&
srs_res_set_s::pathloss_ref_rs_c_::operator=(const srs_res_set_s::pathloss_ref_rs_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::ssb_idx:
c.set(other.c.get<uint8_t>());
break;
case types::csi_rs_idx:
c.set(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "srs_res_set_s::pathloss_ref_rs_c_");
}
return *this;
}
uint8_t& srs_res_set_s::pathloss_ref_rs_c_::set_ssb_idx()
{
set(types::ssb_idx);
return c.get<uint8_t>();
}
uint8_t& srs_res_set_s::pathloss_ref_rs_c_::set_csi_rs_idx()
{
set(types::csi_rs_idx);
return c.get<uint8_t>();
}
void srs_res_set_s::pathloss_ref_rs_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::ssb_idx:
j.write_int("ssb-Index", c.get<uint8_t>());
break;
case types::csi_rs_idx:
j.write_int("csi-RS-Index", c.get<uint8_t>());
break;
default:
log_invalid_choice_id(type_, "srs_res_set_s::pathloss_ref_rs_c_");
}
j.end_obj();
}
SRSASN_CODE srs_res_set_s::pathloss_ref_rs_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::ssb_idx:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)63u));
break;
case types::csi_rs_idx:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)191u));
break;
default:
log_invalid_choice_id(type_, "srs_res_set_s::pathloss_ref_rs_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE srs_res_set_s::pathloss_ref_rs_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::ssb_idx:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)63u));
break;
case types::csi_rs_idx:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)191u));
break;
default:
log_invalid_choice_id(type_, "srs_res_set_s::pathloss_ref_rs_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* srs_res_set_s::pathloss_ref_rs_c_::types_opts::to_string() const
{
static const char* options[] = {"ssb-Index", "csi-RS-Index"};
return convert_enum_idx(options, 2, value, "srs_res_set_s::pathloss_ref_rs_c_::types");
}
const char* srs_res_set_s::srs_pwr_ctrl_adjustment_states_opts::to_string() const
{
static const char* options[] = {"sameAsFci2", "separateClosedLoop"};
return convert_enum_idx(options, 2, value, "srs_res_set_s::srs_pwr_ctrl_adjustment_states_e_");
}
uint8_t srs_res_set_s::srs_pwr_ctrl_adjustment_states_opts::to_number() const
{
static const uint8_t options[] = {2};
return map_enum_number(options, 1, value, "srs_res_set_s::srs_pwr_ctrl_adjustment_states_e_");
}
// SchedulingRequestResourceConfig ::= SEQUENCE
SRSASN_CODE sched_request_res_cfg_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(periodicity_and_offset_present, 1));
HANDLE_CODE(bref.pack(res_present, 1));
HANDLE_CODE(pack_integer(bref, sched_request_res_id, (uint8_t)1u, (uint8_t)8u));
HANDLE_CODE(pack_integer(bref, sched_request_id, (uint8_t)0u, (uint8_t)7u));
if (periodicity_and_offset_present) {
HANDLE_CODE(periodicity_and_offset.pack(bref));
}
if (res_present) {
HANDLE_CODE(pack_integer(bref, res, (uint8_t)0u, (uint8_t)127u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE sched_request_res_cfg_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(periodicity_and_offset_present, 1));
HANDLE_CODE(bref.unpack(res_present, 1));
HANDLE_CODE(unpack_integer(sched_request_res_id, bref, (uint8_t)1u, (uint8_t)8u));
HANDLE_CODE(unpack_integer(sched_request_id, bref, (uint8_t)0u, (uint8_t)7u));
if (periodicity_and_offset_present) {
HANDLE_CODE(periodicity_and_offset.unpack(bref));
}
if (res_present) {
HANDLE_CODE(unpack_integer(res, bref, (uint8_t)0u, (uint8_t)127u));
}
return SRSASN_SUCCESS;
}
void sched_request_res_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("schedulingRequestResourceId", sched_request_res_id);
j.write_int("schedulingRequestID", sched_request_id);
if (periodicity_and_offset_present) {
j.write_fieldname("periodicityAndOffset");
periodicity_and_offset.to_json(j);
}
if (res_present) {
j.write_int("resource", res);
}
j.end_obj();
}
void sched_request_res_cfg_s::periodicity_and_offset_c_::destroy_() {}
void sched_request_res_cfg_s::periodicity_and_offset_c_::set(types::options e)
{
destroy_();
type_ = e;
}
sched_request_res_cfg_s::periodicity_and_offset_c_::periodicity_and_offset_c_(
const sched_request_res_cfg_s::periodicity_and_offset_c_& other)
{
type_ = other.type();
switch (type_) {
case types::sym2:
break;
case types::sym6or7:
break;
case types::sl1:
break;
case types::sl2:
c.init(other.c.get<uint8_t>());
break;
case types::sl4:
c.init(other.c.get<uint8_t>());
break;
case types::sl5:
c.init(other.c.get<uint8_t>());
break;
case types::sl8:
c.init(other.c.get<uint8_t>());
break;
case types::sl10:
c.init(other.c.get<uint8_t>());
break;
case types::sl16:
c.init(other.c.get<uint8_t>());
break;
case types::sl20:
c.init(other.c.get<uint8_t>());
break;
case types::sl40:
c.init(other.c.get<uint8_t>());
break;
case types::sl80:
c.init(other.c.get<uint8_t>());
break;
case types::sl160:
c.init(other.c.get<uint8_t>());
break;
case types::sl320:
c.init(other.c.get<uint16_t>());
break;
case types::sl640:
c.init(other.c.get<uint16_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "sched_request_res_cfg_s::periodicity_and_offset_c_");
}
}
sched_request_res_cfg_s::periodicity_and_offset_c_& sched_request_res_cfg_s::periodicity_and_offset_c_::operator=(
const sched_request_res_cfg_s::periodicity_and_offset_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::sym2:
break;
case types::sym6or7:
break;
case types::sl1:
break;
case types::sl2:
c.set(other.c.get<uint8_t>());
break;
case types::sl4:
c.set(other.c.get<uint8_t>());
break;
case types::sl5:
c.set(other.c.get<uint8_t>());
break;
case types::sl8:
c.set(other.c.get<uint8_t>());
break;
case types::sl10:
c.set(other.c.get<uint8_t>());
break;
case types::sl16:
c.set(other.c.get<uint8_t>());
break;
case types::sl20:
c.set(other.c.get<uint8_t>());
break;
case types::sl40:
c.set(other.c.get<uint8_t>());
break;
case types::sl80:
c.set(other.c.get<uint8_t>());
break;
case types::sl160:
c.set(other.c.get<uint8_t>());
break;
case types::sl320:
c.set(other.c.get<uint16_t>());
break;
case types::sl640:
c.set(other.c.get<uint16_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "sched_request_res_cfg_s::periodicity_and_offset_c_");
}
return *this;
}
void sched_request_res_cfg_s::periodicity_and_offset_c_::set_sym2()
{
set(types::sym2);
}
void sched_request_res_cfg_s::periodicity_and_offset_c_::set_sym6or7()
{
set(types::sym6or7);
}
void sched_request_res_cfg_s::periodicity_and_offset_c_::set_sl1()
{
set(types::sl1);
}
uint8_t& sched_request_res_cfg_s::periodicity_and_offset_c_::set_sl2()
{
set(types::sl2);
return c.get<uint8_t>();
}
uint8_t& sched_request_res_cfg_s::periodicity_and_offset_c_::set_sl4()
{
set(types::sl4);
return c.get<uint8_t>();
}
uint8_t& sched_request_res_cfg_s::periodicity_and_offset_c_::set_sl5()
{
set(types::sl5);
return c.get<uint8_t>();
}
uint8_t& sched_request_res_cfg_s::periodicity_and_offset_c_::set_sl8()
{
set(types::sl8);
return c.get<uint8_t>();
}
uint8_t& sched_request_res_cfg_s::periodicity_and_offset_c_::set_sl10()
{
set(types::sl10);
return c.get<uint8_t>();
}
uint8_t& sched_request_res_cfg_s::periodicity_and_offset_c_::set_sl16()
{
set(types::sl16);
return c.get<uint8_t>();
}
uint8_t& sched_request_res_cfg_s::periodicity_and_offset_c_::set_sl20()
{
set(types::sl20);
return c.get<uint8_t>();
}
uint8_t& sched_request_res_cfg_s::periodicity_and_offset_c_::set_sl40()
{
set(types::sl40);
return c.get<uint8_t>();
}
uint8_t& sched_request_res_cfg_s::periodicity_and_offset_c_::set_sl80()
{
set(types::sl80);
return c.get<uint8_t>();
}
uint8_t& sched_request_res_cfg_s::periodicity_and_offset_c_::set_sl160()
{
set(types::sl160);
return c.get<uint8_t>();
}
uint16_t& sched_request_res_cfg_s::periodicity_and_offset_c_::set_sl320()
{
set(types::sl320);
return c.get<uint16_t>();
}
uint16_t& sched_request_res_cfg_s::periodicity_and_offset_c_::set_sl640()
{
set(types::sl640);
return c.get<uint16_t>();
}
void sched_request_res_cfg_s::periodicity_and_offset_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::sym2:
break;
case types::sym6or7:
break;
case types::sl1:
break;
case types::sl2:
j.write_int("sl2", c.get<uint8_t>());
break;
case types::sl4:
j.write_int("sl4", c.get<uint8_t>());
break;
case types::sl5:
j.write_int("sl5", c.get<uint8_t>());
break;
case types::sl8:
j.write_int("sl8", c.get<uint8_t>());
break;
case types::sl10:
j.write_int("sl10", c.get<uint8_t>());
break;
case types::sl16:
j.write_int("sl16", c.get<uint8_t>());
break;
case types::sl20:
j.write_int("sl20", c.get<uint8_t>());
break;
case types::sl40:
j.write_int("sl40", c.get<uint8_t>());
break;
case types::sl80:
j.write_int("sl80", c.get<uint8_t>());
break;
case types::sl160:
j.write_int("sl160", c.get<uint8_t>());
break;
case types::sl320:
j.write_int("sl320", c.get<uint16_t>());
break;
case types::sl640:
j.write_int("sl640", c.get<uint16_t>());
break;
default:
log_invalid_choice_id(type_, "sched_request_res_cfg_s::periodicity_and_offset_c_");
}
j.end_obj();
}
SRSASN_CODE sched_request_res_cfg_s::periodicity_and_offset_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::sym2:
break;
case types::sym6or7:
break;
case types::sl1:
break;
case types::sl2:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)1u));
break;
case types::sl4:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)3u));
break;
case types::sl5:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)4u));
break;
case types::sl8:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)7u));
break;
case types::sl10:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)9u));
break;
case types::sl16:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)15u));
break;
case types::sl20:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)19u));
break;
case types::sl40:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)39u));
break;
case types::sl80:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)79u));
break;
case types::sl160:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)159u));
break;
case types::sl320:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)319u));
break;
case types::sl640:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)639u));
break;
default:
log_invalid_choice_id(type_, "sched_request_res_cfg_s::periodicity_and_offset_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE sched_request_res_cfg_s::periodicity_and_offset_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::sym2:
break;
case types::sym6or7:
break;
case types::sl1:
break;
case types::sl2:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)1u));
break;
case types::sl4:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)3u));
break;
case types::sl5:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)4u));
break;
case types::sl8:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)7u));
break;
case types::sl10:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)9u));
break;
case types::sl16:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)15u));
break;
case types::sl20:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)19u));
break;
case types::sl40:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)39u));
break;
case types::sl80:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)79u));
break;
case types::sl160:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)159u));
break;
case types::sl320:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)319u));
break;
case types::sl640:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)639u));
break;
default:
log_invalid_choice_id(type_, "sched_request_res_cfg_s::periodicity_and_offset_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* sched_request_res_cfg_s::periodicity_and_offset_c_::types_opts::to_string() const
{
static const char* options[] = {"sym2",
"sym6or7",
"sl1",
"sl2",
"sl4",
"sl5",
"sl8",
"sl10",
"sl16",
"sl20",
"sl40",
"sl80",
"sl160",
"sl320",
"sl640"};
return convert_enum_idx(options, 15, value, "sched_request_res_cfg_s::periodicity_and_offset_c_::types");
}
// UCI-OnPUSCH ::= SEQUENCE
SRSASN_CODE uci_on_pusch_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(beta_offsets_present, 1));
if (beta_offsets_present) {
HANDLE_CODE(beta_offsets.pack(bref));
}
HANDLE_CODE(scaling.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE uci_on_pusch_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(beta_offsets_present, 1));
if (beta_offsets_present) {
HANDLE_CODE(beta_offsets.unpack(bref));
}
HANDLE_CODE(scaling.unpack(bref));
return SRSASN_SUCCESS;
}
void uci_on_pusch_s::to_json(json_writer& j) const
{
j.start_obj();
if (beta_offsets_present) {
j.write_fieldname("betaOffsets");
beta_offsets.to_json(j);
}
j.write_str("scaling", scaling.to_string());
j.end_obj();
}
void uci_on_pusch_s::beta_offsets_c_::destroy_()
{
switch (type_) {
case types::dynamic_type:
c.destroy<dynamic_l_>();
break;
case types::semi_static:
c.destroy<beta_offsets_s>();
break;
default:
break;
}
}
void uci_on_pusch_s::beta_offsets_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::dynamic_type:
c.init<dynamic_l_>();
break;
case types::semi_static:
c.init<beta_offsets_s>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "uci_on_pusch_s::beta_offsets_c_");
}
}
uci_on_pusch_s::beta_offsets_c_::beta_offsets_c_(const uci_on_pusch_s::beta_offsets_c_& other)
{
type_ = other.type();
switch (type_) {
case types::dynamic_type:
c.init(other.c.get<dynamic_l_>());
break;
case types::semi_static:
c.init(other.c.get<beta_offsets_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "uci_on_pusch_s::beta_offsets_c_");
}
}
uci_on_pusch_s::beta_offsets_c_&
uci_on_pusch_s::beta_offsets_c_::operator=(const uci_on_pusch_s::beta_offsets_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::dynamic_type:
c.set(other.c.get<dynamic_l_>());
break;
case types::semi_static:
c.set(other.c.get<beta_offsets_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "uci_on_pusch_s::beta_offsets_c_");
}
return *this;
}
uci_on_pusch_s::beta_offsets_c_::dynamic_l_& uci_on_pusch_s::beta_offsets_c_::set_dynamic_type()
{
set(types::dynamic_type);
return c.get<dynamic_l_>();
}
beta_offsets_s& uci_on_pusch_s::beta_offsets_c_::set_semi_static()
{
set(types::semi_static);
return c.get<beta_offsets_s>();
}
void uci_on_pusch_s::beta_offsets_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::dynamic_type:
j.start_array("dynamic");
for (const auto& e1 : c.get<dynamic_l_>()) {
e1.to_json(j);
}
j.end_array();
break;
case types::semi_static:
j.write_fieldname("semiStatic");
c.get<beta_offsets_s>().to_json(j);
break;
default:
log_invalid_choice_id(type_, "uci_on_pusch_s::beta_offsets_c_");
}
j.end_obj();
}
SRSASN_CODE uci_on_pusch_s::beta_offsets_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::dynamic_type:
HANDLE_CODE(pack_fixed_seq_of(bref, &(c.get<dynamic_l_>())[0], c.get<dynamic_l_>().size()));
break;
case types::semi_static:
HANDLE_CODE(c.get<beta_offsets_s>().pack(bref));
break;
default:
log_invalid_choice_id(type_, "uci_on_pusch_s::beta_offsets_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE uci_on_pusch_s::beta_offsets_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::dynamic_type:
HANDLE_CODE(unpack_fixed_seq_of(&(c.get<dynamic_l_>())[0], bref, c.get<dynamic_l_>().size()));
break;
case types::semi_static:
HANDLE_CODE(c.get<beta_offsets_s>().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "uci_on_pusch_s::beta_offsets_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* uci_on_pusch_s::beta_offsets_c_::types_opts::to_string() const
{
static const char* options[] = {"dynamic", "semiStatic"};
return convert_enum_idx(options, 2, value, "uci_on_pusch_s::beta_offsets_c_::types");
}
const char* uci_on_pusch_s::scaling_opts::to_string() const
{
static const char* options[] = {"f0p5", "f0p65", "f0p8", "f1"};
return convert_enum_idx(options, 4, value, "uci_on_pusch_s::scaling_e_");
}
// BeamFailureRecoveryConfig ::= SEQUENCE
SRSASN_CODE beam_fail_recovery_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(root_seq_idx_bfr_present, 1));
HANDLE_CODE(bref.pack(rach_cfg_bfr_present, 1));
HANDLE_CODE(bref.pack(rsrp_thres_ssb_present, 1));
HANDLE_CODE(bref.pack(candidate_beam_rs_list_present, 1));
HANDLE_CODE(bref.pack(ssb_per_rach_occasion_present, 1));
HANDLE_CODE(bref.pack(ra_ssb_occasion_mask_idx_present, 1));
HANDLE_CODE(bref.pack(recovery_search_space_id_present, 1));
HANDLE_CODE(bref.pack(ra_prioritization_present, 1));
HANDLE_CODE(bref.pack(beam_fail_recovery_timer_present, 1));
if (root_seq_idx_bfr_present) {
HANDLE_CODE(pack_integer(bref, root_seq_idx_bfr, (uint8_t)0u, (uint8_t)137u));
}
if (rach_cfg_bfr_present) {
HANDLE_CODE(rach_cfg_bfr.pack(bref));
}
if (rsrp_thres_ssb_present) {
HANDLE_CODE(pack_integer(bref, rsrp_thres_ssb, (uint8_t)0u, (uint8_t)127u));
}
if (candidate_beam_rs_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, candidate_beam_rs_list, 1, 16));
}
if (ssb_per_rach_occasion_present) {
HANDLE_CODE(ssb_per_rach_occasion.pack(bref));
}
if (ra_ssb_occasion_mask_idx_present) {
HANDLE_CODE(pack_integer(bref, ra_ssb_occasion_mask_idx, (uint8_t)0u, (uint8_t)15u));
}
if (recovery_search_space_id_present) {
HANDLE_CODE(pack_integer(bref, recovery_search_space_id, (uint8_t)0u, (uint8_t)39u));
}
if (ra_prioritization_present) {
HANDLE_CODE(ra_prioritization.pack(bref));
}
if (beam_fail_recovery_timer_present) {
HANDLE_CODE(beam_fail_recovery_timer.pack(bref));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= msg1_subcarrier_spacing_present;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(msg1_subcarrier_spacing_present, 1));
if (msg1_subcarrier_spacing_present) {
HANDLE_CODE(msg1_subcarrier_spacing.pack(bref));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE beam_fail_recovery_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(root_seq_idx_bfr_present, 1));
HANDLE_CODE(bref.unpack(rach_cfg_bfr_present, 1));
HANDLE_CODE(bref.unpack(rsrp_thres_ssb_present, 1));
HANDLE_CODE(bref.unpack(candidate_beam_rs_list_present, 1));
HANDLE_CODE(bref.unpack(ssb_per_rach_occasion_present, 1));
HANDLE_CODE(bref.unpack(ra_ssb_occasion_mask_idx_present, 1));
HANDLE_CODE(bref.unpack(recovery_search_space_id_present, 1));
HANDLE_CODE(bref.unpack(ra_prioritization_present, 1));
HANDLE_CODE(bref.unpack(beam_fail_recovery_timer_present, 1));
if (root_seq_idx_bfr_present) {
HANDLE_CODE(unpack_integer(root_seq_idx_bfr, bref, (uint8_t)0u, (uint8_t)137u));
}
if (rach_cfg_bfr_present) {
HANDLE_CODE(rach_cfg_bfr.unpack(bref));
}
if (rsrp_thres_ssb_present) {
HANDLE_CODE(unpack_integer(rsrp_thres_ssb, bref, (uint8_t)0u, (uint8_t)127u));
}
if (candidate_beam_rs_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(candidate_beam_rs_list, bref, 1, 16));
}
if (ssb_per_rach_occasion_present) {
HANDLE_CODE(ssb_per_rach_occasion.unpack(bref));
}
if (ra_ssb_occasion_mask_idx_present) {
HANDLE_CODE(unpack_integer(ra_ssb_occasion_mask_idx, bref, (uint8_t)0u, (uint8_t)15u));
}
if (recovery_search_space_id_present) {
HANDLE_CODE(unpack_integer(recovery_search_space_id, bref, (uint8_t)0u, (uint8_t)39u));
}
if (ra_prioritization_present) {
HANDLE_CODE(ra_prioritization.unpack(bref));
}
if (beam_fail_recovery_timer_present) {
HANDLE_CODE(beam_fail_recovery_timer.unpack(bref));
}
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(msg1_subcarrier_spacing_present, 1));
if (msg1_subcarrier_spacing_present) {
HANDLE_CODE(msg1_subcarrier_spacing.unpack(bref));
}
}
}
return SRSASN_SUCCESS;
}
void beam_fail_recovery_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (root_seq_idx_bfr_present) {
j.write_int("rootSequenceIndex-BFR", root_seq_idx_bfr);
}
if (rach_cfg_bfr_present) {
j.write_fieldname("rach-ConfigBFR");
rach_cfg_bfr.to_json(j);
}
if (rsrp_thres_ssb_present) {
j.write_int("rsrp-ThresholdSSB", rsrp_thres_ssb);
}
if (candidate_beam_rs_list_present) {
j.start_array("candidateBeamRSList");
for (const auto& e1 : candidate_beam_rs_list) {
e1.to_json(j);
}
j.end_array();
}
if (ssb_per_rach_occasion_present) {
j.write_str("ssb-perRACH-Occasion", ssb_per_rach_occasion.to_string());
}
if (ra_ssb_occasion_mask_idx_present) {
j.write_int("ra-ssb-OccasionMaskIndex", ra_ssb_occasion_mask_idx);
}
if (recovery_search_space_id_present) {
j.write_int("recoverySearchSpaceId", recovery_search_space_id);
}
if (ra_prioritization_present) {
j.write_fieldname("ra-Prioritization");
ra_prioritization.to_json(j);
}
if (beam_fail_recovery_timer_present) {
j.write_str("beamFailureRecoveryTimer", beam_fail_recovery_timer.to_string());
}
if (ext) {
if (msg1_subcarrier_spacing_present) {
j.write_str("msg1-SubcarrierSpacing", msg1_subcarrier_spacing.to_string());
}
}
j.end_obj();
}
const char* beam_fail_recovery_cfg_s::ssb_per_rach_occasion_opts::to_string() const
{
static const char* options[] = {"oneEighth", "oneFourth", "oneHalf", "one", "two", "four", "eight", "sixteen"};
return convert_enum_idx(options, 8, value, "beam_fail_recovery_cfg_s::ssb_per_rach_occasion_e_");
}
float beam_fail_recovery_cfg_s::ssb_per_rach_occasion_opts::to_number() const
{
static const float options[] = {0.125, 0.25, 0.5, 1.0, 2.0, 4.0, 8.0, 6.0};
return map_enum_number(options, 8, value, "beam_fail_recovery_cfg_s::ssb_per_rach_occasion_e_");
}
const char* beam_fail_recovery_cfg_s::ssb_per_rach_occasion_opts::to_number_string() const
{
static const char* options[] = {"1/8", "1/4", "1/2", "1", "2", "4", "8", "6"};
return convert_enum_idx(options, 8, value, "beam_fail_recovery_cfg_s::ssb_per_rach_occasion_e_");
}
const char* beam_fail_recovery_cfg_s::beam_fail_recovery_timer_opts::to_string() const
{
static const char* options[] = {"ms10", "ms20", "ms40", "ms60", "ms80", "ms100", "ms150", "ms200"};
return convert_enum_idx(options, 8, value, "beam_fail_recovery_cfg_s::beam_fail_recovery_timer_e_");
}
uint8_t beam_fail_recovery_cfg_s::beam_fail_recovery_timer_opts::to_number() const
{
static const uint8_t options[] = {10, 20, 40, 60, 80, 100, 150, 200};
return map_enum_number(options, 8, value, "beam_fail_recovery_cfg_s::beam_fail_recovery_timer_e_");
}
// ConfiguredGrantConfig ::= SEQUENCE
SRSASN_CODE cfgured_grant_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(freq_hop_present, 1));
HANDLE_CODE(bref.pack(mcs_table_present, 1));
HANDLE_CODE(bref.pack(mcs_table_transform_precoder_present, 1));
HANDLE_CODE(bref.pack(uci_on_pusch_present, 1));
HANDLE_CODE(bref.pack(rbg_size_present, 1));
HANDLE_CODE(bref.pack(transform_precoder_present, 1));
HANDLE_CODE(bref.pack(rep_k_rv_present, 1));
HANDLE_CODE(bref.pack(cfgured_grant_timer_present, 1));
HANDLE_CODE(bref.pack(rrc_cfgured_ul_grant_present, 1));
if (freq_hop_present) {
HANDLE_CODE(freq_hop.pack(bref));
}
HANDLE_CODE(cg_dmrs_cfg.pack(bref));
if (mcs_table_present) {
HANDLE_CODE(mcs_table.pack(bref));
}
if (mcs_table_transform_precoder_present) {
HANDLE_CODE(mcs_table_transform_precoder.pack(bref));
}
if (uci_on_pusch_present) {
HANDLE_CODE(uci_on_pusch.pack(bref));
}
HANDLE_CODE(res_alloc.pack(bref));
HANDLE_CODE(pwr_ctrl_loop_to_use.pack(bref));
HANDLE_CODE(pack_integer(bref, p0_pusch_alpha, (uint8_t)0u, (uint8_t)29u));
if (transform_precoder_present) {
HANDLE_CODE(transform_precoder.pack(bref));
}
HANDLE_CODE(pack_integer(bref, nrof_harq_processes, (uint8_t)1u, (uint8_t)16u));
HANDLE_CODE(rep_k.pack(bref));
if (rep_k_rv_present) {
HANDLE_CODE(rep_k_rv.pack(bref));
}
HANDLE_CODE(periodicity.pack(bref));
if (cfgured_grant_timer_present) {
HANDLE_CODE(pack_integer(bref, cfgured_grant_timer, (uint8_t)1u, (uint8_t)64u));
}
if (rrc_cfgured_ul_grant_present) {
bref.pack(rrc_cfgured_ul_grant.ext, 1);
HANDLE_CODE(bref.pack(rrc_cfgured_ul_grant.dmrs_seq_initization_present, 1));
HANDLE_CODE(bref.pack(rrc_cfgured_ul_grant.srs_res_ind_present, 1));
HANDLE_CODE(bref.pack(rrc_cfgured_ul_grant.freq_hop_offset_present, 1));
HANDLE_CODE(pack_integer(bref, rrc_cfgured_ul_grant.time_domain_offset, (uint16_t)0u, (uint16_t)5119u));
HANDLE_CODE(pack_integer(bref, rrc_cfgured_ul_grant.time_domain_alloc, (uint8_t)0u, (uint8_t)15u));
HANDLE_CODE(rrc_cfgured_ul_grant.freq_domain_alloc.pack(bref));
HANDLE_CODE(pack_integer(bref, rrc_cfgured_ul_grant.ant_port, (uint8_t)0u, (uint8_t)31u));
if (rrc_cfgured_ul_grant.dmrs_seq_initization_present) {
HANDLE_CODE(pack_integer(bref, rrc_cfgured_ul_grant.dmrs_seq_initization, (uint8_t)0u, (uint8_t)1u));
}
HANDLE_CODE(pack_integer(bref, rrc_cfgured_ul_grant.precoding_and_nof_layers, (uint8_t)0u, (uint8_t)63u));
if (rrc_cfgured_ul_grant.srs_res_ind_present) {
HANDLE_CODE(pack_integer(bref, rrc_cfgured_ul_grant.srs_res_ind, (uint8_t)0u, (uint8_t)15u));
}
HANDLE_CODE(pack_integer(bref, rrc_cfgured_ul_grant.mcs_and_tbs, (uint8_t)0u, (uint8_t)31u));
if (rrc_cfgured_ul_grant.freq_hop_offset_present) {
HANDLE_CODE(pack_integer(bref, rrc_cfgured_ul_grant.freq_hop_offset, (uint16_t)1u, (uint16_t)274u));
}
HANDLE_CODE(pack_integer(bref, rrc_cfgured_ul_grant.pathloss_ref_idx, (uint8_t)0u, (uint8_t)3u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE cfgured_grant_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(freq_hop_present, 1));
HANDLE_CODE(bref.unpack(mcs_table_present, 1));
HANDLE_CODE(bref.unpack(mcs_table_transform_precoder_present, 1));
HANDLE_CODE(bref.unpack(uci_on_pusch_present, 1));
HANDLE_CODE(bref.unpack(rbg_size_present, 1));
HANDLE_CODE(bref.unpack(transform_precoder_present, 1));
HANDLE_CODE(bref.unpack(rep_k_rv_present, 1));
HANDLE_CODE(bref.unpack(cfgured_grant_timer_present, 1));
HANDLE_CODE(bref.unpack(rrc_cfgured_ul_grant_present, 1));
if (freq_hop_present) {
HANDLE_CODE(freq_hop.unpack(bref));
}
HANDLE_CODE(cg_dmrs_cfg.unpack(bref));
if (mcs_table_present) {
HANDLE_CODE(mcs_table.unpack(bref));
}
if (mcs_table_transform_precoder_present) {
HANDLE_CODE(mcs_table_transform_precoder.unpack(bref));
}
if (uci_on_pusch_present) {
HANDLE_CODE(uci_on_pusch.unpack(bref));
}
HANDLE_CODE(res_alloc.unpack(bref));
HANDLE_CODE(pwr_ctrl_loop_to_use.unpack(bref));
HANDLE_CODE(unpack_integer(p0_pusch_alpha, bref, (uint8_t)0u, (uint8_t)29u));
if (transform_precoder_present) {
HANDLE_CODE(transform_precoder.unpack(bref));
}
HANDLE_CODE(unpack_integer(nrof_harq_processes, bref, (uint8_t)1u, (uint8_t)16u));
HANDLE_CODE(rep_k.unpack(bref));
if (rep_k_rv_present) {
HANDLE_CODE(rep_k_rv.unpack(bref));
}
HANDLE_CODE(periodicity.unpack(bref));
if (cfgured_grant_timer_present) {
HANDLE_CODE(unpack_integer(cfgured_grant_timer, bref, (uint8_t)1u, (uint8_t)64u));
}
if (rrc_cfgured_ul_grant_present) {
bref.unpack(rrc_cfgured_ul_grant.ext, 1);
HANDLE_CODE(bref.unpack(rrc_cfgured_ul_grant.dmrs_seq_initization_present, 1));
HANDLE_CODE(bref.unpack(rrc_cfgured_ul_grant.srs_res_ind_present, 1));
HANDLE_CODE(bref.unpack(rrc_cfgured_ul_grant.freq_hop_offset_present, 1));
HANDLE_CODE(unpack_integer(rrc_cfgured_ul_grant.time_domain_offset, bref, (uint16_t)0u, (uint16_t)5119u));
HANDLE_CODE(unpack_integer(rrc_cfgured_ul_grant.time_domain_alloc, bref, (uint8_t)0u, (uint8_t)15u));
HANDLE_CODE(rrc_cfgured_ul_grant.freq_domain_alloc.unpack(bref));
HANDLE_CODE(unpack_integer(rrc_cfgured_ul_grant.ant_port, bref, (uint8_t)0u, (uint8_t)31u));
if (rrc_cfgured_ul_grant.dmrs_seq_initization_present) {
HANDLE_CODE(unpack_integer(rrc_cfgured_ul_grant.dmrs_seq_initization, bref, (uint8_t)0u, (uint8_t)1u));
}
HANDLE_CODE(unpack_integer(rrc_cfgured_ul_grant.precoding_and_nof_layers, bref, (uint8_t)0u, (uint8_t)63u));
if (rrc_cfgured_ul_grant.srs_res_ind_present) {
HANDLE_CODE(unpack_integer(rrc_cfgured_ul_grant.srs_res_ind, bref, (uint8_t)0u, (uint8_t)15u));
}
HANDLE_CODE(unpack_integer(rrc_cfgured_ul_grant.mcs_and_tbs, bref, (uint8_t)0u, (uint8_t)31u));
if (rrc_cfgured_ul_grant.freq_hop_offset_present) {
HANDLE_CODE(unpack_integer(rrc_cfgured_ul_grant.freq_hop_offset, bref, (uint16_t)1u, (uint16_t)274u));
}
HANDLE_CODE(unpack_integer(rrc_cfgured_ul_grant.pathloss_ref_idx, bref, (uint8_t)0u, (uint8_t)3u));
}
return SRSASN_SUCCESS;
}
void cfgured_grant_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (freq_hop_present) {
j.write_str("frequencyHopping", freq_hop.to_string());
}
j.write_fieldname("cg-DMRS-Configuration");
cg_dmrs_cfg.to_json(j);
if (mcs_table_present) {
j.write_str("mcs-Table", mcs_table.to_string());
}
if (mcs_table_transform_precoder_present) {
j.write_str("mcs-TableTransformPrecoder", mcs_table_transform_precoder.to_string());
}
if (uci_on_pusch_present) {
j.write_fieldname("uci-OnPUSCH");
uci_on_pusch.to_json(j);
}
j.write_str("resourceAllocation", res_alloc.to_string());
if (rbg_size_present) {
j.write_str("rbg-Size", "config2");
}
j.write_str("powerControlLoopToUse", pwr_ctrl_loop_to_use.to_string());
j.write_int("p0-PUSCH-Alpha", p0_pusch_alpha);
if (transform_precoder_present) {
j.write_str("transformPrecoder", transform_precoder.to_string());
}
j.write_int("nrofHARQ-Processes", nrof_harq_processes);
j.write_str("repK", rep_k.to_string());
if (rep_k_rv_present) {
j.write_str("repK-RV", rep_k_rv.to_string());
}
j.write_str("periodicity", periodicity.to_string());
if (cfgured_grant_timer_present) {
j.write_int("configuredGrantTimer", cfgured_grant_timer);
}
if (rrc_cfgured_ul_grant_present) {
j.write_fieldname("rrc-ConfiguredUplinkGrant");
j.start_obj();
j.write_int("timeDomainOffset", rrc_cfgured_ul_grant.time_domain_offset);
j.write_int("timeDomainAllocation", rrc_cfgured_ul_grant.time_domain_alloc);
j.write_str("frequencyDomainAllocation", rrc_cfgured_ul_grant.freq_domain_alloc.to_string());
j.write_int("antennaPort", rrc_cfgured_ul_grant.ant_port);
if (rrc_cfgured_ul_grant.dmrs_seq_initization_present) {
j.write_int("dmrs-SeqInitialization", rrc_cfgured_ul_grant.dmrs_seq_initization);
}
j.write_int("precodingAndNumberOfLayers", rrc_cfgured_ul_grant.precoding_and_nof_layers);
if (rrc_cfgured_ul_grant.srs_res_ind_present) {
j.write_int("srs-ResourceIndicator", rrc_cfgured_ul_grant.srs_res_ind);
}
j.write_int("mcsAndTBS", rrc_cfgured_ul_grant.mcs_and_tbs);
if (rrc_cfgured_ul_grant.freq_hop_offset_present) {
j.write_int("frequencyHoppingOffset", rrc_cfgured_ul_grant.freq_hop_offset);
}
j.write_int("pathlossReferenceIndex", rrc_cfgured_ul_grant.pathloss_ref_idx);
j.end_obj();
}
j.end_obj();
}
const char* cfgured_grant_cfg_s::freq_hop_opts::to_string() const
{
static const char* options[] = {"intraSlot", "interSlot"};
return convert_enum_idx(options, 2, value, "cfgured_grant_cfg_s::freq_hop_e_");
}
const char* cfgured_grant_cfg_s::mcs_table_opts::to_string() const
{
static const char* options[] = {"qam256", "qam64LowSE"};
return convert_enum_idx(options, 2, value, "cfgured_grant_cfg_s::mcs_table_e_");
}
uint16_t cfgured_grant_cfg_s::mcs_table_opts::to_number() const
{
static const uint16_t options[] = {256, 64};
return map_enum_number(options, 2, value, "cfgured_grant_cfg_s::mcs_table_e_");
}
const char* cfgured_grant_cfg_s::mcs_table_transform_precoder_opts::to_string() const
{
static const char* options[] = {"qam256", "qam64LowSE"};
return convert_enum_idx(options, 2, value, "cfgured_grant_cfg_s::mcs_table_transform_precoder_e_");
}
uint16_t cfgured_grant_cfg_s::mcs_table_transform_precoder_opts::to_number() const
{
static const uint16_t options[] = {256, 64};
return map_enum_number(options, 2, value, "cfgured_grant_cfg_s::mcs_table_transform_precoder_e_");
}
const char* cfgured_grant_cfg_s::res_alloc_opts::to_string() const
{
static const char* options[] = {"resourceAllocationType0", "resourceAllocationType1", "dynamicSwitch"};
return convert_enum_idx(options, 3, value, "cfgured_grant_cfg_s::res_alloc_e_");
}
uint8_t cfgured_grant_cfg_s::res_alloc_opts::to_number() const
{
static const uint8_t options[] = {0, 1};
return map_enum_number(options, 2, value, "cfgured_grant_cfg_s::res_alloc_e_");
}
const char* cfgured_grant_cfg_s::pwr_ctrl_loop_to_use_opts::to_string() const
{
static const char* options[] = {"n0", "n1"};
return convert_enum_idx(options, 2, value, "cfgured_grant_cfg_s::pwr_ctrl_loop_to_use_e_");
}
uint8_t cfgured_grant_cfg_s::pwr_ctrl_loop_to_use_opts::to_number() const
{
static const uint8_t options[] = {0, 1};
return map_enum_number(options, 2, value, "cfgured_grant_cfg_s::pwr_ctrl_loop_to_use_e_");
}
const char* cfgured_grant_cfg_s::transform_precoder_opts::to_string() const
{
static const char* options[] = {"enabled", "disabled"};
return convert_enum_idx(options, 2, value, "cfgured_grant_cfg_s::transform_precoder_e_");
}
const char* cfgured_grant_cfg_s::rep_k_opts::to_string() const
{
static const char* options[] = {"n1", "n2", "n4", "n8"};
return convert_enum_idx(options, 4, value, "cfgured_grant_cfg_s::rep_k_e_");
}
uint8_t cfgured_grant_cfg_s::rep_k_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 4, 8};
return map_enum_number(options, 4, value, "cfgured_grant_cfg_s::rep_k_e_");
}
const char* cfgured_grant_cfg_s::rep_k_rv_opts::to_string() const
{
static const char* options[] = {"s1-0231", "s2-0303", "s3-0000"};
return convert_enum_idx(options, 3, value, "cfgured_grant_cfg_s::rep_k_rv_e_");
}
uint8_t cfgured_grant_cfg_s::rep_k_rv_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 3};
return map_enum_number(options, 3, value, "cfgured_grant_cfg_s::rep_k_rv_e_");
}
const char* cfgured_grant_cfg_s::periodicity_opts::to_string() const
{
static const char* options[] = {
"sym2", "sym7", "sym1x14", "sym2x14", "sym4x14", "sym5x14", "sym8x14", "sym10x14",
"sym16x14", "sym20x14", "sym32x14", "sym40x14", "sym64x14", "sym80x14", "sym128x14", "sym160x14",
"sym256x14", "sym320x14", "sym512x14", "sym640x14", "sym1024x14", "sym1280x14", "sym2560x14", "sym5120x14",
"sym6", "sym1x12", "sym2x12", "sym4x12", "sym5x12", "sym8x12", "sym10x12", "sym16x12",
"sym20x12", "sym32x12", "sym40x12", "sym64x12", "sym80x12", "sym128x12", "sym160x12", "sym256x12",
"sym320x12", "sym512x12", "sym640x12", "sym1280x12", "sym2560x12"};
return convert_enum_idx(options, 45, value, "cfgured_grant_cfg_s::periodicity_e_");
}
// PUCCH-Config ::= SEQUENCE
SRSASN_CODE pucch_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(res_set_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(res_set_to_release_list_present, 1));
HANDLE_CODE(bref.pack(res_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(res_to_release_list_present, 1));
HANDLE_CODE(bref.pack(format1_present, 1));
HANDLE_CODE(bref.pack(format2_present, 1));
HANDLE_CODE(bref.pack(format3_present, 1));
HANDLE_CODE(bref.pack(format4_present, 1));
HANDLE_CODE(bref.pack(sched_request_res_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(sched_request_res_to_release_list_present, 1));
HANDLE_CODE(bref.pack(multi_csi_pucch_res_list_present, 1));
HANDLE_CODE(bref.pack(dl_data_to_ul_ack_present, 1));
HANDLE_CODE(bref.pack(spatial_relation_info_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(spatial_relation_info_to_release_list_present, 1));
HANDLE_CODE(bref.pack(pucch_pwr_ctrl_present, 1));
if (res_set_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, res_set_to_add_mod_list, 1, 4));
}
if (res_set_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, res_set_to_release_list, 1, 4, integer_packer<uint8_t>(0, 3)));
}
if (res_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, res_to_add_mod_list, 1, 128));
}
if (res_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, res_to_release_list, 1, 128, integer_packer<uint8_t>(0, 127)));
}
if (format1_present) {
HANDLE_CODE(format1.pack(bref));
}
if (format2_present) {
HANDLE_CODE(format2.pack(bref));
}
if (format3_present) {
HANDLE_CODE(format3.pack(bref));
}
if (format4_present) {
HANDLE_CODE(format4.pack(bref));
}
if (sched_request_res_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, sched_request_res_to_add_mod_list, 1, 8));
}
if (sched_request_res_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, sched_request_res_to_release_list, 1, 8, integer_packer<uint8_t>(1, 8)));
}
if (multi_csi_pucch_res_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, multi_csi_pucch_res_list, 1, 2, integer_packer<uint8_t>(0, 127)));
}
if (dl_data_to_ul_ack_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, dl_data_to_ul_ack, 1, 8, integer_packer<uint8_t>(0, 15)));
}
if (spatial_relation_info_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, spatial_relation_info_to_add_mod_list, 1, 8));
}
if (spatial_relation_info_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, spatial_relation_info_to_release_list, 1, 8, integer_packer<uint8_t>(1, 8)));
}
if (pucch_pwr_ctrl_present) {
HANDLE_CODE(pucch_pwr_ctrl.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pucch_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(res_set_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(res_set_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(res_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(res_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(format1_present, 1));
HANDLE_CODE(bref.unpack(format2_present, 1));
HANDLE_CODE(bref.unpack(format3_present, 1));
HANDLE_CODE(bref.unpack(format4_present, 1));
HANDLE_CODE(bref.unpack(sched_request_res_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(sched_request_res_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(multi_csi_pucch_res_list_present, 1));
HANDLE_CODE(bref.unpack(dl_data_to_ul_ack_present, 1));
HANDLE_CODE(bref.unpack(spatial_relation_info_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(spatial_relation_info_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(pucch_pwr_ctrl_present, 1));
if (res_set_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(res_set_to_add_mod_list, bref, 1, 4));
}
if (res_set_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(res_set_to_release_list, bref, 1, 4, integer_packer<uint8_t>(0, 3)));
}
if (res_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(res_to_add_mod_list, bref, 1, 128));
}
if (res_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(res_to_release_list, bref, 1, 128, integer_packer<uint8_t>(0, 127)));
}
if (format1_present) {
HANDLE_CODE(format1.unpack(bref));
}
if (format2_present) {
HANDLE_CODE(format2.unpack(bref));
}
if (format3_present) {
HANDLE_CODE(format3.unpack(bref));
}
if (format4_present) {
HANDLE_CODE(format4.unpack(bref));
}
if (sched_request_res_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(sched_request_res_to_add_mod_list, bref, 1, 8));
}
if (sched_request_res_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(sched_request_res_to_release_list, bref, 1, 8, integer_packer<uint8_t>(1, 8)));
}
if (multi_csi_pucch_res_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(multi_csi_pucch_res_list, bref, 1, 2, integer_packer<uint8_t>(0, 127)));
}
if (dl_data_to_ul_ack_present) {
HANDLE_CODE(unpack_dyn_seq_of(dl_data_to_ul_ack, bref, 1, 8, integer_packer<uint8_t>(0, 15)));
}
if (spatial_relation_info_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(spatial_relation_info_to_add_mod_list, bref, 1, 8));
}
if (spatial_relation_info_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(spatial_relation_info_to_release_list, bref, 1, 8, integer_packer<uint8_t>(1, 8)));
}
if (pucch_pwr_ctrl_present) {
HANDLE_CODE(pucch_pwr_ctrl.unpack(bref));
}
return SRSASN_SUCCESS;
}
void pucch_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (res_set_to_add_mod_list_present) {
j.start_array("resourceSetToAddModList");
for (const auto& e1 : res_set_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (res_set_to_release_list_present) {
j.start_array("resourceSetToReleaseList");
for (const auto& e1 : res_set_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (res_to_add_mod_list_present) {
j.start_array("resourceToAddModList");
for (const auto& e1 : res_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (res_to_release_list_present) {
j.start_array("resourceToReleaseList");
for (const auto& e1 : res_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (format1_present) {
j.write_fieldname("format1");
format1.to_json(j);
}
if (format2_present) {
j.write_fieldname("format2");
format2.to_json(j);
}
if (format3_present) {
j.write_fieldname("format3");
format3.to_json(j);
}
if (format4_present) {
j.write_fieldname("format4");
format4.to_json(j);
}
if (sched_request_res_to_add_mod_list_present) {
j.start_array("schedulingRequestResourceToAddModList");
for (const auto& e1 : sched_request_res_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (sched_request_res_to_release_list_present) {
j.start_array("schedulingRequestResourceToReleaseList");
for (const auto& e1 : sched_request_res_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (multi_csi_pucch_res_list_present) {
j.start_array("multi-CSI-PUCCH-ResourceList");
for (const auto& e1 : multi_csi_pucch_res_list) {
j.write_int(e1);
}
j.end_array();
}
if (dl_data_to_ul_ack_present) {
j.start_array("dl-DataToUL-ACK");
for (const auto& e1 : dl_data_to_ul_ack) {
j.write_int(e1);
}
j.end_array();
}
if (spatial_relation_info_to_add_mod_list_present) {
j.start_array("spatialRelationInfoToAddModList");
for (const auto& e1 : spatial_relation_info_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (spatial_relation_info_to_release_list_present) {
j.start_array("spatialRelationInfoToReleaseList");
for (const auto& e1 : spatial_relation_info_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (pucch_pwr_ctrl_present) {
j.write_fieldname("pucch-PowerControl");
pucch_pwr_ctrl.to_json(j);
}
j.end_obj();
}
// PUSCH-Config ::= SEQUENCE
SRSASN_CODE pusch_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(data_scrambling_id_pusch_present, 1));
HANDLE_CODE(bref.pack(tx_cfg_present, 1));
HANDLE_CODE(bref.pack(dmrs_ul_for_pusch_map_type_a_present, 1));
HANDLE_CODE(bref.pack(dmrs_ul_for_pusch_map_type_b_present, 1));
HANDLE_CODE(bref.pack(pusch_pwr_ctrl_present, 1));
HANDLE_CODE(bref.pack(freq_hop_present, 1));
HANDLE_CODE(bref.pack(freq_hop_offset_lists_present, 1));
HANDLE_CODE(bref.pack(pusch_time_domain_alloc_list_present, 1));
HANDLE_CODE(bref.pack(pusch_aggregation_factor_present, 1));
HANDLE_CODE(bref.pack(mcs_table_present, 1));
HANDLE_CODE(bref.pack(mcs_table_transform_precoder_present, 1));
HANDLE_CODE(bref.pack(transform_precoder_present, 1));
HANDLE_CODE(bref.pack(codebook_subset_present, 1));
HANDLE_CODE(bref.pack(max_rank_present, 1));
HANDLE_CODE(bref.pack(rbg_size_present, 1));
HANDLE_CODE(bref.pack(uci_on_pusch_present, 1));
HANDLE_CODE(bref.pack(tp_pi2_bpsk_present, 1));
if (data_scrambling_id_pusch_present) {
HANDLE_CODE(pack_integer(bref, data_scrambling_id_pusch, (uint16_t)0u, (uint16_t)1023u));
}
if (tx_cfg_present) {
HANDLE_CODE(tx_cfg.pack(bref));
}
if (dmrs_ul_for_pusch_map_type_a_present) {
HANDLE_CODE(dmrs_ul_for_pusch_map_type_a.pack(bref));
}
if (dmrs_ul_for_pusch_map_type_b_present) {
HANDLE_CODE(dmrs_ul_for_pusch_map_type_b.pack(bref));
}
if (pusch_pwr_ctrl_present) {
HANDLE_CODE(pusch_pwr_ctrl.pack(bref));
}
if (freq_hop_present) {
HANDLE_CODE(freq_hop.pack(bref));
}
if (freq_hop_offset_lists_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, freq_hop_offset_lists, 1, 4, integer_packer<uint16_t>(1, 274)));
}
HANDLE_CODE(res_alloc.pack(bref));
if (pusch_time_domain_alloc_list_present) {
HANDLE_CODE(pusch_time_domain_alloc_list.pack(bref));
}
if (pusch_aggregation_factor_present) {
HANDLE_CODE(pusch_aggregation_factor.pack(bref));
}
if (mcs_table_present) {
HANDLE_CODE(mcs_table.pack(bref));
}
if (mcs_table_transform_precoder_present) {
HANDLE_CODE(mcs_table_transform_precoder.pack(bref));
}
if (transform_precoder_present) {
HANDLE_CODE(transform_precoder.pack(bref));
}
if (codebook_subset_present) {
HANDLE_CODE(codebook_subset.pack(bref));
}
if (max_rank_present) {
HANDLE_CODE(pack_integer(bref, max_rank, (uint8_t)1u, (uint8_t)4u));
}
if (uci_on_pusch_present) {
HANDLE_CODE(uci_on_pusch.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pusch_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(data_scrambling_id_pusch_present, 1));
HANDLE_CODE(bref.unpack(tx_cfg_present, 1));
HANDLE_CODE(bref.unpack(dmrs_ul_for_pusch_map_type_a_present, 1));
HANDLE_CODE(bref.unpack(dmrs_ul_for_pusch_map_type_b_present, 1));
HANDLE_CODE(bref.unpack(pusch_pwr_ctrl_present, 1));
HANDLE_CODE(bref.unpack(freq_hop_present, 1));
HANDLE_CODE(bref.unpack(freq_hop_offset_lists_present, 1));
HANDLE_CODE(bref.unpack(pusch_time_domain_alloc_list_present, 1));
HANDLE_CODE(bref.unpack(pusch_aggregation_factor_present, 1));
HANDLE_CODE(bref.unpack(mcs_table_present, 1));
HANDLE_CODE(bref.unpack(mcs_table_transform_precoder_present, 1));
HANDLE_CODE(bref.unpack(transform_precoder_present, 1));
HANDLE_CODE(bref.unpack(codebook_subset_present, 1));
HANDLE_CODE(bref.unpack(max_rank_present, 1));
HANDLE_CODE(bref.unpack(rbg_size_present, 1));
HANDLE_CODE(bref.unpack(uci_on_pusch_present, 1));
HANDLE_CODE(bref.unpack(tp_pi2_bpsk_present, 1));
if (data_scrambling_id_pusch_present) {
HANDLE_CODE(unpack_integer(data_scrambling_id_pusch, bref, (uint16_t)0u, (uint16_t)1023u));
}
if (tx_cfg_present) {
HANDLE_CODE(tx_cfg.unpack(bref));
}
if (dmrs_ul_for_pusch_map_type_a_present) {
HANDLE_CODE(dmrs_ul_for_pusch_map_type_a.unpack(bref));
}
if (dmrs_ul_for_pusch_map_type_b_present) {
HANDLE_CODE(dmrs_ul_for_pusch_map_type_b.unpack(bref));
}
if (pusch_pwr_ctrl_present) {
HANDLE_CODE(pusch_pwr_ctrl.unpack(bref));
}
if (freq_hop_present) {
HANDLE_CODE(freq_hop.unpack(bref));
}
if (freq_hop_offset_lists_present) {
HANDLE_CODE(unpack_dyn_seq_of(freq_hop_offset_lists, bref, 1, 4, integer_packer<uint16_t>(1, 274)));
}
HANDLE_CODE(res_alloc.unpack(bref));
if (pusch_time_domain_alloc_list_present) {
HANDLE_CODE(pusch_time_domain_alloc_list.unpack(bref));
}
if (pusch_aggregation_factor_present) {
HANDLE_CODE(pusch_aggregation_factor.unpack(bref));
}
if (mcs_table_present) {
HANDLE_CODE(mcs_table.unpack(bref));
}
if (mcs_table_transform_precoder_present) {
HANDLE_CODE(mcs_table_transform_precoder.unpack(bref));
}
if (transform_precoder_present) {
HANDLE_CODE(transform_precoder.unpack(bref));
}
if (codebook_subset_present) {
HANDLE_CODE(codebook_subset.unpack(bref));
}
if (max_rank_present) {
HANDLE_CODE(unpack_integer(max_rank, bref, (uint8_t)1u, (uint8_t)4u));
}
if (uci_on_pusch_present) {
HANDLE_CODE(uci_on_pusch.unpack(bref));
}
return SRSASN_SUCCESS;
}
void pusch_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (data_scrambling_id_pusch_present) {
j.write_int("dataScramblingIdentityPUSCH", data_scrambling_id_pusch);
}
if (tx_cfg_present) {
j.write_str("txConfig", tx_cfg.to_string());
}
if (dmrs_ul_for_pusch_map_type_a_present) {
j.write_fieldname("dmrs-UplinkForPUSCH-MappingTypeA");
dmrs_ul_for_pusch_map_type_a.to_json(j);
}
if (dmrs_ul_for_pusch_map_type_b_present) {
j.write_fieldname("dmrs-UplinkForPUSCH-MappingTypeB");
dmrs_ul_for_pusch_map_type_b.to_json(j);
}
if (pusch_pwr_ctrl_present) {
j.write_fieldname("pusch-PowerControl");
pusch_pwr_ctrl.to_json(j);
}
if (freq_hop_present) {
j.write_str("frequencyHopping", freq_hop.to_string());
}
if (freq_hop_offset_lists_present) {
j.start_array("frequencyHoppingOffsetLists");
for (const auto& e1 : freq_hop_offset_lists) {
j.write_int(e1);
}
j.end_array();
}
j.write_str("resourceAllocation", res_alloc.to_string());
if (pusch_time_domain_alloc_list_present) {
j.write_fieldname("pusch-TimeDomainAllocationList");
pusch_time_domain_alloc_list.to_json(j);
}
if (pusch_aggregation_factor_present) {
j.write_str("pusch-AggregationFactor", pusch_aggregation_factor.to_string());
}
if (mcs_table_present) {
j.write_str("mcs-Table", mcs_table.to_string());
}
if (mcs_table_transform_precoder_present) {
j.write_str("mcs-TableTransformPrecoder", mcs_table_transform_precoder.to_string());
}
if (transform_precoder_present) {
j.write_str("transformPrecoder", transform_precoder.to_string());
}
if (codebook_subset_present) {
j.write_str("codebookSubset", codebook_subset.to_string());
}
if (max_rank_present) {
j.write_int("maxRank", max_rank);
}
if (rbg_size_present) {
j.write_str("rbg-Size", "config2");
}
if (uci_on_pusch_present) {
j.write_fieldname("uci-OnPUSCH");
uci_on_pusch.to_json(j);
}
if (tp_pi2_bpsk_present) {
j.write_str("tp-pi2BPSK", "enabled");
}
j.end_obj();
}
const char* pusch_cfg_s::tx_cfg_opts::to_string() const
{
static const char* options[] = {"codebook", "nonCodebook"};
return convert_enum_idx(options, 2, value, "pusch_cfg_s::tx_cfg_e_");
}
const char* pusch_cfg_s::freq_hop_opts::to_string() const
{
static const char* options[] = {"intraSlot", "interSlot"};
return convert_enum_idx(options, 2, value, "pusch_cfg_s::freq_hop_e_");
}
const char* pusch_cfg_s::res_alloc_opts::to_string() const
{
static const char* options[] = {"resourceAllocationType0", "resourceAllocationType1", "dynamicSwitch"};
return convert_enum_idx(options, 3, value, "pusch_cfg_s::res_alloc_e_");
}
uint8_t pusch_cfg_s::res_alloc_opts::to_number() const
{
static const uint8_t options[] = {0, 1};
return map_enum_number(options, 2, value, "pusch_cfg_s::res_alloc_e_");
}
const char* pusch_cfg_s::pusch_aggregation_factor_opts::to_string() const
{
static const char* options[] = {"n2", "n4", "n8"};
return convert_enum_idx(options, 3, value, "pusch_cfg_s::pusch_aggregation_factor_e_");
}
uint8_t pusch_cfg_s::pusch_aggregation_factor_opts::to_number() const
{
static const uint8_t options[] = {2, 4, 8};
return map_enum_number(options, 3, value, "pusch_cfg_s::pusch_aggregation_factor_e_");
}
const char* pusch_cfg_s::mcs_table_opts::to_string() const
{
static const char* options[] = {"qam256", "qam64LowSE"};
return convert_enum_idx(options, 2, value, "pusch_cfg_s::mcs_table_e_");
}
uint16_t pusch_cfg_s::mcs_table_opts::to_number() const
{
static const uint16_t options[] = {256, 64};
return map_enum_number(options, 2, value, "pusch_cfg_s::mcs_table_e_");
}
const char* pusch_cfg_s::mcs_table_transform_precoder_opts::to_string() const
{
static const char* options[] = {"qam256", "qam64LowSE"};
return convert_enum_idx(options, 2, value, "pusch_cfg_s::mcs_table_transform_precoder_e_");
}
uint16_t pusch_cfg_s::mcs_table_transform_precoder_opts::to_number() const
{
static const uint16_t options[] = {256, 64};
return map_enum_number(options, 2, value, "pusch_cfg_s::mcs_table_transform_precoder_e_");
}
const char* pusch_cfg_s::transform_precoder_opts::to_string() const
{
static const char* options[] = {"enabled", "disabled"};
return convert_enum_idx(options, 2, value, "pusch_cfg_s::transform_precoder_e_");
}
const char* pusch_cfg_s::codebook_subset_opts::to_string() const
{
static const char* options[] = {"fullyAndPartialAndNonCoherent", "partialAndNonCoherent", "nonCoherent"};
return convert_enum_idx(options, 3, value, "pusch_cfg_s::codebook_subset_e_");
}
// SRS-Config ::= SEQUENCE
SRSASN_CODE srs_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(srs_res_set_to_release_list_present, 1));
HANDLE_CODE(bref.pack(srs_res_set_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(srs_res_to_release_list_present, 1));
HANDLE_CODE(bref.pack(srs_res_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(tpc_accumulation_present, 1));
if (srs_res_set_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, srs_res_set_to_release_list, 1, 16, integer_packer<uint8_t>(0, 15)));
}
if (srs_res_set_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, srs_res_set_to_add_mod_list, 1, 16));
}
if (srs_res_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, srs_res_to_release_list, 1, 64, integer_packer<uint8_t>(0, 63)));
}
if (srs_res_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, srs_res_to_add_mod_list, 1, 64));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE srs_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(srs_res_set_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(srs_res_set_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(srs_res_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(srs_res_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(tpc_accumulation_present, 1));
if (srs_res_set_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(srs_res_set_to_release_list, bref, 1, 16, integer_packer<uint8_t>(0, 15)));
}
if (srs_res_set_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(srs_res_set_to_add_mod_list, bref, 1, 16));
}
if (srs_res_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(srs_res_to_release_list, bref, 1, 64, integer_packer<uint8_t>(0, 63)));
}
if (srs_res_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(srs_res_to_add_mod_list, bref, 1, 64));
}
return SRSASN_SUCCESS;
}
void srs_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (srs_res_set_to_release_list_present) {
j.start_array("srs-ResourceSetToReleaseList");
for (const auto& e1 : srs_res_set_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (srs_res_set_to_add_mod_list_present) {
j.start_array("srs-ResourceSetToAddModList");
for (const auto& e1 : srs_res_set_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (srs_res_to_release_list_present) {
j.start_array("srs-ResourceToReleaseList");
for (const auto& e1 : srs_res_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (srs_res_to_add_mod_list_present) {
j.start_array("srs-ResourceToAddModList");
for (const auto& e1 : srs_res_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (tpc_accumulation_present) {
j.write_str("tpc-Accumulation", "disabled");
}
j.end_obj();
}
// BWP-UplinkDedicated ::= SEQUENCE
SRSASN_CODE bwp_ul_ded_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(pucch_cfg_present, 1));
HANDLE_CODE(bref.pack(pusch_cfg_present, 1));
HANDLE_CODE(bref.pack(cfgured_grant_cfg_present, 1));
HANDLE_CODE(bref.pack(srs_cfg_present, 1));
HANDLE_CODE(bref.pack(beam_fail_recovery_cfg_present, 1));
if (pucch_cfg_present) {
HANDLE_CODE(pucch_cfg.pack(bref));
}
if (pusch_cfg_present) {
HANDLE_CODE(pusch_cfg.pack(bref));
}
if (cfgured_grant_cfg_present) {
HANDLE_CODE(cfgured_grant_cfg.pack(bref));
}
if (srs_cfg_present) {
HANDLE_CODE(srs_cfg.pack(bref));
}
if (beam_fail_recovery_cfg_present) {
HANDLE_CODE(beam_fail_recovery_cfg.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE bwp_ul_ded_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(pucch_cfg_present, 1));
HANDLE_CODE(bref.unpack(pusch_cfg_present, 1));
HANDLE_CODE(bref.unpack(cfgured_grant_cfg_present, 1));
HANDLE_CODE(bref.unpack(srs_cfg_present, 1));
HANDLE_CODE(bref.unpack(beam_fail_recovery_cfg_present, 1));
if (pucch_cfg_present) {
HANDLE_CODE(pucch_cfg.unpack(bref));
}
if (pusch_cfg_present) {
HANDLE_CODE(pusch_cfg.unpack(bref));
}
if (cfgured_grant_cfg_present) {
HANDLE_CODE(cfgured_grant_cfg.unpack(bref));
}
if (srs_cfg_present) {
HANDLE_CODE(srs_cfg.unpack(bref));
}
if (beam_fail_recovery_cfg_present) {
HANDLE_CODE(beam_fail_recovery_cfg.unpack(bref));
}
return SRSASN_SUCCESS;
}
void bwp_ul_ded_s::to_json(json_writer& j) const
{
j.start_obj();
if (pucch_cfg_present) {
j.write_fieldname("pucch-Config");
pucch_cfg.to_json(j);
}
if (pusch_cfg_present) {
j.write_fieldname("pusch-Config");
pusch_cfg.to_json(j);
}
if (cfgured_grant_cfg_present) {
j.write_fieldname("configuredGrantConfig");
cfgured_grant_cfg.to_json(j);
}
if (srs_cfg_present) {
j.write_fieldname("srs-Config");
srs_cfg.to_json(j);
}
if (beam_fail_recovery_cfg_present) {
j.write_fieldname("beamFailureRecoveryConfig");
beam_fail_recovery_cfg.to_json(j);
}
j.end_obj();
}
// BWP-Uplink ::= SEQUENCE
SRSASN_CODE bwp_ul_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(bwp_common_present, 1));
HANDLE_CODE(bref.pack(bwp_ded_present, 1));
HANDLE_CODE(pack_integer(bref, bwp_id, (uint8_t)0u, (uint8_t)4u));
if (bwp_common_present) {
HANDLE_CODE(bwp_common.pack(bref));
}
if (bwp_ded_present) {
HANDLE_CODE(bwp_ded.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE bwp_ul_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(bwp_common_present, 1));
HANDLE_CODE(bref.unpack(bwp_ded_present, 1));
HANDLE_CODE(unpack_integer(bwp_id, bref, (uint8_t)0u, (uint8_t)4u));
if (bwp_common_present) {
HANDLE_CODE(bwp_common.unpack(bref));
}
if (bwp_ded_present) {
HANDLE_CODE(bwp_ded.unpack(bref));
}
return SRSASN_SUCCESS;
}
void bwp_ul_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("bwp-Id", bwp_id);
if (bwp_common_present) {
j.write_fieldname("bwp-Common");
bwp_common.to_json(j);
}
if (bwp_ded_present) {
j.write_fieldname("bwp-Dedicated");
bwp_ded.to_json(j);
}
j.end_obj();
}
// CA-BandwidthClassEUTRA ::= ENUMERATED
const char* ca_bw_class_eutra_opts::to_string() const
{
static const char* options[] = {"a", "b", "c", "d", "e", "f"};
return convert_enum_idx(options, 6, value, "ca_bw_class_eutra_e");
}
// CA-BandwidthClassNR ::= ENUMERATED
const char* ca_bw_class_nr_opts::to_string() const
{
static const char* options[] = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q"};
return convert_enum_idx(options, 17, value, "ca_bw_class_nr_e");
}
// BandParameters ::= CHOICE
void band_params_c::destroy_()
{
switch (type_) {
case types::eutra:
c.destroy<eutra_s_>();
break;
case types::nr:
c.destroy<nr_s_>();
break;
default:
break;
}
}
void band_params_c::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::eutra:
c.init<eutra_s_>();
break;
case types::nr:
c.init<nr_s_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "band_params_c");
}
}
band_params_c::band_params_c(const band_params_c& other)
{
type_ = other.type();
switch (type_) {
case types::eutra:
c.init(other.c.get<eutra_s_>());
break;
case types::nr:
c.init(other.c.get<nr_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "band_params_c");
}
}
band_params_c& band_params_c::operator=(const band_params_c& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::eutra:
c.set(other.c.get<eutra_s_>());
break;
case types::nr:
c.set(other.c.get<nr_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "band_params_c");
}
return *this;
}
band_params_c::eutra_s_& band_params_c::set_eutra()
{
set(types::eutra);
return c.get<eutra_s_>();
}
band_params_c::nr_s_& band_params_c::set_nr()
{
set(types::nr);
return c.get<nr_s_>();
}
void band_params_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::eutra:
j.write_fieldname("eutra");
j.start_obj();
j.write_int("bandEUTRA", c.get<eutra_s_>().band_eutra);
if (c.get<eutra_s_>().ca_bw_class_dl_eutra_present) {
j.write_str("ca-BandwidthClassDL-EUTRA", c.get<eutra_s_>().ca_bw_class_dl_eutra.to_string());
}
if (c.get<eutra_s_>().ca_bw_class_ul_eutra_present) {
j.write_str("ca-BandwidthClassUL-EUTRA", c.get<eutra_s_>().ca_bw_class_ul_eutra.to_string());
}
j.end_obj();
break;
case types::nr:
j.write_fieldname("nr");
j.start_obj();
j.write_int("bandNR", c.get<nr_s_>().band_nr);
if (c.get<nr_s_>().ca_bw_class_dl_nr_present) {
j.write_str("ca-BandwidthClassDL-NR", c.get<nr_s_>().ca_bw_class_dl_nr.to_string());
}
if (c.get<nr_s_>().ca_bw_class_ul_nr_present) {
j.write_str("ca-BandwidthClassUL-NR", c.get<nr_s_>().ca_bw_class_ul_nr.to_string());
}
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "band_params_c");
}
j.end_obj();
}
SRSASN_CODE band_params_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::eutra:
HANDLE_CODE(bref.pack(c.get<eutra_s_>().ca_bw_class_dl_eutra_present, 1));
HANDLE_CODE(bref.pack(c.get<eutra_s_>().ca_bw_class_ul_eutra_present, 1));
HANDLE_CODE(pack_integer(bref, c.get<eutra_s_>().band_eutra, (uint16_t)1u, (uint16_t)256u));
if (c.get<eutra_s_>().ca_bw_class_dl_eutra_present) {
HANDLE_CODE(c.get<eutra_s_>().ca_bw_class_dl_eutra.pack(bref));
}
if (c.get<eutra_s_>().ca_bw_class_ul_eutra_present) {
HANDLE_CODE(c.get<eutra_s_>().ca_bw_class_ul_eutra.pack(bref));
}
break;
case types::nr:
HANDLE_CODE(bref.pack(c.get<nr_s_>().ca_bw_class_dl_nr_present, 1));
HANDLE_CODE(bref.pack(c.get<nr_s_>().ca_bw_class_ul_nr_present, 1));
HANDLE_CODE(pack_integer(bref, c.get<nr_s_>().band_nr, (uint16_t)1u, (uint16_t)1024u));
if (c.get<nr_s_>().ca_bw_class_dl_nr_present) {
HANDLE_CODE(c.get<nr_s_>().ca_bw_class_dl_nr.pack(bref));
}
if (c.get<nr_s_>().ca_bw_class_ul_nr_present) {
HANDLE_CODE(c.get<nr_s_>().ca_bw_class_ul_nr.pack(bref));
}
break;
default:
log_invalid_choice_id(type_, "band_params_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE band_params_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::eutra:
HANDLE_CODE(bref.unpack(c.get<eutra_s_>().ca_bw_class_dl_eutra_present, 1));
HANDLE_CODE(bref.unpack(c.get<eutra_s_>().ca_bw_class_ul_eutra_present, 1));
HANDLE_CODE(unpack_integer(c.get<eutra_s_>().band_eutra, bref, (uint16_t)1u, (uint16_t)256u));
if (c.get<eutra_s_>().ca_bw_class_dl_eutra_present) {
HANDLE_CODE(c.get<eutra_s_>().ca_bw_class_dl_eutra.unpack(bref));
}
if (c.get<eutra_s_>().ca_bw_class_ul_eutra_present) {
HANDLE_CODE(c.get<eutra_s_>().ca_bw_class_ul_eutra.unpack(bref));
}
break;
case types::nr:
HANDLE_CODE(bref.unpack(c.get<nr_s_>().ca_bw_class_dl_nr_present, 1));
HANDLE_CODE(bref.unpack(c.get<nr_s_>().ca_bw_class_ul_nr_present, 1));
HANDLE_CODE(unpack_integer(c.get<nr_s_>().band_nr, bref, (uint16_t)1u, (uint16_t)1024u));
if (c.get<nr_s_>().ca_bw_class_dl_nr_present) {
HANDLE_CODE(c.get<nr_s_>().ca_bw_class_dl_nr.unpack(bref));
}
if (c.get<nr_s_>().ca_bw_class_ul_nr_present) {
HANDLE_CODE(c.get<nr_s_>().ca_bw_class_ul_nr.unpack(bref));
}
break;
default:
log_invalid_choice_id(type_, "band_params_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* band_params_c::types_opts::to_string() const
{
static const char* options[] = {"eutra", "nr"};
return convert_enum_idx(options, 2, value, "band_params_c::types");
}
// CA-ParametersEUTRA ::= SEQUENCE
SRSASN_CODE ca_params_eutra_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(multiple_timing_advance_present, 1));
HANDLE_CODE(bref.pack(simul_rx_tx_present, 1));
HANDLE_CODE(bref.pack(supported_naics_minus2_crs_ap_present, 1));
HANDLE_CODE(bref.pack(add_rx_tx_performance_req_present, 1));
HANDLE_CODE(bref.pack(ue_ca_pwr_class_n_present, 1));
HANDLE_CODE(bref.pack(supported_bw_combination_set_eutra_v1530_present, 1));
if (supported_naics_minus2_crs_ap_present) {
HANDLE_CODE(supported_naics_minus2_crs_ap.pack(bref));
}
if (supported_bw_combination_set_eutra_v1530_present) {
HANDLE_CODE(supported_bw_combination_set_eutra_v1530.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ca_params_eutra_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(multiple_timing_advance_present, 1));
HANDLE_CODE(bref.unpack(simul_rx_tx_present, 1));
HANDLE_CODE(bref.unpack(supported_naics_minus2_crs_ap_present, 1));
HANDLE_CODE(bref.unpack(add_rx_tx_performance_req_present, 1));
HANDLE_CODE(bref.unpack(ue_ca_pwr_class_n_present, 1));
HANDLE_CODE(bref.unpack(supported_bw_combination_set_eutra_v1530_present, 1));
if (supported_naics_minus2_crs_ap_present) {
HANDLE_CODE(supported_naics_minus2_crs_ap.unpack(bref));
}
if (supported_bw_combination_set_eutra_v1530_present) {
HANDLE_CODE(supported_bw_combination_set_eutra_v1530.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ca_params_eutra_s::to_json(json_writer& j) const
{
j.start_obj();
if (multiple_timing_advance_present) {
j.write_str("multipleTimingAdvance", "supported");
}
if (simul_rx_tx_present) {
j.write_str("simultaneousRx-Tx", "supported");
}
if (supported_naics_minus2_crs_ap_present) {
j.write_str("supportedNAICS-2CRS-AP", supported_naics_minus2_crs_ap.to_string());
}
if (add_rx_tx_performance_req_present) {
j.write_str("additionalRx-Tx-PerformanceReq", "supported");
}
if (ue_ca_pwr_class_n_present) {
j.write_str("ue-CA-PowerClass-N", "class2");
}
if (supported_bw_combination_set_eutra_v1530_present) {
j.write_str("supportedBandwidthCombinationSetEUTRA-v1530", supported_bw_combination_set_eutra_v1530.to_string());
}
j.end_obj();
}
// CA-ParametersNR ::= SEQUENCE
SRSASN_CODE ca_params_nr_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(dummy_present, 1));
HANDLE_CODE(bref.pack(parallel_tx_srs_pucch_pusch_present, 1));
HANDLE_CODE(bref.pack(parallel_tx_prach_srs_pucch_pusch_present, 1));
HANDLE_CODE(bref.pack(simul_rx_tx_inter_band_ca_present, 1));
HANDLE_CODE(bref.pack(simul_rx_tx_sul_present, 1));
HANDLE_CODE(bref.pack(diff_numerology_across_pucch_group_present, 1));
HANDLE_CODE(bref.pack(diff_numerology_within_pucch_group_smaller_scs_present, 1));
HANDLE_CODE(bref.pack(supported_num_tag_present, 1));
if (supported_num_tag_present) {
HANDLE_CODE(supported_num_tag.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ca_params_nr_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(dummy_present, 1));
HANDLE_CODE(bref.unpack(parallel_tx_srs_pucch_pusch_present, 1));
HANDLE_CODE(bref.unpack(parallel_tx_prach_srs_pucch_pusch_present, 1));
HANDLE_CODE(bref.unpack(simul_rx_tx_inter_band_ca_present, 1));
HANDLE_CODE(bref.unpack(simul_rx_tx_sul_present, 1));
HANDLE_CODE(bref.unpack(diff_numerology_across_pucch_group_present, 1));
HANDLE_CODE(bref.unpack(diff_numerology_within_pucch_group_smaller_scs_present, 1));
HANDLE_CODE(bref.unpack(supported_num_tag_present, 1));
if (supported_num_tag_present) {
HANDLE_CODE(supported_num_tag.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ca_params_nr_s::to_json(json_writer& j) const
{
j.start_obj();
if (dummy_present) {
j.write_str("dummy", "supported");
}
if (parallel_tx_srs_pucch_pusch_present) {
j.write_str("parallelTxSRS-PUCCH-PUSCH", "supported");
}
if (parallel_tx_prach_srs_pucch_pusch_present) {
j.write_str("parallelTxPRACH-SRS-PUCCH-PUSCH", "supported");
}
if (simul_rx_tx_inter_band_ca_present) {
j.write_str("simultaneousRxTxInterBandCA", "supported");
}
if (simul_rx_tx_sul_present) {
j.write_str("simultaneousRxTxSUL", "supported");
}
if (diff_numerology_across_pucch_group_present) {
j.write_str("diffNumerologyAcrossPUCCH-Group", "supported");
}
if (diff_numerology_within_pucch_group_smaller_scs_present) {
j.write_str("diffNumerologyWithinPUCCH-GroupSmallerSCS", "supported");
}
if (supported_num_tag_present) {
j.write_str("supportedNumberTAG", supported_num_tag.to_string());
}
j.end_obj();
}
const char* ca_params_nr_s::supported_num_tag_opts::to_string() const
{
static const char* options[] = {"n2", "n3", "n4"};
return convert_enum_idx(options, 3, value, "ca_params_nr_s::supported_num_tag_e_");
}
uint8_t ca_params_nr_s::supported_num_tag_opts::to_number() const
{
static const uint8_t options[] = {2, 3, 4};
return map_enum_number(options, 3, value, "ca_params_nr_s::supported_num_tag_e_");
}
// MRDC-Parameters ::= SEQUENCE
SRSASN_CODE mrdc_params_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(single_ul_tx_present, 1));
HANDLE_CODE(bref.pack(dynamic_pwr_sharing_endc_present, 1));
HANDLE_CODE(bref.pack(tdm_pattern_present, 1));
HANDLE_CODE(bref.pack(ul_sharing_eutra_nr_present, 1));
HANDLE_CODE(bref.pack(ul_switching_time_eutra_nr_present, 1));
HANDLE_CODE(bref.pack(simul_rx_tx_inter_band_endc_present, 1));
HANDLE_CODE(bref.pack(async_intra_band_endc_present, 1));
if (ul_sharing_eutra_nr_present) {
HANDLE_CODE(ul_sharing_eutra_nr.pack(bref));
}
if (ul_switching_time_eutra_nr_present) {
HANDLE_CODE(ul_switching_time_eutra_nr.pack(bref));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= dual_pa_architecture_present;
group_flags[0] |= intra_band_endc_support_present;
group_flags[0] |= ul_timing_align_eutra_nr_present;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(dual_pa_architecture_present, 1));
HANDLE_CODE(bref.pack(intra_band_endc_support_present, 1));
HANDLE_CODE(bref.pack(ul_timing_align_eutra_nr_present, 1));
if (intra_band_endc_support_present) {
HANDLE_CODE(intra_band_endc_support.pack(bref));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE mrdc_params_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(single_ul_tx_present, 1));
HANDLE_CODE(bref.unpack(dynamic_pwr_sharing_endc_present, 1));
HANDLE_CODE(bref.unpack(tdm_pattern_present, 1));
HANDLE_CODE(bref.unpack(ul_sharing_eutra_nr_present, 1));
HANDLE_CODE(bref.unpack(ul_switching_time_eutra_nr_present, 1));
HANDLE_CODE(bref.unpack(simul_rx_tx_inter_band_endc_present, 1));
HANDLE_CODE(bref.unpack(async_intra_band_endc_present, 1));
if (ul_sharing_eutra_nr_present) {
HANDLE_CODE(ul_sharing_eutra_nr.unpack(bref));
}
if (ul_switching_time_eutra_nr_present) {
HANDLE_CODE(ul_switching_time_eutra_nr.unpack(bref));
}
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(dual_pa_architecture_present, 1));
HANDLE_CODE(bref.unpack(intra_band_endc_support_present, 1));
HANDLE_CODE(bref.unpack(ul_timing_align_eutra_nr_present, 1));
if (intra_band_endc_support_present) {
HANDLE_CODE(intra_band_endc_support.unpack(bref));
}
}
}
return SRSASN_SUCCESS;
}
void mrdc_params_s::to_json(json_writer& j) const
{
j.start_obj();
if (single_ul_tx_present) {
j.write_str("singleUL-Transmission", "supported");
}
if (dynamic_pwr_sharing_endc_present) {
j.write_str("dynamicPowerSharingENDC", "supported");
}
if (tdm_pattern_present) {
j.write_str("tdm-Pattern", "supported");
}
if (ul_sharing_eutra_nr_present) {
j.write_str("ul-SharingEUTRA-NR", ul_sharing_eutra_nr.to_string());
}
if (ul_switching_time_eutra_nr_present) {
j.write_str("ul-SwitchingTimeEUTRA-NR", ul_switching_time_eutra_nr.to_string());
}
if (simul_rx_tx_inter_band_endc_present) {
j.write_str("simultaneousRxTxInterBandENDC", "supported");
}
if (async_intra_band_endc_present) {
j.write_str("asyncIntraBandENDC", "supported");
}
if (ext) {
if (dual_pa_architecture_present) {
j.write_str("dualPA-Architecture", "supported");
}
if (intra_band_endc_support_present) {
j.write_str("intraBandENDC-Support", intra_band_endc_support.to_string());
}
if (ul_timing_align_eutra_nr_present) {
j.write_str("ul-TimingAlignmentEUTRA-NR", "required");
}
}
j.end_obj();
}
const char* mrdc_params_s::ul_sharing_eutra_nr_opts::to_string() const
{
static const char* options[] = {"tdm", "fdm", "both"};
return convert_enum_idx(options, 3, value, "mrdc_params_s::ul_sharing_eutra_nr_e_");
}
const char* mrdc_params_s::ul_switching_time_eutra_nr_opts::to_string() const
{
static const char* options[] = {"type1", "type2"};
return convert_enum_idx(options, 2, value, "mrdc_params_s::ul_switching_time_eutra_nr_e_");
}
uint8_t mrdc_params_s::ul_switching_time_eutra_nr_opts::to_number() const
{
static const uint8_t options[] = {1, 2};
return map_enum_number(options, 2, value, "mrdc_params_s::ul_switching_time_eutra_nr_e_");
}
const char* mrdc_params_s::intra_band_endc_support_opts::to_string() const
{
static const char* options[] = {"non-contiguous", "both"};
return convert_enum_idx(options, 2, value, "mrdc_params_s::intra_band_endc_support_e_");
}
// BandCombination ::= SEQUENCE
SRSASN_CODE band_combination_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(ca_params_eutra_present, 1));
HANDLE_CODE(bref.pack(ca_params_nr_present, 1));
HANDLE_CODE(bref.pack(mrdc_params_present, 1));
HANDLE_CODE(bref.pack(supported_bw_combination_set_present, 1));
HANDLE_CODE(bref.pack(pwr_class_v1530_present, 1));
HANDLE_CODE(pack_dyn_seq_of(bref, band_list, 1, 32));
HANDLE_CODE(pack_integer(bref, feature_set_combination, (uint16_t)0u, (uint16_t)1024u));
if (ca_params_eutra_present) {
HANDLE_CODE(ca_params_eutra.pack(bref));
}
if (ca_params_nr_present) {
HANDLE_CODE(ca_params_nr.pack(bref));
}
if (mrdc_params_present) {
HANDLE_CODE(mrdc_params.pack(bref));
}
if (supported_bw_combination_set_present) {
HANDLE_CODE(supported_bw_combination_set.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE band_combination_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(ca_params_eutra_present, 1));
HANDLE_CODE(bref.unpack(ca_params_nr_present, 1));
HANDLE_CODE(bref.unpack(mrdc_params_present, 1));
HANDLE_CODE(bref.unpack(supported_bw_combination_set_present, 1));
HANDLE_CODE(bref.unpack(pwr_class_v1530_present, 1));
HANDLE_CODE(unpack_dyn_seq_of(band_list, bref, 1, 32));
HANDLE_CODE(unpack_integer(feature_set_combination, bref, (uint16_t)0u, (uint16_t)1024u));
if (ca_params_eutra_present) {
HANDLE_CODE(ca_params_eutra.unpack(bref));
}
if (ca_params_nr_present) {
HANDLE_CODE(ca_params_nr.unpack(bref));
}
if (mrdc_params_present) {
HANDLE_CODE(mrdc_params.unpack(bref));
}
if (supported_bw_combination_set_present) {
HANDLE_CODE(supported_bw_combination_set.unpack(bref));
}
return SRSASN_SUCCESS;
}
void band_combination_s::to_json(json_writer& j) const
{
j.start_obj();
j.start_array("bandList");
for (const auto& e1 : band_list) {
e1.to_json(j);
}
j.end_array();
j.write_int("featureSetCombination", feature_set_combination);
if (ca_params_eutra_present) {
j.write_fieldname("ca-ParametersEUTRA");
ca_params_eutra.to_json(j);
}
if (ca_params_nr_present) {
j.write_fieldname("ca-ParametersNR");
ca_params_nr.to_json(j);
}
if (mrdc_params_present) {
j.write_fieldname("mrdc-Parameters");
mrdc_params.to_json(j);
}
if (supported_bw_combination_set_present) {
j.write_str("supportedBandwidthCombinationSet", supported_bw_combination_set.to_string());
}
if (pwr_class_v1530_present) {
j.write_str("powerClass-v1530", "pc2");
}
j.end_obj();
}
// SRS-SwitchingTimeEUTRA ::= SEQUENCE
SRSASN_CODE srs_switching_time_eutra_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(switching_time_dl_present, 1));
HANDLE_CODE(bref.pack(switching_time_ul_present, 1));
if (switching_time_dl_present) {
HANDLE_CODE(switching_time_dl.pack(bref));
}
if (switching_time_ul_present) {
HANDLE_CODE(switching_time_ul.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE srs_switching_time_eutra_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(switching_time_dl_present, 1));
HANDLE_CODE(bref.unpack(switching_time_ul_present, 1));
if (switching_time_dl_present) {
HANDLE_CODE(switching_time_dl.unpack(bref));
}
if (switching_time_ul_present) {
HANDLE_CODE(switching_time_ul.unpack(bref));
}
return SRSASN_SUCCESS;
}
void srs_switching_time_eutra_s::to_json(json_writer& j) const
{
j.start_obj();
if (switching_time_dl_present) {
j.write_str("switchingTimeDL", switching_time_dl.to_string());
}
if (switching_time_ul_present) {
j.write_str("switchingTimeUL", switching_time_ul.to_string());
}
j.end_obj();
}
const char* srs_switching_time_eutra_s::switching_time_dl_opts::to_string() const
{
static const char* options[] = {"n0",
"n0dot5",
"n1",
"n1dot5",
"n2",
"n2dot5",
"n3",
"n3dot5",
"n4",
"n4dot5",
"n5",
"n5dot5",
"n6",
"n6dot5",
"n7"};
return convert_enum_idx(options, 15, value, "srs_switching_time_eutra_s::switching_time_dl_e_");
}
float srs_switching_time_eutra_s::switching_time_dl_opts::to_number() const
{
static const float options[] = {0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0};
return map_enum_number(options, 15, value, "srs_switching_time_eutra_s::switching_time_dl_e_");
}
const char* srs_switching_time_eutra_s::switching_time_dl_opts::to_number_string() const
{
static const char* options[] = {
"0", "0.5", "1", "1.5", "2", "2.5", "3", "3.5", "4", "4.5", "5", "5.5", "6", "6.5", "7"};
return convert_enum_idx(options, 15, value, "srs_switching_time_eutra_s::switching_time_dl_e_");
}
const char* srs_switching_time_eutra_s::switching_time_ul_opts::to_string() const
{
static const char* options[] = {"n0",
"n0dot5",
"n1",
"n1dot5",
"n2",
"n2dot5",
"n3",
"n3dot5",
"n4",
"n4dot5",
"n5",
"n5dot5",
"n6",
"n6dot5",
"n7"};
return convert_enum_idx(options, 15, value, "srs_switching_time_eutra_s::switching_time_ul_e_");
}
float srs_switching_time_eutra_s::switching_time_ul_opts::to_number() const
{
static const float options[] = {0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0};
return map_enum_number(options, 15, value, "srs_switching_time_eutra_s::switching_time_ul_e_");
}
const char* srs_switching_time_eutra_s::switching_time_ul_opts::to_number_string() const
{
static const char* options[] = {
"0", "0.5", "1", "1.5", "2", "2.5", "3", "3.5", "4", "4.5", "5", "5.5", "6", "6.5", "7"};
return convert_enum_idx(options, 15, value, "srs_switching_time_eutra_s::switching_time_ul_e_");
}
// SRS-SwitchingTimeNR ::= SEQUENCE
SRSASN_CODE srs_switching_time_nr_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(switching_time_dl_present, 1));
HANDLE_CODE(bref.pack(switching_time_ul_present, 1));
if (switching_time_dl_present) {
HANDLE_CODE(switching_time_dl.pack(bref));
}
if (switching_time_ul_present) {
HANDLE_CODE(switching_time_ul.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE srs_switching_time_nr_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(switching_time_dl_present, 1));
HANDLE_CODE(bref.unpack(switching_time_ul_present, 1));
if (switching_time_dl_present) {
HANDLE_CODE(switching_time_dl.unpack(bref));
}
if (switching_time_ul_present) {
HANDLE_CODE(switching_time_ul.unpack(bref));
}
return SRSASN_SUCCESS;
}
void srs_switching_time_nr_s::to_json(json_writer& j) const
{
j.start_obj();
if (switching_time_dl_present) {
j.write_str("switchingTimeDL", switching_time_dl.to_string());
}
if (switching_time_ul_present) {
j.write_str("switchingTimeUL", switching_time_ul.to_string());
}
j.end_obj();
}
const char* srs_switching_time_nr_s::switching_time_dl_opts::to_string() const
{
static const char* options[] = {"n0us", "n30us", "n100us", "n140us", "n200us", "n300us", "n500us", "n900us"};
return convert_enum_idx(options, 8, value, "srs_switching_time_nr_s::switching_time_dl_e_");
}
uint16_t srs_switching_time_nr_s::switching_time_dl_opts::to_number() const
{
static const uint16_t options[] = {0, 30, 100, 140, 200, 300, 500, 900};
return map_enum_number(options, 8, value, "srs_switching_time_nr_s::switching_time_dl_e_");
}
const char* srs_switching_time_nr_s::switching_time_ul_opts::to_string() const
{
static const char* options[] = {"n0us", "n30us", "n100us", "n140us", "n200us", "n300us", "n500us", "n900us"};
return convert_enum_idx(options, 8, value, "srs_switching_time_nr_s::switching_time_ul_e_");
}
uint16_t srs_switching_time_nr_s::switching_time_ul_opts::to_number() const
{
static const uint16_t options[] = {0, 30, 100, 140, 200, 300, 500, 900};
return map_enum_number(options, 8, value, "srs_switching_time_nr_s::switching_time_ul_e_");
}
// BandParameters-v1540 ::= SEQUENCE
SRSASN_CODE band_params_v1540_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(srs_carrier_switch_present, 1));
HANDLE_CODE(bref.pack(srs_tx_switch_present, 1));
if (srs_carrier_switch_present) {
HANDLE_CODE(srs_carrier_switch.pack(bref));
}
if (srs_tx_switch_present) {
HANDLE_CODE(bref.pack(srs_tx_switch.tx_switch_impact_to_rx_present, 1));
HANDLE_CODE(bref.pack(srs_tx_switch.tx_switch_with_another_band_present, 1));
HANDLE_CODE(srs_tx_switch.supported_srs_tx_port_switch.pack(bref));
if (srs_tx_switch.tx_switch_impact_to_rx_present) {
HANDLE_CODE(pack_integer(bref, srs_tx_switch.tx_switch_impact_to_rx, (uint8_t)1u, (uint8_t)32u));
}
if (srs_tx_switch.tx_switch_with_another_band_present) {
HANDLE_CODE(pack_integer(bref, srs_tx_switch.tx_switch_with_another_band, (uint8_t)1u, (uint8_t)32u));
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE band_params_v1540_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(srs_carrier_switch_present, 1));
HANDLE_CODE(bref.unpack(srs_tx_switch_present, 1));
if (srs_carrier_switch_present) {
HANDLE_CODE(srs_carrier_switch.unpack(bref));
}
if (srs_tx_switch_present) {
HANDLE_CODE(bref.unpack(srs_tx_switch.tx_switch_impact_to_rx_present, 1));
HANDLE_CODE(bref.unpack(srs_tx_switch.tx_switch_with_another_band_present, 1));
HANDLE_CODE(srs_tx_switch.supported_srs_tx_port_switch.unpack(bref));
if (srs_tx_switch.tx_switch_impact_to_rx_present) {
HANDLE_CODE(unpack_integer(srs_tx_switch.tx_switch_impact_to_rx, bref, (uint8_t)1u, (uint8_t)32u));
}
if (srs_tx_switch.tx_switch_with_another_band_present) {
HANDLE_CODE(unpack_integer(srs_tx_switch.tx_switch_with_another_band, bref, (uint8_t)1u, (uint8_t)32u));
}
}
return SRSASN_SUCCESS;
}
void band_params_v1540_s::to_json(json_writer& j) const
{
j.start_obj();
if (srs_carrier_switch_present) {
j.write_fieldname("srs-CarrierSwitch");
srs_carrier_switch.to_json(j);
}
if (srs_tx_switch_present) {
j.write_fieldname("srs-TxSwitch");
j.start_obj();
j.write_str("supportedSRS-TxPortSwitch", srs_tx_switch.supported_srs_tx_port_switch.to_string());
if (srs_tx_switch.tx_switch_impact_to_rx_present) {
j.write_int("txSwitchImpactToRx", srs_tx_switch.tx_switch_impact_to_rx);
}
if (srs_tx_switch.tx_switch_with_another_band_present) {
j.write_int("txSwitchWithAnotherBand", srs_tx_switch.tx_switch_with_another_band);
}
j.end_obj();
}
j.end_obj();
}
void band_params_v1540_s::srs_carrier_switch_c_::destroy_()
{
switch (type_) {
case types::nr:
c.destroy<nr_s_>();
break;
case types::eutra:
c.destroy<eutra_s_>();
break;
default:
break;
}
}
void band_params_v1540_s::srs_carrier_switch_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::nr:
c.init<nr_s_>();
break;
case types::eutra:
c.init<eutra_s_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "band_params_v1540_s::srs_carrier_switch_c_");
}
}
band_params_v1540_s::srs_carrier_switch_c_::srs_carrier_switch_c_(
const band_params_v1540_s::srs_carrier_switch_c_& other)
{
type_ = other.type();
switch (type_) {
case types::nr:
c.init(other.c.get<nr_s_>());
break;
case types::eutra:
c.init(other.c.get<eutra_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "band_params_v1540_s::srs_carrier_switch_c_");
}
}
band_params_v1540_s::srs_carrier_switch_c_&
band_params_v1540_s::srs_carrier_switch_c_::operator=(const band_params_v1540_s::srs_carrier_switch_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::nr:
c.set(other.c.get<nr_s_>());
break;
case types::eutra:
c.set(other.c.get<eutra_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "band_params_v1540_s::srs_carrier_switch_c_");
}
return *this;
}
band_params_v1540_s::srs_carrier_switch_c_::nr_s_& band_params_v1540_s::srs_carrier_switch_c_::set_nr()
{
set(types::nr);
return c.get<nr_s_>();
}
band_params_v1540_s::srs_carrier_switch_c_::eutra_s_& band_params_v1540_s::srs_carrier_switch_c_::set_eutra()
{
set(types::eutra);
return c.get<eutra_s_>();
}
void band_params_v1540_s::srs_carrier_switch_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::nr:
j.write_fieldname("nr");
j.start_obj();
j.start_array("srs-SwitchingTimesListNR");
for (const auto& e1 : c.get<nr_s_>().srs_switching_times_list_nr) {
e1.to_json(j);
}
j.end_array();
j.end_obj();
break;
case types::eutra:
j.write_fieldname("eutra");
j.start_obj();
j.start_array("srs-SwitchingTimesListEUTRA");
for (const auto& e1 : c.get<eutra_s_>().srs_switching_times_list_eutra) {
e1.to_json(j);
}
j.end_array();
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "band_params_v1540_s::srs_carrier_switch_c_");
}
j.end_obj();
}
SRSASN_CODE band_params_v1540_s::srs_carrier_switch_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::nr:
HANDLE_CODE(pack_dyn_seq_of(bref, c.get<nr_s_>().srs_switching_times_list_nr, 1, 32));
break;
case types::eutra:
HANDLE_CODE(pack_dyn_seq_of(bref, c.get<eutra_s_>().srs_switching_times_list_eutra, 1, 32));
break;
default:
log_invalid_choice_id(type_, "band_params_v1540_s::srs_carrier_switch_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE band_params_v1540_s::srs_carrier_switch_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::nr:
HANDLE_CODE(unpack_dyn_seq_of(c.get<nr_s_>().srs_switching_times_list_nr, bref, 1, 32));
break;
case types::eutra:
HANDLE_CODE(unpack_dyn_seq_of(c.get<eutra_s_>().srs_switching_times_list_eutra, bref, 1, 32));
break;
default:
log_invalid_choice_id(type_, "band_params_v1540_s::srs_carrier_switch_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* band_params_v1540_s::srs_carrier_switch_c_::types_opts::to_string() const
{
static const char* options[] = {"nr", "eutra"};
return convert_enum_idx(options, 2, value, "band_params_v1540_s::srs_carrier_switch_c_::types");
}
const char* band_params_v1540_s::srs_tx_switch_s_::supported_srs_tx_port_switch_opts::to_string() const
{
static const char* options[] = {"t1r2", "t1r4", "t2r4", "t1r4-t2r4", "t1r1", "t2r2", "t4r4", "notSupported"};
return convert_enum_idx(options, 8, value, "band_params_v1540_s::srs_tx_switch_s_::supported_srs_tx_port_switch_e_");
}
// CA-ParametersNR-v1540 ::= SEQUENCE
SRSASN_CODE ca_params_nr_v1540_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(simul_srs_assoc_csi_rs_all_cc_present, 1));
HANDLE_CODE(bref.pack(csi_rs_im_reception_for_feedback_per_band_comb_present, 1));
HANDLE_CODE(bref.pack(simul_csi_reports_all_cc_present, 1));
HANDLE_CODE(bref.pack(dual_pa_architecture_present, 1));
if (simul_srs_assoc_csi_rs_all_cc_present) {
HANDLE_CODE(pack_integer(bref, simul_srs_assoc_csi_rs_all_cc, (uint8_t)5u, (uint8_t)32u));
}
if (csi_rs_im_reception_for_feedback_per_band_comb_present) {
HANDLE_CODE(
bref.pack(csi_rs_im_reception_for_feedback_per_band_comb.max_num_simul_nzp_csi_rs_act_bwp_all_cc_present, 1));
HANDLE_CODE(bref.pack(
csi_rs_im_reception_for_feedback_per_band_comb.total_num_ports_simul_nzp_csi_rs_act_bwp_all_cc_present, 1));
if (csi_rs_im_reception_for_feedback_per_band_comb.max_num_simul_nzp_csi_rs_act_bwp_all_cc_present) {
HANDLE_CODE(pack_integer(bref,
csi_rs_im_reception_for_feedback_per_band_comb.max_num_simul_nzp_csi_rs_act_bwp_all_cc,
(uint8_t)1u,
(uint8_t)64u));
}
if (csi_rs_im_reception_for_feedback_per_band_comb.total_num_ports_simul_nzp_csi_rs_act_bwp_all_cc_present) {
HANDLE_CODE(
pack_integer(bref,
csi_rs_im_reception_for_feedback_per_band_comb.total_num_ports_simul_nzp_csi_rs_act_bwp_all_cc,
(uint16_t)2u,
(uint16_t)256u));
}
}
if (simul_csi_reports_all_cc_present) {
HANDLE_CODE(pack_integer(bref, simul_csi_reports_all_cc, (uint8_t)5u, (uint8_t)32u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ca_params_nr_v1540_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(simul_srs_assoc_csi_rs_all_cc_present, 1));
HANDLE_CODE(bref.unpack(csi_rs_im_reception_for_feedback_per_band_comb_present, 1));
HANDLE_CODE(bref.unpack(simul_csi_reports_all_cc_present, 1));
HANDLE_CODE(bref.unpack(dual_pa_architecture_present, 1));
if (simul_srs_assoc_csi_rs_all_cc_present) {
HANDLE_CODE(unpack_integer(simul_srs_assoc_csi_rs_all_cc, bref, (uint8_t)5u, (uint8_t)32u));
}
if (csi_rs_im_reception_for_feedback_per_band_comb_present) {
HANDLE_CODE(
bref.unpack(csi_rs_im_reception_for_feedback_per_band_comb.max_num_simul_nzp_csi_rs_act_bwp_all_cc_present, 1));
HANDLE_CODE(bref.unpack(
csi_rs_im_reception_for_feedback_per_band_comb.total_num_ports_simul_nzp_csi_rs_act_bwp_all_cc_present, 1));
if (csi_rs_im_reception_for_feedback_per_band_comb.max_num_simul_nzp_csi_rs_act_bwp_all_cc_present) {
HANDLE_CODE(unpack_integer(csi_rs_im_reception_for_feedback_per_band_comb.max_num_simul_nzp_csi_rs_act_bwp_all_cc,
bref,
(uint8_t)1u,
(uint8_t)64u));
}
if (csi_rs_im_reception_for_feedback_per_band_comb.total_num_ports_simul_nzp_csi_rs_act_bwp_all_cc_present) {
HANDLE_CODE(
unpack_integer(csi_rs_im_reception_for_feedback_per_band_comb.total_num_ports_simul_nzp_csi_rs_act_bwp_all_cc,
bref,
(uint16_t)2u,
(uint16_t)256u));
}
}
if (simul_csi_reports_all_cc_present) {
HANDLE_CODE(unpack_integer(simul_csi_reports_all_cc, bref, (uint8_t)5u, (uint8_t)32u));
}
return SRSASN_SUCCESS;
}
void ca_params_nr_v1540_s::to_json(json_writer& j) const
{
j.start_obj();
if (simul_srs_assoc_csi_rs_all_cc_present) {
j.write_int("simultaneousSRS-AssocCSI-RS-AllCC", simul_srs_assoc_csi_rs_all_cc);
}
if (csi_rs_im_reception_for_feedback_per_band_comb_present) {
j.write_fieldname("csi-RS-IM-ReceptionForFeedbackPerBandComb");
j.start_obj();
if (csi_rs_im_reception_for_feedback_per_band_comb.max_num_simul_nzp_csi_rs_act_bwp_all_cc_present) {
j.write_int("maxNumberSimultaneousNZP-CSI-RS-ActBWP-AllCC",
csi_rs_im_reception_for_feedback_per_band_comb.max_num_simul_nzp_csi_rs_act_bwp_all_cc);
}
if (csi_rs_im_reception_for_feedback_per_band_comb.total_num_ports_simul_nzp_csi_rs_act_bwp_all_cc_present) {
j.write_int("totalNumberPortsSimultaneousNZP-CSI-RS-ActBWP-AllCC",
csi_rs_im_reception_for_feedback_per_band_comb.total_num_ports_simul_nzp_csi_rs_act_bwp_all_cc);
}
j.end_obj();
}
if (simul_csi_reports_all_cc_present) {
j.write_int("simultaneousCSI-ReportsAllCC", simul_csi_reports_all_cc);
}
if (dual_pa_architecture_present) {
j.write_str("dualPA-Architecture", "supported");
}
j.end_obj();
}
// BandCombination-v1540 ::= SEQUENCE
SRSASN_CODE band_combination_v1540_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(ca_params_nr_v1540_present, 1));
HANDLE_CODE(pack_dyn_seq_of(bref, band_list_v1540, 1, 32));
if (ca_params_nr_v1540_present) {
HANDLE_CODE(ca_params_nr_v1540.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE band_combination_v1540_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(ca_params_nr_v1540_present, 1));
HANDLE_CODE(unpack_dyn_seq_of(band_list_v1540, bref, 1, 32));
if (ca_params_nr_v1540_present) {
HANDLE_CODE(ca_params_nr_v1540.unpack(bref));
}
return SRSASN_SUCCESS;
}
void band_combination_v1540_s::to_json(json_writer& j) const
{
j.start_obj();
j.start_array("bandList-v1540");
for (const auto& e1 : band_list_v1540) {
e1.to_json(j);
}
j.end_array();
if (ca_params_nr_v1540_present) {
j.write_fieldname("ca-ParametersNR-v1540");
ca_params_nr_v1540.to_json(j);
}
j.end_obj();
}
// CA-ParametersNR-v1550 ::= SEQUENCE
SRSASN_CODE ca_params_nr_v1550_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(dummy_present, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE ca_params_nr_v1550_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(dummy_present, 1));
return SRSASN_SUCCESS;
}
void ca_params_nr_v1550_s::to_json(json_writer& j) const
{
j.start_obj();
if (dummy_present) {
j.write_str("dummy", "supported");
}
j.end_obj();
}
// BandCombination-v1550 ::= SEQUENCE
SRSASN_CODE band_combination_v1550_s::pack(bit_ref& bref) const
{
HANDLE_CODE(ca_params_nr_v1550.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE band_combination_v1550_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(ca_params_nr_v1550.unpack(bref));
return SRSASN_SUCCESS;
}
void band_combination_v1550_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("ca-ParametersNR-v1550");
ca_params_nr_v1550.to_json(j);
j.end_obj();
}
// CA-ParametersNR-v1560 ::= SEQUENCE
SRSASN_CODE ca_params_nr_v1560_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(diff_numerology_within_pucch_group_larger_scs_present, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE ca_params_nr_v1560_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(diff_numerology_within_pucch_group_larger_scs_present, 1));
return SRSASN_SUCCESS;
}
void ca_params_nr_v1560_s::to_json(json_writer& j) const
{
j.start_obj();
if (diff_numerology_within_pucch_group_larger_scs_present) {
j.write_str("diffNumerologyWithinPUCCH-GroupLargerSCS", "supported");
}
j.end_obj();
}
// CA-ParametersEUTRA-v1560 ::= SEQUENCE
SRSASN_CODE ca_params_eutra_v1560_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(fd_mimo_total_weighted_layers_present, 1));
if (fd_mimo_total_weighted_layers_present) {
HANDLE_CODE(pack_integer(bref, fd_mimo_total_weighted_layers, (uint8_t)2u, (uint8_t)128u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ca_params_eutra_v1560_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(fd_mimo_total_weighted_layers_present, 1));
if (fd_mimo_total_weighted_layers_present) {
HANDLE_CODE(unpack_integer(fd_mimo_total_weighted_layers, bref, (uint8_t)2u, (uint8_t)128u));
}
return SRSASN_SUCCESS;
}
void ca_params_eutra_v1560_s::to_json(json_writer& j) const
{
j.start_obj();
if (fd_mimo_total_weighted_layers_present) {
j.write_int("fd-MIMO-TotalWeightedLayers", fd_mimo_total_weighted_layers);
}
j.end_obj();
}
// CA-ParametersNRDC ::= SEQUENCE
SRSASN_CODE ca_params_nrdc_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(ca_params_nr_for_dc_present, 1));
HANDLE_CODE(bref.pack(ca_params_nr_for_dc_v1540_present, 1));
HANDLE_CODE(bref.pack(ca_params_nr_for_dc_v1550_present, 1));
HANDLE_CODE(bref.pack(ca_params_nr_for_dc_v1560_present, 1));
HANDLE_CODE(bref.pack(feature_set_combination_dc_present, 1));
if (ca_params_nr_for_dc_present) {
HANDLE_CODE(ca_params_nr_for_dc.pack(bref));
}
if (ca_params_nr_for_dc_v1540_present) {
HANDLE_CODE(ca_params_nr_for_dc_v1540.pack(bref));
}
if (ca_params_nr_for_dc_v1550_present) {
HANDLE_CODE(ca_params_nr_for_dc_v1550.pack(bref));
}
if (ca_params_nr_for_dc_v1560_present) {
HANDLE_CODE(ca_params_nr_for_dc_v1560.pack(bref));
}
if (feature_set_combination_dc_present) {
HANDLE_CODE(pack_integer(bref, feature_set_combination_dc, (uint16_t)0u, (uint16_t)1024u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ca_params_nrdc_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(ca_params_nr_for_dc_present, 1));
HANDLE_CODE(bref.unpack(ca_params_nr_for_dc_v1540_present, 1));
HANDLE_CODE(bref.unpack(ca_params_nr_for_dc_v1550_present, 1));
HANDLE_CODE(bref.unpack(ca_params_nr_for_dc_v1560_present, 1));
HANDLE_CODE(bref.unpack(feature_set_combination_dc_present, 1));
if (ca_params_nr_for_dc_present) {
HANDLE_CODE(ca_params_nr_for_dc.unpack(bref));
}
if (ca_params_nr_for_dc_v1540_present) {
HANDLE_CODE(ca_params_nr_for_dc_v1540.unpack(bref));
}
if (ca_params_nr_for_dc_v1550_present) {
HANDLE_CODE(ca_params_nr_for_dc_v1550.unpack(bref));
}
if (ca_params_nr_for_dc_v1560_present) {
HANDLE_CODE(ca_params_nr_for_dc_v1560.unpack(bref));
}
if (feature_set_combination_dc_present) {
HANDLE_CODE(unpack_integer(feature_set_combination_dc, bref, (uint16_t)0u, (uint16_t)1024u));
}
return SRSASN_SUCCESS;
}
void ca_params_nrdc_s::to_json(json_writer& j) const
{
j.start_obj();
if (ca_params_nr_for_dc_present) {
j.write_fieldname("ca-ParametersNR-ForDC");
ca_params_nr_for_dc.to_json(j);
}
if (ca_params_nr_for_dc_v1540_present) {
j.write_fieldname("ca-ParametersNR-ForDC-v1540");
ca_params_nr_for_dc_v1540.to_json(j);
}
if (ca_params_nr_for_dc_v1550_present) {
j.write_fieldname("ca-ParametersNR-ForDC-v1550");
ca_params_nr_for_dc_v1550.to_json(j);
}
if (ca_params_nr_for_dc_v1560_present) {
j.write_fieldname("ca-ParametersNR-ForDC-v1560");
ca_params_nr_for_dc_v1560.to_json(j);
}
if (feature_set_combination_dc_present) {
j.write_int("featureSetCombinationDC", feature_set_combination_dc);
}
j.end_obj();
}
// BandCombination-v1560 ::= SEQUENCE
SRSASN_CODE band_combination_v1560_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(ne_dc_bc_present, 1));
HANDLE_CODE(bref.pack(ca_params_nrdc_present, 1));
HANDLE_CODE(bref.pack(ca_params_eutra_v1560_present, 1));
HANDLE_CODE(bref.pack(ca_params_nr_v1560_present, 1));
if (ca_params_nrdc_present) {
HANDLE_CODE(ca_params_nrdc.pack(bref));
}
if (ca_params_eutra_v1560_present) {
HANDLE_CODE(ca_params_eutra_v1560.pack(bref));
}
if (ca_params_nr_v1560_present) {
HANDLE_CODE(ca_params_nr_v1560.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE band_combination_v1560_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(ne_dc_bc_present, 1));
HANDLE_CODE(bref.unpack(ca_params_nrdc_present, 1));
HANDLE_CODE(bref.unpack(ca_params_eutra_v1560_present, 1));
HANDLE_CODE(bref.unpack(ca_params_nr_v1560_present, 1));
if (ca_params_nrdc_present) {
HANDLE_CODE(ca_params_nrdc.unpack(bref));
}
if (ca_params_eutra_v1560_present) {
HANDLE_CODE(ca_params_eutra_v1560.unpack(bref));
}
if (ca_params_nr_v1560_present) {
HANDLE_CODE(ca_params_nr_v1560.unpack(bref));
}
return SRSASN_SUCCESS;
}
void band_combination_v1560_s::to_json(json_writer& j) const
{
j.start_obj();
if (ne_dc_bc_present) {
j.write_str("ne-DC-BC", "supported");
}
if (ca_params_nrdc_present) {
j.write_fieldname("ca-ParametersNRDC");
ca_params_nrdc.to_json(j);
}
if (ca_params_eutra_v1560_present) {
j.write_fieldname("ca-ParametersEUTRA-v1560");
ca_params_eutra_v1560.to_json(j);
}
if (ca_params_nr_v1560_present) {
j.write_fieldname("ca-ParametersNR-v1560");
ca_params_nr_v1560.to_json(j);
}
j.end_obj();
}
// CA-ParametersEUTRA-v1570 ::= SEQUENCE
SRSASN_CODE ca_params_eutra_v1570_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(dl_minus1024_qam_total_weighted_layers_present, 1));
if (dl_minus1024_qam_total_weighted_layers_present) {
HANDLE_CODE(pack_integer(bref, dl_minus1024_qam_total_weighted_layers, (uint8_t)0u, (uint8_t)10u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ca_params_eutra_v1570_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(dl_minus1024_qam_total_weighted_layers_present, 1));
if (dl_minus1024_qam_total_weighted_layers_present) {
HANDLE_CODE(unpack_integer(dl_minus1024_qam_total_weighted_layers, bref, (uint8_t)0u, (uint8_t)10u));
}
return SRSASN_SUCCESS;
}
void ca_params_eutra_v1570_s::to_json(json_writer& j) const
{
j.start_obj();
if (dl_minus1024_qam_total_weighted_layers_present) {
j.write_int("dl-1024QAM-TotalWeightedLayers", dl_minus1024_qam_total_weighted_layers);
}
j.end_obj();
}
// BandCombination-v1570 ::= SEQUENCE
SRSASN_CODE band_combination_v1570_s::pack(bit_ref& bref) const
{
HANDLE_CODE(ca_params_eutra_v1570.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE band_combination_v1570_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(ca_params_eutra_v1570.unpack(bref));
return SRSASN_SUCCESS;
}
void band_combination_v1570_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("ca-ParametersEUTRA-v1570");
ca_params_eutra_v1570.to_json(j);
j.end_obj();
}
// MRDC-Parameters-v1580 ::= SEQUENCE
SRSASN_CODE mrdc_params_v1580_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(dynamic_pwr_sharing_nedc_present, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE mrdc_params_v1580_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(dynamic_pwr_sharing_nedc_present, 1));
return SRSASN_SUCCESS;
}
void mrdc_params_v1580_s::to_json(json_writer& j) const
{
j.start_obj();
if (dynamic_pwr_sharing_nedc_present) {
j.write_str("dynamicPowerSharingNEDC", "supported");
}
j.end_obj();
}
// BandCombination-v1580 ::= SEQUENCE
SRSASN_CODE band_combination_v1580_s::pack(bit_ref& bref) const
{
HANDLE_CODE(mrdc_params_v1580.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE band_combination_v1580_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(mrdc_params_v1580.unpack(bref));
return SRSASN_SUCCESS;
}
void band_combination_v1580_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("mrdc-Parameters-v1580");
mrdc_params_v1580.to_json(j);
j.end_obj();
}
// MRDC-Parameters-v1590 ::= SEQUENCE
SRSASN_CODE mrdc_params_v1590_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(inter_band_contiguous_mrdc_present, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE mrdc_params_v1590_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(inter_band_contiguous_mrdc_present, 1));
return SRSASN_SUCCESS;
}
void mrdc_params_v1590_s::to_json(json_writer& j) const
{
j.start_obj();
if (inter_band_contiguous_mrdc_present) {
j.write_str("interBandContiguousMRDC", "supported");
}
j.end_obj();
}
// BandCombination-v1590 ::= SEQUENCE
SRSASN_CODE band_combination_v1590_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(supported_bw_combination_set_intra_endc_present, 1));
if (supported_bw_combination_set_intra_endc_present) {
HANDLE_CODE(supported_bw_combination_set_intra_endc.pack(bref));
}
HANDLE_CODE(mrdc_params_v1590.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE band_combination_v1590_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(supported_bw_combination_set_intra_endc_present, 1));
if (supported_bw_combination_set_intra_endc_present) {
HANDLE_CODE(supported_bw_combination_set_intra_endc.unpack(bref));
}
HANDLE_CODE(mrdc_params_v1590.unpack(bref));
return SRSASN_SUCCESS;
}
void band_combination_v1590_s::to_json(json_writer& j) const
{
j.start_obj();
if (supported_bw_combination_set_intra_endc_present) {
j.write_str("supportedBandwidthCombinationSetIntraENDC", supported_bw_combination_set_intra_endc.to_string());
}
j.write_fieldname("mrdc-Parameters-v1590");
mrdc_params_v1590.to_json(j);
j.end_obj();
}
// SupportedCSI-RS-Resource ::= SEQUENCE
SRSASN_CODE supported_csi_rs_res_s::pack(bit_ref& bref) const
{
HANDLE_CODE(max_num_tx_ports_per_res.pack(bref));
HANDLE_CODE(pack_integer(bref, max_num_res_per_band, (uint8_t)1u, (uint8_t)64u));
HANDLE_CODE(pack_integer(bref, total_num_tx_ports_per_band, (uint16_t)2u, (uint16_t)256u));
return SRSASN_SUCCESS;
}
SRSASN_CODE supported_csi_rs_res_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(max_num_tx_ports_per_res.unpack(bref));
HANDLE_CODE(unpack_integer(max_num_res_per_band, bref, (uint8_t)1u, (uint8_t)64u));
HANDLE_CODE(unpack_integer(total_num_tx_ports_per_band, bref, (uint16_t)2u, (uint16_t)256u));
return SRSASN_SUCCESS;
}
void supported_csi_rs_res_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("maxNumberTxPortsPerResource", max_num_tx_ports_per_res.to_string());
j.write_int("maxNumberResourcesPerBand", max_num_res_per_band);
j.write_int("totalNumberTxPortsPerBand", total_num_tx_ports_per_band);
j.end_obj();
}
const char* supported_csi_rs_res_s::max_num_tx_ports_per_res_opts::to_string() const
{
static const char* options[] = {"p2", "p4", "p8", "p12", "p16", "p24", "p32"};
return convert_enum_idx(options, 7, value, "supported_csi_rs_res_s::max_num_tx_ports_per_res_e_");
}
uint8_t supported_csi_rs_res_s::max_num_tx_ports_per_res_opts::to_number() const
{
static const uint8_t options[] = {2, 4, 8, 12, 16, 24, 32};
return map_enum_number(options, 7, value, "supported_csi_rs_res_s::max_num_tx_ports_per_res_e_");
}
// BeamManagementSSB-CSI-RS ::= SEQUENCE
SRSASN_CODE beam_management_ssb_csi_rs_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(supported_csi_rs_density_present, 1));
HANDLE_CODE(max_num_ssb_csi_rs_res_one_tx.pack(bref));
HANDLE_CODE(max_num_csi_rs_res.pack(bref));
HANDLE_CODE(max_num_csi_rs_res_two_tx.pack(bref));
if (supported_csi_rs_density_present) {
HANDLE_CODE(supported_csi_rs_density.pack(bref));
}
HANDLE_CODE(max_num_aperiodic_csi_rs_res.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE beam_management_ssb_csi_rs_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(supported_csi_rs_density_present, 1));
HANDLE_CODE(max_num_ssb_csi_rs_res_one_tx.unpack(bref));
HANDLE_CODE(max_num_csi_rs_res.unpack(bref));
HANDLE_CODE(max_num_csi_rs_res_two_tx.unpack(bref));
if (supported_csi_rs_density_present) {
HANDLE_CODE(supported_csi_rs_density.unpack(bref));
}
HANDLE_CODE(max_num_aperiodic_csi_rs_res.unpack(bref));
return SRSASN_SUCCESS;
}
void beam_management_ssb_csi_rs_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("maxNumberSSB-CSI-RS-ResourceOneTx", max_num_ssb_csi_rs_res_one_tx.to_string());
j.write_str("maxNumberCSI-RS-Resource", max_num_csi_rs_res.to_string());
j.write_str("maxNumberCSI-RS-ResourceTwoTx", max_num_csi_rs_res_two_tx.to_string());
if (supported_csi_rs_density_present) {
j.write_str("supportedCSI-RS-Density", supported_csi_rs_density.to_string());
}
j.write_str("maxNumberAperiodicCSI-RS-Resource", max_num_aperiodic_csi_rs_res.to_string());
j.end_obj();
}
const char* beam_management_ssb_csi_rs_s::max_num_ssb_csi_rs_res_one_tx_opts::to_string() const
{
static const char* options[] = {"n0", "n8", "n16", "n32", "n64"};
return convert_enum_idx(options, 5, value, "beam_management_ssb_csi_rs_s::max_num_ssb_csi_rs_res_one_tx_e_");
}
uint8_t beam_management_ssb_csi_rs_s::max_num_ssb_csi_rs_res_one_tx_opts::to_number() const
{
static const uint8_t options[] = {0, 8, 16, 32, 64};
return map_enum_number(options, 5, value, "beam_management_ssb_csi_rs_s::max_num_ssb_csi_rs_res_one_tx_e_");
}
const char* beam_management_ssb_csi_rs_s::max_num_csi_rs_res_opts::to_string() const
{
static const char* options[] = {"n0", "n4", "n8", "n16", "n32", "n64"};
return convert_enum_idx(options, 6, value, "beam_management_ssb_csi_rs_s::max_num_csi_rs_res_e_");
}
uint8_t beam_management_ssb_csi_rs_s::max_num_csi_rs_res_opts::to_number() const
{
static const uint8_t options[] = {0, 4, 8, 16, 32, 64};
return map_enum_number(options, 6, value, "beam_management_ssb_csi_rs_s::max_num_csi_rs_res_e_");
}
const char* beam_management_ssb_csi_rs_s::max_num_csi_rs_res_two_tx_opts::to_string() const
{
static const char* options[] = {"n0", "n4", "n8", "n16", "n32", "n64"};
return convert_enum_idx(options, 6, value, "beam_management_ssb_csi_rs_s::max_num_csi_rs_res_two_tx_e_");
}
uint8_t beam_management_ssb_csi_rs_s::max_num_csi_rs_res_two_tx_opts::to_number() const
{
static const uint8_t options[] = {0, 4, 8, 16, 32, 64};
return map_enum_number(options, 6, value, "beam_management_ssb_csi_rs_s::max_num_csi_rs_res_two_tx_e_");
}
const char* beam_management_ssb_csi_rs_s::supported_csi_rs_density_opts::to_string() const
{
static const char* options[] = {"one", "three", "oneAndThree"};
return convert_enum_idx(options, 3, value, "beam_management_ssb_csi_rs_s::supported_csi_rs_density_e_");
}
const char* beam_management_ssb_csi_rs_s::max_num_aperiodic_csi_rs_res_opts::to_string() const
{
static const char* options[] = {"n0", "n1", "n4", "n8", "n16", "n32", "n64"};
return convert_enum_idx(options, 7, value, "beam_management_ssb_csi_rs_s::max_num_aperiodic_csi_rs_res_e_");
}
uint8_t beam_management_ssb_csi_rs_s::max_num_aperiodic_csi_rs_res_opts::to_number() const
{
static const uint8_t options[] = {0, 1, 4, 8, 16, 32, 64};
return map_enum_number(options, 7, value, "beam_management_ssb_csi_rs_s::max_num_aperiodic_csi_rs_res_e_");
}
// CSI-RS-ForTracking ::= SEQUENCE
SRSASN_CODE csi_rs_for_tracking_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, max_burst_len, (uint8_t)1u, (uint8_t)2u));
HANDLE_CODE(pack_integer(bref, max_simul_res_sets_per_cc, (uint8_t)1u, (uint8_t)8u));
HANDLE_CODE(pack_integer(bref, max_cfgured_res_sets_per_cc, (uint8_t)1u, (uint8_t)64u));
HANDLE_CODE(pack_integer(bref, max_cfgured_res_sets_all_cc, (uint16_t)1u, (uint16_t)256u));
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_rs_for_tracking_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(max_burst_len, bref, (uint8_t)1u, (uint8_t)2u));
HANDLE_CODE(unpack_integer(max_simul_res_sets_per_cc, bref, (uint8_t)1u, (uint8_t)8u));
HANDLE_CODE(unpack_integer(max_cfgured_res_sets_per_cc, bref, (uint8_t)1u, (uint8_t)64u));
HANDLE_CODE(unpack_integer(max_cfgured_res_sets_all_cc, bref, (uint16_t)1u, (uint16_t)256u));
return SRSASN_SUCCESS;
}
void csi_rs_for_tracking_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("maxBurstLength", max_burst_len);
j.write_int("maxSimultaneousResourceSetsPerCC", max_simul_res_sets_per_cc);
j.write_int("maxConfiguredResourceSetsPerCC", max_cfgured_res_sets_per_cc);
j.write_int("maxConfiguredResourceSetsAllCC", max_cfgured_res_sets_all_cc);
j.end_obj();
}
// CSI-RS-IM-ReceptionForFeedback ::= SEQUENCE
SRSASN_CODE csi_rs_im_reception_for_feedback_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, max_cfg_num_nzp_csi_rs_per_cc, (uint8_t)1u, (uint8_t)64u));
HANDLE_CODE(pack_integer(bref, max_cfg_num_ports_across_nzp_csi_rs_per_cc, (uint16_t)2u, (uint16_t)256u));
HANDLE_CODE(max_cfg_num_csi_im_per_cc.pack(bref));
HANDLE_CODE(pack_integer(bref, max_num_simul_nzp_csi_rs_per_cc, (uint8_t)1u, (uint8_t)64u));
HANDLE_CODE(pack_integer(bref, total_num_ports_simul_nzp_csi_rs_per_cc, (uint16_t)2u, (uint16_t)256u));
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_rs_im_reception_for_feedback_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(max_cfg_num_nzp_csi_rs_per_cc, bref, (uint8_t)1u, (uint8_t)64u));
HANDLE_CODE(unpack_integer(max_cfg_num_ports_across_nzp_csi_rs_per_cc, bref, (uint16_t)2u, (uint16_t)256u));
HANDLE_CODE(max_cfg_num_csi_im_per_cc.unpack(bref));
HANDLE_CODE(unpack_integer(max_num_simul_nzp_csi_rs_per_cc, bref, (uint8_t)1u, (uint8_t)64u));
HANDLE_CODE(unpack_integer(total_num_ports_simul_nzp_csi_rs_per_cc, bref, (uint16_t)2u, (uint16_t)256u));
return SRSASN_SUCCESS;
}
void csi_rs_im_reception_for_feedback_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("maxConfigNumberNZP-CSI-RS-PerCC", max_cfg_num_nzp_csi_rs_per_cc);
j.write_int("maxConfigNumberPortsAcrossNZP-CSI-RS-PerCC", max_cfg_num_ports_across_nzp_csi_rs_per_cc);
j.write_str("maxConfigNumberCSI-IM-PerCC", max_cfg_num_csi_im_per_cc.to_string());
j.write_int("maxNumberSimultaneousNZP-CSI-RS-PerCC", max_num_simul_nzp_csi_rs_per_cc);
j.write_int("totalNumberPortsSimultaneousNZP-CSI-RS-PerCC", total_num_ports_simul_nzp_csi_rs_per_cc);
j.end_obj();
}
const char* csi_rs_im_reception_for_feedback_s::max_cfg_num_csi_im_per_cc_opts::to_string() const
{
static const char* options[] = {"n1", "n2", "n4", "n8", "n16", "n32"};
return convert_enum_idx(options, 6, value, "csi_rs_im_reception_for_feedback_s::max_cfg_num_csi_im_per_cc_e_");
}
uint8_t csi_rs_im_reception_for_feedback_s::max_cfg_num_csi_im_per_cc_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 4, 8, 16, 32};
return map_enum_number(options, 6, value, "csi_rs_im_reception_for_feedback_s::max_cfg_num_csi_im_per_cc_e_");
}
// CSI-RS-ProcFrameworkForSRS ::= SEQUENCE
SRSASN_CODE csi_rs_proc_framework_for_srs_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, max_num_periodic_srs_assoc_csi_rs_per_bwp, (uint8_t)1u, (uint8_t)4u));
HANDLE_CODE(pack_integer(bref, max_num_aperiodic_srs_assoc_csi_rs_per_bwp, (uint8_t)1u, (uint8_t)4u));
HANDLE_CODE(pack_integer(bref, max_num_sp_srs_assoc_csi_rs_per_bwp, (uint8_t)0u, (uint8_t)4u));
HANDLE_CODE(pack_integer(bref, simul_srs_assoc_csi_rs_per_cc, (uint8_t)1u, (uint8_t)8u));
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_rs_proc_framework_for_srs_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(max_num_periodic_srs_assoc_csi_rs_per_bwp, bref, (uint8_t)1u, (uint8_t)4u));
HANDLE_CODE(unpack_integer(max_num_aperiodic_srs_assoc_csi_rs_per_bwp, bref, (uint8_t)1u, (uint8_t)4u));
HANDLE_CODE(unpack_integer(max_num_sp_srs_assoc_csi_rs_per_bwp, bref, (uint8_t)0u, (uint8_t)4u));
HANDLE_CODE(unpack_integer(simul_srs_assoc_csi_rs_per_cc, bref, (uint8_t)1u, (uint8_t)8u));
return SRSASN_SUCCESS;
}
void csi_rs_proc_framework_for_srs_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("maxNumberPeriodicSRS-AssocCSI-RS-PerBWP", max_num_periodic_srs_assoc_csi_rs_per_bwp);
j.write_int("maxNumberAperiodicSRS-AssocCSI-RS-PerBWP", max_num_aperiodic_srs_assoc_csi_rs_per_bwp);
j.write_int("maxNumberSP-SRS-AssocCSI-RS-PerBWP", max_num_sp_srs_assoc_csi_rs_per_bwp);
j.write_int("simultaneousSRS-AssocCSI-RS-PerCC", simul_srs_assoc_csi_rs_per_cc);
j.end_obj();
}
// CSI-ReportFramework ::= SEQUENCE
SRSASN_CODE csi_report_framework_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, max_num_periodic_csi_per_bwp_for_csi_report, (uint8_t)1u, (uint8_t)4u));
HANDLE_CODE(pack_integer(bref, max_num_aperiodic_csi_per_bwp_for_csi_report, (uint8_t)1u, (uint8_t)4u));
HANDLE_CODE(pack_integer(bref, max_num_semi_persistent_csi_per_bwp_for_csi_report, (uint8_t)0u, (uint8_t)4u));
HANDLE_CODE(pack_integer(bref, max_num_periodic_csi_per_bwp_for_beam_report, (uint8_t)1u, (uint8_t)4u));
HANDLE_CODE(pack_integer(bref, max_num_aperiodic_csi_per_bwp_for_beam_report, (uint8_t)1u, (uint8_t)4u));
HANDLE_CODE(max_num_aperiodic_csi_trigger_state_per_cc.pack(bref));
HANDLE_CODE(pack_integer(bref, max_num_semi_persistent_csi_per_bwp_for_beam_report, (uint8_t)0u, (uint8_t)4u));
HANDLE_CODE(pack_integer(bref, simul_csi_reports_per_cc, (uint8_t)1u, (uint8_t)8u));
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_report_framework_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(max_num_periodic_csi_per_bwp_for_csi_report, bref, (uint8_t)1u, (uint8_t)4u));
HANDLE_CODE(unpack_integer(max_num_aperiodic_csi_per_bwp_for_csi_report, bref, (uint8_t)1u, (uint8_t)4u));
HANDLE_CODE(unpack_integer(max_num_semi_persistent_csi_per_bwp_for_csi_report, bref, (uint8_t)0u, (uint8_t)4u));
HANDLE_CODE(unpack_integer(max_num_periodic_csi_per_bwp_for_beam_report, bref, (uint8_t)1u, (uint8_t)4u));
HANDLE_CODE(unpack_integer(max_num_aperiodic_csi_per_bwp_for_beam_report, bref, (uint8_t)1u, (uint8_t)4u));
HANDLE_CODE(max_num_aperiodic_csi_trigger_state_per_cc.unpack(bref));
HANDLE_CODE(unpack_integer(max_num_semi_persistent_csi_per_bwp_for_beam_report, bref, (uint8_t)0u, (uint8_t)4u));
HANDLE_CODE(unpack_integer(simul_csi_reports_per_cc, bref, (uint8_t)1u, (uint8_t)8u));
return SRSASN_SUCCESS;
}
void csi_report_framework_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("maxNumberPeriodicCSI-PerBWP-ForCSI-Report", max_num_periodic_csi_per_bwp_for_csi_report);
j.write_int("maxNumberAperiodicCSI-PerBWP-ForCSI-Report", max_num_aperiodic_csi_per_bwp_for_csi_report);
j.write_int("maxNumberSemiPersistentCSI-PerBWP-ForCSI-Report", max_num_semi_persistent_csi_per_bwp_for_csi_report);
j.write_int("maxNumberPeriodicCSI-PerBWP-ForBeamReport", max_num_periodic_csi_per_bwp_for_beam_report);
j.write_int("maxNumberAperiodicCSI-PerBWP-ForBeamReport", max_num_aperiodic_csi_per_bwp_for_beam_report);
j.write_str("maxNumberAperiodicCSI-triggeringStatePerCC", max_num_aperiodic_csi_trigger_state_per_cc.to_string());
j.write_int("maxNumberSemiPersistentCSI-PerBWP-ForBeamReport", max_num_semi_persistent_csi_per_bwp_for_beam_report);
j.write_int("simultaneousCSI-ReportsPerCC", simul_csi_reports_per_cc);
j.end_obj();
}
const char* csi_report_framework_s::max_num_aperiodic_csi_trigger_state_per_cc_opts::to_string() const
{
static const char* options[] = {"n3", "n7", "n15", "n31", "n63", "n128"};
return convert_enum_idx(options, 6, value, "csi_report_framework_s::max_num_aperiodic_csi_trigger_state_per_cc_e_");
}
uint8_t csi_report_framework_s::max_num_aperiodic_csi_trigger_state_per_cc_opts::to_number() const
{
static const uint8_t options[] = {3, 7, 15, 31, 63, 128};
return map_enum_number(options, 6, value, "csi_report_framework_s::max_num_aperiodic_csi_trigger_state_per_cc_e_");
}
// CodebookParameters ::= SEQUENCE
SRSASN_CODE codebook_params_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(type2_present, 1));
HANDLE_CODE(bref.pack(type2_port_sel_present, 1));
HANDLE_CODE(bref.pack(type1.multi_panel_present, 1));
HANDLE_CODE(pack_dyn_seq_of(bref, type1.single_panel.supported_csi_rs_res_list, 1, 7));
HANDLE_CODE(type1.single_panel.modes.pack(bref));
HANDLE_CODE(pack_integer(bref, type1.single_panel.max_num_csi_rs_per_res_set, (uint8_t)1u, (uint8_t)8u));
if (type1.multi_panel_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, type1.multi_panel.supported_csi_rs_res_list, 1, 7));
HANDLE_CODE(type1.multi_panel.modes.pack(bref));
HANDLE_CODE(type1.multi_panel.nrof_panels.pack(bref));
HANDLE_CODE(pack_integer(bref, type1.multi_panel.max_num_csi_rs_per_res_set, (uint8_t)1u, (uint8_t)8u));
}
if (type2_present) {
HANDLE_CODE(bref.pack(type2.amplitude_subset_restrict_present, 1));
HANDLE_CODE(pack_dyn_seq_of(bref, type2.supported_csi_rs_res_list, 1, 7));
HANDLE_CODE(pack_integer(bref, type2.param_lx, (uint8_t)2u, (uint8_t)4u));
HANDLE_CODE(type2.amplitude_scaling_type.pack(bref));
}
if (type2_port_sel_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, type2_port_sel.supported_csi_rs_res_list, 1, 7));
HANDLE_CODE(pack_integer(bref, type2_port_sel.param_lx, (uint8_t)2u, (uint8_t)4u));
HANDLE_CODE(type2_port_sel.amplitude_scaling_type.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE codebook_params_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(type2_present, 1));
HANDLE_CODE(bref.unpack(type2_port_sel_present, 1));
HANDLE_CODE(bref.unpack(type1.multi_panel_present, 1));
HANDLE_CODE(unpack_dyn_seq_of(type1.single_panel.supported_csi_rs_res_list, bref, 1, 7));
HANDLE_CODE(type1.single_panel.modes.unpack(bref));
HANDLE_CODE(unpack_integer(type1.single_panel.max_num_csi_rs_per_res_set, bref, (uint8_t)1u, (uint8_t)8u));
if (type1.multi_panel_present) {
HANDLE_CODE(unpack_dyn_seq_of(type1.multi_panel.supported_csi_rs_res_list, bref, 1, 7));
HANDLE_CODE(type1.multi_panel.modes.unpack(bref));
HANDLE_CODE(type1.multi_panel.nrof_panels.unpack(bref));
HANDLE_CODE(unpack_integer(type1.multi_panel.max_num_csi_rs_per_res_set, bref, (uint8_t)1u, (uint8_t)8u));
}
if (type2_present) {
HANDLE_CODE(bref.unpack(type2.amplitude_subset_restrict_present, 1));
HANDLE_CODE(unpack_dyn_seq_of(type2.supported_csi_rs_res_list, bref, 1, 7));
HANDLE_CODE(unpack_integer(type2.param_lx, bref, (uint8_t)2u, (uint8_t)4u));
HANDLE_CODE(type2.amplitude_scaling_type.unpack(bref));
}
if (type2_port_sel_present) {
HANDLE_CODE(unpack_dyn_seq_of(type2_port_sel.supported_csi_rs_res_list, bref, 1, 7));
HANDLE_CODE(unpack_integer(type2_port_sel.param_lx, bref, (uint8_t)2u, (uint8_t)4u));
HANDLE_CODE(type2_port_sel.amplitude_scaling_type.unpack(bref));
}
return SRSASN_SUCCESS;
}
void codebook_params_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("type1");
j.start_obj();
j.write_fieldname("singlePanel");
j.start_obj();
j.start_array("supportedCSI-RS-ResourceList");
for (const auto& e1 : type1.single_panel.supported_csi_rs_res_list) {
e1.to_json(j);
}
j.end_array();
j.write_str("modes", type1.single_panel.modes.to_string());
j.write_int("maxNumberCSI-RS-PerResourceSet", type1.single_panel.max_num_csi_rs_per_res_set);
j.end_obj();
if (type1.multi_panel_present) {
j.write_fieldname("multiPanel");
j.start_obj();
j.start_array("supportedCSI-RS-ResourceList");
for (const auto& e1 : type1.multi_panel.supported_csi_rs_res_list) {
e1.to_json(j);
}
j.end_array();
j.write_str("modes", type1.multi_panel.modes.to_string());
j.write_str("nrofPanels", type1.multi_panel.nrof_panels.to_string());
j.write_int("maxNumberCSI-RS-PerResourceSet", type1.multi_panel.max_num_csi_rs_per_res_set);
j.end_obj();
}
j.end_obj();
if (type2_present) {
j.write_fieldname("type2");
j.start_obj();
j.start_array("supportedCSI-RS-ResourceList");
for (const auto& e1 : type2.supported_csi_rs_res_list) {
e1.to_json(j);
}
j.end_array();
j.write_int("parameterLx", type2.param_lx);
j.write_str("amplitudeScalingType", type2.amplitude_scaling_type.to_string());
if (type2.amplitude_subset_restrict_present) {
j.write_str("amplitudeSubsetRestriction", "supported");
}
j.end_obj();
}
if (type2_port_sel_present) {
j.write_fieldname("type2-PortSelection");
j.start_obj();
j.start_array("supportedCSI-RS-ResourceList");
for (const auto& e1 : type2_port_sel.supported_csi_rs_res_list) {
e1.to_json(j);
}
j.end_array();
j.write_int("parameterLx", type2_port_sel.param_lx);
j.write_str("amplitudeScalingType", type2_port_sel.amplitude_scaling_type.to_string());
j.end_obj();
}
j.end_obj();
}
const char* codebook_params_s::type1_s_::single_panel_s_::modes_opts::to_string() const
{
static const char* options[] = {"mode1", "mode1andMode2"};
return convert_enum_idx(options, 2, value, "codebook_params_s::type1_s_::single_panel_s_::modes_e_");
}
const char* codebook_params_s::type1_s_::multi_panel_s_::modes_opts::to_string() const
{
static const char* options[] = {"mode1", "mode2", "both"};
return convert_enum_idx(options, 3, value, "codebook_params_s::type1_s_::multi_panel_s_::modes_e_");
}
uint8_t codebook_params_s::type1_s_::multi_panel_s_::modes_opts::to_number() const
{
static const uint8_t options[] = {1, 2};
return map_enum_number(options, 2, value, "codebook_params_s::type1_s_::multi_panel_s_::modes_e_");
}
const char* codebook_params_s::type1_s_::multi_panel_s_::nrof_panels_opts::to_string() const
{
static const char* options[] = {"n2", "n4"};
return convert_enum_idx(options, 2, value, "codebook_params_s::type1_s_::multi_panel_s_::nrof_panels_e_");
}
uint8_t codebook_params_s::type1_s_::multi_panel_s_::nrof_panels_opts::to_number() const
{
static const uint8_t options[] = {2, 4};
return map_enum_number(options, 2, value, "codebook_params_s::type1_s_::multi_panel_s_::nrof_panels_e_");
}
const char* codebook_params_s::type2_s_::amplitude_scaling_type_opts::to_string() const
{
static const char* options[] = {"wideband", "widebandAndSubband"};
return convert_enum_idx(options, 2, value, "codebook_params_s::type2_s_::amplitude_scaling_type_e_");
}
const char* codebook_params_s::type2_port_sel_s_::amplitude_scaling_type_opts::to_string() const
{
static const char* options[] = {"wideband", "widebandAndSubband"};
return convert_enum_idx(options, 2, value, "codebook_params_s::type2_port_sel_s_::amplitude_scaling_type_e_");
}
// DummyG ::= SEQUENCE
SRSASN_CODE dummy_g_s::pack(bit_ref& bref) const
{
HANDLE_CODE(max_num_ssb_csi_rs_res_one_tx.pack(bref));
HANDLE_CODE(max_num_ssb_csi_rs_res_two_tx.pack(bref));
HANDLE_CODE(supported_csi_rs_density.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE dummy_g_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(max_num_ssb_csi_rs_res_one_tx.unpack(bref));
HANDLE_CODE(max_num_ssb_csi_rs_res_two_tx.unpack(bref));
HANDLE_CODE(supported_csi_rs_density.unpack(bref));
return SRSASN_SUCCESS;
}
void dummy_g_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("maxNumberSSB-CSI-RS-ResourceOneTx", max_num_ssb_csi_rs_res_one_tx.to_string());
j.write_str("maxNumberSSB-CSI-RS-ResourceTwoTx", max_num_ssb_csi_rs_res_two_tx.to_string());
j.write_str("supportedCSI-RS-Density", supported_csi_rs_density.to_string());
j.end_obj();
}
const char* dummy_g_s::max_num_ssb_csi_rs_res_one_tx_opts::to_string() const
{
static const char* options[] = {"n8", "n16", "n32", "n64"};
return convert_enum_idx(options, 4, value, "dummy_g_s::max_num_ssb_csi_rs_res_one_tx_e_");
}
uint8_t dummy_g_s::max_num_ssb_csi_rs_res_one_tx_opts::to_number() const
{
static const uint8_t options[] = {8, 16, 32, 64};
return map_enum_number(options, 4, value, "dummy_g_s::max_num_ssb_csi_rs_res_one_tx_e_");
}
const char* dummy_g_s::max_num_ssb_csi_rs_res_two_tx_opts::to_string() const
{
static const char* options[] = {"n0", "n4", "n8", "n16", "n32", "n64"};
return convert_enum_idx(options, 6, value, "dummy_g_s::max_num_ssb_csi_rs_res_two_tx_e_");
}
uint8_t dummy_g_s::max_num_ssb_csi_rs_res_two_tx_opts::to_number() const
{
static const uint8_t options[] = {0, 4, 8, 16, 32, 64};
return map_enum_number(options, 6, value, "dummy_g_s::max_num_ssb_csi_rs_res_two_tx_e_");
}
const char* dummy_g_s::supported_csi_rs_density_opts::to_string() const
{
static const char* options[] = {"one", "three", "oneAndThree"};
return convert_enum_idx(options, 3, value, "dummy_g_s::supported_csi_rs_density_e_");
}
// DummyH ::= SEQUENCE
SRSASN_CODE dummy_h_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, burst_len, (uint8_t)1u, (uint8_t)2u));
HANDLE_CODE(pack_integer(bref, max_simul_res_sets_per_cc, (uint8_t)1u, (uint8_t)8u));
HANDLE_CODE(pack_integer(bref, max_cfgured_res_sets_per_cc, (uint8_t)1u, (uint8_t)64u));
HANDLE_CODE(pack_integer(bref, max_cfgured_res_sets_all_cc, (uint8_t)1u, (uint8_t)128u));
return SRSASN_SUCCESS;
}
SRSASN_CODE dummy_h_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(burst_len, bref, (uint8_t)1u, (uint8_t)2u));
HANDLE_CODE(unpack_integer(max_simul_res_sets_per_cc, bref, (uint8_t)1u, (uint8_t)8u));
HANDLE_CODE(unpack_integer(max_cfgured_res_sets_per_cc, bref, (uint8_t)1u, (uint8_t)64u));
HANDLE_CODE(unpack_integer(max_cfgured_res_sets_all_cc, bref, (uint8_t)1u, (uint8_t)128u));
return SRSASN_SUCCESS;
}
void dummy_h_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("burstLength", burst_len);
j.write_int("maxSimultaneousResourceSetsPerCC", max_simul_res_sets_per_cc);
j.write_int("maxConfiguredResourceSetsPerCC", max_cfgured_res_sets_per_cc);
j.write_int("maxConfiguredResourceSetsAllCC", max_cfgured_res_sets_all_cc);
j.end_obj();
}
// PTRS-DensityRecommendationDL ::= SEQUENCE
SRSASN_CODE ptrs_density_recommendation_dl_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, freq_density1, (uint16_t)1u, (uint16_t)276u));
HANDLE_CODE(pack_integer(bref, freq_density2, (uint16_t)1u, (uint16_t)276u));
HANDLE_CODE(pack_integer(bref, time_density1, (uint8_t)0u, (uint8_t)29u));
HANDLE_CODE(pack_integer(bref, time_density2, (uint8_t)0u, (uint8_t)29u));
HANDLE_CODE(pack_integer(bref, time_density3, (uint8_t)0u, (uint8_t)29u));
return SRSASN_SUCCESS;
}
SRSASN_CODE ptrs_density_recommendation_dl_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(freq_density1, bref, (uint16_t)1u, (uint16_t)276u));
HANDLE_CODE(unpack_integer(freq_density2, bref, (uint16_t)1u, (uint16_t)276u));
HANDLE_CODE(unpack_integer(time_density1, bref, (uint8_t)0u, (uint8_t)29u));
HANDLE_CODE(unpack_integer(time_density2, bref, (uint8_t)0u, (uint8_t)29u));
HANDLE_CODE(unpack_integer(time_density3, bref, (uint8_t)0u, (uint8_t)29u));
return SRSASN_SUCCESS;
}
void ptrs_density_recommendation_dl_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("frequencyDensity1", freq_density1);
j.write_int("frequencyDensity2", freq_density2);
j.write_int("timeDensity1", time_density1);
j.write_int("timeDensity2", time_density2);
j.write_int("timeDensity3", time_density3);
j.end_obj();
}
// PTRS-DensityRecommendationUL ::= SEQUENCE
SRSASN_CODE ptrs_density_recommendation_ul_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, freq_density1, (uint16_t)1u, (uint16_t)276u));
HANDLE_CODE(pack_integer(bref, freq_density2, (uint16_t)1u, (uint16_t)276u));
HANDLE_CODE(pack_integer(bref, time_density1, (uint8_t)0u, (uint8_t)29u));
HANDLE_CODE(pack_integer(bref, time_density2, (uint8_t)0u, (uint8_t)29u));
HANDLE_CODE(pack_integer(bref, time_density3, (uint8_t)0u, (uint8_t)29u));
HANDLE_CODE(pack_integer(bref, sample_density1, (uint16_t)1u, (uint16_t)276u));
HANDLE_CODE(pack_integer(bref, sample_density2, (uint16_t)1u, (uint16_t)276u));
HANDLE_CODE(pack_integer(bref, sample_density3, (uint16_t)1u, (uint16_t)276u));
HANDLE_CODE(pack_integer(bref, sample_density4, (uint16_t)1u, (uint16_t)276u));
HANDLE_CODE(pack_integer(bref, sample_density5, (uint16_t)1u, (uint16_t)276u));
return SRSASN_SUCCESS;
}
SRSASN_CODE ptrs_density_recommendation_ul_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(freq_density1, bref, (uint16_t)1u, (uint16_t)276u));
HANDLE_CODE(unpack_integer(freq_density2, bref, (uint16_t)1u, (uint16_t)276u));
HANDLE_CODE(unpack_integer(time_density1, bref, (uint8_t)0u, (uint8_t)29u));
HANDLE_CODE(unpack_integer(time_density2, bref, (uint8_t)0u, (uint8_t)29u));
HANDLE_CODE(unpack_integer(time_density3, bref, (uint8_t)0u, (uint8_t)29u));
HANDLE_CODE(unpack_integer(sample_density1, bref, (uint16_t)1u, (uint16_t)276u));
HANDLE_CODE(unpack_integer(sample_density2, bref, (uint16_t)1u, (uint16_t)276u));
HANDLE_CODE(unpack_integer(sample_density3, bref, (uint16_t)1u, (uint16_t)276u));
HANDLE_CODE(unpack_integer(sample_density4, bref, (uint16_t)1u, (uint16_t)276u));
HANDLE_CODE(unpack_integer(sample_density5, bref, (uint16_t)1u, (uint16_t)276u));
return SRSASN_SUCCESS;
}
void ptrs_density_recommendation_ul_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("frequencyDensity1", freq_density1);
j.write_int("frequencyDensity2", freq_density2);
j.write_int("timeDensity1", time_density1);
j.write_int("timeDensity2", time_density2);
j.write_int("timeDensity3", time_density3);
j.write_int("sampleDensity1", sample_density1);
j.write_int("sampleDensity2", sample_density2);
j.write_int("sampleDensity3", sample_density3);
j.write_int("sampleDensity4", sample_density4);
j.write_int("sampleDensity5", sample_density5);
j.end_obj();
}
// SpatialRelations ::= SEQUENCE
SRSASN_CODE spatial_relations_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(add_active_spatial_relation_pucch_present, 1));
HANDLE_CODE(max_num_cfgured_spatial_relations.pack(bref));
HANDLE_CODE(max_num_active_spatial_relations.pack(bref));
HANDLE_CODE(max_num_dl_rs_qcl_type_d.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE spatial_relations_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(add_active_spatial_relation_pucch_present, 1));
HANDLE_CODE(max_num_cfgured_spatial_relations.unpack(bref));
HANDLE_CODE(max_num_active_spatial_relations.unpack(bref));
HANDLE_CODE(max_num_dl_rs_qcl_type_d.unpack(bref));
return SRSASN_SUCCESS;
}
void spatial_relations_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("maxNumberConfiguredSpatialRelations", max_num_cfgured_spatial_relations.to_string());
j.write_str("maxNumberActiveSpatialRelations", max_num_active_spatial_relations.to_string());
if (add_active_spatial_relation_pucch_present) {
j.write_str("additionalActiveSpatialRelationPUCCH", "supported");
}
j.write_str("maxNumberDL-RS-QCL-TypeD", max_num_dl_rs_qcl_type_d.to_string());
j.end_obj();
}
const char* spatial_relations_s::max_num_cfgured_spatial_relations_opts::to_string() const
{
static const char* options[] = {"n4", "n8", "n16", "n32", "n64", "n96"};
return convert_enum_idx(options, 6, value, "spatial_relations_s::max_num_cfgured_spatial_relations_e_");
}
uint8_t spatial_relations_s::max_num_cfgured_spatial_relations_opts::to_number() const
{
static const uint8_t options[] = {4, 8, 16, 32, 64, 96};
return map_enum_number(options, 6, value, "spatial_relations_s::max_num_cfgured_spatial_relations_e_");
}
const char* spatial_relations_s::max_num_active_spatial_relations_opts::to_string() const
{
static const char* options[] = {"n1", "n2", "n4", "n8", "n14"};
return convert_enum_idx(options, 5, value, "spatial_relations_s::max_num_active_spatial_relations_e_");
}
uint8_t spatial_relations_s::max_num_active_spatial_relations_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 4, 8, 14};
return map_enum_number(options, 5, value, "spatial_relations_s::max_num_active_spatial_relations_e_");
}
const char* spatial_relations_s::max_num_dl_rs_qcl_type_d_opts::to_string() const
{
static const char* options[] = {"n1", "n2", "n4", "n8", "n14"};
return convert_enum_idx(options, 5, value, "spatial_relations_s::max_num_dl_rs_qcl_type_d_e_");
}
uint8_t spatial_relations_s::max_num_dl_rs_qcl_type_d_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 4, 8, 14};
return map_enum_number(options, 5, value, "spatial_relations_s::max_num_dl_rs_qcl_type_d_e_");
}
// MIMO-ParametersPerBand ::= SEQUENCE
SRSASN_CODE mimo_params_per_band_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(tci_state_pdsch_present, 1));
HANDLE_CODE(bref.pack(add_active_tci_state_pdcch_present, 1));
HANDLE_CODE(bref.pack(pusch_trans_coherence_present, 1));
HANDLE_CODE(bref.pack(beam_correspondence_without_ul_beam_sweeping_present, 1));
HANDLE_CODE(bref.pack(periodic_beam_report_present, 1));
HANDLE_CODE(bref.pack(aperiodic_beam_report_present, 1));
HANDLE_CODE(bref.pack(sp_beam_report_pucch_present, 1));
HANDLE_CODE(bref.pack(sp_beam_report_pusch_present, 1));
HANDLE_CODE(bref.pack(dummy1_present, 1));
HANDLE_CODE(bref.pack(max_num_rx_beam_present, 1));
HANDLE_CODE(bref.pack(max_num_rx_tx_beam_switch_dl_present, 1));
HANDLE_CODE(bref.pack(max_num_non_group_beam_report_present, 1));
HANDLE_CODE(bref.pack(group_beam_report_present, 1));
HANDLE_CODE(bref.pack(ul_beam_management_present, 1));
HANDLE_CODE(bref.pack(max_num_csi_rs_bfd_present, 1));
HANDLE_CODE(bref.pack(max_num_ssb_bfd_present, 1));
HANDLE_CODE(bref.pack(max_num_csi_rs_ssb_cbd_present, 1));
HANDLE_CODE(bref.pack(dummy2_present, 1));
HANDLE_CODE(bref.pack(two_ports_ptrs_ul_present, 1));
HANDLE_CODE(bref.pack(dummy5_present, 1));
HANDLE_CODE(bref.pack(dummy3_present, 1));
HANDLE_CODE(bref.pack(beam_report_timing_present, 1));
HANDLE_CODE(bref.pack(ptrs_density_recommendation_set_dl_present, 1));
HANDLE_CODE(bref.pack(ptrs_density_recommendation_set_ul_present, 1));
HANDLE_CODE(bref.pack(dummy4_present, 1));
HANDLE_CODE(bref.pack(aperiodic_trs_present, 1));
if (tci_state_pdsch_present) {
HANDLE_CODE(bref.pack(tci_state_pdsch.max_num_cfgured_tcistates_per_cc_present, 1));
HANDLE_CODE(bref.pack(tci_state_pdsch.max_num_active_tci_per_bwp_present, 1));
if (tci_state_pdsch.max_num_cfgured_tcistates_per_cc_present) {
HANDLE_CODE(tci_state_pdsch.max_num_cfgured_tcistates_per_cc.pack(bref));
}
if (tci_state_pdsch.max_num_active_tci_per_bwp_present) {
HANDLE_CODE(tci_state_pdsch.max_num_active_tci_per_bwp.pack(bref));
}
}
if (pusch_trans_coherence_present) {
HANDLE_CODE(pusch_trans_coherence.pack(bref));
}
if (dummy1_present) {
HANDLE_CODE(dummy1.pack(bref));
}
if (max_num_rx_beam_present) {
HANDLE_CODE(pack_integer(bref, max_num_rx_beam, (uint8_t)2u, (uint8_t)8u));
}
if (max_num_rx_tx_beam_switch_dl_present) {
HANDLE_CODE(bref.pack(max_num_rx_tx_beam_switch_dl.scs_minus15k_hz_present, 1));
HANDLE_CODE(bref.pack(max_num_rx_tx_beam_switch_dl.scs_minus30k_hz_present, 1));
HANDLE_CODE(bref.pack(max_num_rx_tx_beam_switch_dl.scs_minus60k_hz_present, 1));
HANDLE_CODE(bref.pack(max_num_rx_tx_beam_switch_dl.scs_minus120k_hz_present, 1));
HANDLE_CODE(bref.pack(max_num_rx_tx_beam_switch_dl.scs_minus240k_hz_present, 1));
if (max_num_rx_tx_beam_switch_dl.scs_minus15k_hz_present) {
HANDLE_CODE(max_num_rx_tx_beam_switch_dl.scs_minus15k_hz.pack(bref));
}
if (max_num_rx_tx_beam_switch_dl.scs_minus30k_hz_present) {
HANDLE_CODE(max_num_rx_tx_beam_switch_dl.scs_minus30k_hz.pack(bref));
}
if (max_num_rx_tx_beam_switch_dl.scs_minus60k_hz_present) {
HANDLE_CODE(max_num_rx_tx_beam_switch_dl.scs_minus60k_hz.pack(bref));
}
if (max_num_rx_tx_beam_switch_dl.scs_minus120k_hz_present) {
HANDLE_CODE(max_num_rx_tx_beam_switch_dl.scs_minus120k_hz.pack(bref));
}
if (max_num_rx_tx_beam_switch_dl.scs_minus240k_hz_present) {
HANDLE_CODE(max_num_rx_tx_beam_switch_dl.scs_minus240k_hz.pack(bref));
}
}
if (max_num_non_group_beam_report_present) {
HANDLE_CODE(max_num_non_group_beam_report.pack(bref));
}
if (ul_beam_management_present) {
HANDLE_CODE(ul_beam_management.max_num_srs_res_per_set_bm.pack(bref));
HANDLE_CODE(pack_integer(bref, ul_beam_management.max_num_srs_res_set, (uint8_t)1u, (uint8_t)8u));
}
if (max_num_csi_rs_bfd_present) {
HANDLE_CODE(pack_integer(bref, max_num_csi_rs_bfd, (uint8_t)1u, (uint8_t)64u));
}
if (max_num_ssb_bfd_present) {
HANDLE_CODE(pack_integer(bref, max_num_ssb_bfd, (uint8_t)1u, (uint8_t)64u));
}
if (max_num_csi_rs_ssb_cbd_present) {
HANDLE_CODE(pack_integer(bref, max_num_csi_rs_ssb_cbd, (uint16_t)1u, (uint16_t)256u));
}
if (dummy5_present) {
HANDLE_CODE(dummy5.pack(bref));
}
if (dummy3_present) {
HANDLE_CODE(pack_integer(bref, dummy3, (uint8_t)1u, (uint8_t)4u));
}
if (beam_report_timing_present) {
HANDLE_CODE(bref.pack(beam_report_timing.scs_minus15k_hz_present, 1));
HANDLE_CODE(bref.pack(beam_report_timing.scs_minus30k_hz_present, 1));
HANDLE_CODE(bref.pack(beam_report_timing.scs_minus60k_hz_present, 1));
HANDLE_CODE(bref.pack(beam_report_timing.scs_minus120k_hz_present, 1));
if (beam_report_timing.scs_minus15k_hz_present) {
HANDLE_CODE(beam_report_timing.scs_minus15k_hz.pack(bref));
}
if (beam_report_timing.scs_minus30k_hz_present) {
HANDLE_CODE(beam_report_timing.scs_minus30k_hz.pack(bref));
}
if (beam_report_timing.scs_minus60k_hz_present) {
HANDLE_CODE(beam_report_timing.scs_minus60k_hz.pack(bref));
}
if (beam_report_timing.scs_minus120k_hz_present) {
HANDLE_CODE(beam_report_timing.scs_minus120k_hz.pack(bref));
}
}
if (ptrs_density_recommendation_set_dl_present) {
HANDLE_CODE(bref.pack(ptrs_density_recommendation_set_dl.scs_minus15k_hz_present, 1));
HANDLE_CODE(bref.pack(ptrs_density_recommendation_set_dl.scs_minus30k_hz_present, 1));
HANDLE_CODE(bref.pack(ptrs_density_recommendation_set_dl.scs_minus60k_hz_present, 1));
HANDLE_CODE(bref.pack(ptrs_density_recommendation_set_dl.scs_minus120k_hz_present, 1));
if (ptrs_density_recommendation_set_dl.scs_minus15k_hz_present) {
HANDLE_CODE(ptrs_density_recommendation_set_dl.scs_minus15k_hz.pack(bref));
}
if (ptrs_density_recommendation_set_dl.scs_minus30k_hz_present) {
HANDLE_CODE(ptrs_density_recommendation_set_dl.scs_minus30k_hz.pack(bref));
}
if (ptrs_density_recommendation_set_dl.scs_minus60k_hz_present) {
HANDLE_CODE(ptrs_density_recommendation_set_dl.scs_minus60k_hz.pack(bref));
}
if (ptrs_density_recommendation_set_dl.scs_minus120k_hz_present) {
HANDLE_CODE(ptrs_density_recommendation_set_dl.scs_minus120k_hz.pack(bref));
}
}
if (ptrs_density_recommendation_set_ul_present) {
HANDLE_CODE(bref.pack(ptrs_density_recommendation_set_ul.scs_minus15k_hz_present, 1));
HANDLE_CODE(bref.pack(ptrs_density_recommendation_set_ul.scs_minus30k_hz_present, 1));
HANDLE_CODE(bref.pack(ptrs_density_recommendation_set_ul.scs_minus60k_hz_present, 1));
HANDLE_CODE(bref.pack(ptrs_density_recommendation_set_ul.scs_minus120k_hz_present, 1));
if (ptrs_density_recommendation_set_ul.scs_minus15k_hz_present) {
HANDLE_CODE(ptrs_density_recommendation_set_ul.scs_minus15k_hz.pack(bref));
}
if (ptrs_density_recommendation_set_ul.scs_minus30k_hz_present) {
HANDLE_CODE(ptrs_density_recommendation_set_ul.scs_minus30k_hz.pack(bref));
}
if (ptrs_density_recommendation_set_ul.scs_minus60k_hz_present) {
HANDLE_CODE(ptrs_density_recommendation_set_ul.scs_minus60k_hz.pack(bref));
}
if (ptrs_density_recommendation_set_ul.scs_minus120k_hz_present) {
HANDLE_CODE(ptrs_density_recommendation_set_ul.scs_minus120k_hz.pack(bref));
}
}
if (dummy4_present) {
HANDLE_CODE(dummy4.pack(bref));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= dummy6_present;
group_flags[0] |= beam_management_ssb_csi_rs.is_present();
group_flags[0] |= beam_switch_timing.is_present();
group_flags[0] |= codebook_params.is_present();
group_flags[0] |= csi_rs_im_reception_for_feedback.is_present();
group_flags[0] |= csi_rs_proc_framework_for_srs.is_present();
group_flags[0] |= csi_report_framework.is_present();
group_flags[0] |= csi_rs_for_tracking.is_present();
group_flags[0] |= srs_assoc_csi_rs.is_present();
group_flags[0] |= spatial_relations.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(dummy6_present, 1));
HANDLE_CODE(bref.pack(beam_management_ssb_csi_rs.is_present(), 1));
HANDLE_CODE(bref.pack(beam_switch_timing.is_present(), 1));
HANDLE_CODE(bref.pack(codebook_params.is_present(), 1));
HANDLE_CODE(bref.pack(csi_rs_im_reception_for_feedback.is_present(), 1));
HANDLE_CODE(bref.pack(csi_rs_proc_framework_for_srs.is_present(), 1));
HANDLE_CODE(bref.pack(csi_report_framework.is_present(), 1));
HANDLE_CODE(bref.pack(csi_rs_for_tracking.is_present(), 1));
HANDLE_CODE(bref.pack(srs_assoc_csi_rs.is_present(), 1));
HANDLE_CODE(bref.pack(spatial_relations.is_present(), 1));
if (beam_management_ssb_csi_rs.is_present()) {
HANDLE_CODE(beam_management_ssb_csi_rs->pack(bref));
}
if (beam_switch_timing.is_present()) {
HANDLE_CODE(bref.pack(beam_switch_timing->scs_minus60k_hz_present, 1));
HANDLE_CODE(bref.pack(beam_switch_timing->scs_minus120k_hz_present, 1));
if (beam_switch_timing->scs_minus60k_hz_present) {
HANDLE_CODE(beam_switch_timing->scs_minus60k_hz.pack(bref));
}
if (beam_switch_timing->scs_minus120k_hz_present) {
HANDLE_CODE(beam_switch_timing->scs_minus120k_hz.pack(bref));
}
}
if (codebook_params.is_present()) {
HANDLE_CODE(codebook_params->pack(bref));
}
if (csi_rs_im_reception_for_feedback.is_present()) {
HANDLE_CODE(csi_rs_im_reception_for_feedback->pack(bref));
}
if (csi_rs_proc_framework_for_srs.is_present()) {
HANDLE_CODE(csi_rs_proc_framework_for_srs->pack(bref));
}
if (csi_report_framework.is_present()) {
HANDLE_CODE(csi_report_framework->pack(bref));
}
if (csi_rs_for_tracking.is_present()) {
HANDLE_CODE(csi_rs_for_tracking->pack(bref));
}
if (srs_assoc_csi_rs.is_present()) {
HANDLE_CODE(pack_dyn_seq_of(bref, *srs_assoc_csi_rs, 1, 7));
}
if (spatial_relations.is_present()) {
HANDLE_CODE(spatial_relations->pack(bref));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE mimo_params_per_band_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(tci_state_pdsch_present, 1));
HANDLE_CODE(bref.unpack(add_active_tci_state_pdcch_present, 1));
HANDLE_CODE(bref.unpack(pusch_trans_coherence_present, 1));
HANDLE_CODE(bref.unpack(beam_correspondence_without_ul_beam_sweeping_present, 1));
HANDLE_CODE(bref.unpack(periodic_beam_report_present, 1));
HANDLE_CODE(bref.unpack(aperiodic_beam_report_present, 1));
HANDLE_CODE(bref.unpack(sp_beam_report_pucch_present, 1));
HANDLE_CODE(bref.unpack(sp_beam_report_pusch_present, 1));
HANDLE_CODE(bref.unpack(dummy1_present, 1));
HANDLE_CODE(bref.unpack(max_num_rx_beam_present, 1));
HANDLE_CODE(bref.unpack(max_num_rx_tx_beam_switch_dl_present, 1));
HANDLE_CODE(bref.unpack(max_num_non_group_beam_report_present, 1));
HANDLE_CODE(bref.unpack(group_beam_report_present, 1));
HANDLE_CODE(bref.unpack(ul_beam_management_present, 1));
HANDLE_CODE(bref.unpack(max_num_csi_rs_bfd_present, 1));
HANDLE_CODE(bref.unpack(max_num_ssb_bfd_present, 1));
HANDLE_CODE(bref.unpack(max_num_csi_rs_ssb_cbd_present, 1));
HANDLE_CODE(bref.unpack(dummy2_present, 1));
HANDLE_CODE(bref.unpack(two_ports_ptrs_ul_present, 1));
HANDLE_CODE(bref.unpack(dummy5_present, 1));
HANDLE_CODE(bref.unpack(dummy3_present, 1));
HANDLE_CODE(bref.unpack(beam_report_timing_present, 1));
HANDLE_CODE(bref.unpack(ptrs_density_recommendation_set_dl_present, 1));
HANDLE_CODE(bref.unpack(ptrs_density_recommendation_set_ul_present, 1));
HANDLE_CODE(bref.unpack(dummy4_present, 1));
HANDLE_CODE(bref.unpack(aperiodic_trs_present, 1));
if (tci_state_pdsch_present) {
HANDLE_CODE(bref.unpack(tci_state_pdsch.max_num_cfgured_tcistates_per_cc_present, 1));
HANDLE_CODE(bref.unpack(tci_state_pdsch.max_num_active_tci_per_bwp_present, 1));
if (tci_state_pdsch.max_num_cfgured_tcistates_per_cc_present) {
HANDLE_CODE(tci_state_pdsch.max_num_cfgured_tcistates_per_cc.unpack(bref));
}
if (tci_state_pdsch.max_num_active_tci_per_bwp_present) {
HANDLE_CODE(tci_state_pdsch.max_num_active_tci_per_bwp.unpack(bref));
}
}
if (pusch_trans_coherence_present) {
HANDLE_CODE(pusch_trans_coherence.unpack(bref));
}
if (dummy1_present) {
HANDLE_CODE(dummy1.unpack(bref));
}
if (max_num_rx_beam_present) {
HANDLE_CODE(unpack_integer(max_num_rx_beam, bref, (uint8_t)2u, (uint8_t)8u));
}
if (max_num_rx_tx_beam_switch_dl_present) {
HANDLE_CODE(bref.unpack(max_num_rx_tx_beam_switch_dl.scs_minus15k_hz_present, 1));
HANDLE_CODE(bref.unpack(max_num_rx_tx_beam_switch_dl.scs_minus30k_hz_present, 1));
HANDLE_CODE(bref.unpack(max_num_rx_tx_beam_switch_dl.scs_minus60k_hz_present, 1));
HANDLE_CODE(bref.unpack(max_num_rx_tx_beam_switch_dl.scs_minus120k_hz_present, 1));
HANDLE_CODE(bref.unpack(max_num_rx_tx_beam_switch_dl.scs_minus240k_hz_present, 1));
if (max_num_rx_tx_beam_switch_dl.scs_minus15k_hz_present) {
HANDLE_CODE(max_num_rx_tx_beam_switch_dl.scs_minus15k_hz.unpack(bref));
}
if (max_num_rx_tx_beam_switch_dl.scs_minus30k_hz_present) {
HANDLE_CODE(max_num_rx_tx_beam_switch_dl.scs_minus30k_hz.unpack(bref));
}
if (max_num_rx_tx_beam_switch_dl.scs_minus60k_hz_present) {
HANDLE_CODE(max_num_rx_tx_beam_switch_dl.scs_minus60k_hz.unpack(bref));
}
if (max_num_rx_tx_beam_switch_dl.scs_minus120k_hz_present) {
HANDLE_CODE(max_num_rx_tx_beam_switch_dl.scs_minus120k_hz.unpack(bref));
}
if (max_num_rx_tx_beam_switch_dl.scs_minus240k_hz_present) {
HANDLE_CODE(max_num_rx_tx_beam_switch_dl.scs_minus240k_hz.unpack(bref));
}
}
if (max_num_non_group_beam_report_present) {
HANDLE_CODE(max_num_non_group_beam_report.unpack(bref));
}
if (ul_beam_management_present) {
HANDLE_CODE(ul_beam_management.max_num_srs_res_per_set_bm.unpack(bref));
HANDLE_CODE(unpack_integer(ul_beam_management.max_num_srs_res_set, bref, (uint8_t)1u, (uint8_t)8u));
}
if (max_num_csi_rs_bfd_present) {
HANDLE_CODE(unpack_integer(max_num_csi_rs_bfd, bref, (uint8_t)1u, (uint8_t)64u));
}
if (max_num_ssb_bfd_present) {
HANDLE_CODE(unpack_integer(max_num_ssb_bfd, bref, (uint8_t)1u, (uint8_t)64u));
}
if (max_num_csi_rs_ssb_cbd_present) {
HANDLE_CODE(unpack_integer(max_num_csi_rs_ssb_cbd, bref, (uint16_t)1u, (uint16_t)256u));
}
if (dummy5_present) {
HANDLE_CODE(dummy5.unpack(bref));
}
if (dummy3_present) {
HANDLE_CODE(unpack_integer(dummy3, bref, (uint8_t)1u, (uint8_t)4u));
}
if (beam_report_timing_present) {
HANDLE_CODE(bref.unpack(beam_report_timing.scs_minus15k_hz_present, 1));
HANDLE_CODE(bref.unpack(beam_report_timing.scs_minus30k_hz_present, 1));
HANDLE_CODE(bref.unpack(beam_report_timing.scs_minus60k_hz_present, 1));
HANDLE_CODE(bref.unpack(beam_report_timing.scs_minus120k_hz_present, 1));
if (beam_report_timing.scs_minus15k_hz_present) {
HANDLE_CODE(beam_report_timing.scs_minus15k_hz.unpack(bref));
}
if (beam_report_timing.scs_minus30k_hz_present) {
HANDLE_CODE(beam_report_timing.scs_minus30k_hz.unpack(bref));
}
if (beam_report_timing.scs_minus60k_hz_present) {
HANDLE_CODE(beam_report_timing.scs_minus60k_hz.unpack(bref));
}
if (beam_report_timing.scs_minus120k_hz_present) {
HANDLE_CODE(beam_report_timing.scs_minus120k_hz.unpack(bref));
}
}
if (ptrs_density_recommendation_set_dl_present) {
HANDLE_CODE(bref.unpack(ptrs_density_recommendation_set_dl.scs_minus15k_hz_present, 1));
HANDLE_CODE(bref.unpack(ptrs_density_recommendation_set_dl.scs_minus30k_hz_present, 1));
HANDLE_CODE(bref.unpack(ptrs_density_recommendation_set_dl.scs_minus60k_hz_present, 1));
HANDLE_CODE(bref.unpack(ptrs_density_recommendation_set_dl.scs_minus120k_hz_present, 1));
if (ptrs_density_recommendation_set_dl.scs_minus15k_hz_present) {
HANDLE_CODE(ptrs_density_recommendation_set_dl.scs_minus15k_hz.unpack(bref));
}
if (ptrs_density_recommendation_set_dl.scs_minus30k_hz_present) {
HANDLE_CODE(ptrs_density_recommendation_set_dl.scs_minus30k_hz.unpack(bref));
}
if (ptrs_density_recommendation_set_dl.scs_minus60k_hz_present) {
HANDLE_CODE(ptrs_density_recommendation_set_dl.scs_minus60k_hz.unpack(bref));
}
if (ptrs_density_recommendation_set_dl.scs_minus120k_hz_present) {
HANDLE_CODE(ptrs_density_recommendation_set_dl.scs_minus120k_hz.unpack(bref));
}
}
if (ptrs_density_recommendation_set_ul_present) {
HANDLE_CODE(bref.unpack(ptrs_density_recommendation_set_ul.scs_minus15k_hz_present, 1));
HANDLE_CODE(bref.unpack(ptrs_density_recommendation_set_ul.scs_minus30k_hz_present, 1));
HANDLE_CODE(bref.unpack(ptrs_density_recommendation_set_ul.scs_minus60k_hz_present, 1));
HANDLE_CODE(bref.unpack(ptrs_density_recommendation_set_ul.scs_minus120k_hz_present, 1));
if (ptrs_density_recommendation_set_ul.scs_minus15k_hz_present) {
HANDLE_CODE(ptrs_density_recommendation_set_ul.scs_minus15k_hz.unpack(bref));
}
if (ptrs_density_recommendation_set_ul.scs_minus30k_hz_present) {
HANDLE_CODE(ptrs_density_recommendation_set_ul.scs_minus30k_hz.unpack(bref));
}
if (ptrs_density_recommendation_set_ul.scs_minus60k_hz_present) {
HANDLE_CODE(ptrs_density_recommendation_set_ul.scs_minus60k_hz.unpack(bref));
}
if (ptrs_density_recommendation_set_ul.scs_minus120k_hz_present) {
HANDLE_CODE(ptrs_density_recommendation_set_ul.scs_minus120k_hz.unpack(bref));
}
}
if (dummy4_present) {
HANDLE_CODE(dummy4.unpack(bref));
}
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(dummy6_present, 1));
bool beam_management_ssb_csi_rs_present;
HANDLE_CODE(bref.unpack(beam_management_ssb_csi_rs_present, 1));
beam_management_ssb_csi_rs.set_present(beam_management_ssb_csi_rs_present);
bool beam_switch_timing_present;
HANDLE_CODE(bref.unpack(beam_switch_timing_present, 1));
beam_switch_timing.set_present(beam_switch_timing_present);
bool codebook_params_present;
HANDLE_CODE(bref.unpack(codebook_params_present, 1));
codebook_params.set_present(codebook_params_present);
bool csi_rs_im_reception_for_feedback_present;
HANDLE_CODE(bref.unpack(csi_rs_im_reception_for_feedback_present, 1));
csi_rs_im_reception_for_feedback.set_present(csi_rs_im_reception_for_feedback_present);
bool csi_rs_proc_framework_for_srs_present;
HANDLE_CODE(bref.unpack(csi_rs_proc_framework_for_srs_present, 1));
csi_rs_proc_framework_for_srs.set_present(csi_rs_proc_framework_for_srs_present);
bool csi_report_framework_present;
HANDLE_CODE(bref.unpack(csi_report_framework_present, 1));
csi_report_framework.set_present(csi_report_framework_present);
bool csi_rs_for_tracking_present;
HANDLE_CODE(bref.unpack(csi_rs_for_tracking_present, 1));
csi_rs_for_tracking.set_present(csi_rs_for_tracking_present);
bool srs_assoc_csi_rs_present;
HANDLE_CODE(bref.unpack(srs_assoc_csi_rs_present, 1));
srs_assoc_csi_rs.set_present(srs_assoc_csi_rs_present);
bool spatial_relations_present;
HANDLE_CODE(bref.unpack(spatial_relations_present, 1));
spatial_relations.set_present(spatial_relations_present);
if (beam_management_ssb_csi_rs.is_present()) {
HANDLE_CODE(beam_management_ssb_csi_rs->unpack(bref));
}
if (beam_switch_timing.is_present()) {
HANDLE_CODE(bref.unpack(beam_switch_timing->scs_minus60k_hz_present, 1));
HANDLE_CODE(bref.unpack(beam_switch_timing->scs_minus120k_hz_present, 1));
if (beam_switch_timing->scs_minus60k_hz_present) {
HANDLE_CODE(beam_switch_timing->scs_minus60k_hz.unpack(bref));
}
if (beam_switch_timing->scs_minus120k_hz_present) {
HANDLE_CODE(beam_switch_timing->scs_minus120k_hz.unpack(bref));
}
}
if (codebook_params.is_present()) {
HANDLE_CODE(codebook_params->unpack(bref));
}
if (csi_rs_im_reception_for_feedback.is_present()) {
HANDLE_CODE(csi_rs_im_reception_for_feedback->unpack(bref));
}
if (csi_rs_proc_framework_for_srs.is_present()) {
HANDLE_CODE(csi_rs_proc_framework_for_srs->unpack(bref));
}
if (csi_report_framework.is_present()) {
HANDLE_CODE(csi_report_framework->unpack(bref));
}
if (csi_rs_for_tracking.is_present()) {
HANDLE_CODE(csi_rs_for_tracking->unpack(bref));
}
if (srs_assoc_csi_rs.is_present()) {
HANDLE_CODE(unpack_dyn_seq_of(*srs_assoc_csi_rs, bref, 1, 7));
}
if (spatial_relations.is_present()) {
HANDLE_CODE(spatial_relations->unpack(bref));
}
}
}
return SRSASN_SUCCESS;
}
void mimo_params_per_band_s::to_json(json_writer& j) const
{
j.start_obj();
if (tci_state_pdsch_present) {
j.write_fieldname("tci-StatePDSCH");
j.start_obj();
if (tci_state_pdsch.max_num_cfgured_tcistates_per_cc_present) {
j.write_str("maxNumberConfiguredTCIstatesPerCC", tci_state_pdsch.max_num_cfgured_tcistates_per_cc.to_string());
}
if (tci_state_pdsch.max_num_active_tci_per_bwp_present) {
j.write_str("maxNumberActiveTCI-PerBWP", tci_state_pdsch.max_num_active_tci_per_bwp.to_string());
}
j.end_obj();
}
if (add_active_tci_state_pdcch_present) {
j.write_str("additionalActiveTCI-StatePDCCH", "supported");
}
if (pusch_trans_coherence_present) {
j.write_str("pusch-TransCoherence", pusch_trans_coherence.to_string());
}
if (beam_correspondence_without_ul_beam_sweeping_present) {
j.write_str("beamCorrespondenceWithoutUL-BeamSweeping", "supported");
}
if (periodic_beam_report_present) {
j.write_str("periodicBeamReport", "supported");
}
if (aperiodic_beam_report_present) {
j.write_str("aperiodicBeamReport", "supported");
}
if (sp_beam_report_pucch_present) {
j.write_str("sp-BeamReportPUCCH", "supported");
}
if (sp_beam_report_pusch_present) {
j.write_str("sp-BeamReportPUSCH", "supported");
}
if (dummy1_present) {
j.write_fieldname("dummy1");
dummy1.to_json(j);
}
if (max_num_rx_beam_present) {
j.write_int("maxNumberRxBeam", max_num_rx_beam);
}
if (max_num_rx_tx_beam_switch_dl_present) {
j.write_fieldname("maxNumberRxTxBeamSwitchDL");
j.start_obj();
if (max_num_rx_tx_beam_switch_dl.scs_minus15k_hz_present) {
j.write_str("scs-15kHz", max_num_rx_tx_beam_switch_dl.scs_minus15k_hz.to_string());
}
if (max_num_rx_tx_beam_switch_dl.scs_minus30k_hz_present) {
j.write_str("scs-30kHz", max_num_rx_tx_beam_switch_dl.scs_minus30k_hz.to_string());
}
if (max_num_rx_tx_beam_switch_dl.scs_minus60k_hz_present) {
j.write_str("scs-60kHz", max_num_rx_tx_beam_switch_dl.scs_minus60k_hz.to_string());
}
if (max_num_rx_tx_beam_switch_dl.scs_minus120k_hz_present) {
j.write_str("scs-120kHz", max_num_rx_tx_beam_switch_dl.scs_minus120k_hz.to_string());
}
if (max_num_rx_tx_beam_switch_dl.scs_minus240k_hz_present) {
j.write_str("scs-240kHz", max_num_rx_tx_beam_switch_dl.scs_minus240k_hz.to_string());
}
j.end_obj();
}
if (max_num_non_group_beam_report_present) {
j.write_str("maxNumberNonGroupBeamReporting", max_num_non_group_beam_report.to_string());
}
if (group_beam_report_present) {
j.write_str("groupBeamReporting", "supported");
}
if (ul_beam_management_present) {
j.write_fieldname("uplinkBeamManagement");
j.start_obj();
j.write_str("maxNumberSRS-ResourcePerSet-BM", ul_beam_management.max_num_srs_res_per_set_bm.to_string());
j.write_int("maxNumberSRS-ResourceSet", ul_beam_management.max_num_srs_res_set);
j.end_obj();
}
if (max_num_csi_rs_bfd_present) {
j.write_int("maxNumberCSI-RS-BFD", max_num_csi_rs_bfd);
}
if (max_num_ssb_bfd_present) {
j.write_int("maxNumberSSB-BFD", max_num_ssb_bfd);
}
if (max_num_csi_rs_ssb_cbd_present) {
j.write_int("maxNumberCSI-RS-SSB-CBD", max_num_csi_rs_ssb_cbd);
}
if (dummy2_present) {
j.write_str("dummy2", "supported");
}
if (two_ports_ptrs_ul_present) {
j.write_str("twoPortsPTRS-UL", "supported");
}
if (dummy5_present) {
j.write_fieldname("dummy5");
dummy5.to_json(j);
}
if (dummy3_present) {
j.write_int("dummy3", dummy3);
}
if (beam_report_timing_present) {
j.write_fieldname("beamReportTiming");
j.start_obj();
if (beam_report_timing.scs_minus15k_hz_present) {
j.write_str("scs-15kHz", beam_report_timing.scs_minus15k_hz.to_string());
}
if (beam_report_timing.scs_minus30k_hz_present) {
j.write_str("scs-30kHz", beam_report_timing.scs_minus30k_hz.to_string());
}
if (beam_report_timing.scs_minus60k_hz_present) {
j.write_str("scs-60kHz", beam_report_timing.scs_minus60k_hz.to_string());
}
if (beam_report_timing.scs_minus120k_hz_present) {
j.write_str("scs-120kHz", beam_report_timing.scs_minus120k_hz.to_string());
}
j.end_obj();
}
if (ptrs_density_recommendation_set_dl_present) {
j.write_fieldname("ptrs-DensityRecommendationSetDL");
j.start_obj();
if (ptrs_density_recommendation_set_dl.scs_minus15k_hz_present) {
j.write_fieldname("scs-15kHz");
ptrs_density_recommendation_set_dl.scs_minus15k_hz.to_json(j);
}
if (ptrs_density_recommendation_set_dl.scs_minus30k_hz_present) {
j.write_fieldname("scs-30kHz");
ptrs_density_recommendation_set_dl.scs_minus30k_hz.to_json(j);
}
if (ptrs_density_recommendation_set_dl.scs_minus60k_hz_present) {
j.write_fieldname("scs-60kHz");
ptrs_density_recommendation_set_dl.scs_minus60k_hz.to_json(j);
}
if (ptrs_density_recommendation_set_dl.scs_minus120k_hz_present) {
j.write_fieldname("scs-120kHz");
ptrs_density_recommendation_set_dl.scs_minus120k_hz.to_json(j);
}
j.end_obj();
}
if (ptrs_density_recommendation_set_ul_present) {
j.write_fieldname("ptrs-DensityRecommendationSetUL");
j.start_obj();
if (ptrs_density_recommendation_set_ul.scs_minus15k_hz_present) {
j.write_fieldname("scs-15kHz");
ptrs_density_recommendation_set_ul.scs_minus15k_hz.to_json(j);
}
if (ptrs_density_recommendation_set_ul.scs_minus30k_hz_present) {
j.write_fieldname("scs-30kHz");
ptrs_density_recommendation_set_ul.scs_minus30k_hz.to_json(j);
}
if (ptrs_density_recommendation_set_ul.scs_minus60k_hz_present) {
j.write_fieldname("scs-60kHz");
ptrs_density_recommendation_set_ul.scs_minus60k_hz.to_json(j);
}
if (ptrs_density_recommendation_set_ul.scs_minus120k_hz_present) {
j.write_fieldname("scs-120kHz");
ptrs_density_recommendation_set_ul.scs_minus120k_hz.to_json(j);
}
j.end_obj();
}
if (dummy4_present) {
j.write_fieldname("dummy4");
dummy4.to_json(j);
}
if (aperiodic_trs_present) {
j.write_str("aperiodicTRS", "supported");
}
if (ext) {
if (dummy6_present) {
j.write_str("dummy6", "true");
}
if (beam_management_ssb_csi_rs.is_present()) {
j.write_fieldname("beamManagementSSB-CSI-RS");
beam_management_ssb_csi_rs->to_json(j);
}
if (beam_switch_timing.is_present()) {
j.write_fieldname("beamSwitchTiming");
j.start_obj();
if (beam_switch_timing->scs_minus60k_hz_present) {
j.write_str("scs-60kHz", beam_switch_timing->scs_minus60k_hz.to_string());
}
if (beam_switch_timing->scs_minus120k_hz_present) {
j.write_str("scs-120kHz", beam_switch_timing->scs_minus120k_hz.to_string());
}
j.end_obj();
}
if (codebook_params.is_present()) {
j.write_fieldname("codebookParameters");
codebook_params->to_json(j);
}
if (csi_rs_im_reception_for_feedback.is_present()) {
j.write_fieldname("csi-RS-IM-ReceptionForFeedback");
csi_rs_im_reception_for_feedback->to_json(j);
}
if (csi_rs_proc_framework_for_srs.is_present()) {
j.write_fieldname("csi-RS-ProcFrameworkForSRS");
csi_rs_proc_framework_for_srs->to_json(j);
}
if (csi_report_framework.is_present()) {
j.write_fieldname("csi-ReportFramework");
csi_report_framework->to_json(j);
}
if (csi_rs_for_tracking.is_present()) {
j.write_fieldname("csi-RS-ForTracking");
csi_rs_for_tracking->to_json(j);
}
if (srs_assoc_csi_rs.is_present()) {
j.start_array("srs-AssocCSI-RS");
for (const auto& e1 : *srs_assoc_csi_rs) {
e1.to_json(j);
}
j.end_array();
}
if (spatial_relations.is_present()) {
j.write_fieldname("spatialRelations");
spatial_relations->to_json(j);
}
}
j.end_obj();
}
const char* mimo_params_per_band_s::tci_state_pdsch_s_::max_num_cfgured_tcistates_per_cc_opts::to_string() const
{
static const char* options[] = {"n4", "n8", "n16", "n32", "n64", "n128"};
return convert_enum_idx(
options, 6, value, "mimo_params_per_band_s::tci_state_pdsch_s_::max_num_cfgured_tcistates_per_cc_e_");
}
uint8_t mimo_params_per_band_s::tci_state_pdsch_s_::max_num_cfgured_tcistates_per_cc_opts::to_number() const
{
static const uint8_t options[] = {4, 8, 16, 32, 64, 128};
return map_enum_number(
options, 6, value, "mimo_params_per_band_s::tci_state_pdsch_s_::max_num_cfgured_tcistates_per_cc_e_");
}
const char* mimo_params_per_band_s::tci_state_pdsch_s_::max_num_active_tci_per_bwp_opts::to_string() const
{
static const char* options[] = {"n1", "n2", "n4", "n8"};
return convert_enum_idx(
options, 4, value, "mimo_params_per_band_s::tci_state_pdsch_s_::max_num_active_tci_per_bwp_e_");
}
uint8_t mimo_params_per_band_s::tci_state_pdsch_s_::max_num_active_tci_per_bwp_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 4, 8};
return map_enum_number(
options, 4, value, "mimo_params_per_band_s::tci_state_pdsch_s_::max_num_active_tci_per_bwp_e_");
}
const char* mimo_params_per_band_s::pusch_trans_coherence_opts::to_string() const
{
static const char* options[] = {"nonCoherent", "partialCoherent", "fullCoherent"};
return convert_enum_idx(options, 3, value, "mimo_params_per_band_s::pusch_trans_coherence_e_");
}
const char* mimo_params_per_band_s::max_num_rx_tx_beam_switch_dl_s_::scs_minus15k_hz_opts::to_string() const
{
static const char* options[] = {"n4", "n7", "n14"};
return convert_enum_idx(
options, 3, value, "mimo_params_per_band_s::max_num_rx_tx_beam_switch_dl_s_::scs_minus15k_hz_e_");
}
uint8_t mimo_params_per_band_s::max_num_rx_tx_beam_switch_dl_s_::scs_minus15k_hz_opts::to_number() const
{
static const uint8_t options[] = {4, 7, 14};
return map_enum_number(
options, 3, value, "mimo_params_per_band_s::max_num_rx_tx_beam_switch_dl_s_::scs_minus15k_hz_e_");
}
const char* mimo_params_per_band_s::max_num_rx_tx_beam_switch_dl_s_::scs_minus30k_hz_opts::to_string() const
{
static const char* options[] = {"n4", "n7", "n14"};
return convert_enum_idx(
options, 3, value, "mimo_params_per_band_s::max_num_rx_tx_beam_switch_dl_s_::scs_minus30k_hz_e_");
}
uint8_t mimo_params_per_band_s::max_num_rx_tx_beam_switch_dl_s_::scs_minus30k_hz_opts::to_number() const
{
static const uint8_t options[] = {4, 7, 14};
return map_enum_number(
options, 3, value, "mimo_params_per_band_s::max_num_rx_tx_beam_switch_dl_s_::scs_minus30k_hz_e_");
}
const char* mimo_params_per_band_s::max_num_rx_tx_beam_switch_dl_s_::scs_minus60k_hz_opts::to_string() const
{
static const char* options[] = {"n4", "n7", "n14"};
return convert_enum_idx(
options, 3, value, "mimo_params_per_band_s::max_num_rx_tx_beam_switch_dl_s_::scs_minus60k_hz_e_");
}
uint8_t mimo_params_per_band_s::max_num_rx_tx_beam_switch_dl_s_::scs_minus60k_hz_opts::to_number() const
{
static const uint8_t options[] = {4, 7, 14};
return map_enum_number(
options, 3, value, "mimo_params_per_band_s::max_num_rx_tx_beam_switch_dl_s_::scs_minus60k_hz_e_");
}
const char* mimo_params_per_band_s::max_num_rx_tx_beam_switch_dl_s_::scs_minus120k_hz_opts::to_string() const
{
static const char* options[] = {"n4", "n7", "n14"};
return convert_enum_idx(
options, 3, value, "mimo_params_per_band_s::max_num_rx_tx_beam_switch_dl_s_::scs_minus120k_hz_e_");
}
uint8_t mimo_params_per_band_s::max_num_rx_tx_beam_switch_dl_s_::scs_minus120k_hz_opts::to_number() const
{
static const uint8_t options[] = {4, 7, 14};
return map_enum_number(
options, 3, value, "mimo_params_per_band_s::max_num_rx_tx_beam_switch_dl_s_::scs_minus120k_hz_e_");
}
const char* mimo_params_per_band_s::max_num_rx_tx_beam_switch_dl_s_::scs_minus240k_hz_opts::to_string() const
{
static const char* options[] = {"n4", "n7", "n14"};
return convert_enum_idx(
options, 3, value, "mimo_params_per_band_s::max_num_rx_tx_beam_switch_dl_s_::scs_minus240k_hz_e_");
}
uint8_t mimo_params_per_band_s::max_num_rx_tx_beam_switch_dl_s_::scs_minus240k_hz_opts::to_number() const
{
static const uint8_t options[] = {4, 7, 14};
return map_enum_number(
options, 3, value, "mimo_params_per_band_s::max_num_rx_tx_beam_switch_dl_s_::scs_minus240k_hz_e_");
}
const char* mimo_params_per_band_s::max_num_non_group_beam_report_opts::to_string() const
{
static const char* options[] = {"n1", "n2", "n4"};
return convert_enum_idx(options, 3, value, "mimo_params_per_band_s::max_num_non_group_beam_report_e_");
}
uint8_t mimo_params_per_band_s::max_num_non_group_beam_report_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 4};
return map_enum_number(options, 3, value, "mimo_params_per_band_s::max_num_non_group_beam_report_e_");
}
const char* mimo_params_per_band_s::ul_beam_management_s_::max_num_srs_res_per_set_bm_opts::to_string() const
{
static const char* options[] = {"n2", "n4", "n8", "n16"};
return convert_enum_idx(
options, 4, value, "mimo_params_per_band_s::ul_beam_management_s_::max_num_srs_res_per_set_bm_e_");
}
uint8_t mimo_params_per_band_s::ul_beam_management_s_::max_num_srs_res_per_set_bm_opts::to_number() const
{
static const uint8_t options[] = {2, 4, 8, 16};
return map_enum_number(
options, 4, value, "mimo_params_per_band_s::ul_beam_management_s_::max_num_srs_res_per_set_bm_e_");
}
const char* mimo_params_per_band_s::beam_report_timing_s_::scs_minus15k_hz_opts::to_string() const
{
static const char* options[] = {"sym2", "sym4", "sym8"};
return convert_enum_idx(options, 3, value, "mimo_params_per_band_s::beam_report_timing_s_::scs_minus15k_hz_e_");
}
uint8_t mimo_params_per_band_s::beam_report_timing_s_::scs_minus15k_hz_opts::to_number() const
{
static const uint8_t options[] = {2, 4, 8};
return map_enum_number(options, 3, value, "mimo_params_per_band_s::beam_report_timing_s_::scs_minus15k_hz_e_");
}
const char* mimo_params_per_band_s::beam_report_timing_s_::scs_minus30k_hz_opts::to_string() const
{
static const char* options[] = {"sym4", "sym8", "sym14", "sym28"};
return convert_enum_idx(options, 4, value, "mimo_params_per_band_s::beam_report_timing_s_::scs_minus30k_hz_e_");
}
uint8_t mimo_params_per_band_s::beam_report_timing_s_::scs_minus30k_hz_opts::to_number() const
{
static const uint8_t options[] = {4, 8, 14, 28};
return map_enum_number(options, 4, value, "mimo_params_per_band_s::beam_report_timing_s_::scs_minus30k_hz_e_");
}
const char* mimo_params_per_band_s::beam_report_timing_s_::scs_minus60k_hz_opts::to_string() const
{
static const char* options[] = {"sym8", "sym14", "sym28"};
return convert_enum_idx(options, 3, value, "mimo_params_per_band_s::beam_report_timing_s_::scs_minus60k_hz_e_");
}
uint8_t mimo_params_per_band_s::beam_report_timing_s_::scs_minus60k_hz_opts::to_number() const
{
static const uint8_t options[] = {8, 14, 28};
return map_enum_number(options, 3, value, "mimo_params_per_band_s::beam_report_timing_s_::scs_minus60k_hz_e_");
}
const char* mimo_params_per_band_s::beam_report_timing_s_::scs_minus120k_hz_opts::to_string() const
{
static const char* options[] = {"sym14", "sym28", "sym56"};
return convert_enum_idx(options, 3, value, "mimo_params_per_band_s::beam_report_timing_s_::scs_minus120k_hz_e_");
}
uint8_t mimo_params_per_band_s::beam_report_timing_s_::scs_minus120k_hz_opts::to_number() const
{
static const uint8_t options[] = {14, 28, 56};
return map_enum_number(options, 3, value, "mimo_params_per_band_s::beam_report_timing_s_::scs_minus120k_hz_e_");
}
const char* mimo_params_per_band_s::beam_switch_timing_s_::scs_minus60k_hz_opts::to_string() const
{
static const char* options[] = {"sym14", "sym28", "sym48", "sym224", "sym336"};
return convert_enum_idx(options, 5, value, "mimo_params_per_band_s::beam_switch_timing_s_::scs_minus60k_hz_e_");
}
uint16_t mimo_params_per_band_s::beam_switch_timing_s_::scs_minus60k_hz_opts::to_number() const
{
static const uint16_t options[] = {14, 28, 48, 224, 336};
return map_enum_number(options, 5, value, "mimo_params_per_band_s::beam_switch_timing_s_::scs_minus60k_hz_e_");
}
const char* mimo_params_per_band_s::beam_switch_timing_s_::scs_minus120k_hz_opts::to_string() const
{
static const char* options[] = {"sym14", "sym28", "sym48", "sym224", "sym336"};
return convert_enum_idx(options, 5, value, "mimo_params_per_band_s::beam_switch_timing_s_::scs_minus120k_hz_e_");
}
uint16_t mimo_params_per_band_s::beam_switch_timing_s_::scs_minus120k_hz_opts::to_number() const
{
static const uint16_t options[] = {14, 28, 48, 224, 336};
return map_enum_number(options, 5, value, "mimo_params_per_band_s::beam_switch_timing_s_::scs_minus120k_hz_e_");
}
// BandNR ::= SEQUENCE
SRSASN_CODE band_nr_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(modified_mpr_behaviour_present, 1));
HANDLE_CODE(bref.pack(mimo_params_per_band_present, 1));
HANDLE_CODE(bref.pack(extended_cp_present, 1));
HANDLE_CODE(bref.pack(multiple_tci_present, 1));
HANDLE_CODE(bref.pack(bwp_without_restrict_present, 1));
HANDLE_CODE(bref.pack(bwp_same_numerology_present, 1));
HANDLE_CODE(bref.pack(bwp_diff_numerology_present, 1));
HANDLE_CODE(bref.pack(cross_carrier_sched_same_scs_present, 1));
HANDLE_CODE(bref.pack(pdsch_minus256_qam_fr2_present, 1));
HANDLE_CODE(bref.pack(pusch_minus256_qam_present, 1));
HANDLE_CODE(bref.pack(ue_pwr_class_present, 1));
HANDLE_CODE(bref.pack(rate_matching_lte_crs_present, 1));
HANDLE_CODE(bref.pack(ch_bws_dl_present, 1));
HANDLE_CODE(bref.pack(ch_bws_ul_present, 1));
HANDLE_CODE(pack_integer(bref, band_nr, (uint16_t)1u, (uint16_t)1024u));
if (modified_mpr_behaviour_present) {
HANDLE_CODE(modified_mpr_behaviour.pack(bref));
}
if (mimo_params_per_band_present) {
HANDLE_CODE(mimo_params_per_band.pack(bref));
}
if (bwp_same_numerology_present) {
HANDLE_CODE(bwp_same_numerology.pack(bref));
}
if (ue_pwr_class_present) {
HANDLE_CODE(ue_pwr_class.pack(bref));
}
if (ch_bws_dl_present) {
HANDLE_CODE(ch_bws_dl.pack(bref));
}
if (ch_bws_ul_present) {
HANDLE_CODE(ch_bws_ul.pack(bref));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= max_ul_duty_cycle_pc2_fr1_present;
group_flags[1] |= pucch_spatial_rel_info_mac_ce_present;
group_flags[1] |= pwr_boosting_pi2_bpsk_present;
group_flags[2] |= max_ul_duty_cycle_fr2_present;
group_flags[3] |= ch_bws_dl_v1590.is_present();
group_flags[3] |= ch_bws_ul_v1590.is_present();
group_flags[4] |= asymmetric_bw_combination_set_present;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(max_ul_duty_cycle_pc2_fr1_present, 1));
if (max_ul_duty_cycle_pc2_fr1_present) {
HANDLE_CODE(max_ul_duty_cycle_pc2_fr1.pack(bref));
}
}
if (group_flags[1]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(pucch_spatial_rel_info_mac_ce_present, 1));
HANDLE_CODE(bref.pack(pwr_boosting_pi2_bpsk_present, 1));
}
if (group_flags[2]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(max_ul_duty_cycle_fr2_present, 1));
if (max_ul_duty_cycle_fr2_present) {
HANDLE_CODE(max_ul_duty_cycle_fr2.pack(bref));
}
}
if (group_flags[3]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(ch_bws_dl_v1590.is_present(), 1));
HANDLE_CODE(bref.pack(ch_bws_ul_v1590.is_present(), 1));
if (ch_bws_dl_v1590.is_present()) {
HANDLE_CODE(ch_bws_dl_v1590->pack(bref));
}
if (ch_bws_ul_v1590.is_present()) {
HANDLE_CODE(ch_bws_ul_v1590->pack(bref));
}
}
if (group_flags[4]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(asymmetric_bw_combination_set_present, 1));
if (asymmetric_bw_combination_set_present) {
HANDLE_CODE(asymmetric_bw_combination_set.pack(bref));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE band_nr_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(modified_mpr_behaviour_present, 1));
HANDLE_CODE(bref.unpack(mimo_params_per_band_present, 1));
HANDLE_CODE(bref.unpack(extended_cp_present, 1));
HANDLE_CODE(bref.unpack(multiple_tci_present, 1));
HANDLE_CODE(bref.unpack(bwp_without_restrict_present, 1));
HANDLE_CODE(bref.unpack(bwp_same_numerology_present, 1));
HANDLE_CODE(bref.unpack(bwp_diff_numerology_present, 1));
HANDLE_CODE(bref.unpack(cross_carrier_sched_same_scs_present, 1));
HANDLE_CODE(bref.unpack(pdsch_minus256_qam_fr2_present, 1));
HANDLE_CODE(bref.unpack(pusch_minus256_qam_present, 1));
HANDLE_CODE(bref.unpack(ue_pwr_class_present, 1));
HANDLE_CODE(bref.unpack(rate_matching_lte_crs_present, 1));
HANDLE_CODE(bref.unpack(ch_bws_dl_present, 1));
HANDLE_CODE(bref.unpack(ch_bws_ul_present, 1));
HANDLE_CODE(unpack_integer(band_nr, bref, (uint16_t)1u, (uint16_t)1024u));
if (modified_mpr_behaviour_present) {
HANDLE_CODE(modified_mpr_behaviour.unpack(bref));
}
if (mimo_params_per_band_present) {
HANDLE_CODE(mimo_params_per_band.unpack(bref));
}
if (bwp_same_numerology_present) {
HANDLE_CODE(bwp_same_numerology.unpack(bref));
}
if (ue_pwr_class_present) {
HANDLE_CODE(ue_pwr_class.unpack(bref));
}
if (ch_bws_dl_present) {
HANDLE_CODE(ch_bws_dl.unpack(bref));
}
if (ch_bws_ul_present) {
HANDLE_CODE(ch_bws_ul.unpack(bref));
}
if (ext) {
ext_groups_unpacker_guard group_flags(5);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(max_ul_duty_cycle_pc2_fr1_present, 1));
if (max_ul_duty_cycle_pc2_fr1_present) {
HANDLE_CODE(max_ul_duty_cycle_pc2_fr1.unpack(bref));
}
}
if (group_flags[1]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(pucch_spatial_rel_info_mac_ce_present, 1));
HANDLE_CODE(bref.unpack(pwr_boosting_pi2_bpsk_present, 1));
}
if (group_flags[2]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(max_ul_duty_cycle_fr2_present, 1));
if (max_ul_duty_cycle_fr2_present) {
HANDLE_CODE(max_ul_duty_cycle_fr2.unpack(bref));
}
}
if (group_flags[3]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool ch_bws_dl_v1590_present;
HANDLE_CODE(bref.unpack(ch_bws_dl_v1590_present, 1));
ch_bws_dl_v1590.set_present(ch_bws_dl_v1590_present);
bool ch_bws_ul_v1590_present;
HANDLE_CODE(bref.unpack(ch_bws_ul_v1590_present, 1));
ch_bws_ul_v1590.set_present(ch_bws_ul_v1590_present);
if (ch_bws_dl_v1590.is_present()) {
HANDLE_CODE(ch_bws_dl_v1590->unpack(bref));
}
if (ch_bws_ul_v1590.is_present()) {
HANDLE_CODE(ch_bws_ul_v1590->unpack(bref));
}
}
if (group_flags[4]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(asymmetric_bw_combination_set_present, 1));
if (asymmetric_bw_combination_set_present) {
HANDLE_CODE(asymmetric_bw_combination_set.unpack(bref));
}
}
}
return SRSASN_SUCCESS;
}
void band_nr_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("bandNR", band_nr);
if (modified_mpr_behaviour_present) {
j.write_str("modifiedMPR-Behaviour", modified_mpr_behaviour.to_string());
}
if (mimo_params_per_band_present) {
j.write_fieldname("mimo-ParametersPerBand");
mimo_params_per_band.to_json(j);
}
if (extended_cp_present) {
j.write_str("extendedCP", "supported");
}
if (multiple_tci_present) {
j.write_str("multipleTCI", "supported");
}
if (bwp_without_restrict_present) {
j.write_str("bwp-WithoutRestriction", "supported");
}
if (bwp_same_numerology_present) {
j.write_str("bwp-SameNumerology", bwp_same_numerology.to_string());
}
if (bwp_diff_numerology_present) {
j.write_str("bwp-DiffNumerology", "upto4");
}
if (cross_carrier_sched_same_scs_present) {
j.write_str("crossCarrierScheduling-SameSCS", "supported");
}
if (pdsch_minus256_qam_fr2_present) {
j.write_str("pdsch-256QAM-FR2", "supported");
}
if (pusch_minus256_qam_present) {
j.write_str("pusch-256QAM", "supported");
}
if (ue_pwr_class_present) {
j.write_str("ue-PowerClass", ue_pwr_class.to_string());
}
if (rate_matching_lte_crs_present) {
j.write_str("rateMatchingLTE-CRS", "supported");
}
if (ch_bws_dl_present) {
j.write_fieldname("channelBWs-DL");
ch_bws_dl.to_json(j);
}
if (ch_bws_ul_present) {
j.write_fieldname("channelBWs-UL");
ch_bws_ul.to_json(j);
}
if (ext) {
if (max_ul_duty_cycle_pc2_fr1_present) {
j.write_str("maxUplinkDutyCycle-PC2-FR1", max_ul_duty_cycle_pc2_fr1.to_string());
}
if (pucch_spatial_rel_info_mac_ce_present) {
j.write_str("pucch-SpatialRelInfoMAC-CE", "supported");
}
if (pwr_boosting_pi2_bpsk_present) {
j.write_str("powerBoosting-pi2BPSK", "supported");
}
if (max_ul_duty_cycle_fr2_present) {
j.write_str("maxUplinkDutyCycle-FR2", max_ul_duty_cycle_fr2.to_string());
}
if (ch_bws_dl_v1590.is_present()) {
j.write_fieldname("channelBWs-DL-v1590");
ch_bws_dl_v1590->to_json(j);
}
if (ch_bws_ul_v1590.is_present()) {
j.write_fieldname("channelBWs-UL-v1590");
ch_bws_ul_v1590->to_json(j);
}
if (asymmetric_bw_combination_set_present) {
j.write_str("asymmetricBandwidthCombinationSet", asymmetric_bw_combination_set.to_string());
}
}
j.end_obj();
}
const char* band_nr_s::bwp_same_numerology_opts::to_string() const
{
static const char* options[] = {"upto2", "upto4"};
return convert_enum_idx(options, 2, value, "band_nr_s::bwp_same_numerology_e_");
}
uint8_t band_nr_s::bwp_same_numerology_opts::to_number() const
{
static const uint8_t options[] = {2, 4};
return map_enum_number(options, 2, value, "band_nr_s::bwp_same_numerology_e_");
}
const char* band_nr_s::ue_pwr_class_opts::to_string() const
{
static const char* options[] = {"pc1", "pc2", "pc3", "pc4"};
return convert_enum_idx(options, 4, value, "band_nr_s::ue_pwr_class_e_");
}
uint8_t band_nr_s::ue_pwr_class_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 3, 4};
return map_enum_number(options, 4, value, "band_nr_s::ue_pwr_class_e_");
}
void band_nr_s::ch_bws_dl_c_::destroy_()
{
switch (type_) {
case types::fr1:
c.destroy<fr1_s_>();
break;
case types::fr2:
c.destroy<fr2_s_>();
break;
default:
break;
}
}
void band_nr_s::ch_bws_dl_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::fr1:
c.init<fr1_s_>();
break;
case types::fr2:
c.init<fr2_s_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "band_nr_s::ch_bws_dl_c_");
}
}
band_nr_s::ch_bws_dl_c_::ch_bws_dl_c_(const band_nr_s::ch_bws_dl_c_& other)
{
type_ = other.type();
switch (type_) {
case types::fr1:
c.init(other.c.get<fr1_s_>());
break;
case types::fr2:
c.init(other.c.get<fr2_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "band_nr_s::ch_bws_dl_c_");
}
}
band_nr_s::ch_bws_dl_c_& band_nr_s::ch_bws_dl_c_::operator=(const band_nr_s::ch_bws_dl_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::fr1:
c.set(other.c.get<fr1_s_>());
break;
case types::fr2:
c.set(other.c.get<fr2_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "band_nr_s::ch_bws_dl_c_");
}
return *this;
}
band_nr_s::ch_bws_dl_c_::fr1_s_& band_nr_s::ch_bws_dl_c_::set_fr1()
{
set(types::fr1);
return c.get<fr1_s_>();
}
band_nr_s::ch_bws_dl_c_::fr2_s_& band_nr_s::ch_bws_dl_c_::set_fr2()
{
set(types::fr2);
return c.get<fr2_s_>();
}
void band_nr_s::ch_bws_dl_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::fr1:
j.write_fieldname("fr1");
j.start_obj();
if (c.get<fr1_s_>().scs_minus15k_hz_present) {
j.write_str("scs-15kHz", c.get<fr1_s_>().scs_minus15k_hz.to_string());
}
if (c.get<fr1_s_>().scs_minus30k_hz_present) {
j.write_str("scs-30kHz", c.get<fr1_s_>().scs_minus30k_hz.to_string());
}
if (c.get<fr1_s_>().scs_minus60k_hz_present) {
j.write_str("scs-60kHz", c.get<fr1_s_>().scs_minus60k_hz.to_string());
}
j.end_obj();
break;
case types::fr2:
j.write_fieldname("fr2");
j.start_obj();
if (c.get<fr2_s_>().scs_minus60k_hz_present) {
j.write_str("scs-60kHz", c.get<fr2_s_>().scs_minus60k_hz.to_string());
}
if (c.get<fr2_s_>().scs_minus120k_hz_present) {
j.write_str("scs-120kHz", c.get<fr2_s_>().scs_minus120k_hz.to_string());
}
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "band_nr_s::ch_bws_dl_c_");
}
j.end_obj();
}
SRSASN_CODE band_nr_s::ch_bws_dl_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::fr1:
HANDLE_CODE(bref.pack(c.get<fr1_s_>().scs_minus15k_hz_present, 1));
HANDLE_CODE(bref.pack(c.get<fr1_s_>().scs_minus30k_hz_present, 1));
HANDLE_CODE(bref.pack(c.get<fr1_s_>().scs_minus60k_hz_present, 1));
if (c.get<fr1_s_>().scs_minus15k_hz_present) {
HANDLE_CODE(c.get<fr1_s_>().scs_minus15k_hz.pack(bref));
}
if (c.get<fr1_s_>().scs_minus30k_hz_present) {
HANDLE_CODE(c.get<fr1_s_>().scs_minus30k_hz.pack(bref));
}
if (c.get<fr1_s_>().scs_minus60k_hz_present) {
HANDLE_CODE(c.get<fr1_s_>().scs_minus60k_hz.pack(bref));
}
break;
case types::fr2:
HANDLE_CODE(bref.pack(c.get<fr2_s_>().scs_minus60k_hz_present, 1));
HANDLE_CODE(bref.pack(c.get<fr2_s_>().scs_minus120k_hz_present, 1));
if (c.get<fr2_s_>().scs_minus60k_hz_present) {
HANDLE_CODE(c.get<fr2_s_>().scs_minus60k_hz.pack(bref));
}
if (c.get<fr2_s_>().scs_minus120k_hz_present) {
HANDLE_CODE(c.get<fr2_s_>().scs_minus120k_hz.pack(bref));
}
break;
default:
log_invalid_choice_id(type_, "band_nr_s::ch_bws_dl_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE band_nr_s::ch_bws_dl_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::fr1:
HANDLE_CODE(bref.unpack(c.get<fr1_s_>().scs_minus15k_hz_present, 1));
HANDLE_CODE(bref.unpack(c.get<fr1_s_>().scs_minus30k_hz_present, 1));
HANDLE_CODE(bref.unpack(c.get<fr1_s_>().scs_minus60k_hz_present, 1));
if (c.get<fr1_s_>().scs_minus15k_hz_present) {
HANDLE_CODE(c.get<fr1_s_>().scs_minus15k_hz.unpack(bref));
}
if (c.get<fr1_s_>().scs_minus30k_hz_present) {
HANDLE_CODE(c.get<fr1_s_>().scs_minus30k_hz.unpack(bref));
}
if (c.get<fr1_s_>().scs_minus60k_hz_present) {
HANDLE_CODE(c.get<fr1_s_>().scs_minus60k_hz.unpack(bref));
}
break;
case types::fr2:
HANDLE_CODE(bref.unpack(c.get<fr2_s_>().scs_minus60k_hz_present, 1));
HANDLE_CODE(bref.unpack(c.get<fr2_s_>().scs_minus120k_hz_present, 1));
if (c.get<fr2_s_>().scs_minus60k_hz_present) {
HANDLE_CODE(c.get<fr2_s_>().scs_minus60k_hz.unpack(bref));
}
if (c.get<fr2_s_>().scs_minus120k_hz_present) {
HANDLE_CODE(c.get<fr2_s_>().scs_minus120k_hz.unpack(bref));
}
break;
default:
log_invalid_choice_id(type_, "band_nr_s::ch_bws_dl_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* band_nr_s::ch_bws_dl_c_::types_opts::to_string() const
{
static const char* options[] = {"fr1", "fr2"};
return convert_enum_idx(options, 2, value, "band_nr_s::ch_bws_dl_c_::types");
}
uint8_t band_nr_s::ch_bws_dl_c_::types_opts::to_number() const
{
static const uint8_t options[] = {1, 2};
return map_enum_number(options, 2, value, "band_nr_s::ch_bws_dl_c_::types");
}
void band_nr_s::ch_bws_ul_c_::destroy_()
{
switch (type_) {
case types::fr1:
c.destroy<fr1_s_>();
break;
case types::fr2:
c.destroy<fr2_s_>();
break;
default:
break;
}
}
void band_nr_s::ch_bws_ul_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::fr1:
c.init<fr1_s_>();
break;
case types::fr2:
c.init<fr2_s_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "band_nr_s::ch_bws_ul_c_");
}
}
band_nr_s::ch_bws_ul_c_::ch_bws_ul_c_(const band_nr_s::ch_bws_ul_c_& other)
{
type_ = other.type();
switch (type_) {
case types::fr1:
c.init(other.c.get<fr1_s_>());
break;
case types::fr2:
c.init(other.c.get<fr2_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "band_nr_s::ch_bws_ul_c_");
}
}
band_nr_s::ch_bws_ul_c_& band_nr_s::ch_bws_ul_c_::operator=(const band_nr_s::ch_bws_ul_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::fr1:
c.set(other.c.get<fr1_s_>());
break;
case types::fr2:
c.set(other.c.get<fr2_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "band_nr_s::ch_bws_ul_c_");
}
return *this;
}
band_nr_s::ch_bws_ul_c_::fr1_s_& band_nr_s::ch_bws_ul_c_::set_fr1()
{
set(types::fr1);
return c.get<fr1_s_>();
}
band_nr_s::ch_bws_ul_c_::fr2_s_& band_nr_s::ch_bws_ul_c_::set_fr2()
{
set(types::fr2);
return c.get<fr2_s_>();
}
void band_nr_s::ch_bws_ul_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::fr1:
j.write_fieldname("fr1");
j.start_obj();
if (c.get<fr1_s_>().scs_minus15k_hz_present) {
j.write_str("scs-15kHz", c.get<fr1_s_>().scs_minus15k_hz.to_string());
}
if (c.get<fr1_s_>().scs_minus30k_hz_present) {
j.write_str("scs-30kHz", c.get<fr1_s_>().scs_minus30k_hz.to_string());
}
if (c.get<fr1_s_>().scs_minus60k_hz_present) {
j.write_str("scs-60kHz", c.get<fr1_s_>().scs_minus60k_hz.to_string());
}
j.end_obj();
break;
case types::fr2:
j.write_fieldname("fr2");
j.start_obj();
if (c.get<fr2_s_>().scs_minus60k_hz_present) {
j.write_str("scs-60kHz", c.get<fr2_s_>().scs_minus60k_hz.to_string());
}
if (c.get<fr2_s_>().scs_minus120k_hz_present) {
j.write_str("scs-120kHz", c.get<fr2_s_>().scs_minus120k_hz.to_string());
}
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "band_nr_s::ch_bws_ul_c_");
}
j.end_obj();
}
SRSASN_CODE band_nr_s::ch_bws_ul_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::fr1:
HANDLE_CODE(bref.pack(c.get<fr1_s_>().scs_minus15k_hz_present, 1));
HANDLE_CODE(bref.pack(c.get<fr1_s_>().scs_minus30k_hz_present, 1));
HANDLE_CODE(bref.pack(c.get<fr1_s_>().scs_minus60k_hz_present, 1));
if (c.get<fr1_s_>().scs_minus15k_hz_present) {
HANDLE_CODE(c.get<fr1_s_>().scs_minus15k_hz.pack(bref));
}
if (c.get<fr1_s_>().scs_minus30k_hz_present) {
HANDLE_CODE(c.get<fr1_s_>().scs_minus30k_hz.pack(bref));
}
if (c.get<fr1_s_>().scs_minus60k_hz_present) {
HANDLE_CODE(c.get<fr1_s_>().scs_minus60k_hz.pack(bref));
}
break;
case types::fr2:
HANDLE_CODE(bref.pack(c.get<fr2_s_>().scs_minus60k_hz_present, 1));
HANDLE_CODE(bref.pack(c.get<fr2_s_>().scs_minus120k_hz_present, 1));
if (c.get<fr2_s_>().scs_minus60k_hz_present) {
HANDLE_CODE(c.get<fr2_s_>().scs_minus60k_hz.pack(bref));
}
if (c.get<fr2_s_>().scs_minus120k_hz_present) {
HANDLE_CODE(c.get<fr2_s_>().scs_minus120k_hz.pack(bref));
}
break;
default:
log_invalid_choice_id(type_, "band_nr_s::ch_bws_ul_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE band_nr_s::ch_bws_ul_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::fr1:
HANDLE_CODE(bref.unpack(c.get<fr1_s_>().scs_minus15k_hz_present, 1));
HANDLE_CODE(bref.unpack(c.get<fr1_s_>().scs_minus30k_hz_present, 1));
HANDLE_CODE(bref.unpack(c.get<fr1_s_>().scs_minus60k_hz_present, 1));
if (c.get<fr1_s_>().scs_minus15k_hz_present) {
HANDLE_CODE(c.get<fr1_s_>().scs_minus15k_hz.unpack(bref));
}
if (c.get<fr1_s_>().scs_minus30k_hz_present) {
HANDLE_CODE(c.get<fr1_s_>().scs_minus30k_hz.unpack(bref));
}
if (c.get<fr1_s_>().scs_minus60k_hz_present) {
HANDLE_CODE(c.get<fr1_s_>().scs_minus60k_hz.unpack(bref));
}
break;
case types::fr2:
HANDLE_CODE(bref.unpack(c.get<fr2_s_>().scs_minus60k_hz_present, 1));
HANDLE_CODE(bref.unpack(c.get<fr2_s_>().scs_minus120k_hz_present, 1));
if (c.get<fr2_s_>().scs_minus60k_hz_present) {
HANDLE_CODE(c.get<fr2_s_>().scs_minus60k_hz.unpack(bref));
}
if (c.get<fr2_s_>().scs_minus120k_hz_present) {
HANDLE_CODE(c.get<fr2_s_>().scs_minus120k_hz.unpack(bref));
}
break;
default:
log_invalid_choice_id(type_, "band_nr_s::ch_bws_ul_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* band_nr_s::ch_bws_ul_c_::types_opts::to_string() const
{
static const char* options[] = {"fr1", "fr2"};
return convert_enum_idx(options, 2, value, "band_nr_s::ch_bws_ul_c_::types");
}
uint8_t band_nr_s::ch_bws_ul_c_::types_opts::to_number() const
{
static const uint8_t options[] = {1, 2};
return map_enum_number(options, 2, value, "band_nr_s::ch_bws_ul_c_::types");
}
const char* band_nr_s::max_ul_duty_cycle_pc2_fr1_opts::to_string() const
{
static const char* options[] = {"n60", "n70", "n80", "n90", "n100"};
return convert_enum_idx(options, 5, value, "band_nr_s::max_ul_duty_cycle_pc2_fr1_e_");
}
uint8_t band_nr_s::max_ul_duty_cycle_pc2_fr1_opts::to_number() const
{
static const uint8_t options[] = {60, 70, 80, 90, 100};
return map_enum_number(options, 5, value, "band_nr_s::max_ul_duty_cycle_pc2_fr1_e_");
}
const char* band_nr_s::max_ul_duty_cycle_fr2_opts::to_string() const
{
static const char* options[] = {"n15", "n20", "n25", "n30", "n40", "n50", "n60", "n70", "n80", "n90", "n100"};
return convert_enum_idx(options, 11, value, "band_nr_s::max_ul_duty_cycle_fr2_e_");
}
uint8_t band_nr_s::max_ul_duty_cycle_fr2_opts::to_number() const
{
static const uint8_t options[] = {15, 20, 25, 30, 40, 50, 60, 70, 80, 90, 100};
return map_enum_number(options, 11, value, "band_nr_s::max_ul_duty_cycle_fr2_e_");
}
void band_nr_s::ch_bws_dl_v1590_c_::destroy_()
{
switch (type_) {
case types::fr1:
c.destroy<fr1_s_>();
break;
case types::fr2:
c.destroy<fr2_s_>();
break;
default:
break;
}
}
void band_nr_s::ch_bws_dl_v1590_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::fr1:
c.init<fr1_s_>();
break;
case types::fr2:
c.init<fr2_s_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "band_nr_s::ch_bws_dl_v1590_c_");
}
}
band_nr_s::ch_bws_dl_v1590_c_::ch_bws_dl_v1590_c_(const band_nr_s::ch_bws_dl_v1590_c_& other)
{
type_ = other.type();
switch (type_) {
case types::fr1:
c.init(other.c.get<fr1_s_>());
break;
case types::fr2:
c.init(other.c.get<fr2_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "band_nr_s::ch_bws_dl_v1590_c_");
}
}
band_nr_s::ch_bws_dl_v1590_c_& band_nr_s::ch_bws_dl_v1590_c_::operator=(const band_nr_s::ch_bws_dl_v1590_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::fr1:
c.set(other.c.get<fr1_s_>());
break;
case types::fr2:
c.set(other.c.get<fr2_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "band_nr_s::ch_bws_dl_v1590_c_");
}
return *this;
}
band_nr_s::ch_bws_dl_v1590_c_::fr1_s_& band_nr_s::ch_bws_dl_v1590_c_::set_fr1()
{
set(types::fr1);
return c.get<fr1_s_>();
}
band_nr_s::ch_bws_dl_v1590_c_::fr2_s_& band_nr_s::ch_bws_dl_v1590_c_::set_fr2()
{
set(types::fr2);
return c.get<fr2_s_>();
}
void band_nr_s::ch_bws_dl_v1590_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::fr1:
j.write_fieldname("fr1");
j.start_obj();
if (c.get<fr1_s_>().scs_minus15k_hz_present) {
j.write_str("scs-15kHz", c.get<fr1_s_>().scs_minus15k_hz.to_string());
}
if (c.get<fr1_s_>().scs_minus30k_hz_present) {
j.write_str("scs-30kHz", c.get<fr1_s_>().scs_minus30k_hz.to_string());
}
if (c.get<fr1_s_>().scs_minus60k_hz_present) {
j.write_str("scs-60kHz", c.get<fr1_s_>().scs_minus60k_hz.to_string());
}
j.end_obj();
break;
case types::fr2:
j.write_fieldname("fr2");
j.start_obj();
if (c.get<fr2_s_>().scs_minus60k_hz_present) {
j.write_str("scs-60kHz", c.get<fr2_s_>().scs_minus60k_hz.to_string());
}
if (c.get<fr2_s_>().scs_minus120k_hz_present) {
j.write_str("scs-120kHz", c.get<fr2_s_>().scs_minus120k_hz.to_string());
}
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "band_nr_s::ch_bws_dl_v1590_c_");
}
j.end_obj();
}
SRSASN_CODE band_nr_s::ch_bws_dl_v1590_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::fr1:
HANDLE_CODE(bref.pack(c.get<fr1_s_>().scs_minus15k_hz_present, 1));
HANDLE_CODE(bref.pack(c.get<fr1_s_>().scs_minus30k_hz_present, 1));
HANDLE_CODE(bref.pack(c.get<fr1_s_>().scs_minus60k_hz_present, 1));
if (c.get<fr1_s_>().scs_minus15k_hz_present) {
HANDLE_CODE(c.get<fr1_s_>().scs_minus15k_hz.pack(bref));
}
if (c.get<fr1_s_>().scs_minus30k_hz_present) {
HANDLE_CODE(c.get<fr1_s_>().scs_minus30k_hz.pack(bref));
}
if (c.get<fr1_s_>().scs_minus60k_hz_present) {
HANDLE_CODE(c.get<fr1_s_>().scs_minus60k_hz.pack(bref));
}
break;
case types::fr2:
HANDLE_CODE(bref.pack(c.get<fr2_s_>().scs_minus60k_hz_present, 1));
HANDLE_CODE(bref.pack(c.get<fr2_s_>().scs_minus120k_hz_present, 1));
if (c.get<fr2_s_>().scs_minus60k_hz_present) {
HANDLE_CODE(c.get<fr2_s_>().scs_minus60k_hz.pack(bref));
}
if (c.get<fr2_s_>().scs_minus120k_hz_present) {
HANDLE_CODE(c.get<fr2_s_>().scs_minus120k_hz.pack(bref));
}
break;
default:
log_invalid_choice_id(type_, "band_nr_s::ch_bws_dl_v1590_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE band_nr_s::ch_bws_dl_v1590_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::fr1:
HANDLE_CODE(bref.unpack(c.get<fr1_s_>().scs_minus15k_hz_present, 1));
HANDLE_CODE(bref.unpack(c.get<fr1_s_>().scs_minus30k_hz_present, 1));
HANDLE_CODE(bref.unpack(c.get<fr1_s_>().scs_minus60k_hz_present, 1));
if (c.get<fr1_s_>().scs_minus15k_hz_present) {
HANDLE_CODE(c.get<fr1_s_>().scs_minus15k_hz.unpack(bref));
}
if (c.get<fr1_s_>().scs_minus30k_hz_present) {
HANDLE_CODE(c.get<fr1_s_>().scs_minus30k_hz.unpack(bref));
}
if (c.get<fr1_s_>().scs_minus60k_hz_present) {
HANDLE_CODE(c.get<fr1_s_>().scs_minus60k_hz.unpack(bref));
}
break;
case types::fr2:
HANDLE_CODE(bref.unpack(c.get<fr2_s_>().scs_minus60k_hz_present, 1));
HANDLE_CODE(bref.unpack(c.get<fr2_s_>().scs_minus120k_hz_present, 1));
if (c.get<fr2_s_>().scs_minus60k_hz_present) {
HANDLE_CODE(c.get<fr2_s_>().scs_minus60k_hz.unpack(bref));
}
if (c.get<fr2_s_>().scs_minus120k_hz_present) {
HANDLE_CODE(c.get<fr2_s_>().scs_minus120k_hz.unpack(bref));
}
break;
default:
log_invalid_choice_id(type_, "band_nr_s::ch_bws_dl_v1590_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* band_nr_s::ch_bws_dl_v1590_c_::types_opts::to_string() const
{
static const char* options[] = {"fr1", "fr2"};
return convert_enum_idx(options, 2, value, "band_nr_s::ch_bws_dl_v1590_c_::types");
}
uint8_t band_nr_s::ch_bws_dl_v1590_c_::types_opts::to_number() const
{
static const uint8_t options[] = {1, 2};
return map_enum_number(options, 2, value, "band_nr_s::ch_bws_dl_v1590_c_::types");
}
void band_nr_s::ch_bws_ul_v1590_c_::destroy_()
{
switch (type_) {
case types::fr1:
c.destroy<fr1_s_>();
break;
case types::fr2:
c.destroy<fr2_s_>();
break;
default:
break;
}
}
void band_nr_s::ch_bws_ul_v1590_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::fr1:
c.init<fr1_s_>();
break;
case types::fr2:
c.init<fr2_s_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "band_nr_s::ch_bws_ul_v1590_c_");
}
}
band_nr_s::ch_bws_ul_v1590_c_::ch_bws_ul_v1590_c_(const band_nr_s::ch_bws_ul_v1590_c_& other)
{
type_ = other.type();
switch (type_) {
case types::fr1:
c.init(other.c.get<fr1_s_>());
break;
case types::fr2:
c.init(other.c.get<fr2_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "band_nr_s::ch_bws_ul_v1590_c_");
}
}
band_nr_s::ch_bws_ul_v1590_c_& band_nr_s::ch_bws_ul_v1590_c_::operator=(const band_nr_s::ch_bws_ul_v1590_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::fr1:
c.set(other.c.get<fr1_s_>());
break;
case types::fr2:
c.set(other.c.get<fr2_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "band_nr_s::ch_bws_ul_v1590_c_");
}
return *this;
}
band_nr_s::ch_bws_ul_v1590_c_::fr1_s_& band_nr_s::ch_bws_ul_v1590_c_::set_fr1()
{
set(types::fr1);
return c.get<fr1_s_>();
}
band_nr_s::ch_bws_ul_v1590_c_::fr2_s_& band_nr_s::ch_bws_ul_v1590_c_::set_fr2()
{
set(types::fr2);
return c.get<fr2_s_>();
}
void band_nr_s::ch_bws_ul_v1590_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::fr1:
j.write_fieldname("fr1");
j.start_obj();
if (c.get<fr1_s_>().scs_minus15k_hz_present) {
j.write_str("scs-15kHz", c.get<fr1_s_>().scs_minus15k_hz.to_string());
}
if (c.get<fr1_s_>().scs_minus30k_hz_present) {
j.write_str("scs-30kHz", c.get<fr1_s_>().scs_minus30k_hz.to_string());
}
if (c.get<fr1_s_>().scs_minus60k_hz_present) {
j.write_str("scs-60kHz", c.get<fr1_s_>().scs_minus60k_hz.to_string());
}
j.end_obj();
break;
case types::fr2:
j.write_fieldname("fr2");
j.start_obj();
if (c.get<fr2_s_>().scs_minus60k_hz_present) {
j.write_str("scs-60kHz", c.get<fr2_s_>().scs_minus60k_hz.to_string());
}
if (c.get<fr2_s_>().scs_minus120k_hz_present) {
j.write_str("scs-120kHz", c.get<fr2_s_>().scs_minus120k_hz.to_string());
}
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "band_nr_s::ch_bws_ul_v1590_c_");
}
j.end_obj();
}
SRSASN_CODE band_nr_s::ch_bws_ul_v1590_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::fr1:
HANDLE_CODE(bref.pack(c.get<fr1_s_>().scs_minus15k_hz_present, 1));
HANDLE_CODE(bref.pack(c.get<fr1_s_>().scs_minus30k_hz_present, 1));
HANDLE_CODE(bref.pack(c.get<fr1_s_>().scs_minus60k_hz_present, 1));
if (c.get<fr1_s_>().scs_minus15k_hz_present) {
HANDLE_CODE(c.get<fr1_s_>().scs_minus15k_hz.pack(bref));
}
if (c.get<fr1_s_>().scs_minus30k_hz_present) {
HANDLE_CODE(c.get<fr1_s_>().scs_minus30k_hz.pack(bref));
}
if (c.get<fr1_s_>().scs_minus60k_hz_present) {
HANDLE_CODE(c.get<fr1_s_>().scs_minus60k_hz.pack(bref));
}
break;
case types::fr2:
HANDLE_CODE(bref.pack(c.get<fr2_s_>().scs_minus60k_hz_present, 1));
HANDLE_CODE(bref.pack(c.get<fr2_s_>().scs_minus120k_hz_present, 1));
if (c.get<fr2_s_>().scs_minus60k_hz_present) {
HANDLE_CODE(c.get<fr2_s_>().scs_minus60k_hz.pack(bref));
}
if (c.get<fr2_s_>().scs_minus120k_hz_present) {
HANDLE_CODE(c.get<fr2_s_>().scs_minus120k_hz.pack(bref));
}
break;
default:
log_invalid_choice_id(type_, "band_nr_s::ch_bws_ul_v1590_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE band_nr_s::ch_bws_ul_v1590_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::fr1:
HANDLE_CODE(bref.unpack(c.get<fr1_s_>().scs_minus15k_hz_present, 1));
HANDLE_CODE(bref.unpack(c.get<fr1_s_>().scs_minus30k_hz_present, 1));
HANDLE_CODE(bref.unpack(c.get<fr1_s_>().scs_minus60k_hz_present, 1));
if (c.get<fr1_s_>().scs_minus15k_hz_present) {
HANDLE_CODE(c.get<fr1_s_>().scs_minus15k_hz.unpack(bref));
}
if (c.get<fr1_s_>().scs_minus30k_hz_present) {
HANDLE_CODE(c.get<fr1_s_>().scs_minus30k_hz.unpack(bref));
}
if (c.get<fr1_s_>().scs_minus60k_hz_present) {
HANDLE_CODE(c.get<fr1_s_>().scs_minus60k_hz.unpack(bref));
}
break;
case types::fr2:
HANDLE_CODE(bref.unpack(c.get<fr2_s_>().scs_minus60k_hz_present, 1));
HANDLE_CODE(bref.unpack(c.get<fr2_s_>().scs_minus120k_hz_present, 1));
if (c.get<fr2_s_>().scs_minus60k_hz_present) {
HANDLE_CODE(c.get<fr2_s_>().scs_minus60k_hz.unpack(bref));
}
if (c.get<fr2_s_>().scs_minus120k_hz_present) {
HANDLE_CODE(c.get<fr2_s_>().scs_minus120k_hz.unpack(bref));
}
break;
default:
log_invalid_choice_id(type_, "band_nr_s::ch_bws_ul_v1590_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* band_nr_s::ch_bws_ul_v1590_c_::types_opts::to_string() const
{
static const char* options[] = {"fr1", "fr2"};
return convert_enum_idx(options, 2, value, "band_nr_s::ch_bws_ul_v1590_c_::types");
}
uint8_t band_nr_s::ch_bws_ul_v1590_c_::types_opts::to_number() const
{
static const uint8_t options[] = {1, 2};
return map_enum_number(options, 2, value, "band_nr_s::ch_bws_ul_v1590_c_::types");
}
// CFRA-CSIRS-Resource ::= SEQUENCE
SRSASN_CODE cfra_csirs_res_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(pack_integer(bref, csi_rs, (uint8_t)0u, (uint8_t)95u));
HANDLE_CODE(pack_dyn_seq_of(bref, ra_occasion_list, 1, 64, integer_packer<uint16_t>(0, 511)));
HANDLE_CODE(pack_integer(bref, ra_preamb_idx, (uint8_t)0u, (uint8_t)63u));
return SRSASN_SUCCESS;
}
SRSASN_CODE cfra_csirs_res_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(unpack_integer(csi_rs, bref, (uint8_t)0u, (uint8_t)95u));
HANDLE_CODE(unpack_dyn_seq_of(ra_occasion_list, bref, 1, 64, integer_packer<uint16_t>(0, 511)));
HANDLE_CODE(unpack_integer(ra_preamb_idx, bref, (uint8_t)0u, (uint8_t)63u));
return SRSASN_SUCCESS;
}
void cfra_csirs_res_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("csi-RS", csi_rs);
j.start_array("ra-OccasionList");
for (const auto& e1 : ra_occasion_list) {
j.write_int(e1);
}
j.end_array();
j.write_int("ra-PreambleIndex", ra_preamb_idx);
j.end_obj();
}
// CFRA-SSB-Resource ::= SEQUENCE
SRSASN_CODE cfra_ssb_res_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(pack_integer(bref, ssb, (uint8_t)0u, (uint8_t)63u));
HANDLE_CODE(pack_integer(bref, ra_preamb_idx, (uint8_t)0u, (uint8_t)63u));
return SRSASN_SUCCESS;
}
SRSASN_CODE cfra_ssb_res_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(unpack_integer(ssb, bref, (uint8_t)0u, (uint8_t)63u));
HANDLE_CODE(unpack_integer(ra_preamb_idx, bref, (uint8_t)0u, (uint8_t)63u));
return SRSASN_SUCCESS;
}
void cfra_ssb_res_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("ssb", ssb);
j.write_int("ra-PreambleIndex", ra_preamb_idx);
j.end_obj();
}
// CFRA ::= SEQUENCE
SRSASN_CODE cfra_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(occasions_present, 1));
if (occasions_present) {
HANDLE_CODE(bref.pack(occasions.ssb_per_rach_occasion_present, 1));
HANDLE_CODE(occasions.rach_cfg_generic.pack(bref));
if (occasions.ssb_per_rach_occasion_present) {
HANDLE_CODE(occasions.ssb_per_rach_occasion.pack(bref));
}
}
HANDLE_CODE(res.pack(bref));
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= total_nof_ra_preambs_present;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(total_nof_ra_preambs_present, 1));
if (total_nof_ra_preambs_present) {
HANDLE_CODE(pack_integer(bref, total_nof_ra_preambs, (uint8_t)1u, (uint8_t)63u));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE cfra_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(occasions_present, 1));
if (occasions_present) {
HANDLE_CODE(bref.unpack(occasions.ssb_per_rach_occasion_present, 1));
HANDLE_CODE(occasions.rach_cfg_generic.unpack(bref));
if (occasions.ssb_per_rach_occasion_present) {
HANDLE_CODE(occasions.ssb_per_rach_occasion.unpack(bref));
}
}
HANDLE_CODE(res.unpack(bref));
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(total_nof_ra_preambs_present, 1));
if (total_nof_ra_preambs_present) {
HANDLE_CODE(unpack_integer(total_nof_ra_preambs, bref, (uint8_t)1u, (uint8_t)63u));
}
}
}
return SRSASN_SUCCESS;
}
void cfra_s::to_json(json_writer& j) const
{
j.start_obj();
if (occasions_present) {
j.write_fieldname("occasions");
j.start_obj();
j.write_fieldname("rach-ConfigGeneric");
occasions.rach_cfg_generic.to_json(j);
if (occasions.ssb_per_rach_occasion_present) {
j.write_str("ssb-perRACH-Occasion", occasions.ssb_per_rach_occasion.to_string());
}
j.end_obj();
}
j.write_fieldname("resources");
res.to_json(j);
if (ext) {
if (total_nof_ra_preambs_present) {
j.write_int("totalNumberOfRA-Preambles", total_nof_ra_preambs);
}
}
j.end_obj();
}
const char* cfra_s::occasions_s_::ssb_per_rach_occasion_opts::to_string() const
{
static const char* options[] = {"oneEighth", "oneFourth", "oneHalf", "one", "two", "four", "eight", "sixteen"};
return convert_enum_idx(options, 8, value, "cfra_s::occasions_s_::ssb_per_rach_occasion_e_");
}
float cfra_s::occasions_s_::ssb_per_rach_occasion_opts::to_number() const
{
static const float options[] = {0.125, 0.25, 0.5, 1.0, 2.0, 4.0, 8.0, 6.0};
return map_enum_number(options, 8, value, "cfra_s::occasions_s_::ssb_per_rach_occasion_e_");
}
const char* cfra_s::occasions_s_::ssb_per_rach_occasion_opts::to_number_string() const
{
static const char* options[] = {"1/8", "1/4", "1/2", "1", "2", "4", "8", "6"};
return convert_enum_idx(options, 8, value, "cfra_s::occasions_s_::ssb_per_rach_occasion_e_");
}
void cfra_s::res_c_::destroy_()
{
switch (type_) {
case types::ssb:
c.destroy<ssb_s_>();
break;
case types::csirs:
c.destroy<csirs_s_>();
break;
default:
break;
}
}
void cfra_s::res_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::ssb:
c.init<ssb_s_>();
break;
case types::csirs:
c.init<csirs_s_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "cfra_s::res_c_");
}
}
cfra_s::res_c_::res_c_(const cfra_s::res_c_& other)
{
type_ = other.type();
switch (type_) {
case types::ssb:
c.init(other.c.get<ssb_s_>());
break;
case types::csirs:
c.init(other.c.get<csirs_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "cfra_s::res_c_");
}
}
cfra_s::res_c_& cfra_s::res_c_::operator=(const cfra_s::res_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::ssb:
c.set(other.c.get<ssb_s_>());
break;
case types::csirs:
c.set(other.c.get<csirs_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "cfra_s::res_c_");
}
return *this;
}
cfra_s::res_c_::ssb_s_& cfra_s::res_c_::set_ssb()
{
set(types::ssb);
return c.get<ssb_s_>();
}
cfra_s::res_c_::csirs_s_& cfra_s::res_c_::set_csirs()
{
set(types::csirs);
return c.get<csirs_s_>();
}
void cfra_s::res_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::ssb:
j.write_fieldname("ssb");
j.start_obj();
j.start_array("ssb-ResourceList");
for (const auto& e1 : c.get<ssb_s_>().ssb_res_list) {
e1.to_json(j);
}
j.end_array();
j.write_int("ra-ssb-OccasionMaskIndex", c.get<ssb_s_>().ra_ssb_occasion_mask_idx);
j.end_obj();
break;
case types::csirs:
j.write_fieldname("csirs");
j.start_obj();
j.start_array("csirs-ResourceList");
for (const auto& e1 : c.get<csirs_s_>().csirs_res_list) {
e1.to_json(j);
}
j.end_array();
j.write_int("rsrp-ThresholdCSI-RS", c.get<csirs_s_>().rsrp_thres_csi_rs);
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "cfra_s::res_c_");
}
j.end_obj();
}
SRSASN_CODE cfra_s::res_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::ssb:
HANDLE_CODE(pack_dyn_seq_of(bref, c.get<ssb_s_>().ssb_res_list, 1, 64));
HANDLE_CODE(pack_integer(bref, c.get<ssb_s_>().ra_ssb_occasion_mask_idx, (uint8_t)0u, (uint8_t)15u));
break;
case types::csirs:
HANDLE_CODE(pack_dyn_seq_of(bref, c.get<csirs_s_>().csirs_res_list, 1, 96));
HANDLE_CODE(pack_integer(bref, c.get<csirs_s_>().rsrp_thres_csi_rs, (uint8_t)0u, (uint8_t)127u));
break;
default:
log_invalid_choice_id(type_, "cfra_s::res_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE cfra_s::res_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::ssb:
HANDLE_CODE(unpack_dyn_seq_of(c.get<ssb_s_>().ssb_res_list, bref, 1, 64));
HANDLE_CODE(unpack_integer(c.get<ssb_s_>().ra_ssb_occasion_mask_idx, bref, (uint8_t)0u, (uint8_t)15u));
break;
case types::csirs:
HANDLE_CODE(unpack_dyn_seq_of(c.get<csirs_s_>().csirs_res_list, bref, 1, 96));
HANDLE_CODE(unpack_integer(c.get<csirs_s_>().rsrp_thres_csi_rs, bref, (uint8_t)0u, (uint8_t)127u));
break;
default:
log_invalid_choice_id(type_, "cfra_s::res_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* cfra_s::res_c_::types_opts::to_string() const
{
static const char* options[] = {"ssb", "csirs"};
return convert_enum_idx(options, 2, value, "cfra_s::res_c_::types");
}
// CSI-AssociatedReportConfigInfo ::= SEQUENCE
SRSASN_CODE csi_associated_report_cfg_info_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(csi_im_res_for_interference_present, 1));
HANDLE_CODE(bref.pack(nzp_csi_rs_res_for_interference_present, 1));
HANDLE_CODE(pack_integer(bref, report_cfg_id, (uint8_t)0u, (uint8_t)47u));
HANDLE_CODE(res_for_ch.pack(bref));
if (csi_im_res_for_interference_present) {
HANDLE_CODE(pack_integer(bref, csi_im_res_for_interference, (uint8_t)1u, (uint8_t)16u));
}
if (nzp_csi_rs_res_for_interference_present) {
HANDLE_CODE(pack_integer(bref, nzp_csi_rs_res_for_interference, (uint8_t)1u, (uint8_t)16u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_associated_report_cfg_info_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(csi_im_res_for_interference_present, 1));
HANDLE_CODE(bref.unpack(nzp_csi_rs_res_for_interference_present, 1));
HANDLE_CODE(unpack_integer(report_cfg_id, bref, (uint8_t)0u, (uint8_t)47u));
HANDLE_CODE(res_for_ch.unpack(bref));
if (csi_im_res_for_interference_present) {
HANDLE_CODE(unpack_integer(csi_im_res_for_interference, bref, (uint8_t)1u, (uint8_t)16u));
}
if (nzp_csi_rs_res_for_interference_present) {
HANDLE_CODE(unpack_integer(nzp_csi_rs_res_for_interference, bref, (uint8_t)1u, (uint8_t)16u));
}
return SRSASN_SUCCESS;
}
void csi_associated_report_cfg_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("reportConfigId", report_cfg_id);
j.write_fieldname("resourcesForChannel");
res_for_ch.to_json(j);
if (csi_im_res_for_interference_present) {
j.write_int("csi-IM-ResourcesForInterference", csi_im_res_for_interference);
}
if (nzp_csi_rs_res_for_interference_present) {
j.write_int("nzp-CSI-RS-ResourcesForInterference", nzp_csi_rs_res_for_interference);
}
j.end_obj();
}
void csi_associated_report_cfg_info_s::res_for_ch_c_::destroy_()
{
switch (type_) {
case types::nzp_csi_rs:
c.destroy<nzp_csi_rs_s_>();
break;
default:
break;
}
}
void csi_associated_report_cfg_info_s::res_for_ch_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::nzp_csi_rs:
c.init<nzp_csi_rs_s_>();
break;
case types::csi_ssb_res_set:
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "csi_associated_report_cfg_info_s::res_for_ch_c_");
}
}
csi_associated_report_cfg_info_s::res_for_ch_c_::res_for_ch_c_(
const csi_associated_report_cfg_info_s::res_for_ch_c_& other)
{
type_ = other.type();
switch (type_) {
case types::nzp_csi_rs:
c.init(other.c.get<nzp_csi_rs_s_>());
break;
case types::csi_ssb_res_set:
c.init(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "csi_associated_report_cfg_info_s::res_for_ch_c_");
}
}
csi_associated_report_cfg_info_s::res_for_ch_c_&
csi_associated_report_cfg_info_s::res_for_ch_c_::operator=(const csi_associated_report_cfg_info_s::res_for_ch_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::nzp_csi_rs:
c.set(other.c.get<nzp_csi_rs_s_>());
break;
case types::csi_ssb_res_set:
c.set(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "csi_associated_report_cfg_info_s::res_for_ch_c_");
}
return *this;
}
csi_associated_report_cfg_info_s::res_for_ch_c_::nzp_csi_rs_s_&
csi_associated_report_cfg_info_s::res_for_ch_c_::set_nzp_csi_rs()
{
set(types::nzp_csi_rs);
return c.get<nzp_csi_rs_s_>();
}
uint8_t& csi_associated_report_cfg_info_s::res_for_ch_c_::set_csi_ssb_res_set()
{
set(types::csi_ssb_res_set);
return c.get<uint8_t>();
}
void csi_associated_report_cfg_info_s::res_for_ch_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::nzp_csi_rs:
j.write_fieldname("nzp-CSI-RS");
j.start_obj();
j.write_int("resourceSet", c.get<nzp_csi_rs_s_>().res_set);
if (c.get<nzp_csi_rs_s_>().qcl_info_present) {
j.start_array("qcl-info");
for (const auto& e1 : c.get<nzp_csi_rs_s_>().qcl_info) {
j.write_int(e1);
}
j.end_array();
}
j.end_obj();
break;
case types::csi_ssb_res_set:
j.write_int("csi-SSB-ResourceSet", c.get<uint8_t>());
break;
default:
log_invalid_choice_id(type_, "csi_associated_report_cfg_info_s::res_for_ch_c_");
}
j.end_obj();
}
SRSASN_CODE csi_associated_report_cfg_info_s::res_for_ch_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::nzp_csi_rs:
HANDLE_CODE(bref.pack(c.get<nzp_csi_rs_s_>().qcl_info_present, 1));
HANDLE_CODE(pack_integer(bref, c.get<nzp_csi_rs_s_>().res_set, (uint8_t)1u, (uint8_t)16u));
if (c.get<nzp_csi_rs_s_>().qcl_info_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, c.get<nzp_csi_rs_s_>().qcl_info, 1, 16, integer_packer<uint8_t>(0, 127)));
}
break;
case types::csi_ssb_res_set:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)1u, (uint8_t)1u));
break;
default:
log_invalid_choice_id(type_, "csi_associated_report_cfg_info_s::res_for_ch_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_associated_report_cfg_info_s::res_for_ch_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::nzp_csi_rs:
HANDLE_CODE(bref.unpack(c.get<nzp_csi_rs_s_>().qcl_info_present, 1));
HANDLE_CODE(unpack_integer(c.get<nzp_csi_rs_s_>().res_set, bref, (uint8_t)1u, (uint8_t)16u));
if (c.get<nzp_csi_rs_s_>().qcl_info_present) {
HANDLE_CODE(unpack_dyn_seq_of(c.get<nzp_csi_rs_s_>().qcl_info, bref, 1, 16, integer_packer<uint8_t>(0, 127)));
}
break;
case types::csi_ssb_res_set:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)1u, (uint8_t)1u));
break;
default:
log_invalid_choice_id(type_, "csi_associated_report_cfg_info_s::res_for_ch_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* csi_associated_report_cfg_info_s::res_for_ch_c_::types_opts::to_string() const
{
static const char* options[] = {"nzp-CSI-RS", "csi-SSB-ResourceSet"};
return convert_enum_idx(options, 2, value, "csi_associated_report_cfg_info_s::res_for_ch_c_::types");
}
// CSI-AperiodicTriggerState ::= SEQUENCE
SRSASN_CODE csi_aperiodic_trigger_state_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(pack_dyn_seq_of(bref, associated_report_cfg_info_list, 1, 16));
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_aperiodic_trigger_state_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(unpack_dyn_seq_of(associated_report_cfg_info_list, bref, 1, 16));
return SRSASN_SUCCESS;
}
void csi_aperiodic_trigger_state_s::to_json(json_writer& j) const
{
j.start_obj();
j.start_array("associatedReportConfigInfoList");
for (const auto& e1 : associated_report_cfg_info_list) {
e1.to_json(j);
}
j.end_array();
j.end_obj();
}
// CSI-IM-Resource ::= SEQUENCE
SRSASN_CODE csi_im_res_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(csi_im_res_elem_pattern_present, 1));
HANDLE_CODE(bref.pack(freq_band_present, 1));
HANDLE_CODE(bref.pack(periodicity_and_offset_present, 1));
HANDLE_CODE(pack_integer(bref, csi_im_res_id, (uint8_t)0u, (uint8_t)31u));
if (csi_im_res_elem_pattern_present) {
HANDLE_CODE(csi_im_res_elem_pattern.pack(bref));
}
if (freq_band_present) {
HANDLE_CODE(freq_band.pack(bref));
}
if (periodicity_and_offset_present) {
HANDLE_CODE(periodicity_and_offset.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_im_res_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(csi_im_res_elem_pattern_present, 1));
HANDLE_CODE(bref.unpack(freq_band_present, 1));
HANDLE_CODE(bref.unpack(periodicity_and_offset_present, 1));
HANDLE_CODE(unpack_integer(csi_im_res_id, bref, (uint8_t)0u, (uint8_t)31u));
if (csi_im_res_elem_pattern_present) {
HANDLE_CODE(csi_im_res_elem_pattern.unpack(bref));
}
if (freq_band_present) {
HANDLE_CODE(freq_band.unpack(bref));
}
if (periodicity_and_offset_present) {
HANDLE_CODE(periodicity_and_offset.unpack(bref));
}
return SRSASN_SUCCESS;
}
void csi_im_res_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("csi-IM-ResourceId", csi_im_res_id);
if (csi_im_res_elem_pattern_present) {
j.write_fieldname("csi-IM-ResourceElementPattern");
csi_im_res_elem_pattern.to_json(j);
}
if (freq_band_present) {
j.write_fieldname("freqBand");
freq_band.to_json(j);
}
if (periodicity_and_offset_present) {
j.write_fieldname("periodicityAndOffset");
periodicity_and_offset.to_json(j);
}
j.end_obj();
}
void csi_im_res_s::csi_im_res_elem_pattern_c_::destroy_()
{
switch (type_) {
case types::pattern0:
c.destroy<pattern0_s_>();
break;
case types::pattern1:
c.destroy<pattern1_s_>();
break;
default:
break;
}
}
void csi_im_res_s::csi_im_res_elem_pattern_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::pattern0:
c.init<pattern0_s_>();
break;
case types::pattern1:
c.init<pattern1_s_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "csi_im_res_s::csi_im_res_elem_pattern_c_");
}
}
csi_im_res_s::csi_im_res_elem_pattern_c_::csi_im_res_elem_pattern_c_(
const csi_im_res_s::csi_im_res_elem_pattern_c_& other)
{
type_ = other.type();
switch (type_) {
case types::pattern0:
c.init(other.c.get<pattern0_s_>());
break;
case types::pattern1:
c.init(other.c.get<pattern1_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "csi_im_res_s::csi_im_res_elem_pattern_c_");
}
}
csi_im_res_s::csi_im_res_elem_pattern_c_&
csi_im_res_s::csi_im_res_elem_pattern_c_::operator=(const csi_im_res_s::csi_im_res_elem_pattern_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::pattern0:
c.set(other.c.get<pattern0_s_>());
break;
case types::pattern1:
c.set(other.c.get<pattern1_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "csi_im_res_s::csi_im_res_elem_pattern_c_");
}
return *this;
}
csi_im_res_s::csi_im_res_elem_pattern_c_::pattern0_s_& csi_im_res_s::csi_im_res_elem_pattern_c_::set_pattern0()
{
set(types::pattern0);
return c.get<pattern0_s_>();
}
csi_im_res_s::csi_im_res_elem_pattern_c_::pattern1_s_& csi_im_res_s::csi_im_res_elem_pattern_c_::set_pattern1()
{
set(types::pattern1);
return c.get<pattern1_s_>();
}
void csi_im_res_s::csi_im_res_elem_pattern_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::pattern0:
j.write_fieldname("pattern0");
j.start_obj();
j.write_str("subcarrierLocation-p0", c.get<pattern0_s_>().subcarrier_location_p0.to_string());
j.write_int("symbolLocation-p0", c.get<pattern0_s_>().symbol_location_p0);
j.end_obj();
break;
case types::pattern1:
j.write_fieldname("pattern1");
j.start_obj();
j.write_str("subcarrierLocation-p1", c.get<pattern1_s_>().subcarrier_location_p1.to_string());
j.write_int("symbolLocation-p1", c.get<pattern1_s_>().symbol_location_p1);
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "csi_im_res_s::csi_im_res_elem_pattern_c_");
}
j.end_obj();
}
SRSASN_CODE csi_im_res_s::csi_im_res_elem_pattern_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::pattern0:
HANDLE_CODE(c.get<pattern0_s_>().subcarrier_location_p0.pack(bref));
HANDLE_CODE(pack_integer(bref, c.get<pattern0_s_>().symbol_location_p0, (uint8_t)0u, (uint8_t)12u));
break;
case types::pattern1:
HANDLE_CODE(c.get<pattern1_s_>().subcarrier_location_p1.pack(bref));
HANDLE_CODE(pack_integer(bref, c.get<pattern1_s_>().symbol_location_p1, (uint8_t)0u, (uint8_t)13u));
break;
default:
log_invalid_choice_id(type_, "csi_im_res_s::csi_im_res_elem_pattern_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_im_res_s::csi_im_res_elem_pattern_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::pattern0:
HANDLE_CODE(c.get<pattern0_s_>().subcarrier_location_p0.unpack(bref));
HANDLE_CODE(unpack_integer(c.get<pattern0_s_>().symbol_location_p0, bref, (uint8_t)0u, (uint8_t)12u));
break;
case types::pattern1:
HANDLE_CODE(c.get<pattern1_s_>().subcarrier_location_p1.unpack(bref));
HANDLE_CODE(unpack_integer(c.get<pattern1_s_>().symbol_location_p1, bref, (uint8_t)0u, (uint8_t)13u));
break;
default:
log_invalid_choice_id(type_, "csi_im_res_s::csi_im_res_elem_pattern_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* csi_im_res_s::csi_im_res_elem_pattern_c_::pattern0_s_::subcarrier_location_p0_opts::to_string() const
{
static const char* options[] = {"s0", "s2", "s4", "s6", "s8", "s10"};
return convert_enum_idx(
options, 6, value, "csi_im_res_s::csi_im_res_elem_pattern_c_::pattern0_s_::subcarrier_location_p0_e_");
}
uint8_t csi_im_res_s::csi_im_res_elem_pattern_c_::pattern0_s_::subcarrier_location_p0_opts::to_number() const
{
static const uint8_t options[] = {0, 2, 4, 6, 8, 10};
return map_enum_number(
options, 6, value, "csi_im_res_s::csi_im_res_elem_pattern_c_::pattern0_s_::subcarrier_location_p0_e_");
}
const char* csi_im_res_s::csi_im_res_elem_pattern_c_::pattern1_s_::subcarrier_location_p1_opts::to_string() const
{
static const char* options[] = {"s0", "s4", "s8"};
return convert_enum_idx(
options, 3, value, "csi_im_res_s::csi_im_res_elem_pattern_c_::pattern1_s_::subcarrier_location_p1_e_");
}
uint8_t csi_im_res_s::csi_im_res_elem_pattern_c_::pattern1_s_::subcarrier_location_p1_opts::to_number() const
{
static const uint8_t options[] = {0, 4, 8};
return map_enum_number(
options, 3, value, "csi_im_res_s::csi_im_res_elem_pattern_c_::pattern1_s_::subcarrier_location_p1_e_");
}
const char* csi_im_res_s::csi_im_res_elem_pattern_c_::types_opts::to_string() const
{
static const char* options[] = {"pattern0", "pattern1"};
return convert_enum_idx(options, 2, value, "csi_im_res_s::csi_im_res_elem_pattern_c_::types");
}
uint8_t csi_im_res_s::csi_im_res_elem_pattern_c_::types_opts::to_number() const
{
static const uint8_t options[] = {0, 1};
return map_enum_number(options, 2, value, "csi_im_res_s::csi_im_res_elem_pattern_c_::types");
}
// CSI-IM-ResourceSet ::= SEQUENCE
SRSASN_CODE csi_im_res_set_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(pack_integer(bref, csi_im_res_set_id, (uint8_t)0u, (uint8_t)63u));
HANDLE_CODE(pack_dyn_seq_of(bref, csi_im_res, 1, 8, integer_packer<uint8_t>(0, 31)));
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_im_res_set_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(unpack_integer(csi_im_res_set_id, bref, (uint8_t)0u, (uint8_t)63u));
HANDLE_CODE(unpack_dyn_seq_of(csi_im_res, bref, 1, 8, integer_packer<uint8_t>(0, 31)));
return SRSASN_SUCCESS;
}
void csi_im_res_set_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("csi-IM-ResourceSetId", csi_im_res_set_id);
j.start_array("csi-IM-Resources");
for (const auto& e1 : csi_im_res) {
j.write_int(e1);
}
j.end_array();
j.end_obj();
}
// CSI-ReportPeriodicityAndOffset ::= CHOICE
void csi_report_periodicity_and_offset_c::destroy_() {}
void csi_report_periodicity_and_offset_c::set(types::options e)
{
destroy_();
type_ = e;
}
csi_report_periodicity_and_offset_c::csi_report_periodicity_and_offset_c(
const csi_report_periodicity_and_offset_c& other)
{
type_ = other.type();
switch (type_) {
case types::slots4:
c.init(other.c.get<uint8_t>());
break;
case types::slots5:
c.init(other.c.get<uint8_t>());
break;
case types::slots8:
c.init(other.c.get<uint8_t>());
break;
case types::slots10:
c.init(other.c.get<uint8_t>());
break;
case types::slots16:
c.init(other.c.get<uint8_t>());
break;
case types::slots20:
c.init(other.c.get<uint8_t>());
break;
case types::slots40:
c.init(other.c.get<uint8_t>());
break;
case types::slots80:
c.init(other.c.get<uint8_t>());
break;
case types::slots160:
c.init(other.c.get<uint8_t>());
break;
case types::slots320:
c.init(other.c.get<uint16_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "csi_report_periodicity_and_offset_c");
}
}
csi_report_periodicity_and_offset_c&
csi_report_periodicity_and_offset_c::operator=(const csi_report_periodicity_and_offset_c& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::slots4:
c.set(other.c.get<uint8_t>());
break;
case types::slots5:
c.set(other.c.get<uint8_t>());
break;
case types::slots8:
c.set(other.c.get<uint8_t>());
break;
case types::slots10:
c.set(other.c.get<uint8_t>());
break;
case types::slots16:
c.set(other.c.get<uint8_t>());
break;
case types::slots20:
c.set(other.c.get<uint8_t>());
break;
case types::slots40:
c.set(other.c.get<uint8_t>());
break;
case types::slots80:
c.set(other.c.get<uint8_t>());
break;
case types::slots160:
c.set(other.c.get<uint8_t>());
break;
case types::slots320:
c.set(other.c.get<uint16_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "csi_report_periodicity_and_offset_c");
}
return *this;
}
uint8_t& csi_report_periodicity_and_offset_c::set_slots4()
{
set(types::slots4);
return c.get<uint8_t>();
}
uint8_t& csi_report_periodicity_and_offset_c::set_slots5()
{
set(types::slots5);
return c.get<uint8_t>();
}
uint8_t& csi_report_periodicity_and_offset_c::set_slots8()
{
set(types::slots8);
return c.get<uint8_t>();
}
uint8_t& csi_report_periodicity_and_offset_c::set_slots10()
{
set(types::slots10);
return c.get<uint8_t>();
}
uint8_t& csi_report_periodicity_and_offset_c::set_slots16()
{
set(types::slots16);
return c.get<uint8_t>();
}
uint8_t& csi_report_periodicity_and_offset_c::set_slots20()
{
set(types::slots20);
return c.get<uint8_t>();
}
uint8_t& csi_report_periodicity_and_offset_c::set_slots40()
{
set(types::slots40);
return c.get<uint8_t>();
}
uint8_t& csi_report_periodicity_and_offset_c::set_slots80()
{
set(types::slots80);
return c.get<uint8_t>();
}
uint8_t& csi_report_periodicity_and_offset_c::set_slots160()
{
set(types::slots160);
return c.get<uint8_t>();
}
uint16_t& csi_report_periodicity_and_offset_c::set_slots320()
{
set(types::slots320);
return c.get<uint16_t>();
}
void csi_report_periodicity_and_offset_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::slots4:
j.write_int("slots4", c.get<uint8_t>());
break;
case types::slots5:
j.write_int("slots5", c.get<uint8_t>());
break;
case types::slots8:
j.write_int("slots8", c.get<uint8_t>());
break;
case types::slots10:
j.write_int("slots10", c.get<uint8_t>());
break;
case types::slots16:
j.write_int("slots16", c.get<uint8_t>());
break;
case types::slots20:
j.write_int("slots20", c.get<uint8_t>());
break;
case types::slots40:
j.write_int("slots40", c.get<uint8_t>());
break;
case types::slots80:
j.write_int("slots80", c.get<uint8_t>());
break;
case types::slots160:
j.write_int("slots160", c.get<uint8_t>());
break;
case types::slots320:
j.write_int("slots320", c.get<uint16_t>());
break;
default:
log_invalid_choice_id(type_, "csi_report_periodicity_and_offset_c");
}
j.end_obj();
}
SRSASN_CODE csi_report_periodicity_and_offset_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::slots4:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)3u));
break;
case types::slots5:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)4u));
break;
case types::slots8:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)7u));
break;
case types::slots10:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)9u));
break;
case types::slots16:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)15u));
break;
case types::slots20:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)19u));
break;
case types::slots40:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)39u));
break;
case types::slots80:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)79u));
break;
case types::slots160:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)159u));
break;
case types::slots320:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)319u));
break;
default:
log_invalid_choice_id(type_, "csi_report_periodicity_and_offset_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_report_periodicity_and_offset_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::slots4:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)3u));
break;
case types::slots5:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)4u));
break;
case types::slots8:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)7u));
break;
case types::slots10:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)9u));
break;
case types::slots16:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)15u));
break;
case types::slots20:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)19u));
break;
case types::slots40:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)39u));
break;
case types::slots80:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)79u));
break;
case types::slots160:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)159u));
break;
case types::slots320:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)319u));
break;
default:
log_invalid_choice_id(type_, "csi_report_periodicity_and_offset_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* csi_report_periodicity_and_offset_c::types_opts::to_string() const
{
static const char* options[] = {
"slots4", "slots5", "slots8", "slots10", "slots16", "slots20", "slots40", "slots80", "slots160", "slots320"};
return convert_enum_idx(options, 10, value, "csi_report_periodicity_and_offset_c::types");
}
uint16_t csi_report_periodicity_and_offset_c::types_opts::to_number() const
{
static const uint16_t options[] = {4, 5, 8, 10, 16, 20, 40, 80, 160, 320};
return map_enum_number(options, 10, value, "csi_report_periodicity_and_offset_c::types");
}
// CSI-SemiPersistentOnPUSCH-TriggerState ::= SEQUENCE
SRSASN_CODE csi_semi_persistent_on_pusch_trigger_state_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(pack_integer(bref, associated_report_cfg_info, (uint8_t)0u, (uint8_t)47u));
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_semi_persistent_on_pusch_trigger_state_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(unpack_integer(associated_report_cfg_info, bref, (uint8_t)0u, (uint8_t)47u));
return SRSASN_SUCCESS;
}
void csi_semi_persistent_on_pusch_trigger_state_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("associatedReportConfigInfo", associated_report_cfg_info);
j.end_obj();
}
// CodebookConfig ::= SEQUENCE
SRSASN_CODE codebook_cfg_s::pack(bit_ref& bref) const
{
HANDLE_CODE(codebook_type.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE codebook_cfg_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(codebook_type.unpack(bref));
return SRSASN_SUCCESS;
}
void codebook_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("codebookType");
codebook_type.to_json(j);
j.end_obj();
}
void codebook_cfg_s::codebook_type_c_::destroy_()
{
switch (type_) {
case types::type1:
c.destroy<type1_s_>();
break;
case types::type2:
c.destroy<type2_s_>();
break;
default:
break;
}
}
void codebook_cfg_s::codebook_type_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::type1:
c.init<type1_s_>();
break;
case types::type2:
c.init<type2_s_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "codebook_cfg_s::codebook_type_c_");
}
}
codebook_cfg_s::codebook_type_c_::codebook_type_c_(const codebook_cfg_s::codebook_type_c_& other)
{
type_ = other.type();
switch (type_) {
case types::type1:
c.init(other.c.get<type1_s_>());
break;
case types::type2:
c.init(other.c.get<type2_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "codebook_cfg_s::codebook_type_c_");
}
}
codebook_cfg_s::codebook_type_c_&
codebook_cfg_s::codebook_type_c_::operator=(const codebook_cfg_s::codebook_type_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::type1:
c.set(other.c.get<type1_s_>());
break;
case types::type2:
c.set(other.c.get<type2_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "codebook_cfg_s::codebook_type_c_");
}
return *this;
}
codebook_cfg_s::codebook_type_c_::type1_s_& codebook_cfg_s::codebook_type_c_::set_type1()
{
set(types::type1);
return c.get<type1_s_>();
}
codebook_cfg_s::codebook_type_c_::type2_s_& codebook_cfg_s::codebook_type_c_::set_type2()
{
set(types::type2);
return c.get<type2_s_>();
}
void codebook_cfg_s::codebook_type_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::type1:
j.write_fieldname("type1");
j.start_obj();
j.write_fieldname("subType");
c.get<type1_s_>().sub_type.to_json(j);
j.write_int("codebookMode", c.get<type1_s_>().codebook_mode);
j.end_obj();
break;
case types::type2:
j.write_fieldname("type2");
j.start_obj();
j.write_fieldname("subType");
c.get<type2_s_>().sub_type.to_json(j);
j.write_str("phaseAlphabetSize", c.get<type2_s_>().phase_alphabet_size.to_string());
j.write_bool("subbandAmplitude", c.get<type2_s_>().subband_amplitude);
j.write_str("numberOfBeams", c.get<type2_s_>().nof_beams.to_string());
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "codebook_cfg_s::codebook_type_c_");
}
j.end_obj();
}
SRSASN_CODE codebook_cfg_s::codebook_type_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::type1:
HANDLE_CODE(c.get<type1_s_>().sub_type.pack(bref));
HANDLE_CODE(pack_integer(bref, c.get<type1_s_>().codebook_mode, (uint8_t)1u, (uint8_t)2u));
break;
case types::type2:
HANDLE_CODE(c.get<type2_s_>().sub_type.pack(bref));
HANDLE_CODE(c.get<type2_s_>().phase_alphabet_size.pack(bref));
HANDLE_CODE(bref.pack(c.get<type2_s_>().subband_amplitude, 1));
HANDLE_CODE(c.get<type2_s_>().nof_beams.pack(bref));
break;
default:
log_invalid_choice_id(type_, "codebook_cfg_s::codebook_type_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE codebook_cfg_s::codebook_type_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::type1:
HANDLE_CODE(c.get<type1_s_>().sub_type.unpack(bref));
HANDLE_CODE(unpack_integer(c.get<type1_s_>().codebook_mode, bref, (uint8_t)1u, (uint8_t)2u));
break;
case types::type2:
HANDLE_CODE(c.get<type2_s_>().sub_type.unpack(bref));
HANDLE_CODE(c.get<type2_s_>().phase_alphabet_size.unpack(bref));
HANDLE_CODE(bref.unpack(c.get<type2_s_>().subband_amplitude, 1));
HANDLE_CODE(c.get<type2_s_>().nof_beams.unpack(bref));
break;
default:
log_invalid_choice_id(type_, "codebook_cfg_s::codebook_type_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
void codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::destroy_()
{
switch (type_) {
case types::type_i_single_panel:
c.destroy<type_i_single_panel_s_>();
break;
case types::type_i_multi_panel:
c.destroy<type_i_multi_panel_s_>();
break;
default:
break;
}
}
void codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::type_i_single_panel:
c.init<type_i_single_panel_s_>();
break;
case types::type_i_multi_panel:
c.init<type_i_multi_panel_s_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_");
}
}
codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::sub_type_c_(
const codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_& other)
{
type_ = other.type();
switch (type_) {
case types::type_i_single_panel:
c.init(other.c.get<type_i_single_panel_s_>());
break;
case types::type_i_multi_panel:
c.init(other.c.get<type_i_multi_panel_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_");
}
}
codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_&
codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::operator=(
const codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::type_i_single_panel:
c.set(other.c.get<type_i_single_panel_s_>());
break;
case types::type_i_multi_panel:
c.set(other.c.get<type_i_multi_panel_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_");
}
return *this;
}
codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_&
codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::set_type_i_single_panel()
{
set(types::type_i_single_panel);
return c.get<type_i_single_panel_s_>();
}
codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_multi_panel_s_&
codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::set_type_i_multi_panel()
{
set(types::type_i_multi_panel);
return c.get<type_i_multi_panel_s_>();
}
void codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::type_i_single_panel:
j.write_fieldname("typeI-SinglePanel");
j.start_obj();
j.write_fieldname("nrOfAntennaPorts");
c.get<type_i_single_panel_s_>().nr_of_ant_ports.to_json(j);
j.write_str("typeI-SinglePanel-ri-Restriction",
c.get<type_i_single_panel_s_>().type_i_single_panel_ri_restrict.to_string());
j.end_obj();
break;
case types::type_i_multi_panel:
j.write_fieldname("typeI-MultiPanel");
j.start_obj();
j.write_fieldname("ng-n1-n2");
c.get<type_i_multi_panel_s_>().ng_n1_n2.to_json(j);
j.write_str("ri-Restriction", c.get<type_i_multi_panel_s_>().ri_restrict.to_string());
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_");
}
j.end_obj();
}
SRSASN_CODE codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::type_i_single_panel:
HANDLE_CODE(c.get<type_i_single_panel_s_>().nr_of_ant_ports.pack(bref));
HANDLE_CODE(c.get<type_i_single_panel_s_>().type_i_single_panel_ri_restrict.pack(bref));
break;
case types::type_i_multi_panel:
HANDLE_CODE(c.get<type_i_multi_panel_s_>().ng_n1_n2.pack(bref));
HANDLE_CODE(c.get<type_i_multi_panel_s_>().ri_restrict.pack(bref));
break;
default:
log_invalid_choice_id(type_, "codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::type_i_single_panel:
HANDLE_CODE(c.get<type_i_single_panel_s_>().nr_of_ant_ports.unpack(bref));
HANDLE_CODE(c.get<type_i_single_panel_s_>().type_i_single_panel_ri_restrict.unpack(bref));
break;
case types::type_i_multi_panel:
HANDLE_CODE(c.get<type_i_multi_panel_s_>().ng_n1_n2.unpack(bref));
HANDLE_CODE(c.get<type_i_multi_panel_s_>().ri_restrict.unpack(bref));
break;
default:
log_invalid_choice_id(type_, "codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
void codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_::destroy_()
{
switch (type_) {
case types::two:
c.destroy<two_s_>();
break;
case types::more_than_two:
c.destroy<more_than_two_s_>();
break;
default:
break;
}
}
void codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_::set(
types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::two:
c.init<two_s_>();
break;
case types::more_than_two:
c.init<more_than_two_s_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(
type_, "codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_");
}
}
codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_::nr_of_ant_ports_c_(
const codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_& other)
{
type_ = other.type();
switch (type_) {
case types::two:
c.init(other.c.get<two_s_>());
break;
case types::more_than_two:
c.init(other.c.get<more_than_two_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(
type_, "codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_");
}
}
codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_&
codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_::operator=(
const codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::two:
c.set(other.c.get<two_s_>());
break;
case types::more_than_two:
c.set(other.c.get<more_than_two_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(
type_, "codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_");
}
return *this;
}
codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_::two_s_&
codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_::set_two()
{
set(types::two);
return c.get<two_s_>();
}
codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_::more_than_two_s_&
codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_::set_more_than_two()
{
set(types::more_than_two);
return c.get<more_than_two_s_>();
}
void codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_::to_json(
json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::two:
j.write_fieldname("two");
j.start_obj();
j.write_str("twoTX-CodebookSubsetRestriction", c.get<two_s_>().two_tx_codebook_subset_restrict.to_string());
j.end_obj();
break;
case types::more_than_two:
j.write_fieldname("moreThanTwo");
j.start_obj();
j.write_fieldname("n1-n2");
c.get<more_than_two_s_>().n1_n2.to_json(j);
if (c.get<more_than_two_s_>().type_i_single_panel_codebook_subset_restrict_i2_present) {
j.write_str("typeI-SinglePanel-codebookSubsetRestriction-i2",
c.get<more_than_two_s_>().type_i_single_panel_codebook_subset_restrict_i2.to_string());
}
j.end_obj();
break;
default:
log_invalid_choice_id(
type_, "codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_");
}
j.end_obj();
}
SRSASN_CODE codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_::pack(
bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::two:
HANDLE_CODE(c.get<two_s_>().two_tx_codebook_subset_restrict.pack(bref));
break;
case types::more_than_two:
HANDLE_CODE(bref.pack(c.get<more_than_two_s_>().type_i_single_panel_codebook_subset_restrict_i2_present, 1));
HANDLE_CODE(c.get<more_than_two_s_>().n1_n2.pack(bref));
if (c.get<more_than_two_s_>().type_i_single_panel_codebook_subset_restrict_i2_present) {
HANDLE_CODE(c.get<more_than_two_s_>().type_i_single_panel_codebook_subset_restrict_i2.pack(bref));
}
break;
default:
log_invalid_choice_id(
type_, "codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_::unpack(
cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::two:
HANDLE_CODE(c.get<two_s_>().two_tx_codebook_subset_restrict.unpack(bref));
break;
case types::more_than_two:
HANDLE_CODE(bref.unpack(c.get<more_than_two_s_>().type_i_single_panel_codebook_subset_restrict_i2_present, 1));
HANDLE_CODE(c.get<more_than_two_s_>().n1_n2.unpack(bref));
if (c.get<more_than_two_s_>().type_i_single_panel_codebook_subset_restrict_i2_present) {
HANDLE_CODE(c.get<more_than_two_s_>().type_i_single_panel_codebook_subset_restrict_i2.unpack(bref));
}
break;
default:
log_invalid_choice_id(
type_, "codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
void codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_::
more_than_two_s_::n1_n2_c_::destroy_()
{
switch (type_) {
case types::two_one_type_i_single_panel_restrict:
c.destroy<fixed_bitstring<8> >();
break;
case types::two_two_type_i_single_panel_restrict:
c.destroy<fixed_bitstring<64> >();
break;
case types::four_one_type_i_single_panel_restrict:
c.destroy<fixed_bitstring<16> >();
break;
case types::three_two_type_i_single_panel_restrict:
c.destroy<fixed_bitstring<96> >();
break;
case types::six_one_type_i_single_panel_restrict:
c.destroy<fixed_bitstring<24> >();
break;
case types::four_two_type_i_single_panel_restrict:
c.destroy<fixed_bitstring<128> >();
break;
case types::eight_one_type_i_single_panel_restrict:
c.destroy<fixed_bitstring<32> >();
break;
case types::four_three_type_i_single_panel_restrict:
c.destroy<fixed_bitstring<192> >();
break;
case types::six_two_type_i_single_panel_restrict:
c.destroy<fixed_bitstring<192> >();
break;
case types::twelve_one_type_i_single_panel_restrict:
c.destroy<fixed_bitstring<48> >();
break;
case types::four_four_type_i_single_panel_restrict:
c.destroy<fixed_bitstring<256> >();
break;
case types::eight_two_type_i_single_panel_restrict:
c.destroy<fixed_bitstring<256> >();
break;
case types::sixteen_one_type_i_single_panel_restrict:
c.destroy<fixed_bitstring<64> >();
break;
default:
break;
}
}
void codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_::
more_than_two_s_::n1_n2_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::two_one_type_i_single_panel_restrict:
c.init<fixed_bitstring<8> >();
break;
case types::two_two_type_i_single_panel_restrict:
c.init<fixed_bitstring<64> >();
break;
case types::four_one_type_i_single_panel_restrict:
c.init<fixed_bitstring<16> >();
break;
case types::three_two_type_i_single_panel_restrict:
c.init<fixed_bitstring<96> >();
break;
case types::six_one_type_i_single_panel_restrict:
c.init<fixed_bitstring<24> >();
break;
case types::four_two_type_i_single_panel_restrict:
c.init<fixed_bitstring<128> >();
break;
case types::eight_one_type_i_single_panel_restrict:
c.init<fixed_bitstring<32> >();
break;
case types::four_three_type_i_single_panel_restrict:
c.init<fixed_bitstring<192> >();
break;
case types::six_two_type_i_single_panel_restrict:
c.init<fixed_bitstring<192> >();
break;
case types::twelve_one_type_i_single_panel_restrict:
c.init<fixed_bitstring<48> >();
break;
case types::four_four_type_i_single_panel_restrict:
c.init<fixed_bitstring<256> >();
break;
case types::eight_two_type_i_single_panel_restrict:
c.init<fixed_bitstring<256> >();
break;
case types::sixteen_one_type_i_single_panel_restrict:
c.init<fixed_bitstring<64> >();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_,
"codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_"
"ant_ports_c_::more_than_two_s_::n1_n2_c_");
}
}
codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_::more_than_two_s_::
n1_n2_c_::n1_n2_c_(const codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::
nr_of_ant_ports_c_::more_than_two_s_::n1_n2_c_& other)
{
type_ = other.type();
switch (type_) {
case types::two_one_type_i_single_panel_restrict:
c.init(other.c.get<fixed_bitstring<8> >());
break;
case types::two_two_type_i_single_panel_restrict:
c.init(other.c.get<fixed_bitstring<64> >());
break;
case types::four_one_type_i_single_panel_restrict:
c.init(other.c.get<fixed_bitstring<16> >());
break;
case types::three_two_type_i_single_panel_restrict:
c.init(other.c.get<fixed_bitstring<96> >());
break;
case types::six_one_type_i_single_panel_restrict:
c.init(other.c.get<fixed_bitstring<24> >());
break;
case types::four_two_type_i_single_panel_restrict:
c.init(other.c.get<fixed_bitstring<128> >());
break;
case types::eight_one_type_i_single_panel_restrict:
c.init(other.c.get<fixed_bitstring<32> >());
break;
case types::four_three_type_i_single_panel_restrict:
c.init(other.c.get<fixed_bitstring<192> >());
break;
case types::six_two_type_i_single_panel_restrict:
c.init(other.c.get<fixed_bitstring<192> >());
break;
case types::twelve_one_type_i_single_panel_restrict:
c.init(other.c.get<fixed_bitstring<48> >());
break;
case types::four_four_type_i_single_panel_restrict:
c.init(other.c.get<fixed_bitstring<256> >());
break;
case types::eight_two_type_i_single_panel_restrict:
c.init(other.c.get<fixed_bitstring<256> >());
break;
case types::sixteen_one_type_i_single_panel_restrict:
c.init(other.c.get<fixed_bitstring<64> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_,
"codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_"
"ant_ports_c_::more_than_two_s_::n1_n2_c_");
}
}
codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_::more_than_two_s_::
n1_n2_c_&
codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_::
more_than_two_s_::n1_n2_c_::operator=(
const codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_::
more_than_two_s_::n1_n2_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::two_one_type_i_single_panel_restrict:
c.set(other.c.get<fixed_bitstring<8> >());
break;
case types::two_two_type_i_single_panel_restrict:
c.set(other.c.get<fixed_bitstring<64> >());
break;
case types::four_one_type_i_single_panel_restrict:
c.set(other.c.get<fixed_bitstring<16> >());
break;
case types::three_two_type_i_single_panel_restrict:
c.set(other.c.get<fixed_bitstring<96> >());
break;
case types::six_one_type_i_single_panel_restrict:
c.set(other.c.get<fixed_bitstring<24> >());
break;
case types::four_two_type_i_single_panel_restrict:
c.set(other.c.get<fixed_bitstring<128> >());
break;
case types::eight_one_type_i_single_panel_restrict:
c.set(other.c.get<fixed_bitstring<32> >());
break;
case types::four_three_type_i_single_panel_restrict:
c.set(other.c.get<fixed_bitstring<192> >());
break;
case types::six_two_type_i_single_panel_restrict:
c.set(other.c.get<fixed_bitstring<192> >());
break;
case types::twelve_one_type_i_single_panel_restrict:
c.set(other.c.get<fixed_bitstring<48> >());
break;
case types::four_four_type_i_single_panel_restrict:
c.set(other.c.get<fixed_bitstring<256> >());
break;
case types::eight_two_type_i_single_panel_restrict:
c.set(other.c.get<fixed_bitstring<256> >());
break;
case types::sixteen_one_type_i_single_panel_restrict:
c.set(other.c.get<fixed_bitstring<64> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_,
"codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_"
"ant_ports_c_::more_than_two_s_::n1_n2_c_");
}
return *this;
}
fixed_bitstring<8>& codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::
nr_of_ant_ports_c_::more_than_two_s_::n1_n2_c_::set_two_one_type_i_single_panel_restrict()
{
set(types::two_one_type_i_single_panel_restrict);
return c.get<fixed_bitstring<8> >();
}
fixed_bitstring<64>& codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::
nr_of_ant_ports_c_::more_than_two_s_::n1_n2_c_::set_two_two_type_i_single_panel_restrict()
{
set(types::two_two_type_i_single_panel_restrict);
return c.get<fixed_bitstring<64> >();
}
fixed_bitstring<16>& codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::
nr_of_ant_ports_c_::more_than_two_s_::n1_n2_c_::set_four_one_type_i_single_panel_restrict()
{
set(types::four_one_type_i_single_panel_restrict);
return c.get<fixed_bitstring<16> >();
}
fixed_bitstring<96>& codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::
nr_of_ant_ports_c_::more_than_two_s_::n1_n2_c_::set_three_two_type_i_single_panel_restrict()
{
set(types::three_two_type_i_single_panel_restrict);
return c.get<fixed_bitstring<96> >();
}
fixed_bitstring<24>& codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::
nr_of_ant_ports_c_::more_than_two_s_::n1_n2_c_::set_six_one_type_i_single_panel_restrict()
{
set(types::six_one_type_i_single_panel_restrict);
return c.get<fixed_bitstring<24> >();
}
fixed_bitstring<128>& codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::
nr_of_ant_ports_c_::more_than_two_s_::n1_n2_c_::set_four_two_type_i_single_panel_restrict()
{
set(types::four_two_type_i_single_panel_restrict);
return c.get<fixed_bitstring<128> >();
}
fixed_bitstring<32>& codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::
nr_of_ant_ports_c_::more_than_two_s_::n1_n2_c_::set_eight_one_type_i_single_panel_restrict()
{
set(types::eight_one_type_i_single_panel_restrict);
return c.get<fixed_bitstring<32> >();
}
fixed_bitstring<192>& codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::
nr_of_ant_ports_c_::more_than_two_s_::n1_n2_c_::set_four_three_type_i_single_panel_restrict()
{
set(types::four_three_type_i_single_panel_restrict);
return c.get<fixed_bitstring<192> >();
}
fixed_bitstring<192>& codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::
nr_of_ant_ports_c_::more_than_two_s_::n1_n2_c_::set_six_two_type_i_single_panel_restrict()
{
set(types::six_two_type_i_single_panel_restrict);
return c.get<fixed_bitstring<192> >();
}
fixed_bitstring<48>& codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::
nr_of_ant_ports_c_::more_than_two_s_::n1_n2_c_::set_twelve_one_type_i_single_panel_restrict()
{
set(types::twelve_one_type_i_single_panel_restrict);
return c.get<fixed_bitstring<48> >();
}
fixed_bitstring<256>& codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::
nr_of_ant_ports_c_::more_than_two_s_::n1_n2_c_::set_four_four_type_i_single_panel_restrict()
{
set(types::four_four_type_i_single_panel_restrict);
return c.get<fixed_bitstring<256> >();
}
fixed_bitstring<256>& codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::
nr_of_ant_ports_c_::more_than_two_s_::n1_n2_c_::set_eight_two_type_i_single_panel_restrict()
{
set(types::eight_two_type_i_single_panel_restrict);
return c.get<fixed_bitstring<256> >();
}
fixed_bitstring<64>& codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::
nr_of_ant_ports_c_::more_than_two_s_::n1_n2_c_::set_sixteen_one_type_i_single_panel_restrict()
{
set(types::sixteen_one_type_i_single_panel_restrict);
return c.get<fixed_bitstring<64> >();
}
void codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_::
more_than_two_s_::n1_n2_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::two_one_type_i_single_panel_restrict:
j.write_str("two-one-TypeI-SinglePanel-Restriction", c.get<fixed_bitstring<8> >().to_string());
break;
case types::two_two_type_i_single_panel_restrict:
j.write_str("two-two-TypeI-SinglePanel-Restriction", c.get<fixed_bitstring<64> >().to_string());
break;
case types::four_one_type_i_single_panel_restrict:
j.write_str("four-one-TypeI-SinglePanel-Restriction", c.get<fixed_bitstring<16> >().to_string());
break;
case types::three_two_type_i_single_panel_restrict:
j.write_str("three-two-TypeI-SinglePanel-Restriction", c.get<fixed_bitstring<96> >().to_string());
break;
case types::six_one_type_i_single_panel_restrict:
j.write_str("six-one-TypeI-SinglePanel-Restriction", c.get<fixed_bitstring<24> >().to_string());
break;
case types::four_two_type_i_single_panel_restrict:
j.write_str("four-two-TypeI-SinglePanel-Restriction", c.get<fixed_bitstring<128> >().to_string());
break;
case types::eight_one_type_i_single_panel_restrict:
j.write_str("eight-one-TypeI-SinglePanel-Restriction", c.get<fixed_bitstring<32> >().to_string());
break;
case types::four_three_type_i_single_panel_restrict:
j.write_str("four-three-TypeI-SinglePanel-Restriction", c.get<fixed_bitstring<192> >().to_string());
break;
case types::six_two_type_i_single_panel_restrict:
j.write_str("six-two-TypeI-SinglePanel-Restriction", c.get<fixed_bitstring<192> >().to_string());
break;
case types::twelve_one_type_i_single_panel_restrict:
j.write_str("twelve-one-TypeI-SinglePanel-Restriction", c.get<fixed_bitstring<48> >().to_string());
break;
case types::four_four_type_i_single_panel_restrict:
j.write_str("four-four-TypeI-SinglePanel-Restriction", c.get<fixed_bitstring<256> >().to_string());
break;
case types::eight_two_type_i_single_panel_restrict:
j.write_str("eight-two-TypeI-SinglePanel-Restriction", c.get<fixed_bitstring<256> >().to_string());
break;
case types::sixteen_one_type_i_single_panel_restrict:
j.write_str("sixteen-one-TypeI-SinglePanel-Restriction", c.get<fixed_bitstring<64> >().to_string());
break;
default:
log_invalid_choice_id(type_,
"codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_"
"ant_ports_c_::more_than_two_s_::n1_n2_c_");
}
j.end_obj();
}
SRSASN_CODE codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_::
more_than_two_s_::n1_n2_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::two_one_type_i_single_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<8> >().pack(bref));
break;
case types::two_two_type_i_single_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<64> >().pack(bref));
break;
case types::four_one_type_i_single_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<16> >().pack(bref));
break;
case types::three_two_type_i_single_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<96> >().pack(bref));
break;
case types::six_one_type_i_single_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<24> >().pack(bref));
break;
case types::four_two_type_i_single_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<128> >().pack(bref));
break;
case types::eight_one_type_i_single_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<32> >().pack(bref));
break;
case types::four_three_type_i_single_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<192> >().pack(bref));
break;
case types::six_two_type_i_single_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<192> >().pack(bref));
break;
case types::twelve_one_type_i_single_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<48> >().pack(bref));
break;
case types::four_four_type_i_single_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<256> >().pack(bref));
break;
case types::eight_two_type_i_single_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<256> >().pack(bref));
break;
case types::sixteen_one_type_i_single_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<64> >().pack(bref));
break;
default:
log_invalid_choice_id(type_,
"codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_"
"ant_ports_c_::more_than_two_s_::n1_n2_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_::
more_than_two_s_::n1_n2_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::two_one_type_i_single_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<8> >().unpack(bref));
break;
case types::two_two_type_i_single_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<64> >().unpack(bref));
break;
case types::four_one_type_i_single_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<16> >().unpack(bref));
break;
case types::three_two_type_i_single_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<96> >().unpack(bref));
break;
case types::six_one_type_i_single_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<24> >().unpack(bref));
break;
case types::four_two_type_i_single_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<128> >().unpack(bref));
break;
case types::eight_one_type_i_single_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<32> >().unpack(bref));
break;
case types::four_three_type_i_single_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<192> >().unpack(bref));
break;
case types::six_two_type_i_single_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<192> >().unpack(bref));
break;
case types::twelve_one_type_i_single_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<48> >().unpack(bref));
break;
case types::four_four_type_i_single_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<256> >().unpack(bref));
break;
case types::eight_two_type_i_single_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<256> >().unpack(bref));
break;
case types::sixteen_one_type_i_single_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<64> >().unpack(bref));
break;
default:
log_invalid_choice_id(type_,
"codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_"
"ant_ports_c_::more_than_two_s_::n1_n2_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_::
more_than_two_s_::n1_n2_c_::types_opts::to_string() const
{
static const char* options[] = {"two-one-TypeI-SinglePanel-Restriction",
"two-two-TypeI-SinglePanel-Restriction",
"four-one-TypeI-SinglePanel-Restriction",
"three-two-TypeI-SinglePanel-Restriction",
"six-one-TypeI-SinglePanel-Restriction",
"four-two-TypeI-SinglePanel-Restriction",
"eight-one-TypeI-SinglePanel-Restriction",
"four-three-TypeI-SinglePanel-Restriction",
"six-two-TypeI-SinglePanel-Restriction",
"twelve-one-TypeI-SinglePanel-Restriction",
"four-four-TypeI-SinglePanel-Restriction",
"eight-two-TypeI-SinglePanel-Restriction",
"sixteen-one-TypeI-SinglePanel-Restriction"};
return convert_enum_idx(options,
13,
value,
"codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_"
"ports_c_::more_than_two_s_::n1_n2_c_::types");
}
const char* codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_::
types_opts::to_string() const
{
static const char* options[] = {"two", "moreThanTwo"};
return convert_enum_idx(
options,
2,
value,
"codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_::types");
}
uint8_t codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_::
types_opts::to_number() const
{
static const uint8_t options[] = {2};
return map_enum_number(
options,
1,
value,
"codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_single_panel_s_::nr_of_ant_ports_c_::types");
}
void codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_multi_panel_s_::ng_n1_n2_c_::destroy_()
{
switch (type_) {
case types::two_two_one_type_i_multi_panel_restrict:
c.destroy<fixed_bitstring<8> >();
break;
case types::two_four_one_type_i_multi_panel_restrict:
c.destroy<fixed_bitstring<16> >();
break;
case types::four_two_one_type_i_multi_panel_restrict:
c.destroy<fixed_bitstring<8> >();
break;
case types::two_two_two_type_i_multi_panel_restrict:
c.destroy<fixed_bitstring<64> >();
break;
case types::two_eight_one_type_i_multi_panel_restrict:
c.destroy<fixed_bitstring<32> >();
break;
case types::four_four_one_type_i_multi_panel_restrict:
c.destroy<fixed_bitstring<16> >();
break;
case types::two_four_two_type_i_multi_panel_restrict:
c.destroy<fixed_bitstring<128> >();
break;
case types::four_two_two_type_i_multi_panel_restrict:
c.destroy<fixed_bitstring<64> >();
break;
default:
break;
}
}
void codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_multi_panel_s_::ng_n1_n2_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::two_two_one_type_i_multi_panel_restrict:
c.init<fixed_bitstring<8> >();
break;
case types::two_four_one_type_i_multi_panel_restrict:
c.init<fixed_bitstring<16> >();
break;
case types::four_two_one_type_i_multi_panel_restrict:
c.init<fixed_bitstring<8> >();
break;
case types::two_two_two_type_i_multi_panel_restrict:
c.init<fixed_bitstring<64> >();
break;
case types::two_eight_one_type_i_multi_panel_restrict:
c.init<fixed_bitstring<32> >();
break;
case types::four_four_one_type_i_multi_panel_restrict:
c.init<fixed_bitstring<16> >();
break;
case types::two_four_two_type_i_multi_panel_restrict:
c.init<fixed_bitstring<128> >();
break;
case types::four_two_two_type_i_multi_panel_restrict:
c.init<fixed_bitstring<64> >();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(
type_, "codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_multi_panel_s_::ng_n1_n2_c_");
}
}
codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_multi_panel_s_::ng_n1_n2_c_::ng_n1_n2_c_(
const codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_multi_panel_s_::ng_n1_n2_c_& other)
{
type_ = other.type();
switch (type_) {
case types::two_two_one_type_i_multi_panel_restrict:
c.init(other.c.get<fixed_bitstring<8> >());
break;
case types::two_four_one_type_i_multi_panel_restrict:
c.init(other.c.get<fixed_bitstring<16> >());
break;
case types::four_two_one_type_i_multi_panel_restrict:
c.init(other.c.get<fixed_bitstring<8> >());
break;
case types::two_two_two_type_i_multi_panel_restrict:
c.init(other.c.get<fixed_bitstring<64> >());
break;
case types::two_eight_one_type_i_multi_panel_restrict:
c.init(other.c.get<fixed_bitstring<32> >());
break;
case types::four_four_one_type_i_multi_panel_restrict:
c.init(other.c.get<fixed_bitstring<16> >());
break;
case types::two_four_two_type_i_multi_panel_restrict:
c.init(other.c.get<fixed_bitstring<128> >());
break;
case types::four_two_two_type_i_multi_panel_restrict:
c.init(other.c.get<fixed_bitstring<64> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(
type_, "codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_multi_panel_s_::ng_n1_n2_c_");
}
}
codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_multi_panel_s_::ng_n1_n2_c_&
codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_multi_panel_s_::ng_n1_n2_c_::operator=(
const codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_multi_panel_s_::ng_n1_n2_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::two_two_one_type_i_multi_panel_restrict:
c.set(other.c.get<fixed_bitstring<8> >());
break;
case types::two_four_one_type_i_multi_panel_restrict:
c.set(other.c.get<fixed_bitstring<16> >());
break;
case types::four_two_one_type_i_multi_panel_restrict:
c.set(other.c.get<fixed_bitstring<8> >());
break;
case types::two_two_two_type_i_multi_panel_restrict:
c.set(other.c.get<fixed_bitstring<64> >());
break;
case types::two_eight_one_type_i_multi_panel_restrict:
c.set(other.c.get<fixed_bitstring<32> >());
break;
case types::four_four_one_type_i_multi_panel_restrict:
c.set(other.c.get<fixed_bitstring<16> >());
break;
case types::two_four_two_type_i_multi_panel_restrict:
c.set(other.c.get<fixed_bitstring<128> >());
break;
case types::four_two_two_type_i_multi_panel_restrict:
c.set(other.c.get<fixed_bitstring<64> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(
type_, "codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_multi_panel_s_::ng_n1_n2_c_");
}
return *this;
}
fixed_bitstring<8>& codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_multi_panel_s_::ng_n1_n2_c_::
set_two_two_one_type_i_multi_panel_restrict()
{
set(types::two_two_one_type_i_multi_panel_restrict);
return c.get<fixed_bitstring<8> >();
}
fixed_bitstring<16>& codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_multi_panel_s_::ng_n1_n2_c_::
set_two_four_one_type_i_multi_panel_restrict()
{
set(types::two_four_one_type_i_multi_panel_restrict);
return c.get<fixed_bitstring<16> >();
}
fixed_bitstring<8>& codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_multi_panel_s_::ng_n1_n2_c_::
set_four_two_one_type_i_multi_panel_restrict()
{
set(types::four_two_one_type_i_multi_panel_restrict);
return c.get<fixed_bitstring<8> >();
}
fixed_bitstring<64>& codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_multi_panel_s_::ng_n1_n2_c_::
set_two_two_two_type_i_multi_panel_restrict()
{
set(types::two_two_two_type_i_multi_panel_restrict);
return c.get<fixed_bitstring<64> >();
}
fixed_bitstring<32>& codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_multi_panel_s_::ng_n1_n2_c_::
set_two_eight_one_type_i_multi_panel_restrict()
{
set(types::two_eight_one_type_i_multi_panel_restrict);
return c.get<fixed_bitstring<32> >();
}
fixed_bitstring<16>& codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_multi_panel_s_::ng_n1_n2_c_::
set_four_four_one_type_i_multi_panel_restrict()
{
set(types::four_four_one_type_i_multi_panel_restrict);
return c.get<fixed_bitstring<16> >();
}
fixed_bitstring<128>& codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_multi_panel_s_::ng_n1_n2_c_::
set_two_four_two_type_i_multi_panel_restrict()
{
set(types::two_four_two_type_i_multi_panel_restrict);
return c.get<fixed_bitstring<128> >();
}
fixed_bitstring<64>& codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_multi_panel_s_::ng_n1_n2_c_::
set_four_two_two_type_i_multi_panel_restrict()
{
set(types::four_two_two_type_i_multi_panel_restrict);
return c.get<fixed_bitstring<64> >();
}
void codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_multi_panel_s_::ng_n1_n2_c_::to_json(
json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::two_two_one_type_i_multi_panel_restrict:
j.write_str("two-two-one-TypeI-MultiPanel-Restriction", c.get<fixed_bitstring<8> >().to_string());
break;
case types::two_four_one_type_i_multi_panel_restrict:
j.write_str("two-four-one-TypeI-MultiPanel-Restriction", c.get<fixed_bitstring<16> >().to_string());
break;
case types::four_two_one_type_i_multi_panel_restrict:
j.write_str("four-two-one-TypeI-MultiPanel-Restriction", c.get<fixed_bitstring<8> >().to_string());
break;
case types::two_two_two_type_i_multi_panel_restrict:
j.write_str("two-two-two-TypeI-MultiPanel-Restriction", c.get<fixed_bitstring<64> >().to_string());
break;
case types::two_eight_one_type_i_multi_panel_restrict:
j.write_str("two-eight-one-TypeI-MultiPanel-Restriction", c.get<fixed_bitstring<32> >().to_string());
break;
case types::four_four_one_type_i_multi_panel_restrict:
j.write_str("four-four-one-TypeI-MultiPanel-Restriction", c.get<fixed_bitstring<16> >().to_string());
break;
case types::two_four_two_type_i_multi_panel_restrict:
j.write_str("two-four-two-TypeI-MultiPanel-Restriction", c.get<fixed_bitstring<128> >().to_string());
break;
case types::four_two_two_type_i_multi_panel_restrict:
j.write_str("four-two-two-TypeI-MultiPanel-Restriction", c.get<fixed_bitstring<64> >().to_string());
break;
default:
log_invalid_choice_id(
type_, "codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_multi_panel_s_::ng_n1_n2_c_");
}
j.end_obj();
}
SRSASN_CODE
codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_multi_panel_s_::ng_n1_n2_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::two_two_one_type_i_multi_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<8> >().pack(bref));
break;
case types::two_four_one_type_i_multi_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<16> >().pack(bref));
break;
case types::four_two_one_type_i_multi_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<8> >().pack(bref));
break;
case types::two_two_two_type_i_multi_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<64> >().pack(bref));
break;
case types::two_eight_one_type_i_multi_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<32> >().pack(bref));
break;
case types::four_four_one_type_i_multi_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<16> >().pack(bref));
break;
case types::two_four_two_type_i_multi_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<128> >().pack(bref));
break;
case types::four_two_two_type_i_multi_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<64> >().pack(bref));
break;
default:
log_invalid_choice_id(
type_, "codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_multi_panel_s_::ng_n1_n2_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE
codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_multi_panel_s_::ng_n1_n2_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::two_two_one_type_i_multi_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<8> >().unpack(bref));
break;
case types::two_four_one_type_i_multi_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<16> >().unpack(bref));
break;
case types::four_two_one_type_i_multi_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<8> >().unpack(bref));
break;
case types::two_two_two_type_i_multi_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<64> >().unpack(bref));
break;
case types::two_eight_one_type_i_multi_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<32> >().unpack(bref));
break;
case types::four_four_one_type_i_multi_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<16> >().unpack(bref));
break;
case types::two_four_two_type_i_multi_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<128> >().unpack(bref));
break;
case types::four_two_two_type_i_multi_panel_restrict:
HANDLE_CODE(c.get<fixed_bitstring<64> >().unpack(bref));
break;
default:
log_invalid_choice_id(
type_, "codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_multi_panel_s_::ng_n1_n2_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char*
codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_multi_panel_s_::ng_n1_n2_c_::types_opts::to_string()
const
{
static const char* options[] = {"two-two-one-TypeI-MultiPanel-Restriction",
"two-four-one-TypeI-MultiPanel-Restriction",
"four-two-one-TypeI-MultiPanel-Restriction",
"two-two-two-TypeI-MultiPanel-Restriction",
"two-eight-one-TypeI-MultiPanel-Restriction",
"four-four-one-TypeI-MultiPanel-Restriction",
"two-four-two-TypeI-MultiPanel-Restriction",
"four-two-two-TypeI-MultiPanel-Restriction"};
return convert_enum_idx(
options,
8,
value,
"codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::type_i_multi_panel_s_::ng_n1_n2_c_::types");
}
const char* codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::types_opts::to_string() const
{
static const char* options[] = {"typeI-SinglePanel", "typeI-MultiPanel"};
return convert_enum_idx(options, 2, value, "codebook_cfg_s::codebook_type_c_::type1_s_::sub_type_c_::types");
}
void codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::destroy_()
{
switch (type_) {
case types::type_ii:
c.destroy<type_ii_s_>();
break;
case types::type_ii_port_sel:
c.destroy<type_ii_port_sel_s_>();
break;
default:
break;
}
}
void codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::type_ii:
c.init<type_ii_s_>();
break;
case types::type_ii_port_sel:
c.init<type_ii_port_sel_s_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_");
}
}
codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::sub_type_c_(
const codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_& other)
{
type_ = other.type();
switch (type_) {
case types::type_ii:
c.init(other.c.get<type_ii_s_>());
break;
case types::type_ii_port_sel:
c.init(other.c.get<type_ii_port_sel_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_");
}
}
codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_&
codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::operator=(
const codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::type_ii:
c.set(other.c.get<type_ii_s_>());
break;
case types::type_ii_port_sel:
c.set(other.c.get<type_ii_port_sel_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_");
}
return *this;
}
codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_&
codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::set_type_ii()
{
set(types::type_ii);
return c.get<type_ii_s_>();
}
codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_port_sel_s_&
codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::set_type_ii_port_sel()
{
set(types::type_ii_port_sel);
return c.get<type_ii_port_sel_s_>();
}
void codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::type_ii:
j.write_fieldname("typeII");
j.start_obj();
j.write_fieldname("n1-n2-codebookSubsetRestriction");
c.get<type_ii_s_>().n1_n2_codebook_subset_restrict.to_json(j);
j.write_str("typeII-RI-Restriction", c.get<type_ii_s_>().type_ii_ri_restrict.to_string());
j.end_obj();
break;
case types::type_ii_port_sel:
j.write_fieldname("typeII-PortSelection");
j.start_obj();
if (c.get<type_ii_port_sel_s_>().port_sel_sampling_size_present) {
j.write_str("portSelectionSamplingSize", c.get<type_ii_port_sel_s_>().port_sel_sampling_size.to_string());
}
j.write_str("typeII-PortSelectionRI-Restriction",
c.get<type_ii_port_sel_s_>().type_ii_port_sel_ri_restrict.to_string());
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_");
}
j.end_obj();
}
SRSASN_CODE codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::type_ii:
HANDLE_CODE(c.get<type_ii_s_>().n1_n2_codebook_subset_restrict.pack(bref));
HANDLE_CODE(c.get<type_ii_s_>().type_ii_ri_restrict.pack(bref));
break;
case types::type_ii_port_sel:
HANDLE_CODE(bref.pack(c.get<type_ii_port_sel_s_>().port_sel_sampling_size_present, 1));
if (c.get<type_ii_port_sel_s_>().port_sel_sampling_size_present) {
HANDLE_CODE(c.get<type_ii_port_sel_s_>().port_sel_sampling_size.pack(bref));
}
HANDLE_CODE(c.get<type_ii_port_sel_s_>().type_ii_port_sel_ri_restrict.pack(bref));
break;
default:
log_invalid_choice_id(type_, "codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::type_ii:
HANDLE_CODE(c.get<type_ii_s_>().n1_n2_codebook_subset_restrict.unpack(bref));
HANDLE_CODE(c.get<type_ii_s_>().type_ii_ri_restrict.unpack(bref));
break;
case types::type_ii_port_sel:
HANDLE_CODE(bref.unpack(c.get<type_ii_port_sel_s_>().port_sel_sampling_size_present, 1));
if (c.get<type_ii_port_sel_s_>().port_sel_sampling_size_present) {
HANDLE_CODE(c.get<type_ii_port_sel_s_>().port_sel_sampling_size.unpack(bref));
}
HANDLE_CODE(c.get<type_ii_port_sel_s_>().type_ii_port_sel_ri_restrict.unpack(bref));
break;
default:
log_invalid_choice_id(type_, "codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
void codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_::destroy_()
{
switch (type_) {
case types::two_one:
c.destroy<fixed_bitstring<16> >();
break;
case types::two_two:
c.destroy<fixed_bitstring<43> >();
break;
case types::four_one:
c.destroy<fixed_bitstring<32> >();
break;
case types::three_two:
c.destroy<fixed_bitstring<59> >();
break;
case types::six_one:
c.destroy<fixed_bitstring<48> >();
break;
case types::four_two:
c.destroy<fixed_bitstring<75> >();
break;
case types::eight_one:
c.destroy<fixed_bitstring<64> >();
break;
case types::four_three:
c.destroy<fixed_bitstring<107> >();
break;
case types::six_two:
c.destroy<fixed_bitstring<107> >();
break;
case types::twelve_one:
c.destroy<fixed_bitstring<96> >();
break;
case types::four_four:
c.destroy<fixed_bitstring<139> >();
break;
case types::eight_two:
c.destroy<fixed_bitstring<139> >();
break;
case types::sixteen_one:
c.destroy<fixed_bitstring<128> >();
break;
default:
break;
}
}
void codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_::set(
types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::two_one:
c.init<fixed_bitstring<16> >();
break;
case types::two_two:
c.init<fixed_bitstring<43> >();
break;
case types::four_one:
c.init<fixed_bitstring<32> >();
break;
case types::three_two:
c.init<fixed_bitstring<59> >();
break;
case types::six_one:
c.init<fixed_bitstring<48> >();
break;
case types::four_two:
c.init<fixed_bitstring<75> >();
break;
case types::eight_one:
c.init<fixed_bitstring<64> >();
break;
case types::four_three:
c.init<fixed_bitstring<107> >();
break;
case types::six_two:
c.init<fixed_bitstring<107> >();
break;
case types::twelve_one:
c.init<fixed_bitstring<96> >();
break;
case types::four_four:
c.init<fixed_bitstring<139> >();
break;
case types::eight_two:
c.init<fixed_bitstring<139> >();
break;
case types::sixteen_one:
c.init<fixed_bitstring<128> >();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(
type_,
"codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_");
}
}
codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_::
n1_n2_codebook_subset_restrict_c_(
const codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_&
other)
{
type_ = other.type();
switch (type_) {
case types::two_one:
c.init(other.c.get<fixed_bitstring<16> >());
break;
case types::two_two:
c.init(other.c.get<fixed_bitstring<43> >());
break;
case types::four_one:
c.init(other.c.get<fixed_bitstring<32> >());
break;
case types::three_two:
c.init(other.c.get<fixed_bitstring<59> >());
break;
case types::six_one:
c.init(other.c.get<fixed_bitstring<48> >());
break;
case types::four_two:
c.init(other.c.get<fixed_bitstring<75> >());
break;
case types::eight_one:
c.init(other.c.get<fixed_bitstring<64> >());
break;
case types::four_three:
c.init(other.c.get<fixed_bitstring<107> >());
break;
case types::six_two:
c.init(other.c.get<fixed_bitstring<107> >());
break;
case types::twelve_one:
c.init(other.c.get<fixed_bitstring<96> >());
break;
case types::four_four:
c.init(other.c.get<fixed_bitstring<139> >());
break;
case types::eight_two:
c.init(other.c.get<fixed_bitstring<139> >());
break;
case types::sixteen_one:
c.init(other.c.get<fixed_bitstring<128> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(
type_,
"codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_");
}
}
codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_&
codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_::operator=(
const codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::two_one:
c.set(other.c.get<fixed_bitstring<16> >());
break;
case types::two_two:
c.set(other.c.get<fixed_bitstring<43> >());
break;
case types::four_one:
c.set(other.c.get<fixed_bitstring<32> >());
break;
case types::three_two:
c.set(other.c.get<fixed_bitstring<59> >());
break;
case types::six_one:
c.set(other.c.get<fixed_bitstring<48> >());
break;
case types::four_two:
c.set(other.c.get<fixed_bitstring<75> >());
break;
case types::eight_one:
c.set(other.c.get<fixed_bitstring<64> >());
break;
case types::four_three:
c.set(other.c.get<fixed_bitstring<107> >());
break;
case types::six_two:
c.set(other.c.get<fixed_bitstring<107> >());
break;
case types::twelve_one:
c.set(other.c.get<fixed_bitstring<96> >());
break;
case types::four_four:
c.set(other.c.get<fixed_bitstring<139> >());
break;
case types::eight_two:
c.set(other.c.get<fixed_bitstring<139> >());
break;
case types::sixteen_one:
c.set(other.c.get<fixed_bitstring<128> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(
type_,
"codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_");
}
return *this;
}
fixed_bitstring<16>&
codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_::set_two_one()
{
set(types::two_one);
return c.get<fixed_bitstring<16> >();
}
fixed_bitstring<43>&
codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_::set_two_two()
{
set(types::two_two);
return c.get<fixed_bitstring<43> >();
}
fixed_bitstring<32>&
codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_::set_four_one()
{
set(types::four_one);
return c.get<fixed_bitstring<32> >();
}
fixed_bitstring<59>&
codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_::set_three_two()
{
set(types::three_two);
return c.get<fixed_bitstring<59> >();
}
fixed_bitstring<48>&
codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_::set_six_one()
{
set(types::six_one);
return c.get<fixed_bitstring<48> >();
}
fixed_bitstring<75>&
codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_::set_four_two()
{
set(types::four_two);
return c.get<fixed_bitstring<75> >();
}
fixed_bitstring<64>&
codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_::set_eight_one()
{
set(types::eight_one);
return c.get<fixed_bitstring<64> >();
}
fixed_bitstring<107>&
codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_::set_four_three()
{
set(types::four_three);
return c.get<fixed_bitstring<107> >();
}
fixed_bitstring<107>&
codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_::set_six_two()
{
set(types::six_two);
return c.get<fixed_bitstring<107> >();
}
fixed_bitstring<96>&
codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_::set_twelve_one()
{
set(types::twelve_one);
return c.get<fixed_bitstring<96> >();
}
fixed_bitstring<139>&
codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_::set_four_four()
{
set(types::four_four);
return c.get<fixed_bitstring<139> >();
}
fixed_bitstring<139>&
codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_::set_eight_two()
{
set(types::eight_two);
return c.get<fixed_bitstring<139> >();
}
fixed_bitstring<128>& codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::
n1_n2_codebook_subset_restrict_c_::set_sixteen_one()
{
set(types::sixteen_one);
return c.get<fixed_bitstring<128> >();
}
void codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_::to_json(
json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::two_one:
j.write_str("two-one", c.get<fixed_bitstring<16> >().to_string());
break;
case types::two_two:
j.write_str("two-two", c.get<fixed_bitstring<43> >().to_string());
break;
case types::four_one:
j.write_str("four-one", c.get<fixed_bitstring<32> >().to_string());
break;
case types::three_two:
j.write_str("three-two", c.get<fixed_bitstring<59> >().to_string());
break;
case types::six_one:
j.write_str("six-one", c.get<fixed_bitstring<48> >().to_string());
break;
case types::four_two:
j.write_str("four-two", c.get<fixed_bitstring<75> >().to_string());
break;
case types::eight_one:
j.write_str("eight-one", c.get<fixed_bitstring<64> >().to_string());
break;
case types::four_three:
j.write_str("four-three", c.get<fixed_bitstring<107> >().to_string());
break;
case types::six_two:
j.write_str("six-two", c.get<fixed_bitstring<107> >().to_string());
break;
case types::twelve_one:
j.write_str("twelve-one", c.get<fixed_bitstring<96> >().to_string());
break;
case types::four_four:
j.write_str("four-four", c.get<fixed_bitstring<139> >().to_string());
break;
case types::eight_two:
j.write_str("eight-two", c.get<fixed_bitstring<139> >().to_string());
break;
case types::sixteen_one:
j.write_str("sixteen-one", c.get<fixed_bitstring<128> >().to_string());
break;
default:
log_invalid_choice_id(
type_,
"codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_");
}
j.end_obj();
}
SRSASN_CODE
codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_::pack(
bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::two_one:
HANDLE_CODE(c.get<fixed_bitstring<16> >().pack(bref));
break;
case types::two_two:
HANDLE_CODE(c.get<fixed_bitstring<43> >().pack(bref));
break;
case types::four_one:
HANDLE_CODE(c.get<fixed_bitstring<32> >().pack(bref));
break;
case types::three_two:
HANDLE_CODE(c.get<fixed_bitstring<59> >().pack(bref));
break;
case types::six_one:
HANDLE_CODE(c.get<fixed_bitstring<48> >().pack(bref));
break;
case types::four_two:
HANDLE_CODE(c.get<fixed_bitstring<75> >().pack(bref));
break;
case types::eight_one:
HANDLE_CODE(c.get<fixed_bitstring<64> >().pack(bref));
break;
case types::four_three:
HANDLE_CODE(c.get<fixed_bitstring<107> >().pack(bref));
break;
case types::six_two:
HANDLE_CODE(c.get<fixed_bitstring<107> >().pack(bref));
break;
case types::twelve_one:
HANDLE_CODE(c.get<fixed_bitstring<96> >().pack(bref));
break;
case types::four_four:
HANDLE_CODE(c.get<fixed_bitstring<139> >().pack(bref));
break;
case types::eight_two:
HANDLE_CODE(c.get<fixed_bitstring<139> >().pack(bref));
break;
case types::sixteen_one:
HANDLE_CODE(c.get<fixed_bitstring<128> >().pack(bref));
break;
default:
log_invalid_choice_id(
type_,
"codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE
codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_::unpack(
cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::two_one:
HANDLE_CODE(c.get<fixed_bitstring<16> >().unpack(bref));
break;
case types::two_two:
HANDLE_CODE(c.get<fixed_bitstring<43> >().unpack(bref));
break;
case types::four_one:
HANDLE_CODE(c.get<fixed_bitstring<32> >().unpack(bref));
break;
case types::three_two:
HANDLE_CODE(c.get<fixed_bitstring<59> >().unpack(bref));
break;
case types::six_one:
HANDLE_CODE(c.get<fixed_bitstring<48> >().unpack(bref));
break;
case types::four_two:
HANDLE_CODE(c.get<fixed_bitstring<75> >().unpack(bref));
break;
case types::eight_one:
HANDLE_CODE(c.get<fixed_bitstring<64> >().unpack(bref));
break;
case types::four_three:
HANDLE_CODE(c.get<fixed_bitstring<107> >().unpack(bref));
break;
case types::six_two:
HANDLE_CODE(c.get<fixed_bitstring<107> >().unpack(bref));
break;
case types::twelve_one:
HANDLE_CODE(c.get<fixed_bitstring<96> >().unpack(bref));
break;
case types::four_four:
HANDLE_CODE(c.get<fixed_bitstring<139> >().unpack(bref));
break;
case types::eight_two:
HANDLE_CODE(c.get<fixed_bitstring<139> >().unpack(bref));
break;
case types::sixteen_one:
HANDLE_CODE(c.get<fixed_bitstring<128> >().unpack(bref));
break;
default:
log_invalid_choice_id(
type_,
"codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_::
types_opts::to_string() const
{
static const char* options[] = {"two-one",
"two-two",
"four-one",
"three-two",
"six-one",
"four-two",
"eight-one",
"four-three",
"six-two",
"twelve-one",
"four-four",
"eight-two",
"sixteen-one"};
return convert_enum_idx(
options,
13,
value,
"codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_s_::n1_n2_codebook_subset_restrict_c_::types");
}
const char*
codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_port_sel_s_::port_sel_sampling_size_opts::to_string()
const
{
static const char* options[] = {"n1", "n2", "n3", "n4"};
return convert_enum_idx(
options,
4,
value,
"codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_port_sel_s_::port_sel_sampling_size_e_");
}
uint8_t
codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_port_sel_s_::port_sel_sampling_size_opts::to_number()
const
{
static const uint8_t options[] = {1, 2, 3, 4};
return map_enum_number(
options,
4,
value,
"codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::type_ii_port_sel_s_::port_sel_sampling_size_e_");
}
const char* codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::types_opts::to_string() const
{
static const char* options[] = {"typeII", "typeII-PortSelection"};
return convert_enum_idx(options, 2, value, "codebook_cfg_s::codebook_type_c_::type2_s_::sub_type_c_::types");
}
const char* codebook_cfg_s::codebook_type_c_::type2_s_::phase_alphabet_size_opts::to_string() const
{
static const char* options[] = {"n4", "n8"};
return convert_enum_idx(options, 2, value, "codebook_cfg_s::codebook_type_c_::type2_s_::phase_alphabet_size_e_");
}
uint8_t codebook_cfg_s::codebook_type_c_::type2_s_::phase_alphabet_size_opts::to_number() const
{
static const uint8_t options[] = {4, 8};
return map_enum_number(options, 2, value, "codebook_cfg_s::codebook_type_c_::type2_s_::phase_alphabet_size_e_");
}
const char* codebook_cfg_s::codebook_type_c_::type2_s_::nof_beams_opts::to_string() const
{
static const char* options[] = {"two", "three", "four"};
return convert_enum_idx(options, 3, value, "codebook_cfg_s::codebook_type_c_::type2_s_::nof_beams_e_");
}
uint8_t codebook_cfg_s::codebook_type_c_::type2_s_::nof_beams_opts::to_number() const
{
static const uint8_t options[] = {2, 3, 4};
return map_enum_number(options, 3, value, "codebook_cfg_s::codebook_type_c_::type2_s_::nof_beams_e_");
}
const char* codebook_cfg_s::codebook_type_c_::types_opts::to_string() const
{
static const char* options[] = {"type1", "type2"};
return convert_enum_idx(options, 2, value, "codebook_cfg_s::codebook_type_c_::types");
}
uint8_t codebook_cfg_s::codebook_type_c_::types_opts::to_number() const
{
static const uint8_t options[] = {1, 2};
return map_enum_number(options, 2, value, "codebook_cfg_s::codebook_type_c_::types");
}
// PUCCH-CSI-Resource ::= SEQUENCE
SRSASN_CODE pucch_csi_res_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, ul_bw_part_id, (uint8_t)0u, (uint8_t)4u));
HANDLE_CODE(pack_integer(bref, pucch_res, (uint8_t)0u, (uint8_t)127u));
return SRSASN_SUCCESS;
}
SRSASN_CODE pucch_csi_res_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(ul_bw_part_id, bref, (uint8_t)0u, (uint8_t)4u));
HANDLE_CODE(unpack_integer(pucch_res, bref, (uint8_t)0u, (uint8_t)127u));
return SRSASN_SUCCESS;
}
void pucch_csi_res_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("uplinkBandwidthPartId", ul_bw_part_id);
j.write_int("pucch-Resource", pucch_res);
j.end_obj();
}
// PortIndexFor8Ranks ::= CHOICE
void port_idx_for8_ranks_c::destroy_()
{
switch (type_) {
case types::port_idx8:
c.destroy<port_idx8_s_>();
break;
case types::port_idx4:
c.destroy<port_idx4_s_>();
break;
case types::port_idx2:
c.destroy<port_idx2_s_>();
break;
default:
break;
}
}
void port_idx_for8_ranks_c::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::port_idx8:
c.init<port_idx8_s_>();
break;
case types::port_idx4:
c.init<port_idx4_s_>();
break;
case types::port_idx2:
c.init<port_idx2_s_>();
break;
case types::port_idx1:
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "port_idx_for8_ranks_c");
}
}
port_idx_for8_ranks_c::port_idx_for8_ranks_c(const port_idx_for8_ranks_c& other)
{
type_ = other.type();
switch (type_) {
case types::port_idx8:
c.init(other.c.get<port_idx8_s_>());
break;
case types::port_idx4:
c.init(other.c.get<port_idx4_s_>());
break;
case types::port_idx2:
c.init(other.c.get<port_idx2_s_>());
break;
case types::port_idx1:
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "port_idx_for8_ranks_c");
}
}
port_idx_for8_ranks_c& port_idx_for8_ranks_c::operator=(const port_idx_for8_ranks_c& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::port_idx8:
c.set(other.c.get<port_idx8_s_>());
break;
case types::port_idx4:
c.set(other.c.get<port_idx4_s_>());
break;
case types::port_idx2:
c.set(other.c.get<port_idx2_s_>());
break;
case types::port_idx1:
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "port_idx_for8_ranks_c");
}
return *this;
}
port_idx_for8_ranks_c::port_idx8_s_& port_idx_for8_ranks_c::set_port_idx8()
{
set(types::port_idx8);
return c.get<port_idx8_s_>();
}
port_idx_for8_ranks_c::port_idx4_s_& port_idx_for8_ranks_c::set_port_idx4()
{
set(types::port_idx4);
return c.get<port_idx4_s_>();
}
port_idx_for8_ranks_c::port_idx2_s_& port_idx_for8_ranks_c::set_port_idx2()
{
set(types::port_idx2);
return c.get<port_idx2_s_>();
}
void port_idx_for8_ranks_c::set_port_idx1()
{
set(types::port_idx1);
}
void port_idx_for8_ranks_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::port_idx8:
j.write_fieldname("portIndex8");
j.start_obj();
if (c.get<port_idx8_s_>().rank1_minus8_present) {
j.write_int("rank1-8", c.get<port_idx8_s_>().rank1_minus8);
}
if (c.get<port_idx8_s_>().rank2_minus8_present) {
j.start_array("rank2-8");
for (const auto& e1 : c.get<port_idx8_s_>().rank2_minus8) {
j.write_int(e1);
}
j.end_array();
}
if (c.get<port_idx8_s_>().rank3_minus8_present) {
j.start_array("rank3-8");
for (const auto& e1 : c.get<port_idx8_s_>().rank3_minus8) {
j.write_int(e1);
}
j.end_array();
}
if (c.get<port_idx8_s_>().rank4_minus8_present) {
j.start_array("rank4-8");
for (const auto& e1 : c.get<port_idx8_s_>().rank4_minus8) {
j.write_int(e1);
}
j.end_array();
}
if (c.get<port_idx8_s_>().rank5_minus8_present) {
j.start_array("rank5-8");
for (const auto& e1 : c.get<port_idx8_s_>().rank5_minus8) {
j.write_int(e1);
}
j.end_array();
}
if (c.get<port_idx8_s_>().rank6_minus8_present) {
j.start_array("rank6-8");
for (const auto& e1 : c.get<port_idx8_s_>().rank6_minus8) {
j.write_int(e1);
}
j.end_array();
}
if (c.get<port_idx8_s_>().rank7_minus8_present) {
j.start_array("rank7-8");
for (const auto& e1 : c.get<port_idx8_s_>().rank7_minus8) {
j.write_int(e1);
}
j.end_array();
}
if (c.get<port_idx8_s_>().rank8_minus8_present) {
j.start_array("rank8-8");
for (const auto& e1 : c.get<port_idx8_s_>().rank8_minus8) {
j.write_int(e1);
}
j.end_array();
}
j.end_obj();
break;
case types::port_idx4:
j.write_fieldname("portIndex4");
j.start_obj();
if (c.get<port_idx4_s_>().rank1_minus4_present) {
j.write_int("rank1-4", c.get<port_idx4_s_>().rank1_minus4);
}
if (c.get<port_idx4_s_>().rank2_minus4_present) {
j.start_array("rank2-4");
for (const auto& e1 : c.get<port_idx4_s_>().rank2_minus4) {
j.write_int(e1);
}
j.end_array();
}
if (c.get<port_idx4_s_>().rank3_minus4_present) {
j.start_array("rank3-4");
for (const auto& e1 : c.get<port_idx4_s_>().rank3_minus4) {
j.write_int(e1);
}
j.end_array();
}
if (c.get<port_idx4_s_>().rank4_minus4_present) {
j.start_array("rank4-4");
for (const auto& e1 : c.get<port_idx4_s_>().rank4_minus4) {
j.write_int(e1);
}
j.end_array();
}
j.end_obj();
break;
case types::port_idx2:
j.write_fieldname("portIndex2");
j.start_obj();
if (c.get<port_idx2_s_>().rank1_minus2_present) {
j.write_int("rank1-2", c.get<port_idx2_s_>().rank1_minus2);
}
if (c.get<port_idx2_s_>().rank2_minus2_present) {
j.start_array("rank2-2");
for (const auto& e1 : c.get<port_idx2_s_>().rank2_minus2) {
j.write_int(e1);
}
j.end_array();
}
j.end_obj();
break;
case types::port_idx1:
break;
default:
log_invalid_choice_id(type_, "port_idx_for8_ranks_c");
}
j.end_obj();
}
SRSASN_CODE port_idx_for8_ranks_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::port_idx8:
HANDLE_CODE(bref.pack(c.get<port_idx8_s_>().rank1_minus8_present, 1));
HANDLE_CODE(bref.pack(c.get<port_idx8_s_>().rank2_minus8_present, 1));
HANDLE_CODE(bref.pack(c.get<port_idx8_s_>().rank3_minus8_present, 1));
HANDLE_CODE(bref.pack(c.get<port_idx8_s_>().rank4_minus8_present, 1));
HANDLE_CODE(bref.pack(c.get<port_idx8_s_>().rank5_minus8_present, 1));
HANDLE_CODE(bref.pack(c.get<port_idx8_s_>().rank6_minus8_present, 1));
HANDLE_CODE(bref.pack(c.get<port_idx8_s_>().rank7_minus8_present, 1));
HANDLE_CODE(bref.pack(c.get<port_idx8_s_>().rank8_minus8_present, 1));
if (c.get<port_idx8_s_>().rank1_minus8_present) {
HANDLE_CODE(pack_integer(bref, c.get<port_idx8_s_>().rank1_minus8, (uint8_t)0u, (uint8_t)7u));
}
if (c.get<port_idx8_s_>().rank2_minus8_present) {
HANDLE_CODE(pack_fixed_seq_of(bref,
&(c.get<port_idx8_s_>().rank2_minus8)[0],
c.get<port_idx8_s_>().rank2_minus8.size(),
integer_packer<uint8_t>(0, 7)));
}
if (c.get<port_idx8_s_>().rank3_minus8_present) {
HANDLE_CODE(pack_fixed_seq_of(bref,
&(c.get<port_idx8_s_>().rank3_minus8)[0],
c.get<port_idx8_s_>().rank3_minus8.size(),
integer_packer<uint8_t>(0, 7)));
}
if (c.get<port_idx8_s_>().rank4_minus8_present) {
HANDLE_CODE(pack_fixed_seq_of(bref,
&(c.get<port_idx8_s_>().rank4_minus8)[0],
c.get<port_idx8_s_>().rank4_minus8.size(),
integer_packer<uint8_t>(0, 7)));
}
if (c.get<port_idx8_s_>().rank5_minus8_present) {
HANDLE_CODE(pack_fixed_seq_of(bref,
&(c.get<port_idx8_s_>().rank5_minus8)[0],
c.get<port_idx8_s_>().rank5_minus8.size(),
integer_packer<uint8_t>(0, 7)));
}
if (c.get<port_idx8_s_>().rank6_minus8_present) {
HANDLE_CODE(pack_fixed_seq_of(bref,
&(c.get<port_idx8_s_>().rank6_minus8)[0],
c.get<port_idx8_s_>().rank6_minus8.size(),
integer_packer<uint8_t>(0, 7)));
}
if (c.get<port_idx8_s_>().rank7_minus8_present) {
HANDLE_CODE(pack_fixed_seq_of(bref,
&(c.get<port_idx8_s_>().rank7_minus8)[0],
c.get<port_idx8_s_>().rank7_minus8.size(),
integer_packer<uint8_t>(0, 7)));
}
if (c.get<port_idx8_s_>().rank8_minus8_present) {
HANDLE_CODE(pack_fixed_seq_of(bref,
&(c.get<port_idx8_s_>().rank8_minus8)[0],
c.get<port_idx8_s_>().rank8_minus8.size(),
integer_packer<uint8_t>(0, 7)));
}
break;
case types::port_idx4:
HANDLE_CODE(bref.pack(c.get<port_idx4_s_>().rank1_minus4_present, 1));
HANDLE_CODE(bref.pack(c.get<port_idx4_s_>().rank2_minus4_present, 1));
HANDLE_CODE(bref.pack(c.get<port_idx4_s_>().rank3_minus4_present, 1));
HANDLE_CODE(bref.pack(c.get<port_idx4_s_>().rank4_minus4_present, 1));
if (c.get<port_idx4_s_>().rank1_minus4_present) {
HANDLE_CODE(pack_integer(bref, c.get<port_idx4_s_>().rank1_minus4, (uint8_t)0u, (uint8_t)3u));
}
if (c.get<port_idx4_s_>().rank2_minus4_present) {
HANDLE_CODE(pack_fixed_seq_of(bref,
&(c.get<port_idx4_s_>().rank2_minus4)[0],
c.get<port_idx4_s_>().rank2_minus4.size(),
integer_packer<uint8_t>(0, 3)));
}
if (c.get<port_idx4_s_>().rank3_minus4_present) {
HANDLE_CODE(pack_fixed_seq_of(bref,
&(c.get<port_idx4_s_>().rank3_minus4)[0],
c.get<port_idx4_s_>().rank3_minus4.size(),
integer_packer<uint8_t>(0, 3)));
}
if (c.get<port_idx4_s_>().rank4_minus4_present) {
HANDLE_CODE(pack_fixed_seq_of(bref,
&(c.get<port_idx4_s_>().rank4_minus4)[0],
c.get<port_idx4_s_>().rank4_minus4.size(),
integer_packer<uint8_t>(0, 3)));
}
break;
case types::port_idx2:
HANDLE_CODE(bref.pack(c.get<port_idx2_s_>().rank1_minus2_present, 1));
HANDLE_CODE(bref.pack(c.get<port_idx2_s_>().rank2_minus2_present, 1));
if (c.get<port_idx2_s_>().rank1_minus2_present) {
HANDLE_CODE(pack_integer(bref, c.get<port_idx2_s_>().rank1_minus2, (uint8_t)0u, (uint8_t)1u));
}
if (c.get<port_idx2_s_>().rank2_minus2_present) {
HANDLE_CODE(pack_fixed_seq_of(bref,
&(c.get<port_idx2_s_>().rank2_minus2)[0],
c.get<port_idx2_s_>().rank2_minus2.size(),
integer_packer<uint8_t>(0, 1)));
}
break;
case types::port_idx1:
break;
default:
log_invalid_choice_id(type_, "port_idx_for8_ranks_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE port_idx_for8_ranks_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::port_idx8:
HANDLE_CODE(bref.unpack(c.get<port_idx8_s_>().rank1_minus8_present, 1));
HANDLE_CODE(bref.unpack(c.get<port_idx8_s_>().rank2_minus8_present, 1));
HANDLE_CODE(bref.unpack(c.get<port_idx8_s_>().rank3_minus8_present, 1));
HANDLE_CODE(bref.unpack(c.get<port_idx8_s_>().rank4_minus8_present, 1));
HANDLE_CODE(bref.unpack(c.get<port_idx8_s_>().rank5_minus8_present, 1));
HANDLE_CODE(bref.unpack(c.get<port_idx8_s_>().rank6_minus8_present, 1));
HANDLE_CODE(bref.unpack(c.get<port_idx8_s_>().rank7_minus8_present, 1));
HANDLE_CODE(bref.unpack(c.get<port_idx8_s_>().rank8_minus8_present, 1));
if (c.get<port_idx8_s_>().rank1_minus8_present) {
HANDLE_CODE(unpack_integer(c.get<port_idx8_s_>().rank1_minus8, bref, (uint8_t)0u, (uint8_t)7u));
}
if (c.get<port_idx8_s_>().rank2_minus8_present) {
HANDLE_CODE(unpack_fixed_seq_of(&(c.get<port_idx8_s_>().rank2_minus8)[0],
bref,
c.get<port_idx8_s_>().rank2_minus8.size(),
integer_packer<uint8_t>(0, 7)));
}
if (c.get<port_idx8_s_>().rank3_minus8_present) {
HANDLE_CODE(unpack_fixed_seq_of(&(c.get<port_idx8_s_>().rank3_minus8)[0],
bref,
c.get<port_idx8_s_>().rank3_minus8.size(),
integer_packer<uint8_t>(0, 7)));
}
if (c.get<port_idx8_s_>().rank4_minus8_present) {
HANDLE_CODE(unpack_fixed_seq_of(&(c.get<port_idx8_s_>().rank4_minus8)[0],
bref,
c.get<port_idx8_s_>().rank4_minus8.size(),
integer_packer<uint8_t>(0, 7)));
}
if (c.get<port_idx8_s_>().rank5_minus8_present) {
HANDLE_CODE(unpack_fixed_seq_of(&(c.get<port_idx8_s_>().rank5_minus8)[0],
bref,
c.get<port_idx8_s_>().rank5_minus8.size(),
integer_packer<uint8_t>(0, 7)));
}
if (c.get<port_idx8_s_>().rank6_minus8_present) {
HANDLE_CODE(unpack_fixed_seq_of(&(c.get<port_idx8_s_>().rank6_minus8)[0],
bref,
c.get<port_idx8_s_>().rank6_minus8.size(),
integer_packer<uint8_t>(0, 7)));
}
if (c.get<port_idx8_s_>().rank7_minus8_present) {
HANDLE_CODE(unpack_fixed_seq_of(&(c.get<port_idx8_s_>().rank7_minus8)[0],
bref,
c.get<port_idx8_s_>().rank7_minus8.size(),
integer_packer<uint8_t>(0, 7)));
}
if (c.get<port_idx8_s_>().rank8_minus8_present) {
HANDLE_CODE(unpack_fixed_seq_of(&(c.get<port_idx8_s_>().rank8_minus8)[0],
bref,
c.get<port_idx8_s_>().rank8_minus8.size(),
integer_packer<uint8_t>(0, 7)));
}
break;
case types::port_idx4:
HANDLE_CODE(bref.unpack(c.get<port_idx4_s_>().rank1_minus4_present, 1));
HANDLE_CODE(bref.unpack(c.get<port_idx4_s_>().rank2_minus4_present, 1));
HANDLE_CODE(bref.unpack(c.get<port_idx4_s_>().rank3_minus4_present, 1));
HANDLE_CODE(bref.unpack(c.get<port_idx4_s_>().rank4_minus4_present, 1));
if (c.get<port_idx4_s_>().rank1_minus4_present) {
HANDLE_CODE(unpack_integer(c.get<port_idx4_s_>().rank1_minus4, bref, (uint8_t)0u, (uint8_t)3u));
}
if (c.get<port_idx4_s_>().rank2_minus4_present) {
HANDLE_CODE(unpack_fixed_seq_of(&(c.get<port_idx4_s_>().rank2_minus4)[0],
bref,
c.get<port_idx4_s_>().rank2_minus4.size(),
integer_packer<uint8_t>(0, 3)));
}
if (c.get<port_idx4_s_>().rank3_minus4_present) {
HANDLE_CODE(unpack_fixed_seq_of(&(c.get<port_idx4_s_>().rank3_minus4)[0],
bref,
c.get<port_idx4_s_>().rank3_minus4.size(),
integer_packer<uint8_t>(0, 3)));
}
if (c.get<port_idx4_s_>().rank4_minus4_present) {
HANDLE_CODE(unpack_fixed_seq_of(&(c.get<port_idx4_s_>().rank4_minus4)[0],
bref,
c.get<port_idx4_s_>().rank4_minus4.size(),
integer_packer<uint8_t>(0, 3)));
}
break;
case types::port_idx2:
HANDLE_CODE(bref.unpack(c.get<port_idx2_s_>().rank1_minus2_present, 1));
HANDLE_CODE(bref.unpack(c.get<port_idx2_s_>().rank2_minus2_present, 1));
if (c.get<port_idx2_s_>().rank1_minus2_present) {
HANDLE_CODE(unpack_integer(c.get<port_idx2_s_>().rank1_minus2, bref, (uint8_t)0u, (uint8_t)1u));
}
if (c.get<port_idx2_s_>().rank2_minus2_present) {
HANDLE_CODE(unpack_fixed_seq_of(&(c.get<port_idx2_s_>().rank2_minus2)[0],
bref,
c.get<port_idx2_s_>().rank2_minus2.size(),
integer_packer<uint8_t>(0, 1)));
}
break;
case types::port_idx1:
break;
default:
log_invalid_choice_id(type_, "port_idx_for8_ranks_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* port_idx_for8_ranks_c::types_opts::to_string() const
{
static const char* options[] = {"portIndex8", "portIndex4", "portIndex2", "portIndex1"};
return convert_enum_idx(options, 4, value, "port_idx_for8_ranks_c::types");
}
uint8_t port_idx_for8_ranks_c::types_opts::to_number() const
{
static const uint8_t options[] = {8, 4, 2, 1};
return map_enum_number(options, 4, value, "port_idx_for8_ranks_c::types");
}
// CSI-ReportConfig ::= SEQUENCE
SRSASN_CODE csi_report_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(carrier_present, 1));
HANDLE_CODE(bref.pack(csi_im_res_for_interference_present, 1));
HANDLE_CODE(bref.pack(nzp_csi_rs_res_for_interference_present, 1));
HANDLE_CODE(bref.pack(report_freq_cfg_present, 1));
HANDLE_CODE(bref.pack(codebook_cfg_present, 1));
HANDLE_CODE(bref.pack(dummy_present, 1));
HANDLE_CODE(bref.pack(cqi_table_present, 1));
HANDLE_CODE(bref.pack(non_pmi_port_ind_present, 1));
HANDLE_CODE(pack_integer(bref, report_cfg_id, (uint8_t)0u, (uint8_t)47u));
if (carrier_present) {
HANDLE_CODE(pack_integer(bref, carrier, (uint8_t)0u, (uint8_t)31u));
}
HANDLE_CODE(pack_integer(bref, res_for_ch_meas, (uint8_t)0u, (uint8_t)111u));
if (csi_im_res_for_interference_present) {
HANDLE_CODE(pack_integer(bref, csi_im_res_for_interference, (uint8_t)0u, (uint8_t)111u));
}
if (nzp_csi_rs_res_for_interference_present) {
HANDLE_CODE(pack_integer(bref, nzp_csi_rs_res_for_interference, (uint8_t)0u, (uint8_t)111u));
}
HANDLE_CODE(report_cfg_type.pack(bref));
HANDLE_CODE(report_quant.pack(bref));
if (report_freq_cfg_present) {
HANDLE_CODE(bref.pack(report_freq_cfg.cqi_format_ind_present, 1));
HANDLE_CODE(bref.pack(report_freq_cfg.pmi_format_ind_present, 1));
HANDLE_CODE(bref.pack(report_freq_cfg.csi_report_band_present, 1));
if (report_freq_cfg.cqi_format_ind_present) {
HANDLE_CODE(report_freq_cfg.cqi_format_ind.pack(bref));
}
if (report_freq_cfg.pmi_format_ind_present) {
HANDLE_CODE(report_freq_cfg.pmi_format_ind.pack(bref));
}
if (report_freq_cfg.csi_report_band_present) {
HANDLE_CODE(report_freq_cfg.csi_report_band.pack(bref));
}
}
HANDLE_CODE(time_restrict_for_ch_meass.pack(bref));
HANDLE_CODE(time_restrict_for_interference_meass.pack(bref));
if (codebook_cfg_present) {
HANDLE_CODE(codebook_cfg.pack(bref));
}
if (dummy_present) {
HANDLE_CODE(dummy.pack(bref));
}
HANDLE_CODE(group_based_beam_report.pack(bref));
if (cqi_table_present) {
HANDLE_CODE(cqi_table.pack(bref));
}
HANDLE_CODE(subband_size.pack(bref));
if (non_pmi_port_ind_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, non_pmi_port_ind, 1, 128));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= semi_persistent_on_pusch_v1530.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(semi_persistent_on_pusch_v1530.is_present(), 1));
if (semi_persistent_on_pusch_v1530.is_present()) {
HANDLE_CODE(semi_persistent_on_pusch_v1530->report_slot_cfg_v1530.pack(bref));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_report_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(carrier_present, 1));
HANDLE_CODE(bref.unpack(csi_im_res_for_interference_present, 1));
HANDLE_CODE(bref.unpack(nzp_csi_rs_res_for_interference_present, 1));
HANDLE_CODE(bref.unpack(report_freq_cfg_present, 1));
HANDLE_CODE(bref.unpack(codebook_cfg_present, 1));
HANDLE_CODE(bref.unpack(dummy_present, 1));
HANDLE_CODE(bref.unpack(cqi_table_present, 1));
HANDLE_CODE(bref.unpack(non_pmi_port_ind_present, 1));
HANDLE_CODE(unpack_integer(report_cfg_id, bref, (uint8_t)0u, (uint8_t)47u));
if (carrier_present) {
HANDLE_CODE(unpack_integer(carrier, bref, (uint8_t)0u, (uint8_t)31u));
}
HANDLE_CODE(unpack_integer(res_for_ch_meas, bref, (uint8_t)0u, (uint8_t)111u));
if (csi_im_res_for_interference_present) {
HANDLE_CODE(unpack_integer(csi_im_res_for_interference, bref, (uint8_t)0u, (uint8_t)111u));
}
if (nzp_csi_rs_res_for_interference_present) {
HANDLE_CODE(unpack_integer(nzp_csi_rs_res_for_interference, bref, (uint8_t)0u, (uint8_t)111u));
}
HANDLE_CODE(report_cfg_type.unpack(bref));
HANDLE_CODE(report_quant.unpack(bref));
if (report_freq_cfg_present) {
HANDLE_CODE(bref.unpack(report_freq_cfg.cqi_format_ind_present, 1));
HANDLE_CODE(bref.unpack(report_freq_cfg.pmi_format_ind_present, 1));
HANDLE_CODE(bref.unpack(report_freq_cfg.csi_report_band_present, 1));
if (report_freq_cfg.cqi_format_ind_present) {
HANDLE_CODE(report_freq_cfg.cqi_format_ind.unpack(bref));
}
if (report_freq_cfg.pmi_format_ind_present) {
HANDLE_CODE(report_freq_cfg.pmi_format_ind.unpack(bref));
}
if (report_freq_cfg.csi_report_band_present) {
HANDLE_CODE(report_freq_cfg.csi_report_band.unpack(bref));
}
}
HANDLE_CODE(time_restrict_for_ch_meass.unpack(bref));
HANDLE_CODE(time_restrict_for_interference_meass.unpack(bref));
if (codebook_cfg_present) {
HANDLE_CODE(codebook_cfg.unpack(bref));
}
if (dummy_present) {
HANDLE_CODE(dummy.unpack(bref));
}
HANDLE_CODE(group_based_beam_report.unpack(bref));
if (cqi_table_present) {
HANDLE_CODE(cqi_table.unpack(bref));
}
HANDLE_CODE(subband_size.unpack(bref));
if (non_pmi_port_ind_present) {
HANDLE_CODE(unpack_dyn_seq_of(non_pmi_port_ind, bref, 1, 128));
}
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool semi_persistent_on_pusch_v1530_present;
HANDLE_CODE(bref.unpack(semi_persistent_on_pusch_v1530_present, 1));
semi_persistent_on_pusch_v1530.set_present(semi_persistent_on_pusch_v1530_present);
if (semi_persistent_on_pusch_v1530.is_present()) {
HANDLE_CODE(semi_persistent_on_pusch_v1530->report_slot_cfg_v1530.unpack(bref));
}
}
}
return SRSASN_SUCCESS;
}
void csi_report_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("reportConfigId", report_cfg_id);
if (carrier_present) {
j.write_int("carrier", carrier);
}
j.write_int("resourcesForChannelMeasurement", res_for_ch_meas);
if (csi_im_res_for_interference_present) {
j.write_int("csi-IM-ResourcesForInterference", csi_im_res_for_interference);
}
if (nzp_csi_rs_res_for_interference_present) {
j.write_int("nzp-CSI-RS-ResourcesForInterference", nzp_csi_rs_res_for_interference);
}
j.write_fieldname("reportConfigType");
report_cfg_type.to_json(j);
j.write_fieldname("reportQuantity");
report_quant.to_json(j);
if (report_freq_cfg_present) {
j.write_fieldname("reportFreqConfiguration");
j.start_obj();
if (report_freq_cfg.cqi_format_ind_present) {
j.write_str("cqi-FormatIndicator", report_freq_cfg.cqi_format_ind.to_string());
}
if (report_freq_cfg.pmi_format_ind_present) {
j.write_str("pmi-FormatIndicator", report_freq_cfg.pmi_format_ind.to_string());
}
if (report_freq_cfg.csi_report_band_present) {
j.write_fieldname("csi-ReportingBand");
report_freq_cfg.csi_report_band.to_json(j);
}
j.end_obj();
}
j.write_str("timeRestrictionForChannelMeasurements", time_restrict_for_ch_meass.to_string());
j.write_str("timeRestrictionForInterferenceMeasurements", time_restrict_for_interference_meass.to_string());
if (codebook_cfg_present) {
j.write_fieldname("codebookConfig");
codebook_cfg.to_json(j);
}
if (dummy_present) {
j.write_str("dummy", dummy.to_string());
}
j.write_fieldname("groupBasedBeamReporting");
group_based_beam_report.to_json(j);
if (cqi_table_present) {
j.write_str("cqi-Table", cqi_table.to_string());
}
j.write_str("subbandSize", subband_size.to_string());
if (non_pmi_port_ind_present) {
j.start_array("non-PMI-PortIndication");
for (const auto& e1 : non_pmi_port_ind) {
e1.to_json(j);
}
j.end_array();
}
if (ext) {
if (semi_persistent_on_pusch_v1530.is_present()) {
j.write_fieldname("semiPersistentOnPUSCH-v1530");
j.start_obj();
j.write_str("reportSlotConfig-v1530", semi_persistent_on_pusch_v1530->report_slot_cfg_v1530.to_string());
j.end_obj();
}
}
j.end_obj();
}
void csi_report_cfg_s::report_cfg_type_c_::destroy_()
{
switch (type_) {
case types::periodic:
c.destroy<periodic_s_>();
break;
case types::semi_persistent_on_pucch:
c.destroy<semi_persistent_on_pucch_s_>();
break;
case types::semi_persistent_on_pusch:
c.destroy<semi_persistent_on_pusch_s_>();
break;
case types::aperiodic:
c.destroy<aperiodic_s_>();
break;
default:
break;
}
}
void csi_report_cfg_s::report_cfg_type_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::periodic:
c.init<periodic_s_>();
break;
case types::semi_persistent_on_pucch:
c.init<semi_persistent_on_pucch_s_>();
break;
case types::semi_persistent_on_pusch:
c.init<semi_persistent_on_pusch_s_>();
break;
case types::aperiodic:
c.init<aperiodic_s_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "csi_report_cfg_s::report_cfg_type_c_");
}
}
csi_report_cfg_s::report_cfg_type_c_::report_cfg_type_c_(const csi_report_cfg_s::report_cfg_type_c_& other)
{
type_ = other.type();
switch (type_) {
case types::periodic:
c.init(other.c.get<periodic_s_>());
break;
case types::semi_persistent_on_pucch:
c.init(other.c.get<semi_persistent_on_pucch_s_>());
break;
case types::semi_persistent_on_pusch:
c.init(other.c.get<semi_persistent_on_pusch_s_>());
break;
case types::aperiodic:
c.init(other.c.get<aperiodic_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "csi_report_cfg_s::report_cfg_type_c_");
}
}
csi_report_cfg_s::report_cfg_type_c_&
csi_report_cfg_s::report_cfg_type_c_::operator=(const csi_report_cfg_s::report_cfg_type_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::periodic:
c.set(other.c.get<periodic_s_>());
break;
case types::semi_persistent_on_pucch:
c.set(other.c.get<semi_persistent_on_pucch_s_>());
break;
case types::semi_persistent_on_pusch:
c.set(other.c.get<semi_persistent_on_pusch_s_>());
break;
case types::aperiodic:
c.set(other.c.get<aperiodic_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "csi_report_cfg_s::report_cfg_type_c_");
}
return *this;
}
csi_report_cfg_s::report_cfg_type_c_::periodic_s_& csi_report_cfg_s::report_cfg_type_c_::set_periodic()
{
set(types::periodic);
return c.get<periodic_s_>();
}
csi_report_cfg_s::report_cfg_type_c_::semi_persistent_on_pucch_s_&
csi_report_cfg_s::report_cfg_type_c_::set_semi_persistent_on_pucch()
{
set(types::semi_persistent_on_pucch);
return c.get<semi_persistent_on_pucch_s_>();
}
csi_report_cfg_s::report_cfg_type_c_::semi_persistent_on_pusch_s_&
csi_report_cfg_s::report_cfg_type_c_::set_semi_persistent_on_pusch()
{
set(types::semi_persistent_on_pusch);
return c.get<semi_persistent_on_pusch_s_>();
}
csi_report_cfg_s::report_cfg_type_c_::aperiodic_s_& csi_report_cfg_s::report_cfg_type_c_::set_aperiodic()
{
set(types::aperiodic);
return c.get<aperiodic_s_>();
}
void csi_report_cfg_s::report_cfg_type_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::periodic:
j.write_fieldname("periodic");
j.start_obj();
j.write_fieldname("reportSlotConfig");
c.get<periodic_s_>().report_slot_cfg.to_json(j);
j.start_array("pucch-CSI-ResourceList");
for (const auto& e1 : c.get<periodic_s_>().pucch_csi_res_list) {
e1.to_json(j);
}
j.end_array();
j.end_obj();
break;
case types::semi_persistent_on_pucch:
j.write_fieldname("semiPersistentOnPUCCH");
j.start_obj();
j.write_fieldname("reportSlotConfig");
c.get<semi_persistent_on_pucch_s_>().report_slot_cfg.to_json(j);
j.start_array("pucch-CSI-ResourceList");
for (const auto& e1 : c.get<semi_persistent_on_pucch_s_>().pucch_csi_res_list) {
e1.to_json(j);
}
j.end_array();
j.end_obj();
break;
case types::semi_persistent_on_pusch:
j.write_fieldname("semiPersistentOnPUSCH");
j.start_obj();
j.write_str("reportSlotConfig", c.get<semi_persistent_on_pusch_s_>().report_slot_cfg.to_string());
j.start_array("reportSlotOffsetList");
for (const auto& e1 : c.get<semi_persistent_on_pusch_s_>().report_slot_offset_list) {
j.write_int(e1);
}
j.end_array();
j.write_int("p0alpha", c.get<semi_persistent_on_pusch_s_>().p0alpha);
j.end_obj();
break;
case types::aperiodic:
j.write_fieldname("aperiodic");
j.start_obj();
j.start_array("reportSlotOffsetList");
for (const auto& e1 : c.get<aperiodic_s_>().report_slot_offset_list) {
j.write_int(e1);
}
j.end_array();
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "csi_report_cfg_s::report_cfg_type_c_");
}
j.end_obj();
}
SRSASN_CODE csi_report_cfg_s::report_cfg_type_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::periodic:
HANDLE_CODE(c.get<periodic_s_>().report_slot_cfg.pack(bref));
HANDLE_CODE(pack_dyn_seq_of(bref, c.get<periodic_s_>().pucch_csi_res_list, 1, 4));
break;
case types::semi_persistent_on_pucch:
HANDLE_CODE(c.get<semi_persistent_on_pucch_s_>().report_slot_cfg.pack(bref));
HANDLE_CODE(pack_dyn_seq_of(bref, c.get<semi_persistent_on_pucch_s_>().pucch_csi_res_list, 1, 4));
break;
case types::semi_persistent_on_pusch:
HANDLE_CODE(c.get<semi_persistent_on_pusch_s_>().report_slot_cfg.pack(bref));
HANDLE_CODE(pack_dyn_seq_of(
bref, c.get<semi_persistent_on_pusch_s_>().report_slot_offset_list, 1, 16, integer_packer<uint8_t>(0, 32)));
HANDLE_CODE(pack_integer(bref, c.get<semi_persistent_on_pusch_s_>().p0alpha, (uint8_t)0u, (uint8_t)29u));
break;
case types::aperiodic:
HANDLE_CODE(
pack_dyn_seq_of(bref, c.get<aperiodic_s_>().report_slot_offset_list, 1, 16, integer_packer<uint8_t>(0, 32)));
break;
default:
log_invalid_choice_id(type_, "csi_report_cfg_s::report_cfg_type_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_report_cfg_s::report_cfg_type_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::periodic:
HANDLE_CODE(c.get<periodic_s_>().report_slot_cfg.unpack(bref));
HANDLE_CODE(unpack_dyn_seq_of(c.get<periodic_s_>().pucch_csi_res_list, bref, 1, 4));
break;
case types::semi_persistent_on_pucch:
HANDLE_CODE(c.get<semi_persistent_on_pucch_s_>().report_slot_cfg.unpack(bref));
HANDLE_CODE(unpack_dyn_seq_of(c.get<semi_persistent_on_pucch_s_>().pucch_csi_res_list, bref, 1, 4));
break;
case types::semi_persistent_on_pusch:
HANDLE_CODE(c.get<semi_persistent_on_pusch_s_>().report_slot_cfg.unpack(bref));
HANDLE_CODE(unpack_dyn_seq_of(
c.get<semi_persistent_on_pusch_s_>().report_slot_offset_list, bref, 1, 16, integer_packer<uint8_t>(0, 32)));
HANDLE_CODE(unpack_integer(c.get<semi_persistent_on_pusch_s_>().p0alpha, bref, (uint8_t)0u, (uint8_t)29u));
break;
case types::aperiodic:
HANDLE_CODE(unpack_dyn_seq_of(
c.get<aperiodic_s_>().report_slot_offset_list, bref, 1, 16, integer_packer<uint8_t>(0, 32)));
break;
default:
log_invalid_choice_id(type_, "csi_report_cfg_s::report_cfg_type_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* csi_report_cfg_s::report_cfg_type_c_::semi_persistent_on_pusch_s_::report_slot_cfg_opts::to_string() const
{
static const char* options[] = {"sl5", "sl10", "sl20", "sl40", "sl80", "sl160", "sl320"};
return convert_enum_idx(
options, 7, value, "csi_report_cfg_s::report_cfg_type_c_::semi_persistent_on_pusch_s_::report_slot_cfg_e_");
}
uint16_t csi_report_cfg_s::report_cfg_type_c_::semi_persistent_on_pusch_s_::report_slot_cfg_opts::to_number() const
{
static const uint16_t options[] = {5, 10, 20, 40, 80, 160, 320};
return map_enum_number(
options, 7, value, "csi_report_cfg_s::report_cfg_type_c_::semi_persistent_on_pusch_s_::report_slot_cfg_e_");
}
const char* csi_report_cfg_s::report_cfg_type_c_::types_opts::to_string() const
{
static const char* options[] = {"periodic", "semiPersistentOnPUCCH", "semiPersistentOnPUSCH", "aperiodic"};
return convert_enum_idx(options, 4, value, "csi_report_cfg_s::report_cfg_type_c_::types");
}
void csi_report_cfg_s::report_quant_c_::set(types::options e)
{
type_ = e;
}
void csi_report_cfg_s::report_quant_c_::set_none()
{
set(types::none);
}
void csi_report_cfg_s::report_quant_c_::set_cri_ri_pmi_cqi()
{
set(types::cri_ri_pmi_cqi);
}
void csi_report_cfg_s::report_quant_c_::set_cri_ri_i1()
{
set(types::cri_ri_i1);
}
csi_report_cfg_s::report_quant_c_::cri_ri_i1_cqi_s_& csi_report_cfg_s::report_quant_c_::set_cri_ri_i1_cqi()
{
set(types::cri_ri_i1_cqi);
return c;
}
void csi_report_cfg_s::report_quant_c_::set_cri_ri_cqi()
{
set(types::cri_ri_cqi);
}
void csi_report_cfg_s::report_quant_c_::set_cri_rsrp()
{
set(types::cri_rsrp);
}
void csi_report_cfg_s::report_quant_c_::set_ssb_idx_rsrp()
{
set(types::ssb_idx_rsrp);
}
void csi_report_cfg_s::report_quant_c_::set_cri_ri_li_pmi_cqi()
{
set(types::cri_ri_li_pmi_cqi);
}
void csi_report_cfg_s::report_quant_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::none:
break;
case types::cri_ri_pmi_cqi:
break;
case types::cri_ri_i1:
break;
case types::cri_ri_i1_cqi:
j.write_fieldname("cri-RI-i1-CQI");
j.start_obj();
if (c.pdsch_bundle_size_for_csi_present) {
j.write_str("pdsch-BundleSizeForCSI", c.pdsch_bundle_size_for_csi.to_string());
}
j.end_obj();
break;
case types::cri_ri_cqi:
break;
case types::cri_rsrp:
break;
case types::ssb_idx_rsrp:
break;
case types::cri_ri_li_pmi_cqi:
break;
default:
log_invalid_choice_id(type_, "csi_report_cfg_s::report_quant_c_");
}
j.end_obj();
}
SRSASN_CODE csi_report_cfg_s::report_quant_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::none:
break;
case types::cri_ri_pmi_cqi:
break;
case types::cri_ri_i1:
break;
case types::cri_ri_i1_cqi:
HANDLE_CODE(bref.pack(c.pdsch_bundle_size_for_csi_present, 1));
if (c.pdsch_bundle_size_for_csi_present) {
HANDLE_CODE(c.pdsch_bundle_size_for_csi.pack(bref));
}
break;
case types::cri_ri_cqi:
break;
case types::cri_rsrp:
break;
case types::ssb_idx_rsrp:
break;
case types::cri_ri_li_pmi_cqi:
break;
default:
log_invalid_choice_id(type_, "csi_report_cfg_s::report_quant_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_report_cfg_s::report_quant_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::none:
break;
case types::cri_ri_pmi_cqi:
break;
case types::cri_ri_i1:
break;
case types::cri_ri_i1_cqi:
HANDLE_CODE(bref.unpack(c.pdsch_bundle_size_for_csi_present, 1));
if (c.pdsch_bundle_size_for_csi_present) {
HANDLE_CODE(c.pdsch_bundle_size_for_csi.unpack(bref));
}
break;
case types::cri_ri_cqi:
break;
case types::cri_rsrp:
break;
case types::ssb_idx_rsrp:
break;
case types::cri_ri_li_pmi_cqi:
break;
default:
log_invalid_choice_id(type_, "csi_report_cfg_s::report_quant_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* csi_report_cfg_s::report_quant_c_::cri_ri_i1_cqi_s_::pdsch_bundle_size_for_csi_opts::to_string() const
{
static const char* options[] = {"n2", "n4"};
return convert_enum_idx(
options, 2, value, "csi_report_cfg_s::report_quant_c_::cri_ri_i1_cqi_s_::pdsch_bundle_size_for_csi_e_");
}
uint8_t csi_report_cfg_s::report_quant_c_::cri_ri_i1_cqi_s_::pdsch_bundle_size_for_csi_opts::to_number() const
{
static const uint8_t options[] = {2, 4};
return map_enum_number(
options, 2, value, "csi_report_cfg_s::report_quant_c_::cri_ri_i1_cqi_s_::pdsch_bundle_size_for_csi_e_");
}
const char* csi_report_cfg_s::report_quant_c_::types_opts::to_string() const
{
static const char* options[] = {"none",
"cri-RI-PMI-CQI",
"cri-RI-i1",
"cri-RI-i1-CQI",
"cri-RI-CQI",
"cri-RSRP",
"ssb-Index-RSRP",
"cri-RI-LI-PMI-CQI"};
return convert_enum_idx(options, 8, value, "csi_report_cfg_s::report_quant_c_::types");
}
const char* csi_report_cfg_s::report_freq_cfg_s_::cqi_format_ind_opts::to_string() const
{
static const char* options[] = {"widebandCQI", "subbandCQI"};
return convert_enum_idx(options, 2, value, "csi_report_cfg_s::report_freq_cfg_s_::cqi_format_ind_e_");
}
const char* csi_report_cfg_s::report_freq_cfg_s_::pmi_format_ind_opts::to_string() const
{
static const char* options[] = {"widebandPMI", "subbandPMI"};
return convert_enum_idx(options, 2, value, "csi_report_cfg_s::report_freq_cfg_s_::pmi_format_ind_e_");
}
void csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_::destroy_()
{
switch (type_) {
case types::subbands3:
c.destroy<fixed_bitstring<3> >();
break;
case types::subbands4:
c.destroy<fixed_bitstring<4> >();
break;
case types::subbands5:
c.destroy<fixed_bitstring<5> >();
break;
case types::subbands6:
c.destroy<fixed_bitstring<6> >();
break;
case types::subbands7:
c.destroy<fixed_bitstring<7> >();
break;
case types::subbands8:
c.destroy<fixed_bitstring<8> >();
break;
case types::subbands9:
c.destroy<fixed_bitstring<9> >();
break;
case types::subbands10:
c.destroy<fixed_bitstring<10> >();
break;
case types::subbands11:
c.destroy<fixed_bitstring<11> >();
break;
case types::subbands12:
c.destroy<fixed_bitstring<12> >();
break;
case types::subbands13:
c.destroy<fixed_bitstring<13> >();
break;
case types::subbands14:
c.destroy<fixed_bitstring<14> >();
break;
case types::subbands15:
c.destroy<fixed_bitstring<15> >();
break;
case types::subbands16:
c.destroy<fixed_bitstring<16> >();
break;
case types::subbands17:
c.destroy<fixed_bitstring<17> >();
break;
case types::subbands18:
c.destroy<fixed_bitstring<18> >();
break;
case types::subbands19_v1530:
c.destroy<fixed_bitstring<19> >();
break;
default:
break;
}
}
void csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::subbands3:
c.init<fixed_bitstring<3> >();
break;
case types::subbands4:
c.init<fixed_bitstring<4> >();
break;
case types::subbands5:
c.init<fixed_bitstring<5> >();
break;
case types::subbands6:
c.init<fixed_bitstring<6> >();
break;
case types::subbands7:
c.init<fixed_bitstring<7> >();
break;
case types::subbands8:
c.init<fixed_bitstring<8> >();
break;
case types::subbands9:
c.init<fixed_bitstring<9> >();
break;
case types::subbands10:
c.init<fixed_bitstring<10> >();
break;
case types::subbands11:
c.init<fixed_bitstring<11> >();
break;
case types::subbands12:
c.init<fixed_bitstring<12> >();
break;
case types::subbands13:
c.init<fixed_bitstring<13> >();
break;
case types::subbands14:
c.init<fixed_bitstring<14> >();
break;
case types::subbands15:
c.init<fixed_bitstring<15> >();
break;
case types::subbands16:
c.init<fixed_bitstring<16> >();
break;
case types::subbands17:
c.init<fixed_bitstring<17> >();
break;
case types::subbands18:
c.init<fixed_bitstring<18> >();
break;
case types::subbands19_v1530:
c.init<fixed_bitstring<19> >();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_");
}
}
csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_::csi_report_band_c_(
const csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_& other)
{
type_ = other.type();
switch (type_) {
case types::subbands3:
c.init(other.c.get<fixed_bitstring<3> >());
break;
case types::subbands4:
c.init(other.c.get<fixed_bitstring<4> >());
break;
case types::subbands5:
c.init(other.c.get<fixed_bitstring<5> >());
break;
case types::subbands6:
c.init(other.c.get<fixed_bitstring<6> >());
break;
case types::subbands7:
c.init(other.c.get<fixed_bitstring<7> >());
break;
case types::subbands8:
c.init(other.c.get<fixed_bitstring<8> >());
break;
case types::subbands9:
c.init(other.c.get<fixed_bitstring<9> >());
break;
case types::subbands10:
c.init(other.c.get<fixed_bitstring<10> >());
break;
case types::subbands11:
c.init(other.c.get<fixed_bitstring<11> >());
break;
case types::subbands12:
c.init(other.c.get<fixed_bitstring<12> >());
break;
case types::subbands13:
c.init(other.c.get<fixed_bitstring<13> >());
break;
case types::subbands14:
c.init(other.c.get<fixed_bitstring<14> >());
break;
case types::subbands15:
c.init(other.c.get<fixed_bitstring<15> >());
break;
case types::subbands16:
c.init(other.c.get<fixed_bitstring<16> >());
break;
case types::subbands17:
c.init(other.c.get<fixed_bitstring<17> >());
break;
case types::subbands18:
c.init(other.c.get<fixed_bitstring<18> >());
break;
case types::subbands19_v1530:
c.init(other.c.get<fixed_bitstring<19> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_");
}
}
csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_&
csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_::operator=(
const csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::subbands3:
c.set(other.c.get<fixed_bitstring<3> >());
break;
case types::subbands4:
c.set(other.c.get<fixed_bitstring<4> >());
break;
case types::subbands5:
c.set(other.c.get<fixed_bitstring<5> >());
break;
case types::subbands6:
c.set(other.c.get<fixed_bitstring<6> >());
break;
case types::subbands7:
c.set(other.c.get<fixed_bitstring<7> >());
break;
case types::subbands8:
c.set(other.c.get<fixed_bitstring<8> >());
break;
case types::subbands9:
c.set(other.c.get<fixed_bitstring<9> >());
break;
case types::subbands10:
c.set(other.c.get<fixed_bitstring<10> >());
break;
case types::subbands11:
c.set(other.c.get<fixed_bitstring<11> >());
break;
case types::subbands12:
c.set(other.c.get<fixed_bitstring<12> >());
break;
case types::subbands13:
c.set(other.c.get<fixed_bitstring<13> >());
break;
case types::subbands14:
c.set(other.c.get<fixed_bitstring<14> >());
break;
case types::subbands15:
c.set(other.c.get<fixed_bitstring<15> >());
break;
case types::subbands16:
c.set(other.c.get<fixed_bitstring<16> >());
break;
case types::subbands17:
c.set(other.c.get<fixed_bitstring<17> >());
break;
case types::subbands18:
c.set(other.c.get<fixed_bitstring<18> >());
break;
case types::subbands19_v1530:
c.set(other.c.get<fixed_bitstring<19> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_");
}
return *this;
}
fixed_bitstring<3>& csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_::set_subbands3()
{
set(types::subbands3);
return c.get<fixed_bitstring<3> >();
}
fixed_bitstring<4>& csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_::set_subbands4()
{
set(types::subbands4);
return c.get<fixed_bitstring<4> >();
}
fixed_bitstring<5>& csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_::set_subbands5()
{
set(types::subbands5);
return c.get<fixed_bitstring<5> >();
}
fixed_bitstring<6>& csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_::set_subbands6()
{
set(types::subbands6);
return c.get<fixed_bitstring<6> >();
}
fixed_bitstring<7>& csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_::set_subbands7()
{
set(types::subbands7);
return c.get<fixed_bitstring<7> >();
}
fixed_bitstring<8>& csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_::set_subbands8()
{
set(types::subbands8);
return c.get<fixed_bitstring<8> >();
}
fixed_bitstring<9>& csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_::set_subbands9()
{
set(types::subbands9);
return c.get<fixed_bitstring<9> >();
}
fixed_bitstring<10>& csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_::set_subbands10()
{
set(types::subbands10);
return c.get<fixed_bitstring<10> >();
}
fixed_bitstring<11>& csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_::set_subbands11()
{
set(types::subbands11);
return c.get<fixed_bitstring<11> >();
}
fixed_bitstring<12>& csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_::set_subbands12()
{
set(types::subbands12);
return c.get<fixed_bitstring<12> >();
}
fixed_bitstring<13>& csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_::set_subbands13()
{
set(types::subbands13);
return c.get<fixed_bitstring<13> >();
}
fixed_bitstring<14>& csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_::set_subbands14()
{
set(types::subbands14);
return c.get<fixed_bitstring<14> >();
}
fixed_bitstring<15>& csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_::set_subbands15()
{
set(types::subbands15);
return c.get<fixed_bitstring<15> >();
}
fixed_bitstring<16>& csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_::set_subbands16()
{
set(types::subbands16);
return c.get<fixed_bitstring<16> >();
}
fixed_bitstring<17>& csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_::set_subbands17()
{
set(types::subbands17);
return c.get<fixed_bitstring<17> >();
}
fixed_bitstring<18>& csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_::set_subbands18()
{
set(types::subbands18);
return c.get<fixed_bitstring<18> >();
}
fixed_bitstring<19>& csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_::set_subbands19_v1530()
{
set(types::subbands19_v1530);
return c.get<fixed_bitstring<19> >();
}
void csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::subbands3:
j.write_str("subbands3", c.get<fixed_bitstring<3> >().to_string());
break;
case types::subbands4:
j.write_str("subbands4", c.get<fixed_bitstring<4> >().to_string());
break;
case types::subbands5:
j.write_str("subbands5", c.get<fixed_bitstring<5> >().to_string());
break;
case types::subbands6:
j.write_str("subbands6", c.get<fixed_bitstring<6> >().to_string());
break;
case types::subbands7:
j.write_str("subbands7", c.get<fixed_bitstring<7> >().to_string());
break;
case types::subbands8:
j.write_str("subbands8", c.get<fixed_bitstring<8> >().to_string());
break;
case types::subbands9:
j.write_str("subbands9", c.get<fixed_bitstring<9> >().to_string());
break;
case types::subbands10:
j.write_str("subbands10", c.get<fixed_bitstring<10> >().to_string());
break;
case types::subbands11:
j.write_str("subbands11", c.get<fixed_bitstring<11> >().to_string());
break;
case types::subbands12:
j.write_str("subbands12", c.get<fixed_bitstring<12> >().to_string());
break;
case types::subbands13:
j.write_str("subbands13", c.get<fixed_bitstring<13> >().to_string());
break;
case types::subbands14:
j.write_str("subbands14", c.get<fixed_bitstring<14> >().to_string());
break;
case types::subbands15:
j.write_str("subbands15", c.get<fixed_bitstring<15> >().to_string());
break;
case types::subbands16:
j.write_str("subbands16", c.get<fixed_bitstring<16> >().to_string());
break;
case types::subbands17:
j.write_str("subbands17", c.get<fixed_bitstring<17> >().to_string());
break;
case types::subbands18:
j.write_str("subbands18", c.get<fixed_bitstring<18> >().to_string());
break;
case types::subbands19_v1530:
j.write_str("subbands19-v1530", c.get<fixed_bitstring<19> >().to_string());
break;
default:
log_invalid_choice_id(type_, "csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_");
}
j.end_obj();
}
SRSASN_CODE csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::subbands3:
HANDLE_CODE(c.get<fixed_bitstring<3> >().pack(bref));
break;
case types::subbands4:
HANDLE_CODE(c.get<fixed_bitstring<4> >().pack(bref));
break;
case types::subbands5:
HANDLE_CODE(c.get<fixed_bitstring<5> >().pack(bref));
break;
case types::subbands6:
HANDLE_CODE(c.get<fixed_bitstring<6> >().pack(bref));
break;
case types::subbands7:
HANDLE_CODE(c.get<fixed_bitstring<7> >().pack(bref));
break;
case types::subbands8:
HANDLE_CODE(c.get<fixed_bitstring<8> >().pack(bref));
break;
case types::subbands9:
HANDLE_CODE(c.get<fixed_bitstring<9> >().pack(bref));
break;
case types::subbands10:
HANDLE_CODE(c.get<fixed_bitstring<10> >().pack(bref));
break;
case types::subbands11:
HANDLE_CODE(c.get<fixed_bitstring<11> >().pack(bref));
break;
case types::subbands12:
HANDLE_CODE(c.get<fixed_bitstring<12> >().pack(bref));
break;
case types::subbands13:
HANDLE_CODE(c.get<fixed_bitstring<13> >().pack(bref));
break;
case types::subbands14:
HANDLE_CODE(c.get<fixed_bitstring<14> >().pack(bref));
break;
case types::subbands15:
HANDLE_CODE(c.get<fixed_bitstring<15> >().pack(bref));
break;
case types::subbands16:
HANDLE_CODE(c.get<fixed_bitstring<16> >().pack(bref));
break;
case types::subbands17:
HANDLE_CODE(c.get<fixed_bitstring<17> >().pack(bref));
break;
case types::subbands18:
HANDLE_CODE(c.get<fixed_bitstring<18> >().pack(bref));
break;
case types::subbands19_v1530: {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(c.get<fixed_bitstring<19> >().pack(bref));
} break;
default:
log_invalid_choice_id(type_, "csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::subbands3:
HANDLE_CODE(c.get<fixed_bitstring<3> >().unpack(bref));
break;
case types::subbands4:
HANDLE_CODE(c.get<fixed_bitstring<4> >().unpack(bref));
break;
case types::subbands5:
HANDLE_CODE(c.get<fixed_bitstring<5> >().unpack(bref));
break;
case types::subbands6:
HANDLE_CODE(c.get<fixed_bitstring<6> >().unpack(bref));
break;
case types::subbands7:
HANDLE_CODE(c.get<fixed_bitstring<7> >().unpack(bref));
break;
case types::subbands8:
HANDLE_CODE(c.get<fixed_bitstring<8> >().unpack(bref));
break;
case types::subbands9:
HANDLE_CODE(c.get<fixed_bitstring<9> >().unpack(bref));
break;
case types::subbands10:
HANDLE_CODE(c.get<fixed_bitstring<10> >().unpack(bref));
break;
case types::subbands11:
HANDLE_CODE(c.get<fixed_bitstring<11> >().unpack(bref));
break;
case types::subbands12:
HANDLE_CODE(c.get<fixed_bitstring<12> >().unpack(bref));
break;
case types::subbands13:
HANDLE_CODE(c.get<fixed_bitstring<13> >().unpack(bref));
break;
case types::subbands14:
HANDLE_CODE(c.get<fixed_bitstring<14> >().unpack(bref));
break;
case types::subbands15:
HANDLE_CODE(c.get<fixed_bitstring<15> >().unpack(bref));
break;
case types::subbands16:
HANDLE_CODE(c.get<fixed_bitstring<16> >().unpack(bref));
break;
case types::subbands17:
HANDLE_CODE(c.get<fixed_bitstring<17> >().unpack(bref));
break;
case types::subbands18:
HANDLE_CODE(c.get<fixed_bitstring<18> >().unpack(bref));
break;
case types::subbands19_v1530: {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(c.get<fixed_bitstring<19> >().unpack(bref));
} break;
default:
log_invalid_choice_id(type_, "csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_::types_opts::to_string() const
{
static const char* options[] = {"subbands3",
"subbands4",
"subbands5",
"subbands6",
"subbands7",
"subbands8",
"subbands9",
"subbands10",
"subbands11",
"subbands12",
"subbands13",
"subbands14",
"subbands15",
"subbands16",
"subbands17",
"subbands18",
"subbands19-v1530"};
return convert_enum_idx(options, 17, value, "csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_::types");
}
uint8_t csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_::types_opts::to_number() const
{
static const uint8_t options[] = {3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19};
return map_enum_number(options, 17, value, "csi_report_cfg_s::report_freq_cfg_s_::csi_report_band_c_::types");
}
const char* csi_report_cfg_s::time_restrict_for_ch_meass_opts::to_string() const
{
static const char* options[] = {"configured", "notConfigured"};
return convert_enum_idx(options, 2, value, "csi_report_cfg_s::time_restrict_for_ch_meass_e_");
}
const char* csi_report_cfg_s::time_restrict_for_interference_meass_opts::to_string() const
{
static const char* options[] = {"configured", "notConfigured"};
return convert_enum_idx(options, 2, value, "csi_report_cfg_s::time_restrict_for_interference_meass_e_");
}
const char* csi_report_cfg_s::dummy_opts::to_string() const
{
static const char* options[] = {"n1", "n2"};
return convert_enum_idx(options, 2, value, "csi_report_cfg_s::dummy_e_");
}
uint8_t csi_report_cfg_s::dummy_opts::to_number() const
{
static const uint8_t options[] = {1, 2};
return map_enum_number(options, 2, value, "csi_report_cfg_s::dummy_e_");
}
void csi_report_cfg_s::group_based_beam_report_c_::set(types::options e)
{
type_ = e;
}
void csi_report_cfg_s::group_based_beam_report_c_::set_enabled()
{
set(types::enabled);
}
csi_report_cfg_s::group_based_beam_report_c_::disabled_s_& csi_report_cfg_s::group_based_beam_report_c_::set_disabled()
{
set(types::disabled);
return c;
}
void csi_report_cfg_s::group_based_beam_report_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::enabled:
break;
case types::disabled:
j.write_fieldname("disabled");
j.start_obj();
if (c.nrof_reported_rs_present) {
j.write_str("nrofReportedRS", c.nrof_reported_rs.to_string());
}
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "csi_report_cfg_s::group_based_beam_report_c_");
}
j.end_obj();
}
SRSASN_CODE csi_report_cfg_s::group_based_beam_report_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::enabled:
break;
case types::disabled:
HANDLE_CODE(bref.pack(c.nrof_reported_rs_present, 1));
if (c.nrof_reported_rs_present) {
HANDLE_CODE(c.nrof_reported_rs.pack(bref));
}
break;
default:
log_invalid_choice_id(type_, "csi_report_cfg_s::group_based_beam_report_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_report_cfg_s::group_based_beam_report_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::enabled:
break;
case types::disabled:
HANDLE_CODE(bref.unpack(c.nrof_reported_rs_present, 1));
if (c.nrof_reported_rs_present) {
HANDLE_CODE(c.nrof_reported_rs.unpack(bref));
}
break;
default:
log_invalid_choice_id(type_, "csi_report_cfg_s::group_based_beam_report_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* csi_report_cfg_s::group_based_beam_report_c_::disabled_s_::nrof_reported_rs_opts::to_string() const
{
static const char* options[] = {"n1", "n2", "n3", "n4"};
return convert_enum_idx(
options, 4, value, "csi_report_cfg_s::group_based_beam_report_c_::disabled_s_::nrof_reported_rs_e_");
}
uint8_t csi_report_cfg_s::group_based_beam_report_c_::disabled_s_::nrof_reported_rs_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 3, 4};
return map_enum_number(
options, 4, value, "csi_report_cfg_s::group_based_beam_report_c_::disabled_s_::nrof_reported_rs_e_");
}
const char* csi_report_cfg_s::group_based_beam_report_c_::types_opts::to_string() const
{
static const char* options[] = {"enabled", "disabled"};
return convert_enum_idx(options, 2, value, "csi_report_cfg_s::group_based_beam_report_c_::types");
}
const char* csi_report_cfg_s::cqi_table_opts::to_string() const
{
static const char* options[] = {"table1", "table2", "table3", "spare1"};
return convert_enum_idx(options, 4, value, "csi_report_cfg_s::cqi_table_e_");
}
uint8_t csi_report_cfg_s::cqi_table_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 3};
return map_enum_number(options, 3, value, "csi_report_cfg_s::cqi_table_e_");
}
const char* csi_report_cfg_s::subband_size_opts::to_string() const
{
static const char* options[] = {"value1", "value2"};
return convert_enum_idx(options, 2, value, "csi_report_cfg_s::subband_size_e_");
}
uint8_t csi_report_cfg_s::subband_size_opts::to_number() const
{
static const uint8_t options[] = {1, 2};
return map_enum_number(options, 2, value, "csi_report_cfg_s::subband_size_e_");
}
const char* csi_report_cfg_s::semi_persistent_on_pusch_v1530_s_::report_slot_cfg_v1530_opts::to_string() const
{
static const char* options[] = {"sl4", "sl8", "sl16"};
return convert_enum_idx(
options, 3, value, "csi_report_cfg_s::semi_persistent_on_pusch_v1530_s_::report_slot_cfg_v1530_e_");
}
uint8_t csi_report_cfg_s::semi_persistent_on_pusch_v1530_s_::report_slot_cfg_v1530_opts::to_number() const
{
static const uint8_t options[] = {4, 8, 16};
return map_enum_number(
options, 3, value, "csi_report_cfg_s::semi_persistent_on_pusch_v1530_s_::report_slot_cfg_v1530_e_");
}
// CSI-ResourceConfig ::= SEQUENCE
SRSASN_CODE csi_res_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(pack_integer(bref, csi_res_cfg_id, (uint8_t)0u, (uint8_t)111u));
HANDLE_CODE(csi_rs_res_set_list.pack(bref));
HANDLE_CODE(pack_integer(bref, bwp_id, (uint8_t)0u, (uint8_t)4u));
HANDLE_CODE(res_type.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_res_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(unpack_integer(csi_res_cfg_id, bref, (uint8_t)0u, (uint8_t)111u));
HANDLE_CODE(csi_rs_res_set_list.unpack(bref));
HANDLE_CODE(unpack_integer(bwp_id, bref, (uint8_t)0u, (uint8_t)4u));
HANDLE_CODE(res_type.unpack(bref));
return SRSASN_SUCCESS;
}
void csi_res_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("csi-ResourceConfigId", csi_res_cfg_id);
j.write_fieldname("csi-RS-ResourceSetList");
csi_rs_res_set_list.to_json(j);
j.write_int("bwp-Id", bwp_id);
j.write_str("resourceType", res_type.to_string());
j.end_obj();
}
void csi_res_cfg_s::csi_rs_res_set_list_c_::destroy_()
{
switch (type_) {
case types::nzp_csi_rs_ssb:
c.destroy<nzp_csi_rs_ssb_s_>();
break;
case types::csi_im_res_set_list:
c.destroy<csi_im_res_set_list_l_>();
break;
default:
break;
}
}
void csi_res_cfg_s::csi_rs_res_set_list_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::nzp_csi_rs_ssb:
c.init<nzp_csi_rs_ssb_s_>();
break;
case types::csi_im_res_set_list:
c.init<csi_im_res_set_list_l_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "csi_res_cfg_s::csi_rs_res_set_list_c_");
}
}
csi_res_cfg_s::csi_rs_res_set_list_c_::csi_rs_res_set_list_c_(const csi_res_cfg_s::csi_rs_res_set_list_c_& other)
{
type_ = other.type();
switch (type_) {
case types::nzp_csi_rs_ssb:
c.init(other.c.get<nzp_csi_rs_ssb_s_>());
break;
case types::csi_im_res_set_list:
c.init(other.c.get<csi_im_res_set_list_l_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "csi_res_cfg_s::csi_rs_res_set_list_c_");
}
}
csi_res_cfg_s::csi_rs_res_set_list_c_&
csi_res_cfg_s::csi_rs_res_set_list_c_::operator=(const csi_res_cfg_s::csi_rs_res_set_list_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::nzp_csi_rs_ssb:
c.set(other.c.get<nzp_csi_rs_ssb_s_>());
break;
case types::csi_im_res_set_list:
c.set(other.c.get<csi_im_res_set_list_l_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "csi_res_cfg_s::csi_rs_res_set_list_c_");
}
return *this;
}
csi_res_cfg_s::csi_rs_res_set_list_c_::nzp_csi_rs_ssb_s_& csi_res_cfg_s::csi_rs_res_set_list_c_::set_nzp_csi_rs_ssb()
{
set(types::nzp_csi_rs_ssb);
return c.get<nzp_csi_rs_ssb_s_>();
}
csi_res_cfg_s::csi_rs_res_set_list_c_::csi_im_res_set_list_l_&
csi_res_cfg_s::csi_rs_res_set_list_c_::set_csi_im_res_set_list()
{
set(types::csi_im_res_set_list);
return c.get<csi_im_res_set_list_l_>();
}
void csi_res_cfg_s::csi_rs_res_set_list_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::nzp_csi_rs_ssb:
j.write_fieldname("nzp-CSI-RS-SSB");
j.start_obj();
if (c.get<nzp_csi_rs_ssb_s_>().nzp_csi_rs_res_set_list_present) {
j.start_array("nzp-CSI-RS-ResourceSetList");
for (const auto& e1 : c.get<nzp_csi_rs_ssb_s_>().nzp_csi_rs_res_set_list) {
j.write_int(e1);
}
j.end_array();
}
if (c.get<nzp_csi_rs_ssb_s_>().csi_ssb_res_set_list_present) {
j.start_array("csi-SSB-ResourceSetList");
for (const auto& e1 : c.get<nzp_csi_rs_ssb_s_>().csi_ssb_res_set_list) {
j.write_int(e1);
}
j.end_array();
}
j.end_obj();
break;
case types::csi_im_res_set_list:
j.start_array("csi-IM-ResourceSetList");
for (const auto& e1 : c.get<csi_im_res_set_list_l_>()) {
j.write_int(e1);
}
j.end_array();
break;
default:
log_invalid_choice_id(type_, "csi_res_cfg_s::csi_rs_res_set_list_c_");
}
j.end_obj();
}
SRSASN_CODE csi_res_cfg_s::csi_rs_res_set_list_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::nzp_csi_rs_ssb:
HANDLE_CODE(bref.pack(c.get<nzp_csi_rs_ssb_s_>().nzp_csi_rs_res_set_list_present, 1));
HANDLE_CODE(bref.pack(c.get<nzp_csi_rs_ssb_s_>().csi_ssb_res_set_list_present, 1));
if (c.get<nzp_csi_rs_ssb_s_>().nzp_csi_rs_res_set_list_present) {
HANDLE_CODE(pack_dyn_seq_of(
bref, c.get<nzp_csi_rs_ssb_s_>().nzp_csi_rs_res_set_list, 1, 16, integer_packer<uint8_t>(0, 63)));
}
if (c.get<nzp_csi_rs_ssb_s_>().csi_ssb_res_set_list_present) {
HANDLE_CODE(pack_fixed_seq_of(bref,
&(c.get<nzp_csi_rs_ssb_s_>().csi_ssb_res_set_list)[0],
c.get<nzp_csi_rs_ssb_s_>().csi_ssb_res_set_list.size(),
integer_packer<uint8_t>(0, 63)));
}
break;
case types::csi_im_res_set_list:
HANDLE_CODE(pack_dyn_seq_of(bref, c.get<csi_im_res_set_list_l_>(), 1, 16, integer_packer<uint8_t>(0, 63)));
break;
default:
log_invalid_choice_id(type_, "csi_res_cfg_s::csi_rs_res_set_list_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_res_cfg_s::csi_rs_res_set_list_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::nzp_csi_rs_ssb:
HANDLE_CODE(bref.unpack(c.get<nzp_csi_rs_ssb_s_>().nzp_csi_rs_res_set_list_present, 1));
HANDLE_CODE(bref.unpack(c.get<nzp_csi_rs_ssb_s_>().csi_ssb_res_set_list_present, 1));
if (c.get<nzp_csi_rs_ssb_s_>().nzp_csi_rs_res_set_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(
c.get<nzp_csi_rs_ssb_s_>().nzp_csi_rs_res_set_list, bref, 1, 16, integer_packer<uint8_t>(0, 63)));
}
if (c.get<nzp_csi_rs_ssb_s_>().csi_ssb_res_set_list_present) {
HANDLE_CODE(unpack_fixed_seq_of(&(c.get<nzp_csi_rs_ssb_s_>().csi_ssb_res_set_list)[0],
bref,
c.get<nzp_csi_rs_ssb_s_>().csi_ssb_res_set_list.size(),
integer_packer<uint8_t>(0, 63)));
}
break;
case types::csi_im_res_set_list:
HANDLE_CODE(unpack_dyn_seq_of(c.get<csi_im_res_set_list_l_>(), bref, 1, 16, integer_packer<uint8_t>(0, 63)));
break;
default:
log_invalid_choice_id(type_, "csi_res_cfg_s::csi_rs_res_set_list_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* csi_res_cfg_s::csi_rs_res_set_list_c_::types_opts::to_string() const
{
static const char* options[] = {"nzp-CSI-RS-SSB", "csi-IM-ResourceSetList"};
return convert_enum_idx(options, 2, value, "csi_res_cfg_s::csi_rs_res_set_list_c_::types");
}
const char* csi_res_cfg_s::res_type_opts::to_string() const
{
static const char* options[] = {"aperiodic", "semiPersistent", "periodic"};
return convert_enum_idx(options, 3, value, "csi_res_cfg_s::res_type_e_");
}
// CSI-SSB-ResourceSet ::= SEQUENCE
SRSASN_CODE csi_ssb_res_set_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(pack_integer(bref, csi_ssb_res_set_id, (uint8_t)0u, (uint8_t)63u));
HANDLE_CODE(pack_dyn_seq_of(bref, csi_ssb_res_list, 1, 64, integer_packer<uint8_t>(0, 63)));
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_ssb_res_set_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(unpack_integer(csi_ssb_res_set_id, bref, (uint8_t)0u, (uint8_t)63u));
HANDLE_CODE(unpack_dyn_seq_of(csi_ssb_res_list, bref, 1, 64, integer_packer<uint8_t>(0, 63)));
return SRSASN_SUCCESS;
}
void csi_ssb_res_set_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("csi-SSB-ResourceSetId", csi_ssb_res_set_id);
j.start_array("csi-SSB-ResourceList");
for (const auto& e1 : csi_ssb_res_list) {
j.write_int(e1);
}
j.end_array();
j.end_obj();
}
// NZP-CSI-RS-Resource ::= SEQUENCE
SRSASN_CODE nzp_csi_rs_res_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(pwr_ctrl_offset_ss_present, 1));
HANDLE_CODE(bref.pack(periodicity_and_offset_present, 1));
HANDLE_CODE(bref.pack(qcl_info_periodic_csi_rs_present, 1));
HANDLE_CODE(pack_integer(bref, nzp_csi_rs_res_id, (uint8_t)0u, (uint8_t)191u));
HANDLE_CODE(res_map.pack(bref));
HANDLE_CODE(pack_integer(bref, pwr_ctrl_offset, (int8_t)-8, (int8_t)15));
if (pwr_ctrl_offset_ss_present) {
HANDLE_CODE(pwr_ctrl_offset_ss.pack(bref));
}
HANDLE_CODE(pack_integer(bref, scrambling_id, (uint16_t)0u, (uint16_t)1023u));
if (periodicity_and_offset_present) {
HANDLE_CODE(periodicity_and_offset.pack(bref));
}
if (qcl_info_periodic_csi_rs_present) {
HANDLE_CODE(pack_integer(bref, qcl_info_periodic_csi_rs, (uint8_t)0u, (uint8_t)127u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE nzp_csi_rs_res_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(pwr_ctrl_offset_ss_present, 1));
HANDLE_CODE(bref.unpack(periodicity_and_offset_present, 1));
HANDLE_CODE(bref.unpack(qcl_info_periodic_csi_rs_present, 1));
HANDLE_CODE(unpack_integer(nzp_csi_rs_res_id, bref, (uint8_t)0u, (uint8_t)191u));
HANDLE_CODE(res_map.unpack(bref));
HANDLE_CODE(unpack_integer(pwr_ctrl_offset, bref, (int8_t)-8, (int8_t)15));
if (pwr_ctrl_offset_ss_present) {
HANDLE_CODE(pwr_ctrl_offset_ss.unpack(bref));
}
HANDLE_CODE(unpack_integer(scrambling_id, bref, (uint16_t)0u, (uint16_t)1023u));
if (periodicity_and_offset_present) {
HANDLE_CODE(periodicity_and_offset.unpack(bref));
}
if (qcl_info_periodic_csi_rs_present) {
HANDLE_CODE(unpack_integer(qcl_info_periodic_csi_rs, bref, (uint8_t)0u, (uint8_t)127u));
}
return SRSASN_SUCCESS;
}
void nzp_csi_rs_res_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("nzp-CSI-RS-ResourceId", nzp_csi_rs_res_id);
j.write_fieldname("resourceMapping");
res_map.to_json(j);
j.write_int("powerControlOffset", pwr_ctrl_offset);
if (pwr_ctrl_offset_ss_present) {
j.write_str("powerControlOffsetSS", pwr_ctrl_offset_ss.to_string());
}
j.write_int("scramblingID", scrambling_id);
if (periodicity_and_offset_present) {
j.write_fieldname("periodicityAndOffset");
periodicity_and_offset.to_json(j);
}
if (qcl_info_periodic_csi_rs_present) {
j.write_int("qcl-InfoPeriodicCSI-RS", qcl_info_periodic_csi_rs);
}
j.end_obj();
}
const char* nzp_csi_rs_res_s::pwr_ctrl_offset_ss_opts::to_string() const
{
static const char* options[] = {"db-3", "db0", "db3", "db6"};
return convert_enum_idx(options, 4, value, "nzp_csi_rs_res_s::pwr_ctrl_offset_ss_e_");
}
int8_t nzp_csi_rs_res_s::pwr_ctrl_offset_ss_opts::to_number() const
{
static const int8_t options[] = {-3, 0, 3, 6};
return map_enum_number(options, 4, value, "nzp_csi_rs_res_s::pwr_ctrl_offset_ss_e_");
}
// NZP-CSI-RS-ResourceSet ::= SEQUENCE
SRSASN_CODE nzp_csi_rs_res_set_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(repeat_present, 1));
HANDLE_CODE(bref.pack(aperiodic_trigger_offset_present, 1));
HANDLE_CODE(bref.pack(trs_info_present, 1));
HANDLE_CODE(pack_integer(bref, nzp_csi_res_set_id, (uint8_t)0u, (uint8_t)63u));
HANDLE_CODE(pack_dyn_seq_of(bref, nzp_csi_rs_res, 1, 64, integer_packer<uint8_t>(0, 191)));
if (repeat_present) {
HANDLE_CODE(repeat.pack(bref));
}
if (aperiodic_trigger_offset_present) {
HANDLE_CODE(pack_integer(bref, aperiodic_trigger_offset, (uint8_t)0u, (uint8_t)6u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE nzp_csi_rs_res_set_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(repeat_present, 1));
HANDLE_CODE(bref.unpack(aperiodic_trigger_offset_present, 1));
HANDLE_CODE(bref.unpack(trs_info_present, 1));
HANDLE_CODE(unpack_integer(nzp_csi_res_set_id, bref, (uint8_t)0u, (uint8_t)63u));
HANDLE_CODE(unpack_dyn_seq_of(nzp_csi_rs_res, bref, 1, 64, integer_packer<uint8_t>(0, 191)));
if (repeat_present) {
HANDLE_CODE(repeat.unpack(bref));
}
if (aperiodic_trigger_offset_present) {
HANDLE_CODE(unpack_integer(aperiodic_trigger_offset, bref, (uint8_t)0u, (uint8_t)6u));
}
return SRSASN_SUCCESS;
}
void nzp_csi_rs_res_set_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("nzp-CSI-ResourceSetId", nzp_csi_res_set_id);
j.start_array("nzp-CSI-RS-Resources");
for (const auto& e1 : nzp_csi_rs_res) {
j.write_int(e1);
}
j.end_array();
if (repeat_present) {
j.write_str("repetition", repeat.to_string());
}
if (aperiodic_trigger_offset_present) {
j.write_int("aperiodicTriggeringOffset", aperiodic_trigger_offset);
}
if (trs_info_present) {
j.write_str("trs-Info", "true");
}
j.end_obj();
}
const char* nzp_csi_rs_res_set_s::repeat_opts::to_string() const
{
static const char* options[] = {"on", "off"};
return convert_enum_idx(options, 2, value, "nzp_csi_rs_res_set_s::repeat_e_");
}
// CSI-MeasConfig ::= SEQUENCE
SRSASN_CODE csi_meas_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(nzp_csi_rs_res_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(nzp_csi_rs_res_to_release_list_present, 1));
HANDLE_CODE(bref.pack(nzp_csi_rs_res_set_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(nzp_csi_rs_res_set_to_release_list_present, 1));
HANDLE_CODE(bref.pack(csi_im_res_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(csi_im_res_to_release_list_present, 1));
HANDLE_CODE(bref.pack(csi_im_res_set_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(csi_im_res_set_to_release_list_present, 1));
HANDLE_CODE(bref.pack(csi_ssb_res_set_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(csi_ssb_res_set_to_release_list_present, 1));
HANDLE_CODE(bref.pack(csi_res_cfg_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(csi_res_cfg_to_release_list_present, 1));
HANDLE_CODE(bref.pack(csi_report_cfg_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(csi_report_cfg_to_release_list_present, 1));
HANDLE_CODE(bref.pack(report_trigger_size_present, 1));
HANDLE_CODE(bref.pack(aperiodic_trigger_state_list_present, 1));
HANDLE_CODE(bref.pack(semi_persistent_on_pusch_trigger_state_list_present, 1));
if (nzp_csi_rs_res_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, nzp_csi_rs_res_to_add_mod_list, 1, 192));
}
if (nzp_csi_rs_res_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, nzp_csi_rs_res_to_release_list, 1, 192, integer_packer<uint8_t>(0, 191)));
}
if (nzp_csi_rs_res_set_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, nzp_csi_rs_res_set_to_add_mod_list, 1, 64));
}
if (nzp_csi_rs_res_set_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, nzp_csi_rs_res_set_to_release_list, 1, 64, integer_packer<uint8_t>(0, 63)));
}
if (csi_im_res_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, csi_im_res_to_add_mod_list, 1, 32));
}
if (csi_im_res_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, csi_im_res_to_release_list, 1, 32, integer_packer<uint8_t>(0, 31)));
}
if (csi_im_res_set_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, csi_im_res_set_to_add_mod_list, 1, 64));
}
if (csi_im_res_set_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, csi_im_res_set_to_release_list, 1, 64, integer_packer<uint8_t>(0, 63)));
}
if (csi_ssb_res_set_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, csi_ssb_res_set_to_add_mod_list, 1, 64));
}
if (csi_ssb_res_set_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, csi_ssb_res_set_to_release_list, 1, 64, integer_packer<uint8_t>(0, 63)));
}
if (csi_res_cfg_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, csi_res_cfg_to_add_mod_list, 1, 112));
}
if (csi_res_cfg_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, csi_res_cfg_to_release_list, 1, 112, integer_packer<uint8_t>(0, 111)));
}
if (csi_report_cfg_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, csi_report_cfg_to_add_mod_list, 1, 48));
}
if (csi_report_cfg_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, csi_report_cfg_to_release_list, 1, 48, integer_packer<uint8_t>(0, 47)));
}
if (report_trigger_size_present) {
HANDLE_CODE(pack_integer(bref, report_trigger_size, (uint8_t)0u, (uint8_t)6u));
}
if (aperiodic_trigger_state_list_present) {
HANDLE_CODE(aperiodic_trigger_state_list.pack(bref));
}
if (semi_persistent_on_pusch_trigger_state_list_present) {
HANDLE_CODE(semi_persistent_on_pusch_trigger_state_list.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE csi_meas_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(nzp_csi_rs_res_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(nzp_csi_rs_res_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(nzp_csi_rs_res_set_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(nzp_csi_rs_res_set_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(csi_im_res_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(csi_im_res_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(csi_im_res_set_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(csi_im_res_set_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(csi_ssb_res_set_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(csi_ssb_res_set_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(csi_res_cfg_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(csi_res_cfg_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(csi_report_cfg_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(csi_report_cfg_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(report_trigger_size_present, 1));
HANDLE_CODE(bref.unpack(aperiodic_trigger_state_list_present, 1));
HANDLE_CODE(bref.unpack(semi_persistent_on_pusch_trigger_state_list_present, 1));
if (nzp_csi_rs_res_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(nzp_csi_rs_res_to_add_mod_list, bref, 1, 192));
}
if (nzp_csi_rs_res_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(nzp_csi_rs_res_to_release_list, bref, 1, 192, integer_packer<uint8_t>(0, 191)));
}
if (nzp_csi_rs_res_set_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(nzp_csi_rs_res_set_to_add_mod_list, bref, 1, 64));
}
if (nzp_csi_rs_res_set_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(nzp_csi_rs_res_set_to_release_list, bref, 1, 64, integer_packer<uint8_t>(0, 63)));
}
if (csi_im_res_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(csi_im_res_to_add_mod_list, bref, 1, 32));
}
if (csi_im_res_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(csi_im_res_to_release_list, bref, 1, 32, integer_packer<uint8_t>(0, 31)));
}
if (csi_im_res_set_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(csi_im_res_set_to_add_mod_list, bref, 1, 64));
}
if (csi_im_res_set_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(csi_im_res_set_to_release_list, bref, 1, 64, integer_packer<uint8_t>(0, 63)));
}
if (csi_ssb_res_set_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(csi_ssb_res_set_to_add_mod_list, bref, 1, 64));
}
if (csi_ssb_res_set_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(csi_ssb_res_set_to_release_list, bref, 1, 64, integer_packer<uint8_t>(0, 63)));
}
if (csi_res_cfg_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(csi_res_cfg_to_add_mod_list, bref, 1, 112));
}
if (csi_res_cfg_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(csi_res_cfg_to_release_list, bref, 1, 112, integer_packer<uint8_t>(0, 111)));
}
if (csi_report_cfg_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(csi_report_cfg_to_add_mod_list, bref, 1, 48));
}
if (csi_report_cfg_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(csi_report_cfg_to_release_list, bref, 1, 48, integer_packer<uint8_t>(0, 47)));
}
if (report_trigger_size_present) {
HANDLE_CODE(unpack_integer(report_trigger_size, bref, (uint8_t)0u, (uint8_t)6u));
}
if (aperiodic_trigger_state_list_present) {
HANDLE_CODE(aperiodic_trigger_state_list.unpack(bref));
}
if (semi_persistent_on_pusch_trigger_state_list_present) {
HANDLE_CODE(semi_persistent_on_pusch_trigger_state_list.unpack(bref));
}
return SRSASN_SUCCESS;
}
void csi_meas_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (nzp_csi_rs_res_to_add_mod_list_present) {
j.start_array("nzp-CSI-RS-ResourceToAddModList");
for (const auto& e1 : nzp_csi_rs_res_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (nzp_csi_rs_res_to_release_list_present) {
j.start_array("nzp-CSI-RS-ResourceToReleaseList");
for (const auto& e1 : nzp_csi_rs_res_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (nzp_csi_rs_res_set_to_add_mod_list_present) {
j.start_array("nzp-CSI-RS-ResourceSetToAddModList");
for (const auto& e1 : nzp_csi_rs_res_set_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (nzp_csi_rs_res_set_to_release_list_present) {
j.start_array("nzp-CSI-RS-ResourceSetToReleaseList");
for (const auto& e1 : nzp_csi_rs_res_set_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (csi_im_res_to_add_mod_list_present) {
j.start_array("csi-IM-ResourceToAddModList");
for (const auto& e1 : csi_im_res_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (csi_im_res_to_release_list_present) {
j.start_array("csi-IM-ResourceToReleaseList");
for (const auto& e1 : csi_im_res_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (csi_im_res_set_to_add_mod_list_present) {
j.start_array("csi-IM-ResourceSetToAddModList");
for (const auto& e1 : csi_im_res_set_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (csi_im_res_set_to_release_list_present) {
j.start_array("csi-IM-ResourceSetToReleaseList");
for (const auto& e1 : csi_im_res_set_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (csi_ssb_res_set_to_add_mod_list_present) {
j.start_array("csi-SSB-ResourceSetToAddModList");
for (const auto& e1 : csi_ssb_res_set_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (csi_ssb_res_set_to_release_list_present) {
j.start_array("csi-SSB-ResourceSetToReleaseList");
for (const auto& e1 : csi_ssb_res_set_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (csi_res_cfg_to_add_mod_list_present) {
j.start_array("csi-ResourceConfigToAddModList");
for (const auto& e1 : csi_res_cfg_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (csi_res_cfg_to_release_list_present) {
j.start_array("csi-ResourceConfigToReleaseList");
for (const auto& e1 : csi_res_cfg_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (csi_report_cfg_to_add_mod_list_present) {
j.start_array("csi-ReportConfigToAddModList");
for (const auto& e1 : csi_report_cfg_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (csi_report_cfg_to_release_list_present) {
j.start_array("csi-ReportConfigToReleaseList");
for (const auto& e1 : csi_report_cfg_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (report_trigger_size_present) {
j.write_int("reportTriggerSize", report_trigger_size);
}
if (aperiodic_trigger_state_list_present) {
j.write_fieldname("aperiodicTriggerStateList");
aperiodic_trigger_state_list.to_json(j);
}
if (semi_persistent_on_pusch_trigger_state_list_present) {
j.write_fieldname("semiPersistentOnPUSCH-TriggerStateList");
semi_persistent_on_pusch_trigger_state_list.to_json(j);
}
j.end_obj();
}
// EUTRA-MBSFN-SubframeConfig ::= SEQUENCE
SRSASN_CODE eutra_mbsfn_sf_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(sf_alloc2_present, 1));
HANDLE_CODE(radioframe_alloc_period.pack(bref));
HANDLE_CODE(pack_integer(bref, radioframe_alloc_offset, (uint8_t)0u, (uint8_t)7u));
HANDLE_CODE(sf_alloc1.pack(bref));
if (sf_alloc2_present) {
HANDLE_CODE(sf_alloc2.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE eutra_mbsfn_sf_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(sf_alloc2_present, 1));
HANDLE_CODE(radioframe_alloc_period.unpack(bref));
HANDLE_CODE(unpack_integer(radioframe_alloc_offset, bref, (uint8_t)0u, (uint8_t)7u));
HANDLE_CODE(sf_alloc1.unpack(bref));
if (sf_alloc2_present) {
HANDLE_CODE(sf_alloc2.unpack(bref));
}
return SRSASN_SUCCESS;
}
void eutra_mbsfn_sf_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("radioframeAllocationPeriod", radioframe_alloc_period.to_string());
j.write_int("radioframeAllocationOffset", radioframe_alloc_offset);
j.write_fieldname("subframeAllocation1");
sf_alloc1.to_json(j);
if (sf_alloc2_present) {
j.write_fieldname("subframeAllocation2");
sf_alloc2.to_json(j);
}
j.end_obj();
}
const char* eutra_mbsfn_sf_cfg_s::radioframe_alloc_period_opts::to_string() const
{
static const char* options[] = {"n1", "n2", "n4", "n8", "n16", "n32"};
return convert_enum_idx(options, 6, value, "eutra_mbsfn_sf_cfg_s::radioframe_alloc_period_e_");
}
uint8_t eutra_mbsfn_sf_cfg_s::radioframe_alloc_period_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 4, 8, 16, 32};
return map_enum_number(options, 6, value, "eutra_mbsfn_sf_cfg_s::radioframe_alloc_period_e_");
}
void eutra_mbsfn_sf_cfg_s::sf_alloc1_c_::destroy_()
{
switch (type_) {
case types::one_frame:
c.destroy<fixed_bitstring<6> >();
break;
case types::four_frames:
c.destroy<fixed_bitstring<24> >();
break;
default:
break;
}
}
void eutra_mbsfn_sf_cfg_s::sf_alloc1_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::one_frame:
c.init<fixed_bitstring<6> >();
break;
case types::four_frames:
c.init<fixed_bitstring<24> >();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "eutra_mbsfn_sf_cfg_s::sf_alloc1_c_");
}
}
eutra_mbsfn_sf_cfg_s::sf_alloc1_c_::sf_alloc1_c_(const eutra_mbsfn_sf_cfg_s::sf_alloc1_c_& other)
{
type_ = other.type();
switch (type_) {
case types::one_frame:
c.init(other.c.get<fixed_bitstring<6> >());
break;
case types::four_frames:
c.init(other.c.get<fixed_bitstring<24> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "eutra_mbsfn_sf_cfg_s::sf_alloc1_c_");
}
}
eutra_mbsfn_sf_cfg_s::sf_alloc1_c_&
eutra_mbsfn_sf_cfg_s::sf_alloc1_c_::operator=(const eutra_mbsfn_sf_cfg_s::sf_alloc1_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::one_frame:
c.set(other.c.get<fixed_bitstring<6> >());
break;
case types::four_frames:
c.set(other.c.get<fixed_bitstring<24> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "eutra_mbsfn_sf_cfg_s::sf_alloc1_c_");
}
return *this;
}
fixed_bitstring<6>& eutra_mbsfn_sf_cfg_s::sf_alloc1_c_::set_one_frame()
{
set(types::one_frame);
return c.get<fixed_bitstring<6> >();
}
fixed_bitstring<24>& eutra_mbsfn_sf_cfg_s::sf_alloc1_c_::set_four_frames()
{
set(types::four_frames);
return c.get<fixed_bitstring<24> >();
}
void eutra_mbsfn_sf_cfg_s::sf_alloc1_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::one_frame:
j.write_str("oneFrame", c.get<fixed_bitstring<6> >().to_string());
break;
case types::four_frames:
j.write_str("fourFrames", c.get<fixed_bitstring<24> >().to_string());
break;
default:
log_invalid_choice_id(type_, "eutra_mbsfn_sf_cfg_s::sf_alloc1_c_");
}
j.end_obj();
}
SRSASN_CODE eutra_mbsfn_sf_cfg_s::sf_alloc1_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::one_frame:
HANDLE_CODE(c.get<fixed_bitstring<6> >().pack(bref));
break;
case types::four_frames:
HANDLE_CODE(c.get<fixed_bitstring<24> >().pack(bref));
break;
default:
log_invalid_choice_id(type_, "eutra_mbsfn_sf_cfg_s::sf_alloc1_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE eutra_mbsfn_sf_cfg_s::sf_alloc1_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::one_frame:
HANDLE_CODE(c.get<fixed_bitstring<6> >().unpack(bref));
break;
case types::four_frames:
HANDLE_CODE(c.get<fixed_bitstring<24> >().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "eutra_mbsfn_sf_cfg_s::sf_alloc1_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* eutra_mbsfn_sf_cfg_s::sf_alloc1_c_::types_opts::to_string() const
{
static const char* options[] = {"oneFrame", "fourFrames"};
return convert_enum_idx(options, 2, value, "eutra_mbsfn_sf_cfg_s::sf_alloc1_c_::types");
}
uint8_t eutra_mbsfn_sf_cfg_s::sf_alloc1_c_::types_opts::to_number() const
{
static const uint8_t options[] = {1, 4};
return map_enum_number(options, 2, value, "eutra_mbsfn_sf_cfg_s::sf_alloc1_c_::types");
}
void eutra_mbsfn_sf_cfg_s::sf_alloc2_c_::destroy_()
{
switch (type_) {
case types::one_frame:
c.destroy<fixed_bitstring<2> >();
break;
case types::four_frames:
c.destroy<fixed_bitstring<8> >();
break;
default:
break;
}
}
void eutra_mbsfn_sf_cfg_s::sf_alloc2_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::one_frame:
c.init<fixed_bitstring<2> >();
break;
case types::four_frames:
c.init<fixed_bitstring<8> >();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "eutra_mbsfn_sf_cfg_s::sf_alloc2_c_");
}
}
eutra_mbsfn_sf_cfg_s::sf_alloc2_c_::sf_alloc2_c_(const eutra_mbsfn_sf_cfg_s::sf_alloc2_c_& other)
{
type_ = other.type();
switch (type_) {
case types::one_frame:
c.init(other.c.get<fixed_bitstring<2> >());
break;
case types::four_frames:
c.init(other.c.get<fixed_bitstring<8> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "eutra_mbsfn_sf_cfg_s::sf_alloc2_c_");
}
}
eutra_mbsfn_sf_cfg_s::sf_alloc2_c_&
eutra_mbsfn_sf_cfg_s::sf_alloc2_c_::operator=(const eutra_mbsfn_sf_cfg_s::sf_alloc2_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::one_frame:
c.set(other.c.get<fixed_bitstring<2> >());
break;
case types::four_frames:
c.set(other.c.get<fixed_bitstring<8> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "eutra_mbsfn_sf_cfg_s::sf_alloc2_c_");
}
return *this;
}
fixed_bitstring<2>& eutra_mbsfn_sf_cfg_s::sf_alloc2_c_::set_one_frame()
{
set(types::one_frame);
return c.get<fixed_bitstring<2> >();
}
fixed_bitstring<8>& eutra_mbsfn_sf_cfg_s::sf_alloc2_c_::set_four_frames()
{
set(types::four_frames);
return c.get<fixed_bitstring<8> >();
}
void eutra_mbsfn_sf_cfg_s::sf_alloc2_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::one_frame:
j.write_str("oneFrame", c.get<fixed_bitstring<2> >().to_string());
break;
case types::four_frames:
j.write_str("fourFrames", c.get<fixed_bitstring<8> >().to_string());
break;
default:
log_invalid_choice_id(type_, "eutra_mbsfn_sf_cfg_s::sf_alloc2_c_");
}
j.end_obj();
}
SRSASN_CODE eutra_mbsfn_sf_cfg_s::sf_alloc2_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::one_frame:
HANDLE_CODE(c.get<fixed_bitstring<2> >().pack(bref));
break;
case types::four_frames:
HANDLE_CODE(c.get<fixed_bitstring<8> >().pack(bref));
break;
default:
log_invalid_choice_id(type_, "eutra_mbsfn_sf_cfg_s::sf_alloc2_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE eutra_mbsfn_sf_cfg_s::sf_alloc2_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::one_frame:
HANDLE_CODE(c.get<fixed_bitstring<2> >().unpack(bref));
break;
case types::four_frames:
HANDLE_CODE(c.get<fixed_bitstring<8> >().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "eutra_mbsfn_sf_cfg_s::sf_alloc2_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* eutra_mbsfn_sf_cfg_s::sf_alloc2_c_::types_opts::to_string() const
{
static const char* options[] = {"oneFrame", "fourFrames"};
return convert_enum_idx(options, 2, value, "eutra_mbsfn_sf_cfg_s::sf_alloc2_c_::types");
}
uint8_t eutra_mbsfn_sf_cfg_s::sf_alloc2_c_::types_opts::to_number() const
{
static const uint8_t options[] = {1, 4};
return map_enum_number(options, 2, value, "eutra_mbsfn_sf_cfg_s::sf_alloc2_c_::types");
}
// SRS-CC-SetIndex ::= SEQUENCE
SRSASN_CODE srs_cc_set_idx_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(cc_set_idx_present, 1));
HANDLE_CODE(bref.pack(cc_idx_in_one_cc_set_present, 1));
if (cc_set_idx_present) {
HANDLE_CODE(pack_integer(bref, cc_set_idx, (uint8_t)0u, (uint8_t)3u));
}
if (cc_idx_in_one_cc_set_present) {
HANDLE_CODE(pack_integer(bref, cc_idx_in_one_cc_set, (uint8_t)0u, (uint8_t)7u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE srs_cc_set_idx_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(cc_set_idx_present, 1));
HANDLE_CODE(bref.unpack(cc_idx_in_one_cc_set_present, 1));
if (cc_set_idx_present) {
HANDLE_CODE(unpack_integer(cc_set_idx, bref, (uint8_t)0u, (uint8_t)3u));
}
if (cc_idx_in_one_cc_set_present) {
HANDLE_CODE(unpack_integer(cc_idx_in_one_cc_set, bref, (uint8_t)0u, (uint8_t)7u));
}
return SRSASN_SUCCESS;
}
void srs_cc_set_idx_s::to_json(json_writer& j) const
{
j.start_obj();
if (cc_set_idx_present) {
j.write_int("cc-SetIndex", cc_set_idx);
}
if (cc_idx_in_one_cc_set_present) {
j.write_int("cc-IndexInOneCC-Set", cc_idx_in_one_cc_set);
}
j.end_obj();
}
// SlotFormatCombination ::= SEQUENCE
SRSASN_CODE slot_format_combination_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, slot_format_combination_id, (uint16_t)0u, (uint16_t)511u));
HANDLE_CODE(pack_dyn_seq_of(bref, slot_formats, 1, 256, integer_packer<uint16_t>(0, 255)));
return SRSASN_SUCCESS;
}
SRSASN_CODE slot_format_combination_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(slot_format_combination_id, bref, (uint16_t)0u, (uint16_t)511u));
HANDLE_CODE(unpack_dyn_seq_of(slot_formats, bref, 1, 256, integer_packer<uint16_t>(0, 255)));
return SRSASN_SUCCESS;
}
void slot_format_combination_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("slotFormatCombinationId", slot_format_combination_id);
j.start_array("slotFormats");
for (const auto& e1 : slot_formats) {
j.write_int(e1);
}
j.end_array();
j.end_obj();
}
// FrequencyInfoDL ::= SEQUENCE
SRSASN_CODE freq_info_dl_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(absolute_freq_ssb_present, 1));
if (absolute_freq_ssb_present) {
HANDLE_CODE(pack_integer(bref, absolute_freq_ssb, (uint32_t)0u, (uint32_t)3279165u));
}
HANDLE_CODE(pack_dyn_seq_of(bref, freq_band_list, 1, 8, integer_packer<uint16_t>(1, 1024)));
HANDLE_CODE(pack_integer(bref, absolute_freq_point_a, (uint32_t)0u, (uint32_t)3279165u));
HANDLE_CODE(pack_dyn_seq_of(bref, scs_specific_carrier_list, 1, 5));
return SRSASN_SUCCESS;
}
SRSASN_CODE freq_info_dl_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(absolute_freq_ssb_present, 1));
if (absolute_freq_ssb_present) {
HANDLE_CODE(unpack_integer(absolute_freq_ssb, bref, (uint32_t)0u, (uint32_t)3279165u));
}
HANDLE_CODE(unpack_dyn_seq_of(freq_band_list, bref, 1, 8, integer_packer<uint16_t>(1, 1024)));
HANDLE_CODE(unpack_integer(absolute_freq_point_a, bref, (uint32_t)0u, (uint32_t)3279165u));
HANDLE_CODE(unpack_dyn_seq_of(scs_specific_carrier_list, bref, 1, 5));
return SRSASN_SUCCESS;
}
void freq_info_dl_s::to_json(json_writer& j) const
{
j.start_obj();
if (absolute_freq_ssb_present) {
j.write_int("absoluteFrequencySSB", absolute_freq_ssb);
}
j.start_array("frequencyBandList");
for (const auto& e1 : freq_band_list) {
j.write_int(e1);
}
j.end_array();
j.write_int("absoluteFrequencyPointA", absolute_freq_point_a);
j.start_array("scs-SpecificCarrierList");
for (const auto& e1 : scs_specific_carrier_list) {
e1.to_json(j);
}
j.end_array();
j.end_obj();
}
// FrequencyInfoUL ::= SEQUENCE
SRSASN_CODE freq_info_ul_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(freq_band_list_present, 1));
HANDLE_CODE(bref.pack(absolute_freq_point_a_present, 1));
HANDLE_CODE(bref.pack(add_spec_emission_present, 1));
HANDLE_CODE(bref.pack(p_max_present, 1));
HANDLE_CODE(bref.pack(freq_shift7p5khz_present, 1));
if (freq_band_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, freq_band_list, 1, 8, integer_packer<uint16_t>(1, 1024)));
}
if (absolute_freq_point_a_present) {
HANDLE_CODE(pack_integer(bref, absolute_freq_point_a, (uint32_t)0u, (uint32_t)3279165u));
}
HANDLE_CODE(pack_dyn_seq_of(bref, scs_specific_carrier_list, 1, 5));
if (add_spec_emission_present) {
HANDLE_CODE(pack_integer(bref, add_spec_emission, (uint8_t)0u, (uint8_t)7u));
}
if (p_max_present) {
HANDLE_CODE(pack_integer(bref, p_max, (int8_t)-30, (int8_t)33));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE freq_info_ul_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(freq_band_list_present, 1));
HANDLE_CODE(bref.unpack(absolute_freq_point_a_present, 1));
HANDLE_CODE(bref.unpack(add_spec_emission_present, 1));
HANDLE_CODE(bref.unpack(p_max_present, 1));
HANDLE_CODE(bref.unpack(freq_shift7p5khz_present, 1));
if (freq_band_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(freq_band_list, bref, 1, 8, integer_packer<uint16_t>(1, 1024)));
}
if (absolute_freq_point_a_present) {
HANDLE_CODE(unpack_integer(absolute_freq_point_a, bref, (uint32_t)0u, (uint32_t)3279165u));
}
HANDLE_CODE(unpack_dyn_seq_of(scs_specific_carrier_list, bref, 1, 5));
if (add_spec_emission_present) {
HANDLE_CODE(unpack_integer(add_spec_emission, bref, (uint8_t)0u, (uint8_t)7u));
}
if (p_max_present) {
HANDLE_CODE(unpack_integer(p_max, bref, (int8_t)-30, (int8_t)33));
}
return SRSASN_SUCCESS;
}
void freq_info_ul_s::to_json(json_writer& j) const
{
j.start_obj();
if (freq_band_list_present) {
j.start_array("frequencyBandList");
for (const auto& e1 : freq_band_list) {
j.write_int(e1);
}
j.end_array();
}
if (absolute_freq_point_a_present) {
j.write_int("absoluteFrequencyPointA", absolute_freq_point_a);
}
j.start_array("scs-SpecificCarrierList");
for (const auto& e1 : scs_specific_carrier_list) {
e1.to_json(j);
}
j.end_array();
if (add_spec_emission_present) {
j.write_int("additionalSpectrumEmission", add_spec_emission);
}
if (p_max_present) {
j.write_int("p-Max", p_max);
}
if (freq_shift7p5khz_present) {
j.write_str("frequencyShift7p5khz", "true");
}
j.end_obj();
}
// PUSCH-CodeBlockGroupTransmission ::= SEQUENCE
SRSASN_CODE pusch_code_block_group_tx_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(max_code_block_groups_per_transport_block.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE pusch_code_block_group_tx_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(max_code_block_groups_per_transport_block.unpack(bref));
return SRSASN_SUCCESS;
}
void pusch_code_block_group_tx_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("maxCodeBlockGroupsPerTransportBlock", max_code_block_groups_per_transport_block.to_string());
j.end_obj();
}
const char* pusch_code_block_group_tx_s::max_code_block_groups_per_transport_block_opts::to_string() const
{
static const char* options[] = {"n2", "n4", "n6", "n8"};
return convert_enum_idx(
options, 4, value, "pusch_code_block_group_tx_s::max_code_block_groups_per_transport_block_e_");
}
uint8_t pusch_code_block_group_tx_s::max_code_block_groups_per_transport_block_opts::to_number() const
{
static const uint8_t options[] = {2, 4, 6, 8};
return map_enum_number(
options, 4, value, "pusch_code_block_group_tx_s::max_code_block_groups_per_transport_block_e_");
}
// SRS-TPC-PDCCH-Config ::= SEQUENCE
SRSASN_CODE srs_tpc_pdcch_cfg_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(srs_cc_set_idxlist_present, 1));
if (srs_cc_set_idxlist_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, srs_cc_set_idxlist, 1, 4));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE srs_tpc_pdcch_cfg_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(srs_cc_set_idxlist_present, 1));
if (srs_cc_set_idxlist_present) {
HANDLE_CODE(unpack_dyn_seq_of(srs_cc_set_idxlist, bref, 1, 4));
}
return SRSASN_SUCCESS;
}
void srs_tpc_pdcch_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (srs_cc_set_idxlist_present) {
j.start_array("srs-CC-SetIndexlist");
for (const auto& e1 : srs_cc_set_idxlist) {
e1.to_json(j);
}
j.end_array();
}
j.end_obj();
}
// SlotFormatCombinationsPerCell ::= SEQUENCE
SRSASN_CODE slot_format_combinations_per_cell_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(subcarrier_spacing2_present, 1));
HANDLE_CODE(bref.pack(slot_format_combinations_present, 1));
HANDLE_CODE(bref.pack(position_in_dci_present, 1));
HANDLE_CODE(pack_integer(bref, serving_cell_id, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(subcarrier_spacing.pack(bref));
if (subcarrier_spacing2_present) {
HANDLE_CODE(subcarrier_spacing2.pack(bref));
}
if (slot_format_combinations_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, slot_format_combinations, 1, 512));
}
if (position_in_dci_present) {
HANDLE_CODE(pack_integer(bref, position_in_dci, (uint8_t)0u, (uint8_t)127u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE slot_format_combinations_per_cell_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(subcarrier_spacing2_present, 1));
HANDLE_CODE(bref.unpack(slot_format_combinations_present, 1));
HANDLE_CODE(bref.unpack(position_in_dci_present, 1));
HANDLE_CODE(unpack_integer(serving_cell_id, bref, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(subcarrier_spacing.unpack(bref));
if (subcarrier_spacing2_present) {
HANDLE_CODE(subcarrier_spacing2.unpack(bref));
}
if (slot_format_combinations_present) {
HANDLE_CODE(unpack_dyn_seq_of(slot_format_combinations, bref, 1, 512));
}
if (position_in_dci_present) {
HANDLE_CODE(unpack_integer(position_in_dci, bref, (uint8_t)0u, (uint8_t)127u));
}
return SRSASN_SUCCESS;
}
void slot_format_combinations_per_cell_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("servingCellId", serving_cell_id);
j.write_str("subcarrierSpacing", subcarrier_spacing.to_string());
if (subcarrier_spacing2_present) {
j.write_str("subcarrierSpacing2", subcarrier_spacing2.to_string());
}
if (slot_format_combinations_present) {
j.start_array("slotFormatCombinations");
for (const auto& e1 : slot_format_combinations) {
e1.to_json(j);
}
j.end_array();
}
if (position_in_dci_present) {
j.write_int("positionInDCI", position_in_dci);
}
j.end_obj();
}
// DownlinkConfigCommon ::= SEQUENCE
SRSASN_CODE dl_cfg_common_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(freq_info_dl_present, 1));
HANDLE_CODE(bref.pack(init_dl_bwp_present, 1));
if (freq_info_dl_present) {
HANDLE_CODE(freq_info_dl.pack(bref));
}
if (init_dl_bwp_present) {
HANDLE_CODE(init_dl_bwp.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE dl_cfg_common_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(freq_info_dl_present, 1));
HANDLE_CODE(bref.unpack(init_dl_bwp_present, 1));
if (freq_info_dl_present) {
HANDLE_CODE(freq_info_dl.unpack(bref));
}
if (init_dl_bwp_present) {
HANDLE_CODE(init_dl_bwp.unpack(bref));
}
return SRSASN_SUCCESS;
}
void dl_cfg_common_s::to_json(json_writer& j) const
{
j.start_obj();
if (freq_info_dl_present) {
j.write_fieldname("frequencyInfoDL");
freq_info_dl.to_json(j);
}
if (init_dl_bwp_present) {
j.write_fieldname("initialDownlinkBWP");
init_dl_bwp.to_json(j);
}
j.end_obj();
}
// PDSCH-CodeBlockGroupTransmission ::= SEQUENCE
SRSASN_CODE pdsch_code_block_group_tx_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(max_code_block_groups_per_transport_block.pack(bref));
HANDLE_CODE(bref.pack(code_block_group_flush_ind, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE pdsch_code_block_group_tx_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(max_code_block_groups_per_transport_block.unpack(bref));
HANDLE_CODE(bref.unpack(code_block_group_flush_ind, 1));
return SRSASN_SUCCESS;
}
void pdsch_code_block_group_tx_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("maxCodeBlockGroupsPerTransportBlock", max_code_block_groups_per_transport_block.to_string());
j.write_bool("codeBlockGroupFlushIndicator", code_block_group_flush_ind);
j.end_obj();
}
const char* pdsch_code_block_group_tx_s::max_code_block_groups_per_transport_block_opts::to_string() const
{
static const char* options[] = {"n2", "n4", "n6", "n8"};
return convert_enum_idx(
options, 4, value, "pdsch_code_block_group_tx_s::max_code_block_groups_per_transport_block_e_");
}
uint8_t pdsch_code_block_group_tx_s::max_code_block_groups_per_transport_block_opts::to_number() const
{
static const uint8_t options[] = {2, 4, 6, 8};
return map_enum_number(
options, 4, value, "pdsch_code_block_group_tx_s::max_code_block_groups_per_transport_block_e_");
}
// PUSCH-ServingCellConfig ::= SEQUENCE
SRSASN_CODE pusch_serving_cell_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(code_block_group_tx_present, 1));
HANDLE_CODE(bref.pack(rate_matching_present, 1));
HANDLE_CODE(bref.pack(xoverhead_present, 1));
if (code_block_group_tx_present) {
HANDLE_CODE(code_block_group_tx.pack(bref));
}
if (xoverhead_present) {
HANDLE_CODE(xoverhead.pack(bref));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= max_mimo_layers_present;
group_flags[0] |= processing_type2_enabled_present;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(max_mimo_layers_present, 1));
HANDLE_CODE(bref.pack(processing_type2_enabled_present, 1));
if (max_mimo_layers_present) {
HANDLE_CODE(pack_integer(bref, max_mimo_layers, (uint8_t)1u, (uint8_t)4u));
}
if (processing_type2_enabled_present) {
HANDLE_CODE(bref.pack(processing_type2_enabled, 1));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pusch_serving_cell_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(code_block_group_tx_present, 1));
HANDLE_CODE(bref.unpack(rate_matching_present, 1));
HANDLE_CODE(bref.unpack(xoverhead_present, 1));
if (code_block_group_tx_present) {
HANDLE_CODE(code_block_group_tx.unpack(bref));
}
if (xoverhead_present) {
HANDLE_CODE(xoverhead.unpack(bref));
}
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(max_mimo_layers_present, 1));
HANDLE_CODE(bref.unpack(processing_type2_enabled_present, 1));
if (max_mimo_layers_present) {
HANDLE_CODE(unpack_integer(max_mimo_layers, bref, (uint8_t)1u, (uint8_t)4u));
}
if (processing_type2_enabled_present) {
HANDLE_CODE(bref.unpack(processing_type2_enabled, 1));
}
}
}
return SRSASN_SUCCESS;
}
void pusch_serving_cell_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (code_block_group_tx_present) {
j.write_fieldname("codeBlockGroupTransmission");
code_block_group_tx.to_json(j);
}
if (rate_matching_present) {
j.write_str("rateMatching", "limitedBufferRM");
}
if (xoverhead_present) {
j.write_str("xOverhead", xoverhead.to_string());
}
if (ext) {
if (max_mimo_layers_present) {
j.write_int("maxMIMO-Layers", max_mimo_layers);
}
if (processing_type2_enabled_present) {
j.write_bool("processingType2Enabled", processing_type2_enabled);
}
}
j.end_obj();
}
const char* pusch_serving_cell_cfg_s::xoverhead_opts::to_string() const
{
static const char* options[] = {"xoh6", "xoh12", "xoh18"};
return convert_enum_idx(options, 3, value, "pusch_serving_cell_cfg_s::xoverhead_e_");
}
uint8_t pusch_serving_cell_cfg_s::xoverhead_opts::to_number() const
{
static const uint8_t options[] = {6, 12, 18};
return map_enum_number(options, 3, value, "pusch_serving_cell_cfg_s::xoverhead_e_");
}
// PollByte ::= ENUMERATED
const char* poll_byte_opts::to_string() const
{
static const char* options[] = {
"kB1", "kB2", "kB5", "kB8", "kB10", "kB15", "kB25", "kB50", "kB75", "kB100",
"kB125", "kB250", "kB375", "kB500", "kB750", "kB1000", "kB1250", "kB1500", "kB2000", "kB3000",
"kB4000", "kB4500", "kB5000", "kB5500", "kB6000", "kB6500", "kB7000", "kB7500", "mB8", "mB9",
"mB10", "mB11", "mB12", "mB13", "mB14", "mB15", "mB16", "mB17", "mB18", "mB20",
"mB25", "mB30", "mB40", "infinity", "spare20", "spare19", "spare18", "spare17", "spare16", "spare15",
"spare14", "spare13", "spare12", "spare11", "spare10", "spare9", "spare8", "spare7", "spare6", "spare5",
"spare4", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 64, value, "poll_byte_e");
}
int32_t poll_byte_opts::to_number() const
{
static const int32_t options[] = {1, 2, 5, 8, 10, 15, 25, 50, 75, 100, 125,
250, 375, 500, 750, 1000, 1250, 1500, 2000, 3000, 4000, 4500,
5000, 5500, 6000, 6500, 7000, 7500, 8000, 9000, 10000, 11000, 12000,
13000, 14000, 15000, 16000, 17000, 18000, 20000, 25000, 30000, 40000, -1};
return map_enum_number(options, 44, value, "poll_byte_e");
}
// PollPDU ::= ENUMERATED
const char* poll_pdu_opts::to_string() const
{
static const char* options[] = {"p4", "p8", "p16", "p32", "p64", "p128", "p256", "p512",
"p1024", "p2048", "p4096", "p6144", "p8192", "p12288", "p16384", "p20480",
"p24576", "p28672", "p32768", "p40960", "p49152", "p57344", "p65536", "infinity",
"spare8", "spare7", "spare6", "spare5", "spare4", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 32, value, "poll_pdu_e");
}
int32_t poll_pdu_opts::to_number() const
{
static const int32_t options[] = {4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 6144,
8192, 12288, 16384, 20480, 24576, 28672, 32768, 40960, 49152, 57344, 65536, -1};
return map_enum_number(options, 24, value, "poll_pdu_e");
}
// RateMatchPatternLTE-CRS ::= SEQUENCE
SRSASN_CODE rate_match_pattern_lte_crs_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(mbsfn_sf_cfg_list_present, 1));
HANDLE_CODE(pack_integer(bref, carrier_freq_dl, (uint16_t)0u, (uint16_t)16383u));
HANDLE_CODE(carrier_bw_dl.pack(bref));
if (mbsfn_sf_cfg_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, mbsfn_sf_cfg_list, 1, 8));
}
HANDLE_CODE(nrof_crs_ports.pack(bref));
HANDLE_CODE(v_shift.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE rate_match_pattern_lte_crs_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(mbsfn_sf_cfg_list_present, 1));
HANDLE_CODE(unpack_integer(carrier_freq_dl, bref, (uint16_t)0u, (uint16_t)16383u));
HANDLE_CODE(carrier_bw_dl.unpack(bref));
if (mbsfn_sf_cfg_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(mbsfn_sf_cfg_list, bref, 1, 8));
}
HANDLE_CODE(nrof_crs_ports.unpack(bref));
HANDLE_CODE(v_shift.unpack(bref));
return SRSASN_SUCCESS;
}
void rate_match_pattern_lte_crs_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("carrierFreqDL", carrier_freq_dl);
j.write_str("carrierBandwidthDL", carrier_bw_dl.to_string());
if (mbsfn_sf_cfg_list_present) {
j.start_array("mbsfn-SubframeConfigList");
for (const auto& e1 : mbsfn_sf_cfg_list) {
e1.to_json(j);
}
j.end_array();
}
j.write_str("nrofCRS-Ports", nrof_crs_ports.to_string());
j.write_str("v-Shift", v_shift.to_string());
j.end_obj();
}
const char* rate_match_pattern_lte_crs_s::carrier_bw_dl_opts::to_string() const
{
static const char* options[] = {"n6", "n15", "n25", "n50", "n75", "n100", "spare2", "spare1"};
return convert_enum_idx(options, 8, value, "rate_match_pattern_lte_crs_s::carrier_bw_dl_e_");
}
uint8_t rate_match_pattern_lte_crs_s::carrier_bw_dl_opts::to_number() const
{
static const uint8_t options[] = {6, 15, 25, 50, 75, 100};
return map_enum_number(options, 6, value, "rate_match_pattern_lte_crs_s::carrier_bw_dl_e_");
}
const char* rate_match_pattern_lte_crs_s::nrof_crs_ports_opts::to_string() const
{
static const char* options[] = {"n1", "n2", "n4"};
return convert_enum_idx(options, 3, value, "rate_match_pattern_lte_crs_s::nrof_crs_ports_e_");
}
uint8_t rate_match_pattern_lte_crs_s::nrof_crs_ports_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 4};
return map_enum_number(options, 3, value, "rate_match_pattern_lte_crs_s::nrof_crs_ports_e_");
}
const char* rate_match_pattern_lte_crs_s::v_shift_opts::to_string() const
{
static const char* options[] = {"n0", "n1", "n2", "n3", "n4", "n5"};
return convert_enum_idx(options, 6, value, "rate_match_pattern_lte_crs_s::v_shift_e_");
}
uint8_t rate_match_pattern_lte_crs_s::v_shift_opts::to_number() const
{
static const uint8_t options[] = {0, 1, 2, 3, 4, 5};
return map_enum_number(options, 6, value, "rate_match_pattern_lte_crs_s::v_shift_e_");
}
// SN-FieldLengthAM ::= ENUMERATED
const char* sn_field_len_am_opts::to_string() const
{
static const char* options[] = {"size12", "size18"};
return convert_enum_idx(options, 2, value, "sn_field_len_am_e");
}
uint8_t sn_field_len_am_opts::to_number() const
{
static const uint8_t options[] = {12, 18};
return map_enum_number(options, 2, value, "sn_field_len_am_e");
}
// SN-FieldLengthUM ::= ENUMERATED
const char* sn_field_len_um_opts::to_string() const
{
static const char* options[] = {"size6", "size12"};
return convert_enum_idx(options, 2, value, "sn_field_len_um_e");
}
uint8_t sn_field_len_um_opts::to_number() const
{
static const uint8_t options[] = {6, 12};
return map_enum_number(options, 2, value, "sn_field_len_um_e");
}
// SRS-CarrierSwitching ::= SEQUENCE
SRSASN_CODE srs_carrier_switching_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(srs_switch_from_serv_cell_idx_present, 1));
HANDLE_CODE(bref.pack(srs_tpc_pdcch_group_present, 1));
HANDLE_CODE(bref.pack(monitoring_cells_present, 1));
if (srs_switch_from_serv_cell_idx_present) {
HANDLE_CODE(pack_integer(bref, srs_switch_from_serv_cell_idx, (uint8_t)0u, (uint8_t)31u));
}
HANDLE_CODE(srs_switch_from_carrier.pack(bref));
if (srs_tpc_pdcch_group_present) {
HANDLE_CODE(srs_tpc_pdcch_group.pack(bref));
}
if (monitoring_cells_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, monitoring_cells, 1, 32, integer_packer<uint8_t>(0, 31)));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE srs_carrier_switching_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(srs_switch_from_serv_cell_idx_present, 1));
HANDLE_CODE(bref.unpack(srs_tpc_pdcch_group_present, 1));
HANDLE_CODE(bref.unpack(monitoring_cells_present, 1));
if (srs_switch_from_serv_cell_idx_present) {
HANDLE_CODE(unpack_integer(srs_switch_from_serv_cell_idx, bref, (uint8_t)0u, (uint8_t)31u));
}
HANDLE_CODE(srs_switch_from_carrier.unpack(bref));
if (srs_tpc_pdcch_group_present) {
HANDLE_CODE(srs_tpc_pdcch_group.unpack(bref));
}
if (monitoring_cells_present) {
HANDLE_CODE(unpack_dyn_seq_of(monitoring_cells, bref, 1, 32, integer_packer<uint8_t>(0, 31)));
}
return SRSASN_SUCCESS;
}
void srs_carrier_switching_s::to_json(json_writer& j) const
{
j.start_obj();
if (srs_switch_from_serv_cell_idx_present) {
j.write_int("srs-SwitchFromServCellIndex", srs_switch_from_serv_cell_idx);
}
j.write_str("srs-SwitchFromCarrier", srs_switch_from_carrier.to_string());
if (srs_tpc_pdcch_group_present) {
j.write_fieldname("srs-TPC-PDCCH-Group");
srs_tpc_pdcch_group.to_json(j);
}
if (monitoring_cells_present) {
j.start_array("monitoringCells");
for (const auto& e1 : monitoring_cells) {
j.write_int(e1);
}
j.end_array();
}
j.end_obj();
}
const char* srs_carrier_switching_s::srs_switch_from_carrier_opts::to_string() const
{
static const char* options[] = {"sUL", "nUL"};
return convert_enum_idx(options, 2, value, "srs_carrier_switching_s::srs_switch_from_carrier_e_");
}
void srs_carrier_switching_s::srs_tpc_pdcch_group_c_::destroy_()
{
switch (type_) {
case types::type_a:
c.destroy<type_a_l_>();
break;
case types::type_b:
c.destroy<srs_tpc_pdcch_cfg_s>();
break;
default:
break;
}
}
void srs_carrier_switching_s::srs_tpc_pdcch_group_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::type_a:
c.init<type_a_l_>();
break;
case types::type_b:
c.init<srs_tpc_pdcch_cfg_s>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "srs_carrier_switching_s::srs_tpc_pdcch_group_c_");
}
}
srs_carrier_switching_s::srs_tpc_pdcch_group_c_::srs_tpc_pdcch_group_c_(
const srs_carrier_switching_s::srs_tpc_pdcch_group_c_& other)
{
type_ = other.type();
switch (type_) {
case types::type_a:
c.init(other.c.get<type_a_l_>());
break;
case types::type_b:
c.init(other.c.get<srs_tpc_pdcch_cfg_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "srs_carrier_switching_s::srs_tpc_pdcch_group_c_");
}
}
srs_carrier_switching_s::srs_tpc_pdcch_group_c_&
srs_carrier_switching_s::srs_tpc_pdcch_group_c_::operator=(const srs_carrier_switching_s::srs_tpc_pdcch_group_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::type_a:
c.set(other.c.get<type_a_l_>());
break;
case types::type_b:
c.set(other.c.get<srs_tpc_pdcch_cfg_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "srs_carrier_switching_s::srs_tpc_pdcch_group_c_");
}
return *this;
}
srs_carrier_switching_s::srs_tpc_pdcch_group_c_::type_a_l_&
srs_carrier_switching_s::srs_tpc_pdcch_group_c_::set_type_a()
{
set(types::type_a);
return c.get<type_a_l_>();
}
srs_tpc_pdcch_cfg_s& srs_carrier_switching_s::srs_tpc_pdcch_group_c_::set_type_b()
{
set(types::type_b);
return c.get<srs_tpc_pdcch_cfg_s>();
}
void srs_carrier_switching_s::srs_tpc_pdcch_group_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::type_a:
j.start_array("typeA");
for (const auto& e1 : c.get<type_a_l_>()) {
e1.to_json(j);
}
j.end_array();
break;
case types::type_b:
j.write_fieldname("typeB");
c.get<srs_tpc_pdcch_cfg_s>().to_json(j);
break;
default:
log_invalid_choice_id(type_, "srs_carrier_switching_s::srs_tpc_pdcch_group_c_");
}
j.end_obj();
}
SRSASN_CODE srs_carrier_switching_s::srs_tpc_pdcch_group_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::type_a:
HANDLE_CODE(pack_dyn_seq_of(bref, c.get<type_a_l_>(), 1, 32));
break;
case types::type_b:
HANDLE_CODE(c.get<srs_tpc_pdcch_cfg_s>().pack(bref));
break;
default:
log_invalid_choice_id(type_, "srs_carrier_switching_s::srs_tpc_pdcch_group_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE srs_carrier_switching_s::srs_tpc_pdcch_group_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::type_a:
HANDLE_CODE(unpack_dyn_seq_of(c.get<type_a_l_>(), bref, 1, 32));
break;
case types::type_b:
HANDLE_CODE(c.get<srs_tpc_pdcch_cfg_s>().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "srs_carrier_switching_s::srs_tpc_pdcch_group_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* srs_carrier_switching_s::srs_tpc_pdcch_group_c_::types_opts::to_string() const
{
static const char* options[] = {"typeA", "typeB"};
return convert_enum_idx(options, 2, value, "srs_carrier_switching_s::srs_tpc_pdcch_group_c_::types");
}
// SlotFormatIndicator ::= SEQUENCE
SRSASN_CODE slot_format_ind_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(slot_format_comb_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(slot_format_comb_to_release_list_present, 1));
HANDLE_CODE(pack_integer(bref, sfi_rnti, (uint32_t)0u, (uint32_t)65535u));
HANDLE_CODE(pack_integer(bref, dci_payload_size, (uint8_t)1u, (uint8_t)128u));
if (slot_format_comb_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, slot_format_comb_to_add_mod_list, 1, 16));
}
if (slot_format_comb_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, slot_format_comb_to_release_list, 1, 16, integer_packer<uint8_t>(0, 31)));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE slot_format_ind_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(slot_format_comb_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(slot_format_comb_to_release_list_present, 1));
HANDLE_CODE(unpack_integer(sfi_rnti, bref, (uint32_t)0u, (uint32_t)65535u));
HANDLE_CODE(unpack_integer(dci_payload_size, bref, (uint8_t)1u, (uint8_t)128u));
if (slot_format_comb_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(slot_format_comb_to_add_mod_list, bref, 1, 16));
}
if (slot_format_comb_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(slot_format_comb_to_release_list, bref, 1, 16, integer_packer<uint8_t>(0, 31)));
}
return SRSASN_SUCCESS;
}
void slot_format_ind_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("sfi-RNTI", sfi_rnti);
j.write_int("dci-PayloadSize", dci_payload_size);
if (slot_format_comb_to_add_mod_list_present) {
j.start_array("slotFormatCombToAddModList");
for (const auto& e1 : slot_format_comb_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (slot_format_comb_to_release_list_present) {
j.start_array("slotFormatCombToReleaseList");
for (const auto& e1 : slot_format_comb_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
j.end_obj();
}
// T-PollRetransmit ::= ENUMERATED
const char* t_poll_retx_opts::to_string() const
{
static const char* options[] = {
"ms5", "ms10", "ms15", "ms20", "ms25", "ms30", "ms35", "ms40", "ms45", "ms50", "ms55",
"ms60", "ms65", "ms70", "ms75", "ms80", "ms85", "ms90", "ms95", "ms100", "ms105", "ms110",
"ms115", "ms120", "ms125", "ms130", "ms135", "ms140", "ms145", "ms150", "ms155", "ms160", "ms165",
"ms170", "ms175", "ms180", "ms185", "ms190", "ms195", "ms200", "ms205", "ms210", "ms215", "ms220",
"ms225", "ms230", "ms235", "ms240", "ms245", "ms250", "ms300", "ms350", "ms400", "ms450", "ms500",
"ms800", "ms1000", "ms2000", "ms4000", "spare5", "spare4", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 64, value, "t_poll_retx_e");
}
uint16_t t_poll_retx_opts::to_number() const
{
static const uint16_t options[] = {5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75,
80, 85, 90, 95, 100, 105, 110, 115, 120, 125, 130, 135, 140, 145, 150,
155, 160, 165, 170, 175, 180, 185, 190, 195, 200, 205, 210, 215, 220, 225,
230, 235, 240, 245, 250, 300, 350, 400, 450, 500, 800, 1000, 2000, 4000};
return map_enum_number(options, 59, value, "t_poll_retx_e");
}
// T-Reassembly ::= ENUMERATED
const char* t_reassembly_opts::to_string() const
{
static const char* options[] = {"ms0", "ms5", "ms10", "ms15", "ms20", "ms25", "ms30", "ms35",
"ms40", "ms45", "ms50", "ms55", "ms60", "ms65", "ms70", "ms75",
"ms80", "ms85", "ms90", "ms95", "ms100", "ms110", "ms120", "ms130",
"ms140", "ms150", "ms160", "ms170", "ms180", "ms190", "ms200", "spare1"};
return convert_enum_idx(options, 32, value, "t_reassembly_e");
}
uint8_t t_reassembly_opts::to_number() const
{
static const uint8_t options[] = {0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75,
80, 85, 90, 95, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200};
return map_enum_number(options, 31, value, "t_reassembly_e");
}
// T-StatusProhibit ::= ENUMERATED
const char* t_status_prohibit_opts::to_string() const
{
static const char* options[] = {
"ms0", "ms5", "ms10", "ms15", "ms20", "ms25", "ms30", "ms35", "ms40", "ms45", "ms50",
"ms55", "ms60", "ms65", "ms70", "ms75", "ms80", "ms85", "ms90", "ms95", "ms100", "ms105",
"ms110", "ms115", "ms120", "ms125", "ms130", "ms135", "ms140", "ms145", "ms150", "ms155", "ms160",
"ms165", "ms170", "ms175", "ms180", "ms185", "ms190", "ms195", "ms200", "ms205", "ms210", "ms215",
"ms220", "ms225", "ms230", "ms235", "ms240", "ms245", "ms250", "ms300", "ms350", "ms400", "ms450",
"ms500", "ms800", "ms1000", "ms1200", "ms1600", "ms2000", "ms2400", "spare2", "spare1"};
return convert_enum_idx(options, 64, value, "t_status_prohibit_e");
}
uint16_t t_status_prohibit_opts::to_number() const
{
static const uint16_t options[] = {0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75,
80, 85, 90, 95, 100, 105, 110, 115, 120, 125, 130, 135, 140, 145, 150, 155,
160, 165, 170, 175, 180, 185, 190, 195, 200, 205, 210, 215, 220, 225, 230, 235,
240, 245, 250, 300, 350, 400, 450, 500, 800, 1000, 1200, 1600, 2000, 2400};
return map_enum_number(options, 62, value, "t_status_prohibit_e");
}
// TDD-UL-DL-SlotConfig ::= SEQUENCE
SRSASN_CODE tdd_ul_dl_slot_cfg_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, slot_idx, (uint16_t)0u, (uint16_t)319u));
HANDLE_CODE(symbols.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE tdd_ul_dl_slot_cfg_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(slot_idx, bref, (uint16_t)0u, (uint16_t)319u));
HANDLE_CODE(symbols.unpack(bref));
return SRSASN_SUCCESS;
}
void tdd_ul_dl_slot_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("slotIndex", slot_idx);
j.write_fieldname("symbols");
symbols.to_json(j);
j.end_obj();
}
void tdd_ul_dl_slot_cfg_s::symbols_c_::set(types::options e)
{
type_ = e;
}
void tdd_ul_dl_slot_cfg_s::symbols_c_::set_all_dl()
{
set(types::all_dl);
}
void tdd_ul_dl_slot_cfg_s::symbols_c_::set_all_ul()
{
set(types::all_ul);
}
tdd_ul_dl_slot_cfg_s::symbols_c_::explicit_s_& tdd_ul_dl_slot_cfg_s::symbols_c_::set_explicit_type()
{
set(types::explicit_type);
return c;
}
void tdd_ul_dl_slot_cfg_s::symbols_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::all_dl:
break;
case types::all_ul:
break;
case types::explicit_type:
j.write_fieldname("explicit");
j.start_obj();
if (c.nrof_dl_symbols_present) {
j.write_int("nrofDownlinkSymbols", c.nrof_dl_symbols);
}
if (c.nrof_ul_symbols_present) {
j.write_int("nrofUplinkSymbols", c.nrof_ul_symbols);
}
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "tdd_ul_dl_slot_cfg_s::symbols_c_");
}
j.end_obj();
}
SRSASN_CODE tdd_ul_dl_slot_cfg_s::symbols_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::all_dl:
break;
case types::all_ul:
break;
case types::explicit_type:
HANDLE_CODE(bref.pack(c.nrof_dl_symbols_present, 1));
HANDLE_CODE(bref.pack(c.nrof_ul_symbols_present, 1));
if (c.nrof_dl_symbols_present) {
HANDLE_CODE(pack_integer(bref, c.nrof_dl_symbols, (uint8_t)1u, (uint8_t)13u));
}
if (c.nrof_ul_symbols_present) {
HANDLE_CODE(pack_integer(bref, c.nrof_ul_symbols, (uint8_t)1u, (uint8_t)13u));
}
break;
default:
log_invalid_choice_id(type_, "tdd_ul_dl_slot_cfg_s::symbols_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE tdd_ul_dl_slot_cfg_s::symbols_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::all_dl:
break;
case types::all_ul:
break;
case types::explicit_type:
HANDLE_CODE(bref.unpack(c.nrof_dl_symbols_present, 1));
HANDLE_CODE(bref.unpack(c.nrof_ul_symbols_present, 1));
if (c.nrof_dl_symbols_present) {
HANDLE_CODE(unpack_integer(c.nrof_dl_symbols, bref, (uint8_t)1u, (uint8_t)13u));
}
if (c.nrof_ul_symbols_present) {
HANDLE_CODE(unpack_integer(c.nrof_ul_symbols, bref, (uint8_t)1u, (uint8_t)13u));
}
break;
default:
log_invalid_choice_id(type_, "tdd_ul_dl_slot_cfg_s::symbols_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* tdd_ul_dl_slot_cfg_s::symbols_c_::types_opts::to_string() const
{
static const char* options[] = {"allDownlink", "allUplink", "explicit"};
return convert_enum_idx(options, 3, value, "tdd_ul_dl_slot_cfg_s::symbols_c_::types");
}
// UplinkConfigCommon ::= SEQUENCE
SRSASN_CODE ul_cfg_common_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(freq_info_ul_present, 1));
HANDLE_CODE(bref.pack(init_ul_bwp_present, 1));
if (freq_info_ul_present) {
HANDLE_CODE(freq_info_ul.pack(bref));
}
if (init_ul_bwp_present) {
HANDLE_CODE(init_ul_bwp.pack(bref));
}
HANDLE_CODE(dummy.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE ul_cfg_common_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(freq_info_ul_present, 1));
HANDLE_CODE(bref.unpack(init_ul_bwp_present, 1));
if (freq_info_ul_present) {
HANDLE_CODE(freq_info_ul.unpack(bref));
}
if (init_ul_bwp_present) {
HANDLE_CODE(init_ul_bwp.unpack(bref));
}
HANDLE_CODE(dummy.unpack(bref));
return SRSASN_SUCCESS;
}
void ul_cfg_common_s::to_json(json_writer& j) const
{
j.start_obj();
if (freq_info_ul_present) {
j.write_fieldname("frequencyInfoUL");
freq_info_ul.to_json(j);
}
if (init_ul_bwp_present) {
j.write_fieldname("initialUplinkBWP");
init_ul_bwp.to_json(j);
}
j.write_str("dummy", dummy.to_string());
j.end_obj();
}
// CrossCarrierSchedulingConfig ::= SEQUENCE
SRSASN_CODE cross_carrier_sched_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(sched_cell_info.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE cross_carrier_sched_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(sched_cell_info.unpack(bref));
return SRSASN_SUCCESS;
}
void cross_carrier_sched_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("schedulingCellInfo");
sched_cell_info.to_json(j);
j.end_obj();
}
void cross_carrier_sched_cfg_s::sched_cell_info_c_::destroy_()
{
switch (type_) {
case types::own:
c.destroy<own_s_>();
break;
case types::other:
c.destroy<other_s_>();
break;
default:
break;
}
}
void cross_carrier_sched_cfg_s::sched_cell_info_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::own:
c.init<own_s_>();
break;
case types::other:
c.init<other_s_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "cross_carrier_sched_cfg_s::sched_cell_info_c_");
}
}
cross_carrier_sched_cfg_s::sched_cell_info_c_::sched_cell_info_c_(
const cross_carrier_sched_cfg_s::sched_cell_info_c_& other)
{
type_ = other.type();
switch (type_) {
case types::own:
c.init(other.c.get<own_s_>());
break;
case types::other:
c.init(other.c.get<other_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "cross_carrier_sched_cfg_s::sched_cell_info_c_");
}
}
cross_carrier_sched_cfg_s::sched_cell_info_c_&
cross_carrier_sched_cfg_s::sched_cell_info_c_::operator=(const cross_carrier_sched_cfg_s::sched_cell_info_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::own:
c.set(other.c.get<own_s_>());
break;
case types::other:
c.set(other.c.get<other_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "cross_carrier_sched_cfg_s::sched_cell_info_c_");
}
return *this;
}
cross_carrier_sched_cfg_s::sched_cell_info_c_::own_s_& cross_carrier_sched_cfg_s::sched_cell_info_c_::set_own()
{
set(types::own);
return c.get<own_s_>();
}
cross_carrier_sched_cfg_s::sched_cell_info_c_::other_s_& cross_carrier_sched_cfg_s::sched_cell_info_c_::set_other()
{
set(types::other);
return c.get<other_s_>();
}
void cross_carrier_sched_cfg_s::sched_cell_info_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::own:
j.write_fieldname("own");
j.start_obj();
j.write_bool("cif-Presence", c.get<own_s_>().cif_presence);
j.end_obj();
break;
case types::other:
j.write_fieldname("other");
j.start_obj();
j.write_int("schedulingCellId", c.get<other_s_>().sched_cell_id);
j.write_int("cif-InSchedulingCell", c.get<other_s_>().cif_in_sched_cell);
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "cross_carrier_sched_cfg_s::sched_cell_info_c_");
}
j.end_obj();
}
SRSASN_CODE cross_carrier_sched_cfg_s::sched_cell_info_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::own:
HANDLE_CODE(bref.pack(c.get<own_s_>().cif_presence, 1));
break;
case types::other:
HANDLE_CODE(pack_integer(bref, c.get<other_s_>().sched_cell_id, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(pack_integer(bref, c.get<other_s_>().cif_in_sched_cell, (uint8_t)1u, (uint8_t)7u));
break;
default:
log_invalid_choice_id(type_, "cross_carrier_sched_cfg_s::sched_cell_info_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE cross_carrier_sched_cfg_s::sched_cell_info_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::own:
HANDLE_CODE(bref.unpack(c.get<own_s_>().cif_presence, 1));
break;
case types::other:
HANDLE_CODE(unpack_integer(c.get<other_s_>().sched_cell_id, bref, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(unpack_integer(c.get<other_s_>().cif_in_sched_cell, bref, (uint8_t)1u, (uint8_t)7u));
break;
default:
log_invalid_choice_id(type_, "cross_carrier_sched_cfg_s::sched_cell_info_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* cross_carrier_sched_cfg_s::sched_cell_info_c_::types_opts::to_string() const
{
static const char* options[] = {"own", "other"};
return convert_enum_idx(options, 2, value, "cross_carrier_sched_cfg_s::sched_cell_info_c_::types");
}
// DL-AM-RLC ::= SEQUENCE
SRSASN_CODE dl_am_rlc_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(sn_field_len_present, 1));
if (sn_field_len_present) {
HANDLE_CODE(sn_field_len.pack(bref));
}
HANDLE_CODE(t_reassembly.pack(bref));
HANDLE_CODE(t_status_prohibit.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE dl_am_rlc_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(sn_field_len_present, 1));
if (sn_field_len_present) {
HANDLE_CODE(sn_field_len.unpack(bref));
}
HANDLE_CODE(t_reassembly.unpack(bref));
HANDLE_CODE(t_status_prohibit.unpack(bref));
return SRSASN_SUCCESS;
}
void dl_am_rlc_s::to_json(json_writer& j) const
{
j.start_obj();
if (sn_field_len_present) {
j.write_str("sn-FieldLength", sn_field_len.to_string());
}
j.write_str("t-Reassembly", t_reassembly.to_string());
j.write_str("t-StatusProhibit", t_status_prohibit.to_string());
j.end_obj();
}
// DL-UM-RLC ::= SEQUENCE
SRSASN_CODE dl_um_rlc_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(sn_field_len_present, 1));
if (sn_field_len_present) {
HANDLE_CODE(sn_field_len.pack(bref));
}
HANDLE_CODE(t_reassembly.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE dl_um_rlc_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(sn_field_len_present, 1));
if (sn_field_len_present) {
HANDLE_CODE(sn_field_len.unpack(bref));
}
HANDLE_CODE(t_reassembly.unpack(bref));
return SRSASN_SUCCESS;
}
void dl_um_rlc_s::to_json(json_writer& j) const
{
j.start_obj();
if (sn_field_len_present) {
j.write_str("sn-FieldLength", sn_field_len.to_string());
}
j.write_str("t-Reassembly", t_reassembly.to_string());
j.end_obj();
}
// PDCCH-ServingCellConfig ::= SEQUENCE
SRSASN_CODE pdcch_serving_cell_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(slot_format_ind_present, 1));
if (slot_format_ind_present) {
HANDLE_CODE(slot_format_ind.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pdcch_serving_cell_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(slot_format_ind_present, 1));
if (slot_format_ind_present) {
HANDLE_CODE(slot_format_ind.unpack(bref));
}
return SRSASN_SUCCESS;
}
void pdcch_serving_cell_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (slot_format_ind_present) {
j.write_fieldname("slotFormatIndicator");
slot_format_ind.to_json(j);
}
j.end_obj();
}
// PDSCH-ServingCellConfig ::= SEQUENCE
SRSASN_CODE pdsch_serving_cell_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(code_block_group_tx_present, 1));
HANDLE_CODE(bref.pack(xoverhead_present, 1));
HANDLE_CODE(bref.pack(nrof_harq_processes_for_pdsch_present, 1));
HANDLE_CODE(bref.pack(pucch_cell_present, 1));
if (code_block_group_tx_present) {
HANDLE_CODE(code_block_group_tx.pack(bref));
}
if (xoverhead_present) {
HANDLE_CODE(xoverhead.pack(bref));
}
if (nrof_harq_processes_for_pdsch_present) {
HANDLE_CODE(nrof_harq_processes_for_pdsch.pack(bref));
}
if (pucch_cell_present) {
HANDLE_CODE(pack_integer(bref, pucch_cell, (uint8_t)0u, (uint8_t)31u));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= max_mimo_layers_present;
group_flags[0] |= processing_type2_enabled_present;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(max_mimo_layers_present, 1));
HANDLE_CODE(bref.pack(processing_type2_enabled_present, 1));
if (max_mimo_layers_present) {
HANDLE_CODE(pack_integer(bref, max_mimo_layers, (uint8_t)1u, (uint8_t)8u));
}
if (processing_type2_enabled_present) {
HANDLE_CODE(bref.pack(processing_type2_enabled, 1));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE pdsch_serving_cell_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(code_block_group_tx_present, 1));
HANDLE_CODE(bref.unpack(xoverhead_present, 1));
HANDLE_CODE(bref.unpack(nrof_harq_processes_for_pdsch_present, 1));
HANDLE_CODE(bref.unpack(pucch_cell_present, 1));
if (code_block_group_tx_present) {
HANDLE_CODE(code_block_group_tx.unpack(bref));
}
if (xoverhead_present) {
HANDLE_CODE(xoverhead.unpack(bref));
}
if (nrof_harq_processes_for_pdsch_present) {
HANDLE_CODE(nrof_harq_processes_for_pdsch.unpack(bref));
}
if (pucch_cell_present) {
HANDLE_CODE(unpack_integer(pucch_cell, bref, (uint8_t)0u, (uint8_t)31u));
}
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(max_mimo_layers_present, 1));
HANDLE_CODE(bref.unpack(processing_type2_enabled_present, 1));
if (max_mimo_layers_present) {
HANDLE_CODE(unpack_integer(max_mimo_layers, bref, (uint8_t)1u, (uint8_t)8u));
}
if (processing_type2_enabled_present) {
HANDLE_CODE(bref.unpack(processing_type2_enabled, 1));
}
}
}
return SRSASN_SUCCESS;
}
void pdsch_serving_cell_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (code_block_group_tx_present) {
j.write_fieldname("codeBlockGroupTransmission");
code_block_group_tx.to_json(j);
}
if (xoverhead_present) {
j.write_str("xOverhead", xoverhead.to_string());
}
if (nrof_harq_processes_for_pdsch_present) {
j.write_str("nrofHARQ-ProcessesForPDSCH", nrof_harq_processes_for_pdsch.to_string());
}
if (pucch_cell_present) {
j.write_int("pucch-Cell", pucch_cell);
}
if (ext) {
if (max_mimo_layers_present) {
j.write_int("maxMIMO-Layers", max_mimo_layers);
}
if (processing_type2_enabled_present) {
j.write_bool("processingType2Enabled", processing_type2_enabled);
}
}
j.end_obj();
}
const char* pdsch_serving_cell_cfg_s::xoverhead_opts::to_string() const
{
static const char* options[] = {"xOh6", "xOh12", "xOh18"};
return convert_enum_idx(options, 3, value, "pdsch_serving_cell_cfg_s::xoverhead_e_");
}
uint8_t pdsch_serving_cell_cfg_s::xoverhead_opts::to_number() const
{
static const uint8_t options[] = {6, 12, 18};
return map_enum_number(options, 3, value, "pdsch_serving_cell_cfg_s::xoverhead_e_");
}
const char* pdsch_serving_cell_cfg_s::nrof_harq_processes_for_pdsch_opts::to_string() const
{
static const char* options[] = {"n2", "n4", "n6", "n10", "n12", "n16"};
return convert_enum_idx(options, 6, value, "pdsch_serving_cell_cfg_s::nrof_harq_processes_for_pdsch_e_");
}
uint8_t pdsch_serving_cell_cfg_s::nrof_harq_processes_for_pdsch_opts::to_number() const
{
static const uint8_t options[] = {2, 4, 6, 10, 12, 16};
return map_enum_number(options, 6, value, "pdsch_serving_cell_cfg_s::nrof_harq_processes_for_pdsch_e_");
}
// RACH-ConfigDedicated ::= SEQUENCE
SRSASN_CODE rach_cfg_ded_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(cfra_present, 1));
HANDLE_CODE(bref.pack(ra_prioritization_present, 1));
if (cfra_present) {
HANDLE_CODE(cfra.pack(bref));
}
if (ra_prioritization_present) {
HANDLE_CODE(ra_prioritization.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rach_cfg_ded_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(cfra_present, 1));
HANDLE_CODE(bref.unpack(ra_prioritization_present, 1));
if (cfra_present) {
HANDLE_CODE(cfra.unpack(bref));
}
if (ra_prioritization_present) {
HANDLE_CODE(ra_prioritization.unpack(bref));
}
return SRSASN_SUCCESS;
}
void rach_cfg_ded_s::to_json(json_writer& j) const
{
j.start_obj();
if (cfra_present) {
j.write_fieldname("cfra");
cfra.to_json(j);
}
if (ra_prioritization_present) {
j.write_fieldname("ra-Prioritization");
ra_prioritization.to_json(j);
}
j.end_obj();
}
// SchedulingRequestToAddMod ::= SEQUENCE
SRSASN_CODE sched_request_to_add_mod_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(sr_prohibit_timer_present, 1));
HANDLE_CODE(pack_integer(bref, sched_request_id, (uint8_t)0u, (uint8_t)7u));
if (sr_prohibit_timer_present) {
HANDLE_CODE(sr_prohibit_timer.pack(bref));
}
HANDLE_CODE(sr_trans_max.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE sched_request_to_add_mod_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(sr_prohibit_timer_present, 1));
HANDLE_CODE(unpack_integer(sched_request_id, bref, (uint8_t)0u, (uint8_t)7u));
if (sr_prohibit_timer_present) {
HANDLE_CODE(sr_prohibit_timer.unpack(bref));
}
HANDLE_CODE(sr_trans_max.unpack(bref));
return SRSASN_SUCCESS;
}
void sched_request_to_add_mod_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("schedulingRequestId", sched_request_id);
if (sr_prohibit_timer_present) {
j.write_str("sr-ProhibitTimer", sr_prohibit_timer.to_string());
}
j.write_str("sr-TransMax", sr_trans_max.to_string());
j.end_obj();
}
const char* sched_request_to_add_mod_s::sr_prohibit_timer_opts::to_string() const
{
static const char* options[] = {"ms1", "ms2", "ms4", "ms8", "ms16", "ms32", "ms64", "ms128"};
return convert_enum_idx(options, 8, value, "sched_request_to_add_mod_s::sr_prohibit_timer_e_");
}
uint8_t sched_request_to_add_mod_s::sr_prohibit_timer_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 4, 8, 16, 32, 64, 128};
return map_enum_number(options, 8, value, "sched_request_to_add_mod_s::sr_prohibit_timer_e_");
}
const char* sched_request_to_add_mod_s::sr_trans_max_opts::to_string() const
{
static const char* options[] = {"n4", "n8", "n16", "n32", "n64", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 8, value, "sched_request_to_add_mod_s::sr_trans_max_e_");
}
uint8_t sched_request_to_add_mod_s::sr_trans_max_opts::to_number() const
{
static const uint8_t options[] = {4, 8, 16, 32, 64};
return map_enum_number(options, 5, value, "sched_request_to_add_mod_s::sr_trans_max_e_");
}
// ServingCellConfigCommon ::= SEQUENCE
SRSASN_CODE serving_cell_cfg_common_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(pci_present, 1));
HANDLE_CODE(bref.pack(dl_cfg_common_present, 1));
HANDLE_CODE(bref.pack(ul_cfg_common_present, 1));
HANDLE_CODE(bref.pack(supplementary_ul_cfg_present, 1));
HANDLE_CODE(bref.pack(n_timing_advance_offset_present, 1));
HANDLE_CODE(bref.pack(ssb_positions_in_burst_present, 1));
HANDLE_CODE(bref.pack(ssb_periodicity_serving_cell_present, 1));
HANDLE_CODE(bref.pack(lte_crs_to_match_around_present, 1));
HANDLE_CODE(bref.pack(rate_match_pattern_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(rate_match_pattern_to_release_list_present, 1));
HANDLE_CODE(bref.pack(ssb_subcarrier_spacing_present, 1));
HANDLE_CODE(bref.pack(tdd_ul_dl_cfg_common_present, 1));
if (pci_present) {
HANDLE_CODE(pack_integer(bref, pci, (uint16_t)0u, (uint16_t)1007u));
}
if (dl_cfg_common_present) {
HANDLE_CODE(dl_cfg_common.pack(bref));
}
if (ul_cfg_common_present) {
HANDLE_CODE(ul_cfg_common.pack(bref));
}
if (supplementary_ul_cfg_present) {
HANDLE_CODE(supplementary_ul_cfg.pack(bref));
}
if (n_timing_advance_offset_present) {
HANDLE_CODE(n_timing_advance_offset.pack(bref));
}
if (ssb_positions_in_burst_present) {
HANDLE_CODE(ssb_positions_in_burst.pack(bref));
}
if (ssb_periodicity_serving_cell_present) {
HANDLE_CODE(ssb_periodicity_serving_cell.pack(bref));
}
HANDLE_CODE(dmrs_type_a_position.pack(bref));
if (lte_crs_to_match_around_present) {
HANDLE_CODE(lte_crs_to_match_around.pack(bref));
}
if (rate_match_pattern_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, rate_match_pattern_to_add_mod_list, 1, 4));
}
if (rate_match_pattern_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, rate_match_pattern_to_release_list, 1, 4, integer_packer<uint8_t>(0, 3)));
}
if (ssb_subcarrier_spacing_present) {
HANDLE_CODE(ssb_subcarrier_spacing.pack(bref));
}
if (tdd_ul_dl_cfg_common_present) {
HANDLE_CODE(tdd_ul_dl_cfg_common.pack(bref));
}
HANDLE_CODE(pack_integer(bref, ss_pbch_block_pwr, (int8_t)-60, (int8_t)50));
return SRSASN_SUCCESS;
}
SRSASN_CODE serving_cell_cfg_common_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(pci_present, 1));
HANDLE_CODE(bref.unpack(dl_cfg_common_present, 1));
HANDLE_CODE(bref.unpack(ul_cfg_common_present, 1));
HANDLE_CODE(bref.unpack(supplementary_ul_cfg_present, 1));
HANDLE_CODE(bref.unpack(n_timing_advance_offset_present, 1));
HANDLE_CODE(bref.unpack(ssb_positions_in_burst_present, 1));
HANDLE_CODE(bref.unpack(ssb_periodicity_serving_cell_present, 1));
HANDLE_CODE(bref.unpack(lte_crs_to_match_around_present, 1));
HANDLE_CODE(bref.unpack(rate_match_pattern_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(rate_match_pattern_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(ssb_subcarrier_spacing_present, 1));
HANDLE_CODE(bref.unpack(tdd_ul_dl_cfg_common_present, 1));
if (pci_present) {
HANDLE_CODE(unpack_integer(pci, bref, (uint16_t)0u, (uint16_t)1007u));
}
if (dl_cfg_common_present) {
HANDLE_CODE(dl_cfg_common.unpack(bref));
}
if (ul_cfg_common_present) {
HANDLE_CODE(ul_cfg_common.unpack(bref));
}
if (supplementary_ul_cfg_present) {
HANDLE_CODE(supplementary_ul_cfg.unpack(bref));
}
if (n_timing_advance_offset_present) {
HANDLE_CODE(n_timing_advance_offset.unpack(bref));
}
if (ssb_positions_in_burst_present) {
HANDLE_CODE(ssb_positions_in_burst.unpack(bref));
}
if (ssb_periodicity_serving_cell_present) {
HANDLE_CODE(ssb_periodicity_serving_cell.unpack(bref));
}
HANDLE_CODE(dmrs_type_a_position.unpack(bref));
if (lte_crs_to_match_around_present) {
HANDLE_CODE(lte_crs_to_match_around.unpack(bref));
}
if (rate_match_pattern_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(rate_match_pattern_to_add_mod_list, bref, 1, 4));
}
if (rate_match_pattern_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(rate_match_pattern_to_release_list, bref, 1, 4, integer_packer<uint8_t>(0, 3)));
}
if (ssb_subcarrier_spacing_present) {
HANDLE_CODE(ssb_subcarrier_spacing.unpack(bref));
}
if (tdd_ul_dl_cfg_common_present) {
HANDLE_CODE(tdd_ul_dl_cfg_common.unpack(bref));
}
HANDLE_CODE(unpack_integer(ss_pbch_block_pwr, bref, (int8_t)-60, (int8_t)50));
return SRSASN_SUCCESS;
}
void serving_cell_cfg_common_s::to_json(json_writer& j) const
{
j.start_obj();
if (pci_present) {
j.write_int("physCellId", pci);
}
if (dl_cfg_common_present) {
j.write_fieldname("downlinkConfigCommon");
dl_cfg_common.to_json(j);
}
if (ul_cfg_common_present) {
j.write_fieldname("uplinkConfigCommon");
ul_cfg_common.to_json(j);
}
if (supplementary_ul_cfg_present) {
j.write_fieldname("supplementaryUplinkConfig");
supplementary_ul_cfg.to_json(j);
}
if (n_timing_advance_offset_present) {
j.write_str("n-TimingAdvanceOffset", n_timing_advance_offset.to_string());
}
if (ssb_positions_in_burst_present) {
j.write_fieldname("ssb-PositionsInBurst");
ssb_positions_in_burst.to_json(j);
}
if (ssb_periodicity_serving_cell_present) {
j.write_str("ssb-periodicityServingCell", ssb_periodicity_serving_cell.to_string());
}
j.write_str("dmrs-TypeA-Position", dmrs_type_a_position.to_string());
if (lte_crs_to_match_around_present) {
j.write_fieldname("lte-CRS-ToMatchAround");
lte_crs_to_match_around.to_json(j);
}
if (rate_match_pattern_to_add_mod_list_present) {
j.start_array("rateMatchPatternToAddModList");
for (const auto& e1 : rate_match_pattern_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (rate_match_pattern_to_release_list_present) {
j.start_array("rateMatchPatternToReleaseList");
for (const auto& e1 : rate_match_pattern_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (ssb_subcarrier_spacing_present) {
j.write_str("ssbSubcarrierSpacing", ssb_subcarrier_spacing.to_string());
}
if (tdd_ul_dl_cfg_common_present) {
j.write_fieldname("tdd-UL-DL-ConfigurationCommon");
tdd_ul_dl_cfg_common.to_json(j);
}
j.write_int("ss-PBCH-BlockPower", ss_pbch_block_pwr);
j.end_obj();
}
const char* serving_cell_cfg_common_s::n_timing_advance_offset_opts::to_string() const
{
static const char* options[] = {"n0", "n25600", "n39936"};
return convert_enum_idx(options, 3, value, "serving_cell_cfg_common_s::n_timing_advance_offset_e_");
}
uint16_t serving_cell_cfg_common_s::n_timing_advance_offset_opts::to_number() const
{
static const uint16_t options[] = {0, 25600, 39936};
return map_enum_number(options, 3, value, "serving_cell_cfg_common_s::n_timing_advance_offset_e_");
}
void serving_cell_cfg_common_s::ssb_positions_in_burst_c_::destroy_()
{
switch (type_) {
case types::short_bitmap:
c.destroy<fixed_bitstring<4> >();
break;
case types::medium_bitmap:
c.destroy<fixed_bitstring<8> >();
break;
case types::long_bitmap:
c.destroy<fixed_bitstring<64> >();
break;
default:
break;
}
}
void serving_cell_cfg_common_s::ssb_positions_in_burst_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::short_bitmap:
c.init<fixed_bitstring<4> >();
break;
case types::medium_bitmap:
c.init<fixed_bitstring<8> >();
break;
case types::long_bitmap:
c.init<fixed_bitstring<64> >();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "serving_cell_cfg_common_s::ssb_positions_in_burst_c_");
}
}
serving_cell_cfg_common_s::ssb_positions_in_burst_c_::ssb_positions_in_burst_c_(
const serving_cell_cfg_common_s::ssb_positions_in_burst_c_& other)
{
type_ = other.type();
switch (type_) {
case types::short_bitmap:
c.init(other.c.get<fixed_bitstring<4> >());
break;
case types::medium_bitmap:
c.init(other.c.get<fixed_bitstring<8> >());
break;
case types::long_bitmap:
c.init(other.c.get<fixed_bitstring<64> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "serving_cell_cfg_common_s::ssb_positions_in_burst_c_");
}
}
serving_cell_cfg_common_s::ssb_positions_in_burst_c_& serving_cell_cfg_common_s::ssb_positions_in_burst_c_::operator=(
const serving_cell_cfg_common_s::ssb_positions_in_burst_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::short_bitmap:
c.set(other.c.get<fixed_bitstring<4> >());
break;
case types::medium_bitmap:
c.set(other.c.get<fixed_bitstring<8> >());
break;
case types::long_bitmap:
c.set(other.c.get<fixed_bitstring<64> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "serving_cell_cfg_common_s::ssb_positions_in_burst_c_");
}
return *this;
}
fixed_bitstring<4>& serving_cell_cfg_common_s::ssb_positions_in_burst_c_::set_short_bitmap()
{
set(types::short_bitmap);
return c.get<fixed_bitstring<4> >();
}
fixed_bitstring<8>& serving_cell_cfg_common_s::ssb_positions_in_burst_c_::set_medium_bitmap()
{
set(types::medium_bitmap);
return c.get<fixed_bitstring<8> >();
}
fixed_bitstring<64>& serving_cell_cfg_common_s::ssb_positions_in_burst_c_::set_long_bitmap()
{
set(types::long_bitmap);
return c.get<fixed_bitstring<64> >();
}
void serving_cell_cfg_common_s::ssb_positions_in_burst_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::short_bitmap:
j.write_str("shortBitmap", c.get<fixed_bitstring<4> >().to_string());
break;
case types::medium_bitmap:
j.write_str("mediumBitmap", c.get<fixed_bitstring<8> >().to_string());
break;
case types::long_bitmap:
j.write_str("longBitmap", c.get<fixed_bitstring<64> >().to_string());
break;
default:
log_invalid_choice_id(type_, "serving_cell_cfg_common_s::ssb_positions_in_burst_c_");
}
j.end_obj();
}
SRSASN_CODE serving_cell_cfg_common_s::ssb_positions_in_burst_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::short_bitmap:
HANDLE_CODE(c.get<fixed_bitstring<4> >().pack(bref));
break;
case types::medium_bitmap:
HANDLE_CODE(c.get<fixed_bitstring<8> >().pack(bref));
break;
case types::long_bitmap:
HANDLE_CODE(c.get<fixed_bitstring<64> >().pack(bref));
break;
default:
log_invalid_choice_id(type_, "serving_cell_cfg_common_s::ssb_positions_in_burst_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE serving_cell_cfg_common_s::ssb_positions_in_burst_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::short_bitmap:
HANDLE_CODE(c.get<fixed_bitstring<4> >().unpack(bref));
break;
case types::medium_bitmap:
HANDLE_CODE(c.get<fixed_bitstring<8> >().unpack(bref));
break;
case types::long_bitmap:
HANDLE_CODE(c.get<fixed_bitstring<64> >().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "serving_cell_cfg_common_s::ssb_positions_in_burst_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* serving_cell_cfg_common_s::ssb_positions_in_burst_c_::types_opts::to_string() const
{
static const char* options[] = {"shortBitmap", "mediumBitmap", "longBitmap"};
return convert_enum_idx(options, 3, value, "serving_cell_cfg_common_s::ssb_positions_in_burst_c_::types");
}
const char* serving_cell_cfg_common_s::ssb_periodicity_serving_cell_opts::to_string() const
{
static const char* options[] = {"ms5", "ms10", "ms20", "ms40", "ms80", "ms160", "spare2", "spare1"};
return convert_enum_idx(options, 8, value, "serving_cell_cfg_common_s::ssb_periodicity_serving_cell_e_");
}
uint8_t serving_cell_cfg_common_s::ssb_periodicity_serving_cell_opts::to_number() const
{
static const uint8_t options[] = {5, 10, 20, 40, 80, 160};
return map_enum_number(options, 6, value, "serving_cell_cfg_common_s::ssb_periodicity_serving_cell_e_");
}
const char* serving_cell_cfg_common_s::dmrs_type_a_position_opts::to_string() const
{
static const char* options[] = {"pos2", "pos3"};
return convert_enum_idx(options, 2, value, "serving_cell_cfg_common_s::dmrs_type_a_position_e_");
}
uint8_t serving_cell_cfg_common_s::dmrs_type_a_position_opts::to_number() const
{
static const uint8_t options[] = {2, 3};
return map_enum_number(options, 2, value, "serving_cell_cfg_common_s::dmrs_type_a_position_e_");
}
// TAG ::= SEQUENCE
SRSASN_CODE tag_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(pack_integer(bref, tag_id, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(time_align_timer.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE tag_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(unpack_integer(tag_id, bref, (uint8_t)0u, (uint8_t)3u));
HANDLE_CODE(time_align_timer.unpack(bref));
return SRSASN_SUCCESS;
}
void tag_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("tag-Id", tag_id);
j.write_str("timeAlignmentTimer", time_align_timer.to_string());
j.end_obj();
}
// TDD-UL-DL-ConfigDedicated ::= SEQUENCE
SRSASN_CODE tdd_ul_dl_cfg_ded_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(slot_specific_cfgs_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(slot_specific_cfgs_to_release_list_present, 1));
if (slot_specific_cfgs_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, slot_specific_cfgs_to_add_mod_list, 1, 320));
}
if (slot_specific_cfgs_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, slot_specific_cfgs_to_release_list, 1, 320, integer_packer<uint16_t>(0, 319)));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE tdd_ul_dl_cfg_ded_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(slot_specific_cfgs_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(slot_specific_cfgs_to_release_list_present, 1));
if (slot_specific_cfgs_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(slot_specific_cfgs_to_add_mod_list, bref, 1, 320));
}
if (slot_specific_cfgs_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(slot_specific_cfgs_to_release_list, bref, 1, 320, integer_packer<uint16_t>(0, 319)));
}
return SRSASN_SUCCESS;
}
void tdd_ul_dl_cfg_ded_s::to_json(json_writer& j) const
{
j.start_obj();
if (slot_specific_cfgs_to_add_mod_list_present) {
j.start_array("slotSpecificConfigurationsToAddModList");
for (const auto& e1 : slot_specific_cfgs_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (slot_specific_cfgs_to_release_list_present) {
j.start_array("slotSpecificConfigurationsToReleaseList");
for (const auto& e1 : slot_specific_cfgs_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
j.end_obj();
}
// UL-AM-RLC ::= SEQUENCE
SRSASN_CODE ul_am_rlc_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(sn_field_len_present, 1));
if (sn_field_len_present) {
HANDLE_CODE(sn_field_len.pack(bref));
}
HANDLE_CODE(t_poll_retx.pack(bref));
HANDLE_CODE(poll_pdu.pack(bref));
HANDLE_CODE(poll_byte.pack(bref));
HANDLE_CODE(max_retx_thres.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE ul_am_rlc_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(sn_field_len_present, 1));
if (sn_field_len_present) {
HANDLE_CODE(sn_field_len.unpack(bref));
}
HANDLE_CODE(t_poll_retx.unpack(bref));
HANDLE_CODE(poll_pdu.unpack(bref));
HANDLE_CODE(poll_byte.unpack(bref));
HANDLE_CODE(max_retx_thres.unpack(bref));
return SRSASN_SUCCESS;
}
void ul_am_rlc_s::to_json(json_writer& j) const
{
j.start_obj();
if (sn_field_len_present) {
j.write_str("sn-FieldLength", sn_field_len.to_string());
}
j.write_str("t-PollRetransmit", t_poll_retx.to_string());
j.write_str("pollPDU", poll_pdu.to_string());
j.write_str("pollByte", poll_byte.to_string());
j.write_str("maxRetxThreshold", max_retx_thres.to_string());
j.end_obj();
}
const char* ul_am_rlc_s::max_retx_thres_opts::to_string() const
{
static const char* options[] = {"t1", "t2", "t3", "t4", "t6", "t8", "t16", "t32"};
return convert_enum_idx(options, 8, value, "ul_am_rlc_s::max_retx_thres_e_");
}
uint8_t ul_am_rlc_s::max_retx_thres_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 3, 4, 6, 8, 16, 32};
return map_enum_number(options, 8, value, "ul_am_rlc_s::max_retx_thres_e_");
}
// UL-UM-RLC ::= SEQUENCE
SRSASN_CODE ul_um_rlc_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(sn_field_len_present, 1));
if (sn_field_len_present) {
HANDLE_CODE(sn_field_len.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ul_um_rlc_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(sn_field_len_present, 1));
if (sn_field_len_present) {
HANDLE_CODE(sn_field_len.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ul_um_rlc_s::to_json(json_writer& j) const
{
j.start_obj();
if (sn_field_len_present) {
j.write_str("sn-FieldLength", sn_field_len.to_string());
}
j.end_obj();
}
// UplinkConfig ::= SEQUENCE
SRSASN_CODE ul_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(init_ul_bwp_present, 1));
HANDLE_CODE(bref.pack(ul_bwp_to_release_list_present, 1));
HANDLE_CODE(bref.pack(ul_bwp_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(first_active_ul_bwp_id_present, 1));
HANDLE_CODE(bref.pack(pusch_serving_cell_cfg_present, 1));
HANDLE_CODE(bref.pack(carrier_switching_present, 1));
if (init_ul_bwp_present) {
HANDLE_CODE(init_ul_bwp.pack(bref));
}
if (ul_bwp_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, ul_bwp_to_release_list, 1, 4, integer_packer<uint8_t>(0, 4)));
}
if (ul_bwp_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, ul_bwp_to_add_mod_list, 1, 4));
}
if (first_active_ul_bwp_id_present) {
HANDLE_CODE(pack_integer(bref, first_active_ul_bwp_id, (uint8_t)0u, (uint8_t)4u));
}
if (pusch_serving_cell_cfg_present) {
HANDLE_CODE(pusch_serving_cell_cfg.pack(bref));
}
if (carrier_switching_present) {
HANDLE_CODE(carrier_switching.pack(bref));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= pwr_boost_pi2_bpsk_present;
group_flags[0] |= ul_ch_bw_per_scs_list.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(pwr_boost_pi2_bpsk_present, 1));
HANDLE_CODE(bref.pack(ul_ch_bw_per_scs_list.is_present(), 1));
if (pwr_boost_pi2_bpsk_present) {
HANDLE_CODE(bref.pack(pwr_boost_pi2_bpsk, 1));
}
if (ul_ch_bw_per_scs_list.is_present()) {
HANDLE_CODE(pack_dyn_seq_of(bref, *ul_ch_bw_per_scs_list, 1, 5));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ul_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(init_ul_bwp_present, 1));
HANDLE_CODE(bref.unpack(ul_bwp_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(ul_bwp_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(first_active_ul_bwp_id_present, 1));
HANDLE_CODE(bref.unpack(pusch_serving_cell_cfg_present, 1));
HANDLE_CODE(bref.unpack(carrier_switching_present, 1));
if (init_ul_bwp_present) {
HANDLE_CODE(init_ul_bwp.unpack(bref));
}
if (ul_bwp_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(ul_bwp_to_release_list, bref, 1, 4, integer_packer<uint8_t>(0, 4)));
}
if (ul_bwp_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(ul_bwp_to_add_mod_list, bref, 1, 4));
}
if (first_active_ul_bwp_id_present) {
HANDLE_CODE(unpack_integer(first_active_ul_bwp_id, bref, (uint8_t)0u, (uint8_t)4u));
}
if (pusch_serving_cell_cfg_present) {
HANDLE_CODE(pusch_serving_cell_cfg.unpack(bref));
}
if (carrier_switching_present) {
HANDLE_CODE(carrier_switching.unpack(bref));
}
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(pwr_boost_pi2_bpsk_present, 1));
bool ul_ch_bw_per_scs_list_present;
HANDLE_CODE(bref.unpack(ul_ch_bw_per_scs_list_present, 1));
ul_ch_bw_per_scs_list.set_present(ul_ch_bw_per_scs_list_present);
if (pwr_boost_pi2_bpsk_present) {
HANDLE_CODE(bref.unpack(pwr_boost_pi2_bpsk, 1));
}
if (ul_ch_bw_per_scs_list.is_present()) {
HANDLE_CODE(unpack_dyn_seq_of(*ul_ch_bw_per_scs_list, bref, 1, 5));
}
}
}
return SRSASN_SUCCESS;
}
void ul_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (init_ul_bwp_present) {
j.write_fieldname("initialUplinkBWP");
init_ul_bwp.to_json(j);
}
if (ul_bwp_to_release_list_present) {
j.start_array("uplinkBWP-ToReleaseList");
for (const auto& e1 : ul_bwp_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (ul_bwp_to_add_mod_list_present) {
j.start_array("uplinkBWP-ToAddModList");
for (const auto& e1 : ul_bwp_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (first_active_ul_bwp_id_present) {
j.write_int("firstActiveUplinkBWP-Id", first_active_ul_bwp_id);
}
if (pusch_serving_cell_cfg_present) {
j.write_fieldname("pusch-ServingCellConfig");
pusch_serving_cell_cfg.to_json(j);
}
if (carrier_switching_present) {
j.write_fieldname("carrierSwitching");
carrier_switching.to_json(j);
}
if (ext) {
if (pwr_boost_pi2_bpsk_present) {
j.write_bool("powerBoostPi2BPSK", pwr_boost_pi2_bpsk);
}
if (ul_ch_bw_per_scs_list.is_present()) {
j.start_array("uplinkChannelBW-PerSCS-List");
for (const auto& e1 : *ul_ch_bw_per_scs_list) {
e1.to_json(j);
}
j.end_array();
}
}
j.end_obj();
}
// BSR-Config ::= SEQUENCE
SRSASN_CODE bsr_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(lc_ch_sr_delay_timer_present, 1));
HANDLE_CODE(periodic_bsr_timer.pack(bref));
HANDLE_CODE(retx_bsr_timer.pack(bref));
if (lc_ch_sr_delay_timer_present) {
HANDLE_CODE(lc_ch_sr_delay_timer.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE bsr_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(lc_ch_sr_delay_timer_present, 1));
HANDLE_CODE(periodic_bsr_timer.unpack(bref));
HANDLE_CODE(retx_bsr_timer.unpack(bref));
if (lc_ch_sr_delay_timer_present) {
HANDLE_CODE(lc_ch_sr_delay_timer.unpack(bref));
}
return SRSASN_SUCCESS;
}
void bsr_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("periodicBSR-Timer", periodic_bsr_timer.to_string());
j.write_str("retxBSR-Timer", retx_bsr_timer.to_string());
if (lc_ch_sr_delay_timer_present) {
j.write_str("logicalChannelSR-DelayTimer", lc_ch_sr_delay_timer.to_string());
}
j.end_obj();
}
const char* bsr_cfg_s::periodic_bsr_timer_opts::to_string() const
{
static const char* options[] = {"sf1",
"sf5",
"sf10",
"sf16",
"sf20",
"sf32",
"sf40",
"sf64",
"sf80",
"sf128",
"sf160",
"sf320",
"sf640",
"sf1280",
"sf2560",
"infinity"};
return convert_enum_idx(options, 16, value, "bsr_cfg_s::periodic_bsr_timer_e_");
}
int16_t bsr_cfg_s::periodic_bsr_timer_opts::to_number() const
{
static const int16_t options[] = {1, 5, 10, 16, 20, 32, 40, 64, 80, 128, 160, 320, 640, 1280, 2560, -1};
return map_enum_number(options, 16, value, "bsr_cfg_s::periodic_bsr_timer_e_");
}
const char* bsr_cfg_s::retx_bsr_timer_opts::to_string() const
{
static const char* options[] = {"sf10",
"sf20",
"sf40",
"sf80",
"sf160",
"sf320",
"sf640",
"sf1280",
"sf2560",
"sf5120",
"sf10240",
"spare5",
"spare4",
"spare3",
"spare2",
"spare1"};
return convert_enum_idx(options, 16, value, "bsr_cfg_s::retx_bsr_timer_e_");
}
uint16_t bsr_cfg_s::retx_bsr_timer_opts::to_number() const
{
static const uint16_t options[] = {10, 20, 40, 80, 160, 320, 640, 1280, 2560, 5120, 10240};
return map_enum_number(options, 11, value, "bsr_cfg_s::retx_bsr_timer_e_");
}
const char* bsr_cfg_s::lc_ch_sr_delay_timer_opts::to_string() const
{
static const char* options[] = {"sf20", "sf40", "sf64", "sf128", "sf512", "sf1024", "sf2560", "spare1"};
return convert_enum_idx(options, 8, value, "bsr_cfg_s::lc_ch_sr_delay_timer_e_");
}
uint16_t bsr_cfg_s::lc_ch_sr_delay_timer_opts::to_number() const
{
static const uint16_t options[] = {20, 40, 64, 128, 512, 1024, 2560};
return map_enum_number(options, 7, value, "bsr_cfg_s::lc_ch_sr_delay_timer_e_");
}
// DRX-Config ::= SEQUENCE
SRSASN_CODE drx_cfg_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(short_drx_present, 1));
HANDLE_CODE(drx_on_dur_timer.pack(bref));
HANDLE_CODE(drx_inactivity_timer.pack(bref));
HANDLE_CODE(pack_integer(bref, drx_harq_rtt_timer_dl, (uint8_t)0u, (uint8_t)56u));
HANDLE_CODE(pack_integer(bref, drx_harq_rtt_timer_ul, (uint8_t)0u, (uint8_t)56u));
HANDLE_CODE(drx_retx_timer_dl.pack(bref));
HANDLE_CODE(drx_retx_timer_ul.pack(bref));
HANDLE_CODE(drx_long_cycle_start_offset.pack(bref));
if (short_drx_present) {
HANDLE_CODE(short_drx.drx_short_cycle.pack(bref));
HANDLE_CODE(pack_integer(bref, short_drx.drx_short_cycle_timer, (uint8_t)1u, (uint8_t)16u));
}
HANDLE_CODE(pack_integer(bref, drx_slot_offset, (uint8_t)0u, (uint8_t)31u));
return SRSASN_SUCCESS;
}
SRSASN_CODE drx_cfg_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(short_drx_present, 1));
HANDLE_CODE(drx_on_dur_timer.unpack(bref));
HANDLE_CODE(drx_inactivity_timer.unpack(bref));
HANDLE_CODE(unpack_integer(drx_harq_rtt_timer_dl, bref, (uint8_t)0u, (uint8_t)56u));
HANDLE_CODE(unpack_integer(drx_harq_rtt_timer_ul, bref, (uint8_t)0u, (uint8_t)56u));
HANDLE_CODE(drx_retx_timer_dl.unpack(bref));
HANDLE_CODE(drx_retx_timer_ul.unpack(bref));
HANDLE_CODE(drx_long_cycle_start_offset.unpack(bref));
if (short_drx_present) {
HANDLE_CODE(short_drx.drx_short_cycle.unpack(bref));
HANDLE_CODE(unpack_integer(short_drx.drx_short_cycle_timer, bref, (uint8_t)1u, (uint8_t)16u));
}
HANDLE_CODE(unpack_integer(drx_slot_offset, bref, (uint8_t)0u, (uint8_t)31u));
return SRSASN_SUCCESS;
}
void drx_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("drx-onDurationTimer");
drx_on_dur_timer.to_json(j);
j.write_str("drx-InactivityTimer", drx_inactivity_timer.to_string());
j.write_int("drx-HARQ-RTT-TimerDL", drx_harq_rtt_timer_dl);
j.write_int("drx-HARQ-RTT-TimerUL", drx_harq_rtt_timer_ul);
j.write_str("drx-RetransmissionTimerDL", drx_retx_timer_dl.to_string());
j.write_str("drx-RetransmissionTimerUL", drx_retx_timer_ul.to_string());
j.write_fieldname("drx-LongCycleStartOffset");
drx_long_cycle_start_offset.to_json(j);
if (short_drx_present) {
j.write_fieldname("shortDRX");
j.start_obj();
j.write_str("drx-ShortCycle", short_drx.drx_short_cycle.to_string());
j.write_int("drx-ShortCycleTimer", short_drx.drx_short_cycle_timer);
j.end_obj();
}
j.write_int("drx-SlotOffset", drx_slot_offset);
j.end_obj();
}
void drx_cfg_s::drx_on_dur_timer_c_::destroy_() {}
void drx_cfg_s::drx_on_dur_timer_c_::set(types::options e)
{
destroy_();
type_ = e;
}
drx_cfg_s::drx_on_dur_timer_c_::drx_on_dur_timer_c_(const drx_cfg_s::drx_on_dur_timer_c_& other)
{
type_ = other.type();
switch (type_) {
case types::sub_milli_seconds:
c.init(other.c.get<uint8_t>());
break;
case types::milli_seconds:
c.init(other.c.get<milli_seconds_e_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "drx_cfg_s::drx_on_dur_timer_c_");
}
}
drx_cfg_s::drx_on_dur_timer_c_& drx_cfg_s::drx_on_dur_timer_c_::operator=(const drx_cfg_s::drx_on_dur_timer_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::sub_milli_seconds:
c.set(other.c.get<uint8_t>());
break;
case types::milli_seconds:
c.set(other.c.get<milli_seconds_e_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "drx_cfg_s::drx_on_dur_timer_c_");
}
return *this;
}
uint8_t& drx_cfg_s::drx_on_dur_timer_c_::set_sub_milli_seconds()
{
set(types::sub_milli_seconds);
return c.get<uint8_t>();
}
drx_cfg_s::drx_on_dur_timer_c_::milli_seconds_e_& drx_cfg_s::drx_on_dur_timer_c_::set_milli_seconds()
{
set(types::milli_seconds);
return c.get<milli_seconds_e_>();
}
void drx_cfg_s::drx_on_dur_timer_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::sub_milli_seconds:
j.write_int("subMilliSeconds", c.get<uint8_t>());
break;
case types::milli_seconds:
j.write_str("milliSeconds", c.get<milli_seconds_e_>().to_string());
break;
default:
log_invalid_choice_id(type_, "drx_cfg_s::drx_on_dur_timer_c_");
}
j.end_obj();
}
SRSASN_CODE drx_cfg_s::drx_on_dur_timer_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::sub_milli_seconds:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)1u, (uint8_t)31u));
break;
case types::milli_seconds:
HANDLE_CODE(c.get<milli_seconds_e_>().pack(bref));
break;
default:
log_invalid_choice_id(type_, "drx_cfg_s::drx_on_dur_timer_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE drx_cfg_s::drx_on_dur_timer_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::sub_milli_seconds:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)1u, (uint8_t)31u));
break;
case types::milli_seconds:
HANDLE_CODE(c.get<milli_seconds_e_>().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "drx_cfg_s::drx_on_dur_timer_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* drx_cfg_s::drx_on_dur_timer_c_::milli_seconds_opts::to_string() const
{
static const char* options[] = {"ms1", "ms2", "ms3", "ms4", "ms5", "ms6", "ms8", "ms10",
"ms20", "ms30", "ms40", "ms50", "ms60", "ms80", "ms100", "ms200",
"ms300", "ms400", "ms500", "ms600", "ms800", "ms1000", "ms1200", "ms1600",
"spare8", "spare7", "spare6", "spare5", "spare4", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 32, value, "drx_cfg_s::drx_on_dur_timer_c_::milli_seconds_e_");
}
uint16_t drx_cfg_s::drx_on_dur_timer_c_::milli_seconds_opts::to_number() const
{
static const uint16_t options[] = {1, 2, 3, 4, 5, 6, 8, 10, 20, 30, 40, 50,
60, 80, 100, 200, 300, 400, 500, 600, 800, 1000, 1200, 1600};
return map_enum_number(options, 24, value, "drx_cfg_s::drx_on_dur_timer_c_::milli_seconds_e_");
}
const char* drx_cfg_s::drx_on_dur_timer_c_::types_opts::to_string() const
{
static const char* options[] = {"subMilliSeconds", "milliSeconds"};
return convert_enum_idx(options, 2, value, "drx_cfg_s::drx_on_dur_timer_c_::types");
}
const char* drx_cfg_s::drx_inactivity_timer_opts::to_string() const
{
static const char* options[] = {"ms0", "ms1", "ms2", "ms3", "ms4", "ms5", "ms6", "ms8",
"ms10", "ms20", "ms30", "ms40", "ms50", "ms60", "ms80", "ms100",
"ms200", "ms300", "ms500", "ms750", "ms1280", "ms1920", "ms2560", "spare9",
"spare8", "spare7", "spare6", "spare5", "spare4", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 32, value, "drx_cfg_s::drx_inactivity_timer_e_");
}
uint16_t drx_cfg_s::drx_inactivity_timer_opts::to_number() const
{
static const uint16_t options[] = {0, 1, 2, 3, 4, 5, 6, 8, 10, 20, 30, 40,
50, 60, 80, 100, 200, 300, 500, 750, 1280, 1920, 2560};
return map_enum_number(options, 23, value, "drx_cfg_s::drx_inactivity_timer_e_");
}
const char* drx_cfg_s::drx_retx_timer_dl_opts::to_string() const
{
static const char* options[] = {"sl0", "sl1", "sl2", "sl4", "sl6", "sl8", "sl16", "sl24",
"sl33", "sl40", "sl64", "sl80", "sl96", "sl112", "sl128", "sl160",
"sl320", "spare15", "spare14", "spare13", "spare12", "spare11", "spare10", "spare9",
"spare8", "spare7", "spare6", "spare5", "spare4", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 32, value, "drx_cfg_s::drx_retx_timer_dl_e_");
}
uint16_t drx_cfg_s::drx_retx_timer_dl_opts::to_number() const
{
static const uint16_t options[] = {0, 1, 2, 4, 6, 8, 16, 24, 33, 40, 64, 80, 96, 112, 128, 160, 320};
return map_enum_number(options, 17, value, "drx_cfg_s::drx_retx_timer_dl_e_");
}
const char* drx_cfg_s::drx_retx_timer_ul_opts::to_string() const
{
static const char* options[] = {"sl0", "sl1", "sl2", "sl4", "sl6", "sl8", "sl16", "sl24",
"sl33", "sl40", "sl64", "sl80", "sl96", "sl112", "sl128", "sl160",
"sl320", "spare15", "spare14", "spare13", "spare12", "spare11", "spare10", "spare9",
"spare8", "spare7", "spare6", "spare5", "spare4", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 32, value, "drx_cfg_s::drx_retx_timer_ul_e_");
}
uint16_t drx_cfg_s::drx_retx_timer_ul_opts::to_number() const
{
static const uint16_t options[] = {0, 1, 2, 4, 6, 8, 16, 24, 33, 40, 64, 80, 96, 112, 128, 160, 320};
return map_enum_number(options, 17, value, "drx_cfg_s::drx_retx_timer_ul_e_");
}
void drx_cfg_s::drx_long_cycle_start_offset_c_::destroy_() {}
void drx_cfg_s::drx_long_cycle_start_offset_c_::set(types::options e)
{
destroy_();
type_ = e;
}
drx_cfg_s::drx_long_cycle_start_offset_c_::drx_long_cycle_start_offset_c_(
const drx_cfg_s::drx_long_cycle_start_offset_c_& other)
{
type_ = other.type();
switch (type_) {
case types::ms10:
c.init(other.c.get<uint8_t>());
break;
case types::ms20:
c.init(other.c.get<uint8_t>());
break;
case types::ms32:
c.init(other.c.get<uint8_t>());
break;
case types::ms40:
c.init(other.c.get<uint8_t>());
break;
case types::ms60:
c.init(other.c.get<uint8_t>());
break;
case types::ms64:
c.init(other.c.get<uint8_t>());
break;
case types::ms70:
c.init(other.c.get<uint8_t>());
break;
case types::ms80:
c.init(other.c.get<uint8_t>());
break;
case types::ms128:
c.init(other.c.get<uint8_t>());
break;
case types::ms160:
c.init(other.c.get<uint8_t>());
break;
case types::ms256:
c.init(other.c.get<uint16_t>());
break;
case types::ms320:
c.init(other.c.get<uint16_t>());
break;
case types::ms512:
c.init(other.c.get<uint16_t>());
break;
case types::ms640:
c.init(other.c.get<uint16_t>());
break;
case types::ms1024:
c.init(other.c.get<uint16_t>());
break;
case types::ms1280:
c.init(other.c.get<uint16_t>());
break;
case types::ms2048:
c.init(other.c.get<uint16_t>());
break;
case types::ms2560:
c.init(other.c.get<uint16_t>());
break;
case types::ms5120:
c.init(other.c.get<uint16_t>());
break;
case types::ms10240:
c.init(other.c.get<uint16_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "drx_cfg_s::drx_long_cycle_start_offset_c_");
}
}
drx_cfg_s::drx_long_cycle_start_offset_c_&
drx_cfg_s::drx_long_cycle_start_offset_c_::operator=(const drx_cfg_s::drx_long_cycle_start_offset_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::ms10:
c.set(other.c.get<uint8_t>());
break;
case types::ms20:
c.set(other.c.get<uint8_t>());
break;
case types::ms32:
c.set(other.c.get<uint8_t>());
break;
case types::ms40:
c.set(other.c.get<uint8_t>());
break;
case types::ms60:
c.set(other.c.get<uint8_t>());
break;
case types::ms64:
c.set(other.c.get<uint8_t>());
break;
case types::ms70:
c.set(other.c.get<uint8_t>());
break;
case types::ms80:
c.set(other.c.get<uint8_t>());
break;
case types::ms128:
c.set(other.c.get<uint8_t>());
break;
case types::ms160:
c.set(other.c.get<uint8_t>());
break;
case types::ms256:
c.set(other.c.get<uint16_t>());
break;
case types::ms320:
c.set(other.c.get<uint16_t>());
break;
case types::ms512:
c.set(other.c.get<uint16_t>());
break;
case types::ms640:
c.set(other.c.get<uint16_t>());
break;
case types::ms1024:
c.set(other.c.get<uint16_t>());
break;
case types::ms1280:
c.set(other.c.get<uint16_t>());
break;
case types::ms2048:
c.set(other.c.get<uint16_t>());
break;
case types::ms2560:
c.set(other.c.get<uint16_t>());
break;
case types::ms5120:
c.set(other.c.get<uint16_t>());
break;
case types::ms10240:
c.set(other.c.get<uint16_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "drx_cfg_s::drx_long_cycle_start_offset_c_");
}
return *this;
}
uint8_t& drx_cfg_s::drx_long_cycle_start_offset_c_::set_ms10()
{
set(types::ms10);
return c.get<uint8_t>();
}
uint8_t& drx_cfg_s::drx_long_cycle_start_offset_c_::set_ms20()
{
set(types::ms20);
return c.get<uint8_t>();
}
uint8_t& drx_cfg_s::drx_long_cycle_start_offset_c_::set_ms32()
{
set(types::ms32);
return c.get<uint8_t>();
}
uint8_t& drx_cfg_s::drx_long_cycle_start_offset_c_::set_ms40()
{
set(types::ms40);
return c.get<uint8_t>();
}
uint8_t& drx_cfg_s::drx_long_cycle_start_offset_c_::set_ms60()
{
set(types::ms60);
return c.get<uint8_t>();
}
uint8_t& drx_cfg_s::drx_long_cycle_start_offset_c_::set_ms64()
{
set(types::ms64);
return c.get<uint8_t>();
}
uint8_t& drx_cfg_s::drx_long_cycle_start_offset_c_::set_ms70()
{
set(types::ms70);
return c.get<uint8_t>();
}
uint8_t& drx_cfg_s::drx_long_cycle_start_offset_c_::set_ms80()
{
set(types::ms80);
return c.get<uint8_t>();
}
uint8_t& drx_cfg_s::drx_long_cycle_start_offset_c_::set_ms128()
{
set(types::ms128);
return c.get<uint8_t>();
}
uint8_t& drx_cfg_s::drx_long_cycle_start_offset_c_::set_ms160()
{
set(types::ms160);
return c.get<uint8_t>();
}
uint16_t& drx_cfg_s::drx_long_cycle_start_offset_c_::set_ms256()
{
set(types::ms256);
return c.get<uint16_t>();
}
uint16_t& drx_cfg_s::drx_long_cycle_start_offset_c_::set_ms320()
{
set(types::ms320);
return c.get<uint16_t>();
}
uint16_t& drx_cfg_s::drx_long_cycle_start_offset_c_::set_ms512()
{
set(types::ms512);
return c.get<uint16_t>();
}
uint16_t& drx_cfg_s::drx_long_cycle_start_offset_c_::set_ms640()
{
set(types::ms640);
return c.get<uint16_t>();
}
uint16_t& drx_cfg_s::drx_long_cycle_start_offset_c_::set_ms1024()
{
set(types::ms1024);
return c.get<uint16_t>();
}
uint16_t& drx_cfg_s::drx_long_cycle_start_offset_c_::set_ms1280()
{
set(types::ms1280);
return c.get<uint16_t>();
}
uint16_t& drx_cfg_s::drx_long_cycle_start_offset_c_::set_ms2048()
{
set(types::ms2048);
return c.get<uint16_t>();
}
uint16_t& drx_cfg_s::drx_long_cycle_start_offset_c_::set_ms2560()
{
set(types::ms2560);
return c.get<uint16_t>();
}
uint16_t& drx_cfg_s::drx_long_cycle_start_offset_c_::set_ms5120()
{
set(types::ms5120);
return c.get<uint16_t>();
}
uint16_t& drx_cfg_s::drx_long_cycle_start_offset_c_::set_ms10240()
{
set(types::ms10240);
return c.get<uint16_t>();
}
void drx_cfg_s::drx_long_cycle_start_offset_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::ms10:
j.write_int("ms10", c.get<uint8_t>());
break;
case types::ms20:
j.write_int("ms20", c.get<uint8_t>());
break;
case types::ms32:
j.write_int("ms32", c.get<uint8_t>());
break;
case types::ms40:
j.write_int("ms40", c.get<uint8_t>());
break;
case types::ms60:
j.write_int("ms60", c.get<uint8_t>());
break;
case types::ms64:
j.write_int("ms64", c.get<uint8_t>());
break;
case types::ms70:
j.write_int("ms70", c.get<uint8_t>());
break;
case types::ms80:
j.write_int("ms80", c.get<uint8_t>());
break;
case types::ms128:
j.write_int("ms128", c.get<uint8_t>());
break;
case types::ms160:
j.write_int("ms160", c.get<uint8_t>());
break;
case types::ms256:
j.write_int("ms256", c.get<uint16_t>());
break;
case types::ms320:
j.write_int("ms320", c.get<uint16_t>());
break;
case types::ms512:
j.write_int("ms512", c.get<uint16_t>());
break;
case types::ms640:
j.write_int("ms640", c.get<uint16_t>());
break;
case types::ms1024:
j.write_int("ms1024", c.get<uint16_t>());
break;
case types::ms1280:
j.write_int("ms1280", c.get<uint16_t>());
break;
case types::ms2048:
j.write_int("ms2048", c.get<uint16_t>());
break;
case types::ms2560:
j.write_int("ms2560", c.get<uint16_t>());
break;
case types::ms5120:
j.write_int("ms5120", c.get<uint16_t>());
break;
case types::ms10240:
j.write_int("ms10240", c.get<uint16_t>());
break;
default:
log_invalid_choice_id(type_, "drx_cfg_s::drx_long_cycle_start_offset_c_");
}
j.end_obj();
}
SRSASN_CODE drx_cfg_s::drx_long_cycle_start_offset_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::ms10:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)9u));
break;
case types::ms20:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)19u));
break;
case types::ms32:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)31u));
break;
case types::ms40:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)39u));
break;
case types::ms60:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)59u));
break;
case types::ms64:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)63u));
break;
case types::ms70:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)69u));
break;
case types::ms80:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)79u));
break;
case types::ms128:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)127u));
break;
case types::ms160:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)159u));
break;
case types::ms256:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)255u));
break;
case types::ms320:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)319u));
break;
case types::ms512:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)511u));
break;
case types::ms640:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)639u));
break;
case types::ms1024:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)1023u));
break;
case types::ms1280:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)1279u));
break;
case types::ms2048:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)2047u));
break;
case types::ms2560:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)2559u));
break;
case types::ms5120:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)5119u));
break;
case types::ms10240:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)10239u));
break;
default:
log_invalid_choice_id(type_, "drx_cfg_s::drx_long_cycle_start_offset_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE drx_cfg_s::drx_long_cycle_start_offset_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::ms10:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)9u));
break;
case types::ms20:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)19u));
break;
case types::ms32:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)31u));
break;
case types::ms40:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)39u));
break;
case types::ms60:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)59u));
break;
case types::ms64:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)63u));
break;
case types::ms70:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)69u));
break;
case types::ms80:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)79u));
break;
case types::ms128:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)127u));
break;
case types::ms160:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)159u));
break;
case types::ms256:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)255u));
break;
case types::ms320:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)319u));
break;
case types::ms512:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)511u));
break;
case types::ms640:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)639u));
break;
case types::ms1024:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)1023u));
break;
case types::ms1280:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)1279u));
break;
case types::ms2048:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)2047u));
break;
case types::ms2560:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)2559u));
break;
case types::ms5120:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)5119u));
break;
case types::ms10240:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)10239u));
break;
default:
log_invalid_choice_id(type_, "drx_cfg_s::drx_long_cycle_start_offset_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* drx_cfg_s::drx_long_cycle_start_offset_c_::types_opts::to_string() const
{
static const char* options[] = {"ms10", "ms20", "ms32", "ms40", "ms60", "ms64", "ms70",
"ms80", "ms128", "ms160", "ms256", "ms320", "ms512", "ms640",
"ms1024", "ms1280", "ms2048", "ms2560", "ms5120", "ms10240"};
return convert_enum_idx(options, 20, value, "drx_cfg_s::drx_long_cycle_start_offset_c_::types");
}
uint16_t drx_cfg_s::drx_long_cycle_start_offset_c_::types_opts::to_number() const
{
static const uint16_t options[] = {10, 20, 32, 40, 60, 64, 70, 80, 128, 160,
256, 320, 512, 640, 1024, 1280, 2048, 2560, 5120, 10240};
return map_enum_number(options, 20, value, "drx_cfg_s::drx_long_cycle_start_offset_c_::types");
}
const char* drx_cfg_s::short_drx_s_::drx_short_cycle_opts::to_string() const
{
static const char* options[] = {"ms2", "ms3", "ms4", "ms5", "ms6", "ms7", "ms8", "ms10",
"ms14", "ms16", "ms20", "ms30", "ms32", "ms35", "ms40", "ms64",
"ms80", "ms128", "ms160", "ms256", "ms320", "ms512", "ms640", "spare9",
"spare8", "spare7", "spare6", "spare5", "spare4", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 32, value, "drx_cfg_s::short_drx_s_::drx_short_cycle_e_");
}
uint16_t drx_cfg_s::short_drx_s_::drx_short_cycle_opts::to_number() const
{
static const uint16_t options[] = {2, 3, 4, 5, 6, 7, 8, 10, 14, 16, 20, 30,
32, 35, 40, 64, 80, 128, 160, 256, 320, 512, 640};
return map_enum_number(options, 23, value, "drx_cfg_s::short_drx_s_::drx_short_cycle_e_");
}
// DataInactivityTimer ::= ENUMERATED
const char* data_inactivity_timer_opts::to_string() const
{
static const char* options[] = {
"s1", "s2", "s3", "s5", "s7", "s10", "s15", "s20", "s40", "s50", "s60", "s80", "s100", "s120", "s150", "s180"};
return convert_enum_idx(options, 16, value, "data_inactivity_timer_e");
}
uint8_t data_inactivity_timer_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 3, 5, 7, 10, 15, 20, 40, 50, 60, 80, 100, 120, 150, 180};
return map_enum_number(options, 16, value, "data_inactivity_timer_e");
}
// LogicalChannelConfig ::= SEQUENCE
SRSASN_CODE lc_ch_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(ul_specific_params_present, 1));
if (ul_specific_params_present) {
HANDLE_CODE(ul_specific_params.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE lc_ch_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(ul_specific_params_present, 1));
if (ul_specific_params_present) {
HANDLE_CODE(ul_specific_params.unpack(bref));
}
return SRSASN_SUCCESS;
}
void lc_ch_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (ul_specific_params_present) {
j.write_fieldname("ul-SpecificParameters");
ul_specific_params.to_json(j);
}
j.end_obj();
}
SRSASN_CODE lc_ch_cfg_s::ul_specific_params_s_::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(allowed_serving_cells_present, 1));
HANDLE_CODE(bref.pack(allowed_scs_list_present, 1));
HANDLE_CODE(bref.pack(max_pusch_dur_present, 1));
HANDLE_CODE(bref.pack(cfgured_grant_type1_allowed_present, 1));
HANDLE_CODE(bref.pack(lc_ch_group_present, 1));
HANDLE_CODE(bref.pack(sched_request_id_present, 1));
HANDLE_CODE(pack_integer(bref, prio, (uint8_t)1u, (uint8_t)16u));
HANDLE_CODE(prioritised_bit_rate.pack(bref));
HANDLE_CODE(bucket_size_dur.pack(bref));
if (allowed_serving_cells_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, allowed_serving_cells, 1, 31, integer_packer<uint8_t>(0, 31)));
}
if (allowed_scs_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, allowed_scs_list, 1, 5));
}
if (max_pusch_dur_present) {
HANDLE_CODE(max_pusch_dur.pack(bref));
}
if (lc_ch_group_present) {
HANDLE_CODE(pack_integer(bref, lc_ch_group, (uint8_t)0u, (uint8_t)7u));
}
if (sched_request_id_present) {
HANDLE_CODE(pack_integer(bref, sched_request_id, (uint8_t)0u, (uint8_t)7u));
}
HANDLE_CODE(bref.pack(lc_ch_sr_mask, 1));
HANDLE_CODE(bref.pack(lc_ch_sr_delay_timer_applied, 1));
if (ext) {
HANDLE_CODE(bref.pack(bit_rate_query_prohibit_timer_present, 1));
if (bit_rate_query_prohibit_timer_present) {
HANDLE_CODE(bit_rate_query_prohibit_timer.pack(bref));
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE lc_ch_cfg_s::ul_specific_params_s_::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(allowed_serving_cells_present, 1));
HANDLE_CODE(bref.unpack(allowed_scs_list_present, 1));
HANDLE_CODE(bref.unpack(max_pusch_dur_present, 1));
HANDLE_CODE(bref.unpack(cfgured_grant_type1_allowed_present, 1));
HANDLE_CODE(bref.unpack(lc_ch_group_present, 1));
HANDLE_CODE(bref.unpack(sched_request_id_present, 1));
HANDLE_CODE(unpack_integer(prio, bref, (uint8_t)1u, (uint8_t)16u));
HANDLE_CODE(prioritised_bit_rate.unpack(bref));
HANDLE_CODE(bucket_size_dur.unpack(bref));
if (allowed_serving_cells_present) {
HANDLE_CODE(unpack_dyn_seq_of(allowed_serving_cells, bref, 1, 31, integer_packer<uint8_t>(0, 31)));
}
if (allowed_scs_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(allowed_scs_list, bref, 1, 5));
}
if (max_pusch_dur_present) {
HANDLE_CODE(max_pusch_dur.unpack(bref));
}
if (lc_ch_group_present) {
HANDLE_CODE(unpack_integer(lc_ch_group, bref, (uint8_t)0u, (uint8_t)7u));
}
if (sched_request_id_present) {
HANDLE_CODE(unpack_integer(sched_request_id, bref, (uint8_t)0u, (uint8_t)7u));
}
HANDLE_CODE(bref.unpack(lc_ch_sr_mask, 1));
HANDLE_CODE(bref.unpack(lc_ch_sr_delay_timer_applied, 1));
if (ext) {
HANDLE_CODE(bref.unpack(bit_rate_query_prohibit_timer_present, 1));
if (bit_rate_query_prohibit_timer_present) {
HANDLE_CODE(bit_rate_query_prohibit_timer.unpack(bref));
}
}
return SRSASN_SUCCESS;
}
void lc_ch_cfg_s::ul_specific_params_s_::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("priority", prio);
j.write_str("prioritisedBitRate", prioritised_bit_rate.to_string());
j.write_str("bucketSizeDuration", bucket_size_dur.to_string());
if (allowed_serving_cells_present) {
j.start_array("allowedServingCells");
for (const auto& e1 : allowed_serving_cells) {
j.write_int(e1);
}
j.end_array();
}
if (allowed_scs_list_present) {
j.start_array("allowedSCS-List");
for (const auto& e1 : allowed_scs_list) {
j.write_str(e1.to_string());
}
j.end_array();
}
if (max_pusch_dur_present) {
j.write_str("maxPUSCH-Duration", max_pusch_dur.to_string());
}
if (cfgured_grant_type1_allowed_present) {
j.write_str("configuredGrantType1Allowed", "true");
}
if (lc_ch_group_present) {
j.write_int("logicalChannelGroup", lc_ch_group);
}
if (sched_request_id_present) {
j.write_int("schedulingRequestID", sched_request_id);
}
j.write_bool("logicalChannelSR-Mask", lc_ch_sr_mask);
j.write_bool("logicalChannelSR-DelayTimerApplied", lc_ch_sr_delay_timer_applied);
if (ext) {
if (bit_rate_query_prohibit_timer_present) {
j.write_str("bitRateQueryProhibitTimer", bit_rate_query_prohibit_timer.to_string());
}
}
j.end_obj();
}
const char* lc_ch_cfg_s::ul_specific_params_s_::prioritised_bit_rate_opts::to_string() const
{
static const char* options[] = {"kBps0",
"kBps8",
"kBps16",
"kBps32",
"kBps64",
"kBps128",
"kBps256",
"kBps512",
"kBps1024",
"kBps2048",
"kBps4096",
"kBps8192",
"kBps16384",
"kBps32768",
"kBps65536",
"infinity"};
return convert_enum_idx(options, 16, value, "lc_ch_cfg_s::ul_specific_params_s_::prioritised_bit_rate_e_");
}
int32_t lc_ch_cfg_s::ul_specific_params_s_::prioritised_bit_rate_opts::to_number() const
{
static const int32_t options[] = {0, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, -1};
return map_enum_number(options, 16, value, "lc_ch_cfg_s::ul_specific_params_s_::prioritised_bit_rate_e_");
}
const char* lc_ch_cfg_s::ul_specific_params_s_::bucket_size_dur_opts::to_string() const
{
static const char* options[] = {"ms5",
"ms10",
"ms20",
"ms50",
"ms100",
"ms150",
"ms300",
"ms500",
"ms1000",
"spare7",
"spare6",
"spare5",
"spare4",
"spare3",
"spare2",
"spare1"};
return convert_enum_idx(options, 16, value, "lc_ch_cfg_s::ul_specific_params_s_::bucket_size_dur_e_");
}
uint16_t lc_ch_cfg_s::ul_specific_params_s_::bucket_size_dur_opts::to_number() const
{
static const uint16_t options[] = {5, 10, 20, 50, 100, 150, 300, 500, 1000};
return map_enum_number(options, 9, value, "lc_ch_cfg_s::ul_specific_params_s_::bucket_size_dur_e_");
}
const char* lc_ch_cfg_s::ul_specific_params_s_::max_pusch_dur_opts::to_string() const
{
static const char* options[] = {"ms0p02", "ms0p04", "ms0p0625", "ms0p125", "ms0p25", "ms0p5", "spare2", "spare1"};
return convert_enum_idx(options, 8, value, "lc_ch_cfg_s::ul_specific_params_s_::max_pusch_dur_e_");
}
const char* lc_ch_cfg_s::ul_specific_params_s_::bit_rate_query_prohibit_timer_opts::to_string() const
{
static const char* options[] = {"s0", "s0dot4", "s0dot8", "s1dot6", "s3", "s6", "s12", "s30"};
return convert_enum_idx(options, 8, value, "lc_ch_cfg_s::ul_specific_params_s_::bit_rate_query_prohibit_timer_e_");
}
float lc_ch_cfg_s::ul_specific_params_s_::bit_rate_query_prohibit_timer_opts::to_number() const
{
static const float options[] = {0.0, 0.4, 0.8, 1.6, 3.0, 6.0, 12.0, 30.0};
return map_enum_number(options, 8, value, "lc_ch_cfg_s::ul_specific_params_s_::bit_rate_query_prohibit_timer_e_");
}
const char* lc_ch_cfg_s::ul_specific_params_s_::bit_rate_query_prohibit_timer_opts::to_number_string() const
{
static const char* options[] = {"0", "0.4", "0.8", "1.6", "3", "6", "12", "30"};
return convert_enum_idx(options, 8, value, "lc_ch_cfg_s::ul_specific_params_s_::bit_rate_query_prohibit_timer_e_");
}
// PHR-Config ::= SEQUENCE
SRSASN_CODE phr_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(phr_periodic_timer.pack(bref));
HANDLE_CODE(phr_prohibit_timer.pack(bref));
HANDLE_CODE(phr_tx_pwr_factor_change.pack(bref));
HANDLE_CODE(bref.pack(multiple_phr, 1));
HANDLE_CODE(bref.pack(dummy, 1));
HANDLE_CODE(bref.pack(phr_type2_other_cell, 1));
HANDLE_CODE(phr_mode_other_cg.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE phr_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(phr_periodic_timer.unpack(bref));
HANDLE_CODE(phr_prohibit_timer.unpack(bref));
HANDLE_CODE(phr_tx_pwr_factor_change.unpack(bref));
HANDLE_CODE(bref.unpack(multiple_phr, 1));
HANDLE_CODE(bref.unpack(dummy, 1));
HANDLE_CODE(bref.unpack(phr_type2_other_cell, 1));
HANDLE_CODE(phr_mode_other_cg.unpack(bref));
return SRSASN_SUCCESS;
}
void phr_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("phr-PeriodicTimer", phr_periodic_timer.to_string());
j.write_str("phr-ProhibitTimer", phr_prohibit_timer.to_string());
j.write_str("phr-Tx-PowerFactorChange", phr_tx_pwr_factor_change.to_string());
j.write_bool("multiplePHR", multiple_phr);
j.write_bool("dummy", dummy);
j.write_bool("phr-Type2OtherCell", phr_type2_other_cell);
j.write_str("phr-ModeOtherCG", phr_mode_other_cg.to_string());
j.end_obj();
}
const char* phr_cfg_s::phr_periodic_timer_opts::to_string() const
{
static const char* options[] = {"sf10", "sf20", "sf50", "sf100", "sf200", "sf500", "sf1000", "infinity"};
return convert_enum_idx(options, 8, value, "phr_cfg_s::phr_periodic_timer_e_");
}
int16_t phr_cfg_s::phr_periodic_timer_opts::to_number() const
{
static const int16_t options[] = {10, 20, 50, 100, 200, 500, 1000, -1};
return map_enum_number(options, 8, value, "phr_cfg_s::phr_periodic_timer_e_");
}
const char* phr_cfg_s::phr_prohibit_timer_opts::to_string() const
{
static const char* options[] = {"sf0", "sf10", "sf20", "sf50", "sf100", "sf200", "sf500", "sf1000"};
return convert_enum_idx(options, 8, value, "phr_cfg_s::phr_prohibit_timer_e_");
}
uint16_t phr_cfg_s::phr_prohibit_timer_opts::to_number() const
{
static const uint16_t options[] = {0, 10, 20, 50, 100, 200, 500, 1000};
return map_enum_number(options, 8, value, "phr_cfg_s::phr_prohibit_timer_e_");
}
const char* phr_cfg_s::phr_tx_pwr_factor_change_opts::to_string() const
{
static const char* options[] = {"dB1", "dB3", "dB6", "infinity"};
return convert_enum_idx(options, 4, value, "phr_cfg_s::phr_tx_pwr_factor_change_e_");
}
int8_t phr_cfg_s::phr_tx_pwr_factor_change_opts::to_number() const
{
static const int8_t options[] = {1, 3, 6, -1};
return map_enum_number(options, 4, value, "phr_cfg_s::phr_tx_pwr_factor_change_e_");
}
const char* phr_cfg_s::phr_mode_other_cg_opts::to_string() const
{
static const char* options[] = {"real", "virtual"};
return convert_enum_idx(options, 2, value, "phr_cfg_s::phr_mode_other_cg_e_");
}
// RLC-Config ::= CHOICE
void rlc_cfg_c::destroy_()
{
switch (type_) {
case types::am:
c.destroy<am_s_>();
break;
case types::um_bi_dir:
c.destroy<um_bi_dir_s_>();
break;
case types::um_uni_dir_ul:
c.destroy<um_uni_dir_ul_s_>();
break;
case types::um_uni_dir_dl:
c.destroy<um_uni_dir_dl_s_>();
break;
default:
break;
}
}
void rlc_cfg_c::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::am:
c.init<am_s_>();
break;
case types::um_bi_dir:
c.init<um_bi_dir_s_>();
break;
case types::um_uni_dir_ul:
c.init<um_uni_dir_ul_s_>();
break;
case types::um_uni_dir_dl:
c.init<um_uni_dir_dl_s_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rlc_cfg_c");
}
}
rlc_cfg_c::rlc_cfg_c(const rlc_cfg_c& other)
{
type_ = other.type();
switch (type_) {
case types::am:
c.init(other.c.get<am_s_>());
break;
case types::um_bi_dir:
c.init(other.c.get<um_bi_dir_s_>());
break;
case types::um_uni_dir_ul:
c.init(other.c.get<um_uni_dir_ul_s_>());
break;
case types::um_uni_dir_dl:
c.init(other.c.get<um_uni_dir_dl_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rlc_cfg_c");
}
}
rlc_cfg_c& rlc_cfg_c::operator=(const rlc_cfg_c& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::am:
c.set(other.c.get<am_s_>());
break;
case types::um_bi_dir:
c.set(other.c.get<um_bi_dir_s_>());
break;
case types::um_uni_dir_ul:
c.set(other.c.get<um_uni_dir_ul_s_>());
break;
case types::um_uni_dir_dl:
c.set(other.c.get<um_uni_dir_dl_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rlc_cfg_c");
}
return *this;
}
rlc_cfg_c::am_s_& rlc_cfg_c::set_am()
{
set(types::am);
return c.get<am_s_>();
}
rlc_cfg_c::um_bi_dir_s_& rlc_cfg_c::set_um_bi_dir()
{
set(types::um_bi_dir);
return c.get<um_bi_dir_s_>();
}
rlc_cfg_c::um_uni_dir_ul_s_& rlc_cfg_c::set_um_uni_dir_ul()
{
set(types::um_uni_dir_ul);
return c.get<um_uni_dir_ul_s_>();
}
rlc_cfg_c::um_uni_dir_dl_s_& rlc_cfg_c::set_um_uni_dir_dl()
{
set(types::um_uni_dir_dl);
return c.get<um_uni_dir_dl_s_>();
}
void rlc_cfg_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::am:
j.write_fieldname("am");
j.start_obj();
j.write_fieldname("ul-AM-RLC");
c.get<am_s_>().ul_am_rlc.to_json(j);
j.write_fieldname("dl-AM-RLC");
c.get<am_s_>().dl_am_rlc.to_json(j);
j.end_obj();
break;
case types::um_bi_dir:
j.write_fieldname("um-Bi-Directional");
j.start_obj();
j.write_fieldname("ul-UM-RLC");
c.get<um_bi_dir_s_>().ul_um_rlc.to_json(j);
j.write_fieldname("dl-UM-RLC");
c.get<um_bi_dir_s_>().dl_um_rlc.to_json(j);
j.end_obj();
break;
case types::um_uni_dir_ul:
j.write_fieldname("um-Uni-Directional-UL");
j.start_obj();
j.write_fieldname("ul-UM-RLC");
c.get<um_uni_dir_ul_s_>().ul_um_rlc.to_json(j);
j.end_obj();
break;
case types::um_uni_dir_dl:
j.write_fieldname("um-Uni-Directional-DL");
j.start_obj();
j.write_fieldname("dl-UM-RLC");
c.get<um_uni_dir_dl_s_>().dl_um_rlc.to_json(j);
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "rlc_cfg_c");
}
j.end_obj();
}
SRSASN_CODE rlc_cfg_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::am:
HANDLE_CODE(c.get<am_s_>().ul_am_rlc.pack(bref));
HANDLE_CODE(c.get<am_s_>().dl_am_rlc.pack(bref));
break;
case types::um_bi_dir:
HANDLE_CODE(c.get<um_bi_dir_s_>().ul_um_rlc.pack(bref));
HANDLE_CODE(c.get<um_bi_dir_s_>().dl_um_rlc.pack(bref));
break;
case types::um_uni_dir_ul:
HANDLE_CODE(c.get<um_uni_dir_ul_s_>().ul_um_rlc.pack(bref));
break;
case types::um_uni_dir_dl:
HANDLE_CODE(c.get<um_uni_dir_dl_s_>().dl_um_rlc.pack(bref));
break;
default:
log_invalid_choice_id(type_, "rlc_cfg_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rlc_cfg_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::am:
HANDLE_CODE(c.get<am_s_>().ul_am_rlc.unpack(bref));
HANDLE_CODE(c.get<am_s_>().dl_am_rlc.unpack(bref));
break;
case types::um_bi_dir:
HANDLE_CODE(c.get<um_bi_dir_s_>().ul_um_rlc.unpack(bref));
HANDLE_CODE(c.get<um_bi_dir_s_>().dl_um_rlc.unpack(bref));
break;
case types::um_uni_dir_ul:
HANDLE_CODE(c.get<um_uni_dir_ul_s_>().ul_um_rlc.unpack(bref));
break;
case types::um_uni_dir_dl:
HANDLE_CODE(c.get<um_uni_dir_dl_s_>().dl_um_rlc.unpack(bref));
break;
default:
log_invalid_choice_id(type_, "rlc_cfg_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* rlc_cfg_c::types_opts::to_string() const
{
static const char* options[] = {"am", "um-Bi-Directional", "um-Uni-Directional-UL", "um-Uni-Directional-DL"};
return convert_enum_idx(options, 4, value, "rlc_cfg_c::types");
}
// RLF-TimersAndConstants ::= SEQUENCE
SRSASN_CODE rlf_timers_and_consts_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(t310.pack(bref));
HANDLE_CODE(n310.pack(bref));
HANDLE_CODE(n311.pack(bref));
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= t311;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(t311.pack(bref));
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rlf_timers_and_consts_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(t310.unpack(bref));
HANDLE_CODE(n310.unpack(bref));
HANDLE_CODE(n311.unpack(bref));
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(t311.unpack(bref));
}
}
return SRSASN_SUCCESS;
}
void rlf_timers_and_consts_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("t310", t310.to_string());
j.write_str("n310", n310.to_string());
j.write_str("n311", n311.to_string());
if (ext) {
j.write_str("t311", t311.to_string());
}
j.end_obj();
}
const char* rlf_timers_and_consts_s::t310_opts::to_string() const
{
static const char* options[] = {"ms0", "ms50", "ms100", "ms200", "ms500", "ms1000", "ms2000", "ms4000", "ms6000"};
return convert_enum_idx(options, 9, value, "rlf_timers_and_consts_s::t310_e_");
}
uint16_t rlf_timers_and_consts_s::t310_opts::to_number() const
{
static const uint16_t options[] = {0, 50, 100, 200, 500, 1000, 2000, 4000, 6000};
return map_enum_number(options, 9, value, "rlf_timers_and_consts_s::t310_e_");
}
const char* rlf_timers_and_consts_s::n310_opts::to_string() const
{
static const char* options[] = {"n1", "n2", "n3", "n4", "n6", "n8", "n10", "n20"};
return convert_enum_idx(options, 8, value, "rlf_timers_and_consts_s::n310_e_");
}
uint8_t rlf_timers_and_consts_s::n310_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 3, 4, 6, 8, 10, 20};
return map_enum_number(options, 8, value, "rlf_timers_and_consts_s::n310_e_");
}
const char* rlf_timers_and_consts_s::n311_opts::to_string() const
{
static const char* options[] = {"n1", "n2", "n3", "n4", "n5", "n6", "n8", "n10"};
return convert_enum_idx(options, 8, value, "rlf_timers_and_consts_s::n311_e_");
}
uint8_t rlf_timers_and_consts_s::n311_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 3, 4, 5, 6, 8, 10};
return map_enum_number(options, 8, value, "rlf_timers_and_consts_s::n311_e_");
}
const char* rlf_timers_and_consts_s::t311_opts::to_string() const
{
static const char* options[] = {"ms1000", "ms3000", "ms5000", "ms10000", "ms15000", "ms20000", "ms30000"};
return convert_enum_idx(options, 7, value, "rlf_timers_and_consts_s::t311_e_");
}
uint16_t rlf_timers_and_consts_s::t311_opts::to_number() const
{
static const uint16_t options[] = {1000, 3000, 5000, 10000, 15000, 20000, 30000};
return map_enum_number(options, 7, value, "rlf_timers_and_consts_s::t311_e_");
}
// ReconfigurationWithSync ::= SEQUENCE
SRSASN_CODE recfg_with_sync_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(sp_cell_cfg_common_present, 1));
HANDLE_CODE(bref.pack(rach_cfg_ded_present, 1));
if (sp_cell_cfg_common_present) {
HANDLE_CODE(sp_cell_cfg_common.pack(bref));
}
HANDLE_CODE(pack_integer(bref, new_ue_id, (uint32_t)0u, (uint32_t)65535u));
HANDLE_CODE(t304.pack(bref));
if (rach_cfg_ded_present) {
HANDLE_CODE(rach_cfg_ded.pack(bref));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= smtc.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(smtc.is_present(), 1));
if (smtc.is_present()) {
HANDLE_CODE(smtc->pack(bref));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE recfg_with_sync_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(sp_cell_cfg_common_present, 1));
HANDLE_CODE(bref.unpack(rach_cfg_ded_present, 1));
if (sp_cell_cfg_common_present) {
HANDLE_CODE(sp_cell_cfg_common.unpack(bref));
}
HANDLE_CODE(unpack_integer(new_ue_id, bref, (uint32_t)0u, (uint32_t)65535u));
HANDLE_CODE(t304.unpack(bref));
if (rach_cfg_ded_present) {
HANDLE_CODE(rach_cfg_ded.unpack(bref));
}
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool smtc_present;
HANDLE_CODE(bref.unpack(smtc_present, 1));
smtc.set_present(smtc_present);
if (smtc.is_present()) {
HANDLE_CODE(smtc->unpack(bref));
}
}
}
return SRSASN_SUCCESS;
}
void recfg_with_sync_s::to_json(json_writer& j) const
{
j.start_obj();
if (sp_cell_cfg_common_present) {
j.write_fieldname("spCellConfigCommon");
sp_cell_cfg_common.to_json(j);
}
j.write_int("newUE-Identity", new_ue_id);
j.write_str("t304", t304.to_string());
if (rach_cfg_ded_present) {
j.write_fieldname("rach-ConfigDedicated");
rach_cfg_ded.to_json(j);
}
if (ext) {
if (smtc.is_present()) {
j.write_fieldname("smtc");
smtc->to_json(j);
}
}
j.end_obj();
}
const char* recfg_with_sync_s::t304_opts::to_string() const
{
static const char* options[] = {"ms50", "ms100", "ms150", "ms200", "ms500", "ms1000", "ms2000", "ms10000"};
return convert_enum_idx(options, 8, value, "recfg_with_sync_s::t304_e_");
}
uint16_t recfg_with_sync_s::t304_opts::to_number() const
{
static const uint16_t options[] = {50, 100, 150, 200, 500, 1000, 2000, 10000};
return map_enum_number(options, 8, value, "recfg_with_sync_s::t304_e_");
}
void recfg_with_sync_s::rach_cfg_ded_c_::destroy_()
{
switch (type_) {
case types::ul:
c.destroy<rach_cfg_ded_s>();
break;
case types::supplementary_ul:
c.destroy<rach_cfg_ded_s>();
break;
default:
break;
}
}
void recfg_with_sync_s::rach_cfg_ded_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::ul:
c.init<rach_cfg_ded_s>();
break;
case types::supplementary_ul:
c.init<rach_cfg_ded_s>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "recfg_with_sync_s::rach_cfg_ded_c_");
}
}
recfg_with_sync_s::rach_cfg_ded_c_::rach_cfg_ded_c_(const recfg_with_sync_s::rach_cfg_ded_c_& other)
{
type_ = other.type();
switch (type_) {
case types::ul:
c.init(other.c.get<rach_cfg_ded_s>());
break;
case types::supplementary_ul:
c.init(other.c.get<rach_cfg_ded_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "recfg_with_sync_s::rach_cfg_ded_c_");
}
}
recfg_with_sync_s::rach_cfg_ded_c_&
recfg_with_sync_s::rach_cfg_ded_c_::operator=(const recfg_with_sync_s::rach_cfg_ded_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::ul:
c.set(other.c.get<rach_cfg_ded_s>());
break;
case types::supplementary_ul:
c.set(other.c.get<rach_cfg_ded_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "recfg_with_sync_s::rach_cfg_ded_c_");
}
return *this;
}
rach_cfg_ded_s& recfg_with_sync_s::rach_cfg_ded_c_::set_ul()
{
set(types::ul);
return c.get<rach_cfg_ded_s>();
}
rach_cfg_ded_s& recfg_with_sync_s::rach_cfg_ded_c_::set_supplementary_ul()
{
set(types::supplementary_ul);
return c.get<rach_cfg_ded_s>();
}
void recfg_with_sync_s::rach_cfg_ded_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::ul:
j.write_fieldname("uplink");
c.get<rach_cfg_ded_s>().to_json(j);
break;
case types::supplementary_ul:
j.write_fieldname("supplementaryUplink");
c.get<rach_cfg_ded_s>().to_json(j);
break;
default:
log_invalid_choice_id(type_, "recfg_with_sync_s::rach_cfg_ded_c_");
}
j.end_obj();
}
SRSASN_CODE recfg_with_sync_s::rach_cfg_ded_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::ul:
HANDLE_CODE(c.get<rach_cfg_ded_s>().pack(bref));
break;
case types::supplementary_ul:
HANDLE_CODE(c.get<rach_cfg_ded_s>().pack(bref));
break;
default:
log_invalid_choice_id(type_, "recfg_with_sync_s::rach_cfg_ded_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE recfg_with_sync_s::rach_cfg_ded_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::ul:
HANDLE_CODE(c.get<rach_cfg_ded_s>().unpack(bref));
break;
case types::supplementary_ul:
HANDLE_CODE(c.get<rach_cfg_ded_s>().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "recfg_with_sync_s::rach_cfg_ded_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* recfg_with_sync_s::rach_cfg_ded_c_::types_opts::to_string() const
{
static const char* options[] = {"uplink", "supplementaryUplink"};
return convert_enum_idx(options, 2, value, "recfg_with_sync_s::rach_cfg_ded_c_::types");
}
// SchedulingRequestConfig ::= SEQUENCE
SRSASN_CODE sched_request_cfg_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(sched_request_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(sched_request_to_release_list_present, 1));
if (sched_request_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, sched_request_to_add_mod_list, 1, 8));
}
if (sched_request_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, sched_request_to_release_list, 1, 8, integer_packer<uint8_t>(0, 7)));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE sched_request_cfg_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(sched_request_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(sched_request_to_release_list_present, 1));
if (sched_request_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(sched_request_to_add_mod_list, bref, 1, 8));
}
if (sched_request_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(sched_request_to_release_list, bref, 1, 8, integer_packer<uint8_t>(0, 7)));
}
return SRSASN_SUCCESS;
}
void sched_request_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (sched_request_to_add_mod_list_present) {
j.start_array("schedulingRequestToAddModList");
for (const auto& e1 : sched_request_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (sched_request_to_release_list_present) {
j.start_array("schedulingRequestToReleaseList");
for (const auto& e1 : sched_request_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
j.end_obj();
}
// ServingCellConfig ::= SEQUENCE
SRSASN_CODE serving_cell_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(tdd_ul_dl_cfg_ded_present, 1));
HANDLE_CODE(bref.pack(init_dl_bwp_present, 1));
HANDLE_CODE(bref.pack(dl_bwp_to_release_list_present, 1));
HANDLE_CODE(bref.pack(dl_bwp_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(first_active_dl_bwp_id_present, 1));
HANDLE_CODE(bref.pack(bwp_inactivity_timer_present, 1));
HANDLE_CODE(bref.pack(default_dl_bwp_id_present, 1));
HANDLE_CODE(bref.pack(ul_cfg_present, 1));
HANDLE_CODE(bref.pack(supplementary_ul_present, 1));
HANDLE_CODE(bref.pack(pdcch_serving_cell_cfg_present, 1));
HANDLE_CODE(bref.pack(pdsch_serving_cell_cfg_present, 1));
HANDLE_CODE(bref.pack(csi_meas_cfg_present, 1));
HANDLE_CODE(bref.pack(scell_deactivation_timer_present, 1));
HANDLE_CODE(bref.pack(cross_carrier_sched_cfg_present, 1));
HANDLE_CODE(bref.pack(dummy_present, 1));
HANDLE_CODE(bref.pack(pathloss_ref_linking_present, 1));
HANDLE_CODE(bref.pack(serving_cell_mo_present, 1));
if (tdd_ul_dl_cfg_ded_present) {
HANDLE_CODE(tdd_ul_dl_cfg_ded.pack(bref));
}
if (init_dl_bwp_present) {
HANDLE_CODE(init_dl_bwp.pack(bref));
}
if (dl_bwp_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, dl_bwp_to_release_list, 1, 4, integer_packer<uint8_t>(0, 4)));
}
if (dl_bwp_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, dl_bwp_to_add_mod_list, 1, 4));
}
if (first_active_dl_bwp_id_present) {
HANDLE_CODE(pack_integer(bref, first_active_dl_bwp_id, (uint8_t)0u, (uint8_t)4u));
}
if (bwp_inactivity_timer_present) {
HANDLE_CODE(bwp_inactivity_timer.pack(bref));
}
if (default_dl_bwp_id_present) {
HANDLE_CODE(pack_integer(bref, default_dl_bwp_id, (uint8_t)0u, (uint8_t)4u));
}
if (ul_cfg_present) {
HANDLE_CODE(ul_cfg.pack(bref));
}
if (supplementary_ul_present) {
HANDLE_CODE(supplementary_ul.pack(bref));
}
if (pdcch_serving_cell_cfg_present) {
HANDLE_CODE(pdcch_serving_cell_cfg.pack(bref));
}
if (pdsch_serving_cell_cfg_present) {
HANDLE_CODE(pdsch_serving_cell_cfg.pack(bref));
}
if (csi_meas_cfg_present) {
HANDLE_CODE(csi_meas_cfg.pack(bref));
}
if (scell_deactivation_timer_present) {
HANDLE_CODE(scell_deactivation_timer.pack(bref));
}
if (cross_carrier_sched_cfg_present) {
HANDLE_CODE(cross_carrier_sched_cfg.pack(bref));
}
HANDLE_CODE(pack_integer(bref, tag_id, (uint8_t)0u, (uint8_t)3u));
if (pathloss_ref_linking_present) {
HANDLE_CODE(pathloss_ref_linking.pack(bref));
}
if (serving_cell_mo_present) {
HANDLE_CODE(pack_integer(bref, serving_cell_mo, (uint8_t)1u, (uint8_t)64u));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= lte_crs_to_match_around.is_present();
group_flags[0] |= rate_match_pattern_to_add_mod_list.is_present();
group_flags[0] |= rate_match_pattern_to_release_list.is_present();
group_flags[0] |= dl_ch_bw_per_scs_list.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(lte_crs_to_match_around.is_present(), 1));
HANDLE_CODE(bref.pack(rate_match_pattern_to_add_mod_list.is_present(), 1));
HANDLE_CODE(bref.pack(rate_match_pattern_to_release_list.is_present(), 1));
HANDLE_CODE(bref.pack(dl_ch_bw_per_scs_list.is_present(), 1));
if (lte_crs_to_match_around.is_present()) {
HANDLE_CODE(lte_crs_to_match_around->pack(bref));
}
if (rate_match_pattern_to_add_mod_list.is_present()) {
HANDLE_CODE(pack_dyn_seq_of(bref, *rate_match_pattern_to_add_mod_list, 1, 4));
}
if (rate_match_pattern_to_release_list.is_present()) {
HANDLE_CODE(pack_dyn_seq_of(bref, *rate_match_pattern_to_release_list, 1, 4, integer_packer<uint8_t>(0, 3)));
}
if (dl_ch_bw_per_scs_list.is_present()) {
HANDLE_CODE(pack_dyn_seq_of(bref, *dl_ch_bw_per_scs_list, 1, 5));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE serving_cell_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(tdd_ul_dl_cfg_ded_present, 1));
HANDLE_CODE(bref.unpack(init_dl_bwp_present, 1));
HANDLE_CODE(bref.unpack(dl_bwp_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(dl_bwp_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(first_active_dl_bwp_id_present, 1));
HANDLE_CODE(bref.unpack(bwp_inactivity_timer_present, 1));
HANDLE_CODE(bref.unpack(default_dl_bwp_id_present, 1));
HANDLE_CODE(bref.unpack(ul_cfg_present, 1));
HANDLE_CODE(bref.unpack(supplementary_ul_present, 1));
HANDLE_CODE(bref.unpack(pdcch_serving_cell_cfg_present, 1));
HANDLE_CODE(bref.unpack(pdsch_serving_cell_cfg_present, 1));
HANDLE_CODE(bref.unpack(csi_meas_cfg_present, 1));
HANDLE_CODE(bref.unpack(scell_deactivation_timer_present, 1));
HANDLE_CODE(bref.unpack(cross_carrier_sched_cfg_present, 1));
HANDLE_CODE(bref.unpack(dummy_present, 1));
HANDLE_CODE(bref.unpack(pathloss_ref_linking_present, 1));
HANDLE_CODE(bref.unpack(serving_cell_mo_present, 1));
if (tdd_ul_dl_cfg_ded_present) {
HANDLE_CODE(tdd_ul_dl_cfg_ded.unpack(bref));
}
if (init_dl_bwp_present) {
HANDLE_CODE(init_dl_bwp.unpack(bref));
}
if (dl_bwp_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(dl_bwp_to_release_list, bref, 1, 4, integer_packer<uint8_t>(0, 4)));
}
if (dl_bwp_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(dl_bwp_to_add_mod_list, bref, 1, 4));
}
if (first_active_dl_bwp_id_present) {
HANDLE_CODE(unpack_integer(first_active_dl_bwp_id, bref, (uint8_t)0u, (uint8_t)4u));
}
if (bwp_inactivity_timer_present) {
HANDLE_CODE(bwp_inactivity_timer.unpack(bref));
}
if (default_dl_bwp_id_present) {
HANDLE_CODE(unpack_integer(default_dl_bwp_id, bref, (uint8_t)0u, (uint8_t)4u));
}
if (ul_cfg_present) {
HANDLE_CODE(ul_cfg.unpack(bref));
}
if (supplementary_ul_present) {
HANDLE_CODE(supplementary_ul.unpack(bref));
}
if (pdcch_serving_cell_cfg_present) {
HANDLE_CODE(pdcch_serving_cell_cfg.unpack(bref));
}
if (pdsch_serving_cell_cfg_present) {
HANDLE_CODE(pdsch_serving_cell_cfg.unpack(bref));
}
if (csi_meas_cfg_present) {
HANDLE_CODE(csi_meas_cfg.unpack(bref));
}
if (scell_deactivation_timer_present) {
HANDLE_CODE(scell_deactivation_timer.unpack(bref));
}
if (cross_carrier_sched_cfg_present) {
HANDLE_CODE(cross_carrier_sched_cfg.unpack(bref));
}
HANDLE_CODE(unpack_integer(tag_id, bref, (uint8_t)0u, (uint8_t)3u));
if (pathloss_ref_linking_present) {
HANDLE_CODE(pathloss_ref_linking.unpack(bref));
}
if (serving_cell_mo_present) {
HANDLE_CODE(unpack_integer(serving_cell_mo, bref, (uint8_t)1u, (uint8_t)64u));
}
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool lte_crs_to_match_around_present;
HANDLE_CODE(bref.unpack(lte_crs_to_match_around_present, 1));
lte_crs_to_match_around.set_present(lte_crs_to_match_around_present);
bool rate_match_pattern_to_add_mod_list_present;
HANDLE_CODE(bref.unpack(rate_match_pattern_to_add_mod_list_present, 1));
rate_match_pattern_to_add_mod_list.set_present(rate_match_pattern_to_add_mod_list_present);
bool rate_match_pattern_to_release_list_present;
HANDLE_CODE(bref.unpack(rate_match_pattern_to_release_list_present, 1));
rate_match_pattern_to_release_list.set_present(rate_match_pattern_to_release_list_present);
bool dl_ch_bw_per_scs_list_present;
HANDLE_CODE(bref.unpack(dl_ch_bw_per_scs_list_present, 1));
dl_ch_bw_per_scs_list.set_present(dl_ch_bw_per_scs_list_present);
if (lte_crs_to_match_around.is_present()) {
HANDLE_CODE(lte_crs_to_match_around->unpack(bref));
}
if (rate_match_pattern_to_add_mod_list.is_present()) {
HANDLE_CODE(unpack_dyn_seq_of(*rate_match_pattern_to_add_mod_list, bref, 1, 4));
}
if (rate_match_pattern_to_release_list.is_present()) {
HANDLE_CODE(unpack_dyn_seq_of(*rate_match_pattern_to_release_list, bref, 1, 4, integer_packer<uint8_t>(0, 3)));
}
if (dl_ch_bw_per_scs_list.is_present()) {
HANDLE_CODE(unpack_dyn_seq_of(*dl_ch_bw_per_scs_list, bref, 1, 5));
}
}
}
return SRSASN_SUCCESS;
}
void serving_cell_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (tdd_ul_dl_cfg_ded_present) {
j.write_fieldname("tdd-UL-DL-ConfigurationDedicated");
tdd_ul_dl_cfg_ded.to_json(j);
}
if (init_dl_bwp_present) {
j.write_fieldname("initialDownlinkBWP");
init_dl_bwp.to_json(j);
}
if (dl_bwp_to_release_list_present) {
j.start_array("downlinkBWP-ToReleaseList");
for (const auto& e1 : dl_bwp_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (dl_bwp_to_add_mod_list_present) {
j.start_array("downlinkBWP-ToAddModList");
for (const auto& e1 : dl_bwp_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (first_active_dl_bwp_id_present) {
j.write_int("firstActiveDownlinkBWP-Id", first_active_dl_bwp_id);
}
if (bwp_inactivity_timer_present) {
j.write_str("bwp-InactivityTimer", bwp_inactivity_timer.to_string());
}
if (default_dl_bwp_id_present) {
j.write_int("defaultDownlinkBWP-Id", default_dl_bwp_id);
}
if (ul_cfg_present) {
j.write_fieldname("uplinkConfig");
ul_cfg.to_json(j);
}
if (supplementary_ul_present) {
j.write_fieldname("supplementaryUplink");
supplementary_ul.to_json(j);
}
if (pdcch_serving_cell_cfg_present) {
j.write_fieldname("pdcch-ServingCellConfig");
pdcch_serving_cell_cfg.to_json(j);
}
if (pdsch_serving_cell_cfg_present) {
j.write_fieldname("pdsch-ServingCellConfig");
pdsch_serving_cell_cfg.to_json(j);
}
if (csi_meas_cfg_present) {
j.write_fieldname("csi-MeasConfig");
csi_meas_cfg.to_json(j);
}
if (scell_deactivation_timer_present) {
j.write_str("sCellDeactivationTimer", scell_deactivation_timer.to_string());
}
if (cross_carrier_sched_cfg_present) {
j.write_fieldname("crossCarrierSchedulingConfig");
cross_carrier_sched_cfg.to_json(j);
}
j.write_int("tag-Id", tag_id);
if (dummy_present) {
j.write_str("dummy", "enabled");
}
if (pathloss_ref_linking_present) {
j.write_str("pathlossReferenceLinking", pathloss_ref_linking.to_string());
}
if (serving_cell_mo_present) {
j.write_int("servingCellMO", serving_cell_mo);
}
if (ext) {
if (lte_crs_to_match_around.is_present()) {
j.write_fieldname("lte-CRS-ToMatchAround");
lte_crs_to_match_around->to_json(j);
}
if (rate_match_pattern_to_add_mod_list.is_present()) {
j.start_array("rateMatchPatternToAddModList");
for (const auto& e1 : *rate_match_pattern_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (rate_match_pattern_to_release_list.is_present()) {
j.start_array("rateMatchPatternToReleaseList");
for (const auto& e1 : *rate_match_pattern_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (dl_ch_bw_per_scs_list.is_present()) {
j.start_array("downlinkChannelBW-PerSCS-List");
for (const auto& e1 : *dl_ch_bw_per_scs_list) {
e1.to_json(j);
}
j.end_array();
}
}
j.end_obj();
}
const char* serving_cell_cfg_s::bwp_inactivity_timer_opts::to_string() const
{
static const char* options[] = {"ms2", "ms3", "ms4", "ms5", "ms6", "ms8", "ms10", "ms20",
"ms30", "ms40", "ms50", "ms60", "ms80", "ms100", "ms200", "ms300",
"ms500", "ms750", "ms1280", "ms1920", "ms2560", "spare10", "spare9", "spare8",
"spare7", "spare6", "spare5", "spare4", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 31, value, "serving_cell_cfg_s::bwp_inactivity_timer_e_");
}
uint16_t serving_cell_cfg_s::bwp_inactivity_timer_opts::to_number() const
{
static const uint16_t options[] = {2, 3, 4, 5, 6, 8, 10, 20, 30, 40, 50,
60, 80, 100, 200, 300, 500, 750, 1280, 1920, 2560};
return map_enum_number(options, 21, value, "serving_cell_cfg_s::bwp_inactivity_timer_e_");
}
const char* serving_cell_cfg_s::scell_deactivation_timer_opts::to_string() const
{
static const char* options[] = {"ms20",
"ms40",
"ms80",
"ms160",
"ms200",
"ms240",
"ms320",
"ms400",
"ms480",
"ms520",
"ms640",
"ms720",
"ms840",
"ms1280",
"spare2",
"spare1"};
return convert_enum_idx(options, 16, value, "serving_cell_cfg_s::scell_deactivation_timer_e_");
}
uint16_t serving_cell_cfg_s::scell_deactivation_timer_opts::to_number() const
{
static const uint16_t options[] = {20, 40, 80, 160, 200, 240, 320, 400, 480, 520, 640, 720, 840, 1280};
return map_enum_number(options, 14, value, "serving_cell_cfg_s::scell_deactivation_timer_e_");
}
const char* serving_cell_cfg_s::pathloss_ref_linking_opts::to_string() const
{
static const char* options[] = {"spCell", "sCell"};
return convert_enum_idx(options, 2, value, "serving_cell_cfg_s::pathloss_ref_linking_e_");
}
// TAG-Config ::= SEQUENCE
SRSASN_CODE tag_cfg_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(tag_to_release_list_present, 1));
HANDLE_CODE(bref.pack(tag_to_add_mod_list_present, 1));
if (tag_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, tag_to_release_list, 1, 4, integer_packer<uint8_t>(0, 3)));
}
if (tag_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, tag_to_add_mod_list, 1, 4));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE tag_cfg_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(tag_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(tag_to_add_mod_list_present, 1));
if (tag_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(tag_to_release_list, bref, 1, 4, integer_packer<uint8_t>(0, 3)));
}
if (tag_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(tag_to_add_mod_list, bref, 1, 4));
}
return SRSASN_SUCCESS;
}
void tag_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (tag_to_release_list_present) {
j.start_array("tag-ToReleaseList");
for (const auto& e1 : tag_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (tag_to_add_mod_list_present) {
j.start_array("tag-ToAddModList");
for (const auto& e1 : tag_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
j.end_obj();
}
// MAC-CellGroupConfig ::= SEQUENCE
SRSASN_CODE mac_cell_group_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(drx_cfg_present, 1));
HANDLE_CODE(bref.pack(sched_request_cfg_present, 1));
HANDLE_CODE(bref.pack(bsr_cfg_present, 1));
HANDLE_CODE(bref.pack(tag_cfg_present, 1));
HANDLE_CODE(bref.pack(phr_cfg_present, 1));
if (drx_cfg_present) {
HANDLE_CODE(drx_cfg.pack(bref));
}
if (sched_request_cfg_present) {
HANDLE_CODE(sched_request_cfg.pack(bref));
}
if (bsr_cfg_present) {
HANDLE_CODE(bsr_cfg.pack(bref));
}
if (tag_cfg_present) {
HANDLE_CODE(tag_cfg.pack(bref));
}
if (phr_cfg_present) {
HANDLE_CODE(phr_cfg.pack(bref));
}
HANDLE_CODE(bref.pack(skip_ul_tx_dynamic, 1));
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= csi_mask_present;
group_flags[0] |= data_inactivity_timer.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(csi_mask_present, 1));
HANDLE_CODE(bref.pack(data_inactivity_timer.is_present(), 1));
if (csi_mask_present) {
HANDLE_CODE(bref.pack(csi_mask, 1));
}
if (data_inactivity_timer.is_present()) {
HANDLE_CODE(data_inactivity_timer->pack(bref));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE mac_cell_group_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(drx_cfg_present, 1));
HANDLE_CODE(bref.unpack(sched_request_cfg_present, 1));
HANDLE_CODE(bref.unpack(bsr_cfg_present, 1));
HANDLE_CODE(bref.unpack(tag_cfg_present, 1));
HANDLE_CODE(bref.unpack(phr_cfg_present, 1));
if (drx_cfg_present) {
HANDLE_CODE(drx_cfg.unpack(bref));
}
if (sched_request_cfg_present) {
HANDLE_CODE(sched_request_cfg.unpack(bref));
}
if (bsr_cfg_present) {
HANDLE_CODE(bsr_cfg.unpack(bref));
}
if (tag_cfg_present) {
HANDLE_CODE(tag_cfg.unpack(bref));
}
if (phr_cfg_present) {
HANDLE_CODE(phr_cfg.unpack(bref));
}
HANDLE_CODE(bref.unpack(skip_ul_tx_dynamic, 1));
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(csi_mask_present, 1));
bool data_inactivity_timer_present;
HANDLE_CODE(bref.unpack(data_inactivity_timer_present, 1));
data_inactivity_timer.set_present(data_inactivity_timer_present);
if (csi_mask_present) {
HANDLE_CODE(bref.unpack(csi_mask, 1));
}
if (data_inactivity_timer.is_present()) {
HANDLE_CODE(data_inactivity_timer->unpack(bref));
}
}
}
return SRSASN_SUCCESS;
}
void mac_cell_group_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (drx_cfg_present) {
j.write_fieldname("drx-Config");
drx_cfg.to_json(j);
}
if (sched_request_cfg_present) {
j.write_fieldname("schedulingRequestConfig");
sched_request_cfg.to_json(j);
}
if (bsr_cfg_present) {
j.write_fieldname("bsr-Config");
bsr_cfg.to_json(j);
}
if (tag_cfg_present) {
j.write_fieldname("tag-Config");
tag_cfg.to_json(j);
}
if (phr_cfg_present) {
j.write_fieldname("phr-Config");
phr_cfg.to_json(j);
}
j.write_bool("skipUplinkTxDynamic", skip_ul_tx_dynamic);
if (ext) {
if (csi_mask_present) {
j.write_bool("csi-Mask", csi_mask);
}
if (data_inactivity_timer.is_present()) {
j.write_fieldname("dataInactivityTimer");
data_inactivity_timer->to_json(j);
}
}
j.end_obj();
}
// PhysicalCellGroupConfig ::= SEQUENCE
SRSASN_CODE phys_cell_group_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(harq_ack_spatial_bundling_pucch_present, 1));
HANDLE_CODE(bref.pack(harq_ack_spatial_bundling_pusch_present, 1));
HANDLE_CODE(bref.pack(p_nr_fr1_present, 1));
HANDLE_CODE(bref.pack(tpc_srs_rnti_present, 1));
HANDLE_CODE(bref.pack(tpc_pucch_rnti_present, 1));
HANDLE_CODE(bref.pack(tpc_pusch_rnti_present, 1));
HANDLE_CODE(bref.pack(sp_csi_rnti_present, 1));
HANDLE_CODE(bref.pack(cs_rnti_present, 1));
if (p_nr_fr1_present) {
HANDLE_CODE(pack_integer(bref, p_nr_fr1, (int8_t)-30, (int8_t)33));
}
HANDLE_CODE(pdsch_harq_ack_codebook.pack(bref));
if (tpc_srs_rnti_present) {
HANDLE_CODE(pack_integer(bref, tpc_srs_rnti, (uint32_t)0u, (uint32_t)65535u));
}
if (tpc_pucch_rnti_present) {
HANDLE_CODE(pack_integer(bref, tpc_pucch_rnti, (uint32_t)0u, (uint32_t)65535u));
}
if (tpc_pusch_rnti_present) {
HANDLE_CODE(pack_integer(bref, tpc_pusch_rnti, (uint32_t)0u, (uint32_t)65535u));
}
if (sp_csi_rnti_present) {
HANDLE_CODE(pack_integer(bref, sp_csi_rnti, (uint32_t)0u, (uint32_t)65535u));
}
if (cs_rnti_present) {
HANDLE_CODE(cs_rnti.pack(bref));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= mcs_c_rnti_present;
group_flags[0] |= p_ue_fr1_present;
group_flags[1] |= xscale_present;
group_flags[2] |= pdcch_blind_detection.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(mcs_c_rnti_present, 1));
HANDLE_CODE(bref.pack(p_ue_fr1_present, 1));
if (mcs_c_rnti_present) {
HANDLE_CODE(pack_integer(bref, mcs_c_rnti, (uint32_t)0u, (uint32_t)65535u));
}
if (p_ue_fr1_present) {
HANDLE_CODE(pack_integer(bref, p_ue_fr1, (int8_t)-30, (int8_t)33));
}
}
if (group_flags[1]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(xscale_present, 1));
if (xscale_present) {
HANDLE_CODE(xscale.pack(bref));
}
}
if (group_flags[2]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(pdcch_blind_detection.is_present(), 1));
if (pdcch_blind_detection.is_present()) {
HANDLE_CODE(pdcch_blind_detection->pack(bref));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE phys_cell_group_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(harq_ack_spatial_bundling_pucch_present, 1));
HANDLE_CODE(bref.unpack(harq_ack_spatial_bundling_pusch_present, 1));
HANDLE_CODE(bref.unpack(p_nr_fr1_present, 1));
HANDLE_CODE(bref.unpack(tpc_srs_rnti_present, 1));
HANDLE_CODE(bref.unpack(tpc_pucch_rnti_present, 1));
HANDLE_CODE(bref.unpack(tpc_pusch_rnti_present, 1));
HANDLE_CODE(bref.unpack(sp_csi_rnti_present, 1));
HANDLE_CODE(bref.unpack(cs_rnti_present, 1));
if (p_nr_fr1_present) {
HANDLE_CODE(unpack_integer(p_nr_fr1, bref, (int8_t)-30, (int8_t)33));
}
HANDLE_CODE(pdsch_harq_ack_codebook.unpack(bref));
if (tpc_srs_rnti_present) {
HANDLE_CODE(unpack_integer(tpc_srs_rnti, bref, (uint32_t)0u, (uint32_t)65535u));
}
if (tpc_pucch_rnti_present) {
HANDLE_CODE(unpack_integer(tpc_pucch_rnti, bref, (uint32_t)0u, (uint32_t)65535u));
}
if (tpc_pusch_rnti_present) {
HANDLE_CODE(unpack_integer(tpc_pusch_rnti, bref, (uint32_t)0u, (uint32_t)65535u));
}
if (sp_csi_rnti_present) {
HANDLE_CODE(unpack_integer(sp_csi_rnti, bref, (uint32_t)0u, (uint32_t)65535u));
}
if (cs_rnti_present) {
HANDLE_CODE(cs_rnti.unpack(bref));
}
if (ext) {
ext_groups_unpacker_guard group_flags(3);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(mcs_c_rnti_present, 1));
HANDLE_CODE(bref.unpack(p_ue_fr1_present, 1));
if (mcs_c_rnti_present) {
HANDLE_CODE(unpack_integer(mcs_c_rnti, bref, (uint32_t)0u, (uint32_t)65535u));
}
if (p_ue_fr1_present) {
HANDLE_CODE(unpack_integer(p_ue_fr1, bref, (int8_t)-30, (int8_t)33));
}
}
if (group_flags[1]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(xscale_present, 1));
if (xscale_present) {
HANDLE_CODE(xscale.unpack(bref));
}
}
if (group_flags[2]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool pdcch_blind_detection_present;
HANDLE_CODE(bref.unpack(pdcch_blind_detection_present, 1));
pdcch_blind_detection.set_present(pdcch_blind_detection_present);
if (pdcch_blind_detection.is_present()) {
HANDLE_CODE(pdcch_blind_detection->unpack(bref));
}
}
}
return SRSASN_SUCCESS;
}
void phys_cell_group_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (harq_ack_spatial_bundling_pucch_present) {
j.write_str("harq-ACK-SpatialBundlingPUCCH", "true");
}
if (harq_ack_spatial_bundling_pusch_present) {
j.write_str("harq-ACK-SpatialBundlingPUSCH", "true");
}
if (p_nr_fr1_present) {
j.write_int("p-NR-FR1", p_nr_fr1);
}
j.write_str("pdsch-HARQ-ACK-Codebook", pdsch_harq_ack_codebook.to_string());
if (tpc_srs_rnti_present) {
j.write_int("tpc-SRS-RNTI", tpc_srs_rnti);
}
if (tpc_pucch_rnti_present) {
j.write_int("tpc-PUCCH-RNTI", tpc_pucch_rnti);
}
if (tpc_pusch_rnti_present) {
j.write_int("tpc-PUSCH-RNTI", tpc_pusch_rnti);
}
if (sp_csi_rnti_present) {
j.write_int("sp-CSI-RNTI", sp_csi_rnti);
}
if (cs_rnti_present) {
j.write_fieldname("cs-RNTI");
cs_rnti.to_json(j);
}
if (ext) {
if (mcs_c_rnti_present) {
j.write_int("mcs-C-RNTI", mcs_c_rnti);
}
if (p_ue_fr1_present) {
j.write_int("p-UE-FR1", p_ue_fr1);
}
if (xscale_present) {
j.write_str("xScale", xscale.to_string());
}
if (pdcch_blind_detection.is_present()) {
j.write_fieldname("pdcch-BlindDetection");
pdcch_blind_detection->to_json(j);
}
}
j.end_obj();
}
const char* phys_cell_group_cfg_s::pdsch_harq_ack_codebook_opts::to_string() const
{
static const char* options[] = {"semiStatic", "dynamic"};
return convert_enum_idx(options, 2, value, "phys_cell_group_cfg_s::pdsch_harq_ack_codebook_e_");
}
const char* phys_cell_group_cfg_s::xscale_opts::to_string() const
{
static const char* options[] = {"dB0", "dB6", "spare2", "spare1"};
return convert_enum_idx(options, 4, value, "phys_cell_group_cfg_s::xscale_e_");
}
uint8_t phys_cell_group_cfg_s::xscale_opts::to_number() const
{
static const uint8_t options[] = {0, 6};
return map_enum_number(options, 2, value, "phys_cell_group_cfg_s::xscale_e_");
}
// RLC-BearerConfig ::= SEQUENCE
SRSASN_CODE rlc_bearer_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(served_radio_bearer_present, 1));
HANDLE_CODE(bref.pack(reestablish_rlc_present, 1));
HANDLE_CODE(bref.pack(rlc_cfg_present, 1));
HANDLE_CODE(bref.pack(mac_lc_ch_cfg_present, 1));
HANDLE_CODE(pack_integer(bref, lc_ch_id, (uint8_t)1u, (uint8_t)32u));
if (served_radio_bearer_present) {
HANDLE_CODE(served_radio_bearer.pack(bref));
}
if (rlc_cfg_present) {
HANDLE_CODE(rlc_cfg.pack(bref));
}
if (mac_lc_ch_cfg_present) {
HANDLE_CODE(mac_lc_ch_cfg.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rlc_bearer_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(served_radio_bearer_present, 1));
HANDLE_CODE(bref.unpack(reestablish_rlc_present, 1));
HANDLE_CODE(bref.unpack(rlc_cfg_present, 1));
HANDLE_CODE(bref.unpack(mac_lc_ch_cfg_present, 1));
HANDLE_CODE(unpack_integer(lc_ch_id, bref, (uint8_t)1u, (uint8_t)32u));
if (served_radio_bearer_present) {
HANDLE_CODE(served_radio_bearer.unpack(bref));
}
if (rlc_cfg_present) {
HANDLE_CODE(rlc_cfg.unpack(bref));
}
if (mac_lc_ch_cfg_present) {
HANDLE_CODE(mac_lc_ch_cfg.unpack(bref));
}
return SRSASN_SUCCESS;
}
void rlc_bearer_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("logicalChannelIdentity", lc_ch_id);
if (served_radio_bearer_present) {
j.write_fieldname("servedRadioBearer");
served_radio_bearer.to_json(j);
}
if (reestablish_rlc_present) {
j.write_str("reestablishRLC", "true");
}
if (rlc_cfg_present) {
j.write_fieldname("rlc-Config");
rlc_cfg.to_json(j);
}
if (mac_lc_ch_cfg_present) {
j.write_fieldname("mac-LogicalChannelConfig");
mac_lc_ch_cfg.to_json(j);
}
j.end_obj();
}
void rlc_bearer_cfg_s::served_radio_bearer_c_::destroy_() {}
void rlc_bearer_cfg_s::served_radio_bearer_c_::set(types::options e)
{
destroy_();
type_ = e;
}
rlc_bearer_cfg_s::served_radio_bearer_c_::served_radio_bearer_c_(const rlc_bearer_cfg_s::served_radio_bearer_c_& other)
{
type_ = other.type();
switch (type_) {
case types::srb_id:
c.init(other.c.get<uint8_t>());
break;
case types::drb_id:
c.init(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rlc_bearer_cfg_s::served_radio_bearer_c_");
}
}
rlc_bearer_cfg_s::served_radio_bearer_c_&
rlc_bearer_cfg_s::served_radio_bearer_c_::operator=(const rlc_bearer_cfg_s::served_radio_bearer_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::srb_id:
c.set(other.c.get<uint8_t>());
break;
case types::drb_id:
c.set(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rlc_bearer_cfg_s::served_radio_bearer_c_");
}
return *this;
}
uint8_t& rlc_bearer_cfg_s::served_radio_bearer_c_::set_srb_id()
{
set(types::srb_id);
return c.get<uint8_t>();
}
uint8_t& rlc_bearer_cfg_s::served_radio_bearer_c_::set_drb_id()
{
set(types::drb_id);
return c.get<uint8_t>();
}
void rlc_bearer_cfg_s::served_radio_bearer_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::srb_id:
j.write_int("srb-Identity", c.get<uint8_t>());
break;
case types::drb_id:
j.write_int("drb-Identity", c.get<uint8_t>());
break;
default:
log_invalid_choice_id(type_, "rlc_bearer_cfg_s::served_radio_bearer_c_");
}
j.end_obj();
}
SRSASN_CODE rlc_bearer_cfg_s::served_radio_bearer_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::srb_id:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)1u, (uint8_t)3u));
break;
case types::drb_id:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)1u, (uint8_t)32u));
break;
default:
log_invalid_choice_id(type_, "rlc_bearer_cfg_s::served_radio_bearer_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rlc_bearer_cfg_s::served_radio_bearer_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::srb_id:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)1u, (uint8_t)3u));
break;
case types::drb_id:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)1u, (uint8_t)32u));
break;
default:
log_invalid_choice_id(type_, "rlc_bearer_cfg_s::served_radio_bearer_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* rlc_bearer_cfg_s::served_radio_bearer_c_::types_opts::to_string() const
{
static const char* options[] = {"srb-Identity", "drb-Identity"};
return convert_enum_idx(options, 2, value, "rlc_bearer_cfg_s::served_radio_bearer_c_::types");
}
// SCellConfig ::= SEQUENCE
SRSASN_CODE scell_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(scell_cfg_common_present, 1));
HANDLE_CODE(bref.pack(scell_cfg_ded_present, 1));
HANDLE_CODE(pack_integer(bref, scell_idx, (uint8_t)1u, (uint8_t)31u));
if (scell_cfg_common_present) {
HANDLE_CODE(scell_cfg_common.pack(bref));
}
if (scell_cfg_ded_present) {
HANDLE_CODE(scell_cfg_ded.pack(bref));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= smtc.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(smtc.is_present(), 1));
if (smtc.is_present()) {
HANDLE_CODE(smtc->pack(bref));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE scell_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(scell_cfg_common_present, 1));
HANDLE_CODE(bref.unpack(scell_cfg_ded_present, 1));
HANDLE_CODE(unpack_integer(scell_idx, bref, (uint8_t)1u, (uint8_t)31u));
if (scell_cfg_common_present) {
HANDLE_CODE(scell_cfg_common.unpack(bref));
}
if (scell_cfg_ded_present) {
HANDLE_CODE(scell_cfg_ded.unpack(bref));
}
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool smtc_present;
HANDLE_CODE(bref.unpack(smtc_present, 1));
smtc.set_present(smtc_present);
if (smtc.is_present()) {
HANDLE_CODE(smtc->unpack(bref));
}
}
}
return SRSASN_SUCCESS;
}
void scell_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("sCellIndex", scell_idx);
if (scell_cfg_common_present) {
j.write_fieldname("sCellConfigCommon");
scell_cfg_common.to_json(j);
}
if (scell_cfg_ded_present) {
j.write_fieldname("sCellConfigDedicated");
scell_cfg_ded.to_json(j);
}
if (ext) {
if (smtc.is_present()) {
j.write_fieldname("smtc");
smtc->to_json(j);
}
}
j.end_obj();
}
// SpCellConfig ::= SEQUENCE
SRSASN_CODE sp_cell_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(serv_cell_idx_present, 1));
HANDLE_CODE(bref.pack(recfg_with_sync_present, 1));
HANDLE_CODE(bref.pack(rlf_timers_and_consts_present, 1));
HANDLE_CODE(bref.pack(rlm_in_sync_out_of_sync_thres_present, 1));
HANDLE_CODE(bref.pack(sp_cell_cfg_ded_present, 1));
if (serv_cell_idx_present) {
HANDLE_CODE(pack_integer(bref, serv_cell_idx, (uint8_t)0u, (uint8_t)31u));
}
if (recfg_with_sync_present) {
HANDLE_CODE(recfg_with_sync.pack(bref));
}
if (rlf_timers_and_consts_present) {
HANDLE_CODE(rlf_timers_and_consts.pack(bref));
}
if (sp_cell_cfg_ded_present) {
HANDLE_CODE(sp_cell_cfg_ded.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE sp_cell_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(serv_cell_idx_present, 1));
HANDLE_CODE(bref.unpack(recfg_with_sync_present, 1));
HANDLE_CODE(bref.unpack(rlf_timers_and_consts_present, 1));
HANDLE_CODE(bref.unpack(rlm_in_sync_out_of_sync_thres_present, 1));
HANDLE_CODE(bref.unpack(sp_cell_cfg_ded_present, 1));
if (serv_cell_idx_present) {
HANDLE_CODE(unpack_integer(serv_cell_idx, bref, (uint8_t)0u, (uint8_t)31u));
}
if (recfg_with_sync_present) {
HANDLE_CODE(recfg_with_sync.unpack(bref));
}
if (rlf_timers_and_consts_present) {
HANDLE_CODE(rlf_timers_and_consts.unpack(bref));
}
if (sp_cell_cfg_ded_present) {
HANDLE_CODE(sp_cell_cfg_ded.unpack(bref));
}
return SRSASN_SUCCESS;
}
void sp_cell_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (serv_cell_idx_present) {
j.write_int("servCellIndex", serv_cell_idx);
}
if (recfg_with_sync_present) {
j.write_fieldname("reconfigurationWithSync");
recfg_with_sync.to_json(j);
}
if (rlf_timers_and_consts_present) {
j.write_fieldname("rlf-TimersAndConstants");
rlf_timers_and_consts.to_json(j);
}
if (rlm_in_sync_out_of_sync_thres_present) {
j.write_str("rlmInSyncOutOfSyncThreshold", "n1");
}
if (sp_cell_cfg_ded_present) {
j.write_fieldname("spCellConfigDedicated");
sp_cell_cfg_ded.to_json(j);
}
j.end_obj();
}
// CellGroupConfig ::= SEQUENCE
SRSASN_CODE cell_group_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(rlc_bearer_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(rlc_bearer_to_release_list_present, 1));
HANDLE_CODE(bref.pack(mac_cell_group_cfg_present, 1));
HANDLE_CODE(bref.pack(phys_cell_group_cfg_present, 1));
HANDLE_CODE(bref.pack(sp_cell_cfg_present, 1));
HANDLE_CODE(bref.pack(scell_to_add_mod_list_present, 1));
HANDLE_CODE(bref.pack(scell_to_release_list_present, 1));
HANDLE_CODE(pack_integer(bref, cell_group_id, (uint8_t)0u, (uint8_t)3u));
if (rlc_bearer_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, rlc_bearer_to_add_mod_list, 1, 32));
}
if (rlc_bearer_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, rlc_bearer_to_release_list, 1, 32, integer_packer<uint8_t>(1, 32)));
}
if (mac_cell_group_cfg_present) {
HANDLE_CODE(mac_cell_group_cfg.pack(bref));
}
if (phys_cell_group_cfg_present) {
HANDLE_CODE(phys_cell_group_cfg.pack(bref));
}
if (sp_cell_cfg_present) {
HANDLE_CODE(sp_cell_cfg.pack(bref));
}
if (scell_to_add_mod_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, scell_to_add_mod_list, 1, 31));
}
if (scell_to_release_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, scell_to_release_list, 1, 31, integer_packer<uint8_t>(1, 31)));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= report_ul_tx_direct_current_present;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(report_ul_tx_direct_current_present, 1));
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE cell_group_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(rlc_bearer_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(rlc_bearer_to_release_list_present, 1));
HANDLE_CODE(bref.unpack(mac_cell_group_cfg_present, 1));
HANDLE_CODE(bref.unpack(phys_cell_group_cfg_present, 1));
HANDLE_CODE(bref.unpack(sp_cell_cfg_present, 1));
HANDLE_CODE(bref.unpack(scell_to_add_mod_list_present, 1));
HANDLE_CODE(bref.unpack(scell_to_release_list_present, 1));
HANDLE_CODE(unpack_integer(cell_group_id, bref, (uint8_t)0u, (uint8_t)3u));
if (rlc_bearer_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(rlc_bearer_to_add_mod_list, bref, 1, 32));
}
if (rlc_bearer_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(rlc_bearer_to_release_list, bref, 1, 32, integer_packer<uint8_t>(1, 32)));
}
if (mac_cell_group_cfg_present) {
HANDLE_CODE(mac_cell_group_cfg.unpack(bref));
}
if (phys_cell_group_cfg_present) {
HANDLE_CODE(phys_cell_group_cfg.unpack(bref));
}
if (sp_cell_cfg_present) {
HANDLE_CODE(sp_cell_cfg.unpack(bref));
}
if (scell_to_add_mod_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(scell_to_add_mod_list, bref, 1, 31));
}
if (scell_to_release_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(scell_to_release_list, bref, 1, 31, integer_packer<uint8_t>(1, 31)));
}
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(report_ul_tx_direct_current_present, 1));
}
}
return SRSASN_SUCCESS;
}
void cell_group_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("cellGroupId", cell_group_id);
if (rlc_bearer_to_add_mod_list_present) {
j.start_array("rlc-BearerToAddModList");
for (const auto& e1 : rlc_bearer_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (rlc_bearer_to_release_list_present) {
j.start_array("rlc-BearerToReleaseList");
for (const auto& e1 : rlc_bearer_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (mac_cell_group_cfg_present) {
j.write_fieldname("mac-CellGroupConfig");
mac_cell_group_cfg.to_json(j);
}
if (phys_cell_group_cfg_present) {
j.write_fieldname("physicalCellGroupConfig");
phys_cell_group_cfg.to_json(j);
}
if (sp_cell_cfg_present) {
j.write_fieldname("spCellConfig");
sp_cell_cfg.to_json(j);
}
if (scell_to_add_mod_list_present) {
j.start_array("sCellToAddModList");
for (const auto& e1 : scell_to_add_mod_list) {
e1.to_json(j);
}
j.end_array();
}
if (scell_to_release_list_present) {
j.start_array("sCellToReleaseList");
for (const auto& e1 : scell_to_release_list) {
j.write_int(e1);
}
j.end_array();
}
if (ext) {
if (report_ul_tx_direct_current_present) {
j.write_str("reportUplinkTxDirectCurrent", "true");
}
}
j.end_obj();
}
// EUTRA-ParametersCommon ::= SEQUENCE
SRSASN_CODE eutra_params_common_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(mfbi_eutra_present, 1));
HANDLE_CODE(bref.pack(modified_mpr_behavior_eutra_present, 1));
HANDLE_CODE(bref.pack(multi_ns_pmax_eutra_present, 1));
HANDLE_CODE(bref.pack(rs_sinr_meas_eutra_present, 1));
if (modified_mpr_behavior_eutra_present) {
HANDLE_CODE(modified_mpr_behavior_eutra.pack(bref));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= ne_dc_present;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(ne_dc_present, 1));
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE eutra_params_common_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(mfbi_eutra_present, 1));
HANDLE_CODE(bref.unpack(modified_mpr_behavior_eutra_present, 1));
HANDLE_CODE(bref.unpack(multi_ns_pmax_eutra_present, 1));
HANDLE_CODE(bref.unpack(rs_sinr_meas_eutra_present, 1));
if (modified_mpr_behavior_eutra_present) {
HANDLE_CODE(modified_mpr_behavior_eutra.unpack(bref));
}
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(ne_dc_present, 1));
}
}
return SRSASN_SUCCESS;
}
void eutra_params_common_s::to_json(json_writer& j) const
{
j.start_obj();
if (mfbi_eutra_present) {
j.write_str("mfbi-EUTRA", "supported");
}
if (modified_mpr_behavior_eutra_present) {
j.write_str("modifiedMPR-BehaviorEUTRA", modified_mpr_behavior_eutra.to_string());
}
if (multi_ns_pmax_eutra_present) {
j.write_str("multiNS-Pmax-EUTRA", "supported");
}
if (rs_sinr_meas_eutra_present) {
j.write_str("rs-SINR-MeasEUTRA", "supported");
}
if (ext) {
if (ne_dc_present) {
j.write_str("ne-DC", "supported");
}
}
j.end_obj();
}
// EUTRA-ParametersXDD-Diff ::= SEQUENCE
SRSASN_CODE eutra_params_xdd_diff_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(rsrq_meas_wideband_eutra_present, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE eutra_params_xdd_diff_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(rsrq_meas_wideband_eutra_present, 1));
return SRSASN_SUCCESS;
}
void eutra_params_xdd_diff_s::to_json(json_writer& j) const
{
j.start_obj();
if (rsrq_meas_wideband_eutra_present) {
j.write_str("rsrqMeasWidebandEUTRA", "supported");
}
j.end_obj();
}
// EUTRA-Parameters ::= SEQUENCE
SRSASN_CODE eutra_params_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(eutra_params_common_present, 1));
HANDLE_CODE(bref.pack(eutra_params_xdd_diff_present, 1));
HANDLE_CODE(pack_dyn_seq_of(bref, supported_band_list_eutra, 1, 256, integer_packer<uint16_t>(1, 256)));
if (eutra_params_common_present) {
HANDLE_CODE(eutra_params_common.pack(bref));
}
if (eutra_params_xdd_diff_present) {
HANDLE_CODE(eutra_params_xdd_diff.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE eutra_params_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(eutra_params_common_present, 1));
HANDLE_CODE(bref.unpack(eutra_params_xdd_diff_present, 1));
HANDLE_CODE(unpack_dyn_seq_of(supported_band_list_eutra, bref, 1, 256, integer_packer<uint16_t>(1, 256)));
if (eutra_params_common_present) {
HANDLE_CODE(eutra_params_common.unpack(bref));
}
if (eutra_params_xdd_diff_present) {
HANDLE_CODE(eutra_params_xdd_diff.unpack(bref));
}
return SRSASN_SUCCESS;
}
void eutra_params_s::to_json(json_writer& j) const
{
j.start_obj();
j.start_array("supportedBandListEUTRA");
for (const auto& e1 : supported_band_list_eutra) {
j.write_int(e1);
}
j.end_array();
if (eutra_params_common_present) {
j.write_fieldname("eutra-ParametersCommon");
eutra_params_common.to_json(j);
}
if (eutra_params_xdd_diff_present) {
j.write_fieldname("eutra-ParametersXDD-Diff");
eutra_params_xdd_diff.to_json(j);
}
j.end_obj();
}
// FeatureSet ::= CHOICE
void feature_set_c::destroy_()
{
switch (type_) {
case types::eutra:
c.destroy<eutra_s_>();
break;
case types::nr:
c.destroy<nr_s_>();
break;
default:
break;
}
}
void feature_set_c::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::eutra:
c.init<eutra_s_>();
break;
case types::nr:
c.init<nr_s_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "feature_set_c");
}
}
feature_set_c::feature_set_c(const feature_set_c& other)
{
type_ = other.type();
switch (type_) {
case types::eutra:
c.init(other.c.get<eutra_s_>());
break;
case types::nr:
c.init(other.c.get<nr_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "feature_set_c");
}
}
feature_set_c& feature_set_c::operator=(const feature_set_c& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::eutra:
c.set(other.c.get<eutra_s_>());
break;
case types::nr:
c.set(other.c.get<nr_s_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "feature_set_c");
}
return *this;
}
feature_set_c::eutra_s_& feature_set_c::set_eutra()
{
set(types::eutra);
return c.get<eutra_s_>();
}
feature_set_c::nr_s_& feature_set_c::set_nr()
{
set(types::nr);
return c.get<nr_s_>();
}
void feature_set_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::eutra:
j.write_fieldname("eutra");
j.start_obj();
j.write_int("downlinkSetEUTRA", c.get<eutra_s_>().dl_set_eutra);
j.write_int("uplinkSetEUTRA", c.get<eutra_s_>().ul_set_eutra);
j.end_obj();
break;
case types::nr:
j.write_fieldname("nr");
j.start_obj();
j.write_int("downlinkSetNR", c.get<nr_s_>().dl_set_nr);
j.write_int("uplinkSetNR", c.get<nr_s_>().ul_set_nr);
j.end_obj();
break;
default:
log_invalid_choice_id(type_, "feature_set_c");
}
j.end_obj();
}
SRSASN_CODE feature_set_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::eutra:
HANDLE_CODE(pack_integer(bref, c.get<eutra_s_>().dl_set_eutra, (uint16_t)0u, (uint16_t)256u));
HANDLE_CODE(pack_integer(bref, c.get<eutra_s_>().ul_set_eutra, (uint16_t)0u, (uint16_t)256u));
break;
case types::nr:
HANDLE_CODE(pack_integer(bref, c.get<nr_s_>().dl_set_nr, (uint16_t)0u, (uint16_t)1024u));
HANDLE_CODE(pack_integer(bref, c.get<nr_s_>().ul_set_nr, (uint16_t)0u, (uint16_t)1024u));
break;
default:
log_invalid_choice_id(type_, "feature_set_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE feature_set_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::eutra:
HANDLE_CODE(unpack_integer(c.get<eutra_s_>().dl_set_eutra, bref, (uint16_t)0u, (uint16_t)256u));
HANDLE_CODE(unpack_integer(c.get<eutra_s_>().ul_set_eutra, bref, (uint16_t)0u, (uint16_t)256u));
break;
case types::nr:
HANDLE_CODE(unpack_integer(c.get<nr_s_>().dl_set_nr, bref, (uint16_t)0u, (uint16_t)1024u));
HANDLE_CODE(unpack_integer(c.get<nr_s_>().ul_set_nr, bref, (uint16_t)0u, (uint16_t)1024u));
break;
default:
log_invalid_choice_id(type_, "feature_set_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* feature_set_c::types_opts::to_string() const
{
static const char* options[] = {"eutra", "nr"};
return convert_enum_idx(options, 2, value, "feature_set_c::types");
}
// DummyA ::= SEQUENCE
SRSASN_CODE dummy_a_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, max_num_nzp_csi_rs_per_cc, (uint8_t)1u, (uint8_t)32u));
HANDLE_CODE(max_num_ports_across_nzp_csi_rs_per_cc.pack(bref));
HANDLE_CODE(max_num_cs_im_per_cc.pack(bref));
HANDLE_CODE(max_num_simul_csi_rs_act_bwp_all_cc.pack(bref));
HANDLE_CODE(total_num_ports_simul_csi_rs_act_bwp_all_cc.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE dummy_a_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(max_num_nzp_csi_rs_per_cc, bref, (uint8_t)1u, (uint8_t)32u));
HANDLE_CODE(max_num_ports_across_nzp_csi_rs_per_cc.unpack(bref));
HANDLE_CODE(max_num_cs_im_per_cc.unpack(bref));
HANDLE_CODE(max_num_simul_csi_rs_act_bwp_all_cc.unpack(bref));
HANDLE_CODE(total_num_ports_simul_csi_rs_act_bwp_all_cc.unpack(bref));
return SRSASN_SUCCESS;
}
void dummy_a_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("maxNumberNZP-CSI-RS-PerCC", max_num_nzp_csi_rs_per_cc);
j.write_str("maxNumberPortsAcrossNZP-CSI-RS-PerCC", max_num_ports_across_nzp_csi_rs_per_cc.to_string());
j.write_str("maxNumberCS-IM-PerCC", max_num_cs_im_per_cc.to_string());
j.write_str("maxNumberSimultaneousCSI-RS-ActBWP-AllCC", max_num_simul_csi_rs_act_bwp_all_cc.to_string());
j.write_str("totalNumberPortsSimultaneousCSI-RS-ActBWP-AllCC",
total_num_ports_simul_csi_rs_act_bwp_all_cc.to_string());
j.end_obj();
}
const char* dummy_a_s::max_num_ports_across_nzp_csi_rs_per_cc_opts::to_string() const
{
static const char* options[] = {"p2", "p4", "p8", "p12", "p16", "p24", "p32", "p40", "p48",
"p56", "p64", "p72", "p80", "p88", "p96", "p104", "p112", "p120",
"p128", "p136", "p144", "p152", "p160", "p168", "p176", "p184", "p192",
"p200", "p208", "p216", "p224", "p232", "p240", "p248", "p256"};
return convert_enum_idx(options, 35, value, "dummy_a_s::max_num_ports_across_nzp_csi_rs_per_cc_e_");
}
uint16_t dummy_a_s::max_num_ports_across_nzp_csi_rs_per_cc_opts::to_number() const
{
static const uint16_t options[] = {2, 4, 8, 12, 16, 24, 32, 40, 48, 56, 64, 72,
80, 88, 96, 104, 112, 120, 128, 136, 144, 152, 160, 168,
176, 184, 192, 200, 208, 216, 224, 232, 240, 248, 256};
return map_enum_number(options, 35, value, "dummy_a_s::max_num_ports_across_nzp_csi_rs_per_cc_e_");
}
const char* dummy_a_s::max_num_cs_im_per_cc_opts::to_string() const
{
static const char* options[] = {"n1", "n2", "n4", "n8", "n16", "n32"};
return convert_enum_idx(options, 6, value, "dummy_a_s::max_num_cs_im_per_cc_e_");
}
uint8_t dummy_a_s::max_num_cs_im_per_cc_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 4, 8, 16, 32};
return map_enum_number(options, 6, value, "dummy_a_s::max_num_cs_im_per_cc_e_");
}
const char* dummy_a_s::max_num_simul_csi_rs_act_bwp_all_cc_opts::to_string() const
{
static const char* options[] = {"n5", "n6", "n7", "n8", "n9", "n10", "n12", "n14", "n16", "n18", "n20",
"n22", "n24", "n26", "n28", "n30", "n32", "n34", "n36", "n38", "n40", "n42",
"n44", "n46", "n48", "n50", "n52", "n54", "n56", "n58", "n60", "n62", "n64"};
return convert_enum_idx(options, 33, value, "dummy_a_s::max_num_simul_csi_rs_act_bwp_all_cc_e_");
}
uint8_t dummy_a_s::max_num_simul_csi_rs_act_bwp_all_cc_opts::to_number() const
{
static const uint8_t options[] = {5, 6, 7, 8, 9, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32,
34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64};
return map_enum_number(options, 33, value, "dummy_a_s::max_num_simul_csi_rs_act_bwp_all_cc_e_");
}
const char* dummy_a_s::total_num_ports_simul_csi_rs_act_bwp_all_cc_opts::to_string() const
{
static const char* options[] = {"p8", "p12", "p16", "p24", "p32", "p40", "p48", "p56", "p64",
"p72", "p80", "p88", "p96", "p104", "p112", "p120", "p128", "p136",
"p144", "p152", "p160", "p168", "p176", "p184", "p192", "p200", "p208",
"p216", "p224", "p232", "p240", "p248", "p256"};
return convert_enum_idx(options, 33, value, "dummy_a_s::total_num_ports_simul_csi_rs_act_bwp_all_cc_e_");
}
uint16_t dummy_a_s::total_num_ports_simul_csi_rs_act_bwp_all_cc_opts::to_number() const
{
static const uint16_t options[] = {8, 12, 16, 24, 32, 40, 48, 56, 64, 72, 80,
88, 96, 104, 112, 120, 128, 136, 144, 152, 160, 168,
176, 184, 192, 200, 208, 216, 224, 232, 240, 248, 256};
return map_enum_number(options, 33, value, "dummy_a_s::total_num_ports_simul_csi_rs_act_bwp_all_cc_e_");
}
// DummyB ::= SEQUENCE
SRSASN_CODE dummy_b_s::pack(bit_ref& bref) const
{
HANDLE_CODE(max_num_tx_ports_per_res.pack(bref));
HANDLE_CODE(pack_integer(bref, max_num_res, (uint8_t)1u, (uint8_t)64u));
HANDLE_CODE(pack_integer(bref, total_num_tx_ports, (uint16_t)2u, (uint16_t)256u));
HANDLE_CODE(supported_codebook_mode.pack(bref));
HANDLE_CODE(pack_integer(bref, max_num_csi_rs_per_res_set, (uint8_t)1u, (uint8_t)8u));
return SRSASN_SUCCESS;
}
SRSASN_CODE dummy_b_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(max_num_tx_ports_per_res.unpack(bref));
HANDLE_CODE(unpack_integer(max_num_res, bref, (uint8_t)1u, (uint8_t)64u));
HANDLE_CODE(unpack_integer(total_num_tx_ports, bref, (uint16_t)2u, (uint16_t)256u));
HANDLE_CODE(supported_codebook_mode.unpack(bref));
HANDLE_CODE(unpack_integer(max_num_csi_rs_per_res_set, bref, (uint8_t)1u, (uint8_t)8u));
return SRSASN_SUCCESS;
}
void dummy_b_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("maxNumberTxPortsPerResource", max_num_tx_ports_per_res.to_string());
j.write_int("maxNumberResources", max_num_res);
j.write_int("totalNumberTxPorts", total_num_tx_ports);
j.write_str("supportedCodebookMode", supported_codebook_mode.to_string());
j.write_int("maxNumberCSI-RS-PerResourceSet", max_num_csi_rs_per_res_set);
j.end_obj();
}
const char* dummy_b_s::max_num_tx_ports_per_res_opts::to_string() const
{
static const char* options[] = {"p2", "p4", "p8", "p12", "p16", "p24", "p32"};
return convert_enum_idx(options, 7, value, "dummy_b_s::max_num_tx_ports_per_res_e_");
}
uint8_t dummy_b_s::max_num_tx_ports_per_res_opts::to_number() const
{
static const uint8_t options[] = {2, 4, 8, 12, 16, 24, 32};
return map_enum_number(options, 7, value, "dummy_b_s::max_num_tx_ports_per_res_e_");
}
const char* dummy_b_s::supported_codebook_mode_opts::to_string() const
{
static const char* options[] = {"mode1", "mode1AndMode2"};
return convert_enum_idx(options, 2, value, "dummy_b_s::supported_codebook_mode_e_");
}
// DummyC ::= SEQUENCE
SRSASN_CODE dummy_c_s::pack(bit_ref& bref) const
{
HANDLE_CODE(max_num_tx_ports_per_res.pack(bref));
HANDLE_CODE(pack_integer(bref, max_num_res, (uint8_t)1u, (uint8_t)64u));
HANDLE_CODE(pack_integer(bref, total_num_tx_ports, (uint16_t)2u, (uint16_t)256u));
HANDLE_CODE(supported_codebook_mode.pack(bref));
HANDLE_CODE(supported_num_panels.pack(bref));
HANDLE_CODE(pack_integer(bref, max_num_csi_rs_per_res_set, (uint8_t)1u, (uint8_t)8u));
return SRSASN_SUCCESS;
}
SRSASN_CODE dummy_c_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(max_num_tx_ports_per_res.unpack(bref));
HANDLE_CODE(unpack_integer(max_num_res, bref, (uint8_t)1u, (uint8_t)64u));
HANDLE_CODE(unpack_integer(total_num_tx_ports, bref, (uint16_t)2u, (uint16_t)256u));
HANDLE_CODE(supported_codebook_mode.unpack(bref));
HANDLE_CODE(supported_num_panels.unpack(bref));
HANDLE_CODE(unpack_integer(max_num_csi_rs_per_res_set, bref, (uint8_t)1u, (uint8_t)8u));
return SRSASN_SUCCESS;
}
void dummy_c_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("maxNumberTxPortsPerResource", max_num_tx_ports_per_res.to_string());
j.write_int("maxNumberResources", max_num_res);
j.write_int("totalNumberTxPorts", total_num_tx_ports);
j.write_str("supportedCodebookMode", supported_codebook_mode.to_string());
j.write_str("supportedNumberPanels", supported_num_panels.to_string());
j.write_int("maxNumberCSI-RS-PerResourceSet", max_num_csi_rs_per_res_set);
j.end_obj();
}
const char* dummy_c_s::max_num_tx_ports_per_res_opts::to_string() const
{
static const char* options[] = {"p8", "p16", "p32"};
return convert_enum_idx(options, 3, value, "dummy_c_s::max_num_tx_ports_per_res_e_");
}
uint8_t dummy_c_s::max_num_tx_ports_per_res_opts::to_number() const
{
static const uint8_t options[] = {8, 16, 32};
return map_enum_number(options, 3, value, "dummy_c_s::max_num_tx_ports_per_res_e_");
}
const char* dummy_c_s::supported_codebook_mode_opts::to_string() const
{
static const char* options[] = {"mode1", "mode2", "both"};
return convert_enum_idx(options, 3, value, "dummy_c_s::supported_codebook_mode_e_");
}
uint8_t dummy_c_s::supported_codebook_mode_opts::to_number() const
{
static const uint8_t options[] = {1, 2};
return map_enum_number(options, 2, value, "dummy_c_s::supported_codebook_mode_e_");
}
const char* dummy_c_s::supported_num_panels_opts::to_string() const
{
static const char* options[] = {"n2", "n4"};
return convert_enum_idx(options, 2, value, "dummy_c_s::supported_num_panels_e_");
}
uint8_t dummy_c_s::supported_num_panels_opts::to_number() const
{
static const uint8_t options[] = {2, 4};
return map_enum_number(options, 2, value, "dummy_c_s::supported_num_panels_e_");
}
// DummyD ::= SEQUENCE
SRSASN_CODE dummy_d_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(amplitude_subset_restrict_present, 1));
HANDLE_CODE(max_num_tx_ports_per_res.pack(bref));
HANDLE_CODE(pack_integer(bref, max_num_res, (uint8_t)1u, (uint8_t)64u));
HANDLE_CODE(pack_integer(bref, total_num_tx_ports, (uint16_t)2u, (uint16_t)256u));
HANDLE_CODE(pack_integer(bref, param_lx, (uint8_t)2u, (uint8_t)4u));
HANDLE_CODE(amplitude_scaling_type.pack(bref));
HANDLE_CODE(pack_integer(bref, max_num_csi_rs_per_res_set, (uint8_t)1u, (uint8_t)8u));
return SRSASN_SUCCESS;
}
SRSASN_CODE dummy_d_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(amplitude_subset_restrict_present, 1));
HANDLE_CODE(max_num_tx_ports_per_res.unpack(bref));
HANDLE_CODE(unpack_integer(max_num_res, bref, (uint8_t)1u, (uint8_t)64u));
HANDLE_CODE(unpack_integer(total_num_tx_ports, bref, (uint16_t)2u, (uint16_t)256u));
HANDLE_CODE(unpack_integer(param_lx, bref, (uint8_t)2u, (uint8_t)4u));
HANDLE_CODE(amplitude_scaling_type.unpack(bref));
HANDLE_CODE(unpack_integer(max_num_csi_rs_per_res_set, bref, (uint8_t)1u, (uint8_t)8u));
return SRSASN_SUCCESS;
}
void dummy_d_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("maxNumberTxPortsPerResource", max_num_tx_ports_per_res.to_string());
j.write_int("maxNumberResources", max_num_res);
j.write_int("totalNumberTxPorts", total_num_tx_ports);
j.write_int("parameterLx", param_lx);
j.write_str("amplitudeScalingType", amplitude_scaling_type.to_string());
if (amplitude_subset_restrict_present) {
j.write_str("amplitudeSubsetRestriction", "supported");
}
j.write_int("maxNumberCSI-RS-PerResourceSet", max_num_csi_rs_per_res_set);
j.end_obj();
}
const char* dummy_d_s::max_num_tx_ports_per_res_opts::to_string() const
{
static const char* options[] = {"p4", "p8", "p12", "p16", "p24", "p32"};
return convert_enum_idx(options, 6, value, "dummy_d_s::max_num_tx_ports_per_res_e_");
}
uint8_t dummy_d_s::max_num_tx_ports_per_res_opts::to_number() const
{
static const uint8_t options[] = {4, 8, 12, 16, 24, 32};
return map_enum_number(options, 6, value, "dummy_d_s::max_num_tx_ports_per_res_e_");
}
const char* dummy_d_s::amplitude_scaling_type_opts::to_string() const
{
static const char* options[] = {"wideband", "widebandAndSubband"};
return convert_enum_idx(options, 2, value, "dummy_d_s::amplitude_scaling_type_e_");
}
// DummyE ::= SEQUENCE
SRSASN_CODE dummy_e_s::pack(bit_ref& bref) const
{
HANDLE_CODE(max_num_tx_ports_per_res.pack(bref));
HANDLE_CODE(pack_integer(bref, max_num_res, (uint8_t)1u, (uint8_t)64u));
HANDLE_CODE(pack_integer(bref, total_num_tx_ports, (uint16_t)2u, (uint16_t)256u));
HANDLE_CODE(pack_integer(bref, param_lx, (uint8_t)2u, (uint8_t)4u));
HANDLE_CODE(amplitude_scaling_type.pack(bref));
HANDLE_CODE(pack_integer(bref, max_num_csi_rs_per_res_set, (uint8_t)1u, (uint8_t)8u));
return SRSASN_SUCCESS;
}
SRSASN_CODE dummy_e_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(max_num_tx_ports_per_res.unpack(bref));
HANDLE_CODE(unpack_integer(max_num_res, bref, (uint8_t)1u, (uint8_t)64u));
HANDLE_CODE(unpack_integer(total_num_tx_ports, bref, (uint16_t)2u, (uint16_t)256u));
HANDLE_CODE(unpack_integer(param_lx, bref, (uint8_t)2u, (uint8_t)4u));
HANDLE_CODE(amplitude_scaling_type.unpack(bref));
HANDLE_CODE(unpack_integer(max_num_csi_rs_per_res_set, bref, (uint8_t)1u, (uint8_t)8u));
return SRSASN_SUCCESS;
}
void dummy_e_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("maxNumberTxPortsPerResource", max_num_tx_ports_per_res.to_string());
j.write_int("maxNumberResources", max_num_res);
j.write_int("totalNumberTxPorts", total_num_tx_ports);
j.write_int("parameterLx", param_lx);
j.write_str("amplitudeScalingType", amplitude_scaling_type.to_string());
j.write_int("maxNumberCSI-RS-PerResourceSet", max_num_csi_rs_per_res_set);
j.end_obj();
}
const char* dummy_e_s::max_num_tx_ports_per_res_opts::to_string() const
{
static const char* options[] = {"p4", "p8", "p12", "p16", "p24", "p32"};
return convert_enum_idx(options, 6, value, "dummy_e_s::max_num_tx_ports_per_res_e_");
}
uint8_t dummy_e_s::max_num_tx_ports_per_res_opts::to_number() const
{
static const uint8_t options[] = {4, 8, 12, 16, 24, 32};
return map_enum_number(options, 6, value, "dummy_e_s::max_num_tx_ports_per_res_e_");
}
const char* dummy_e_s::amplitude_scaling_type_opts::to_string() const
{
static const char* options[] = {"wideband", "widebandAndSubband"};
return convert_enum_idx(options, 2, value, "dummy_e_s::amplitude_scaling_type_e_");
}
// FreqSeparationClass ::= ENUMERATED
const char* freq_separation_class_opts::to_string() const
{
static const char* options[] = {"c1", "c2", "c3"};
return convert_enum_idx(options, 3, value, "freq_separation_class_e");
}
uint8_t freq_separation_class_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 3};
return map_enum_number(options, 3, value, "freq_separation_class_e");
}
// FeatureSetDownlink ::= SEQUENCE
SRSASN_CODE feature_set_dl_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(intra_band_freq_separation_dl_present, 1));
HANDLE_CODE(bref.pack(scaling_factor_present, 1));
HANDLE_CODE(bref.pack(cross_carrier_sched_other_scs_present, 1));
HANDLE_CODE(bref.pack(scell_without_ssb_present, 1));
HANDLE_CODE(bref.pack(csi_rs_meas_scell_without_ssb_present, 1));
HANDLE_CODE(bref.pack(dummy1_present, 1));
HANDLE_CODE(bref.pack(type1_minus3_css_present, 1));
HANDLE_CODE(bref.pack(pdcch_monitoring_any_occasions_present, 1));
HANDLE_CODE(bref.pack(dummy2_present, 1));
HANDLE_CODE(bref.pack(ue_specific_ul_dl_assign_present, 1));
HANDLE_CODE(bref.pack(search_space_sharing_ca_dl_present, 1));
HANDLE_CODE(bref.pack(time_dur_for_qcl_present, 1));
HANDLE_CODE(bref.pack(pdsch_processing_type1_different_tb_per_slot_present, 1));
HANDLE_CODE(bref.pack(dummy3_present, 1));
HANDLE_CODE(bref.pack(dummy4_present, 1));
HANDLE_CODE(bref.pack(dummy5_present, 1));
HANDLE_CODE(bref.pack(dummy6_present, 1));
HANDLE_CODE(bref.pack(dummy7_present, 1));
HANDLE_CODE(pack_dyn_seq_of(bref, feature_set_list_per_dl_cc, 1, 32, integer_packer<uint16_t>(1, 1024)));
if (intra_band_freq_separation_dl_present) {
HANDLE_CODE(intra_band_freq_separation_dl.pack(bref));
}
if (scaling_factor_present) {
HANDLE_CODE(scaling_factor.pack(bref));
}
if (pdcch_monitoring_any_occasions_present) {
HANDLE_CODE(pdcch_monitoring_any_occasions.pack(bref));
}
if (time_dur_for_qcl_present) {
HANDLE_CODE(bref.pack(time_dur_for_qcl.scs_minus60k_hz_present, 1));
HANDLE_CODE(bref.pack(time_dur_for_qcl.scs_minus120k_hz_present, 1));
if (time_dur_for_qcl.scs_minus60k_hz_present) {
HANDLE_CODE(time_dur_for_qcl.scs_minus60k_hz.pack(bref));
}
if (time_dur_for_qcl.scs_minus120k_hz_present) {
HANDLE_CODE(time_dur_for_qcl.scs_minus120k_hz.pack(bref));
}
}
if (pdsch_processing_type1_different_tb_per_slot_present) {
HANDLE_CODE(bref.pack(pdsch_processing_type1_different_tb_per_slot.scs_minus15k_hz_present, 1));
HANDLE_CODE(bref.pack(pdsch_processing_type1_different_tb_per_slot.scs_minus30k_hz_present, 1));
HANDLE_CODE(bref.pack(pdsch_processing_type1_different_tb_per_slot.scs_minus60k_hz_present, 1));
HANDLE_CODE(bref.pack(pdsch_processing_type1_different_tb_per_slot.scs_minus120k_hz_present, 1));
if (pdsch_processing_type1_different_tb_per_slot.scs_minus15k_hz_present) {
HANDLE_CODE(pdsch_processing_type1_different_tb_per_slot.scs_minus15k_hz.pack(bref));
}
if (pdsch_processing_type1_different_tb_per_slot.scs_minus30k_hz_present) {
HANDLE_CODE(pdsch_processing_type1_different_tb_per_slot.scs_minus30k_hz.pack(bref));
}
if (pdsch_processing_type1_different_tb_per_slot.scs_minus60k_hz_present) {
HANDLE_CODE(pdsch_processing_type1_different_tb_per_slot.scs_minus60k_hz.pack(bref));
}
if (pdsch_processing_type1_different_tb_per_slot.scs_minus120k_hz_present) {
HANDLE_CODE(pdsch_processing_type1_different_tb_per_slot.scs_minus120k_hz.pack(bref));
}
}
if (dummy3_present) {
HANDLE_CODE(dummy3.pack(bref));
}
if (dummy4_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, dummy4, 1, 16));
}
if (dummy5_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, dummy5, 1, 16));
}
if (dummy6_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, dummy6, 1, 16));
}
if (dummy7_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, dummy7, 1, 16));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE feature_set_dl_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(intra_band_freq_separation_dl_present, 1));
HANDLE_CODE(bref.unpack(scaling_factor_present, 1));
HANDLE_CODE(bref.unpack(cross_carrier_sched_other_scs_present, 1));
HANDLE_CODE(bref.unpack(scell_without_ssb_present, 1));
HANDLE_CODE(bref.unpack(csi_rs_meas_scell_without_ssb_present, 1));
HANDLE_CODE(bref.unpack(dummy1_present, 1));
HANDLE_CODE(bref.unpack(type1_minus3_css_present, 1));
HANDLE_CODE(bref.unpack(pdcch_monitoring_any_occasions_present, 1));
HANDLE_CODE(bref.unpack(dummy2_present, 1));
HANDLE_CODE(bref.unpack(ue_specific_ul_dl_assign_present, 1));
HANDLE_CODE(bref.unpack(search_space_sharing_ca_dl_present, 1));
HANDLE_CODE(bref.unpack(time_dur_for_qcl_present, 1));
HANDLE_CODE(bref.unpack(pdsch_processing_type1_different_tb_per_slot_present, 1));
HANDLE_CODE(bref.unpack(dummy3_present, 1));
HANDLE_CODE(bref.unpack(dummy4_present, 1));
HANDLE_CODE(bref.unpack(dummy5_present, 1));
HANDLE_CODE(bref.unpack(dummy6_present, 1));
HANDLE_CODE(bref.unpack(dummy7_present, 1));
HANDLE_CODE(unpack_dyn_seq_of(feature_set_list_per_dl_cc, bref, 1, 32, integer_packer<uint16_t>(1, 1024)));
if (intra_band_freq_separation_dl_present) {
HANDLE_CODE(intra_band_freq_separation_dl.unpack(bref));
}
if (scaling_factor_present) {
HANDLE_CODE(scaling_factor.unpack(bref));
}
if (pdcch_monitoring_any_occasions_present) {
HANDLE_CODE(pdcch_monitoring_any_occasions.unpack(bref));
}
if (time_dur_for_qcl_present) {
HANDLE_CODE(bref.unpack(time_dur_for_qcl.scs_minus60k_hz_present, 1));
HANDLE_CODE(bref.unpack(time_dur_for_qcl.scs_minus120k_hz_present, 1));
if (time_dur_for_qcl.scs_minus60k_hz_present) {
HANDLE_CODE(time_dur_for_qcl.scs_minus60k_hz.unpack(bref));
}
if (time_dur_for_qcl.scs_minus120k_hz_present) {
HANDLE_CODE(time_dur_for_qcl.scs_minus120k_hz.unpack(bref));
}
}
if (pdsch_processing_type1_different_tb_per_slot_present) {
HANDLE_CODE(bref.unpack(pdsch_processing_type1_different_tb_per_slot.scs_minus15k_hz_present, 1));
HANDLE_CODE(bref.unpack(pdsch_processing_type1_different_tb_per_slot.scs_minus30k_hz_present, 1));
HANDLE_CODE(bref.unpack(pdsch_processing_type1_different_tb_per_slot.scs_minus60k_hz_present, 1));
HANDLE_CODE(bref.unpack(pdsch_processing_type1_different_tb_per_slot.scs_minus120k_hz_present, 1));
if (pdsch_processing_type1_different_tb_per_slot.scs_minus15k_hz_present) {
HANDLE_CODE(pdsch_processing_type1_different_tb_per_slot.scs_minus15k_hz.unpack(bref));
}
if (pdsch_processing_type1_different_tb_per_slot.scs_minus30k_hz_present) {
HANDLE_CODE(pdsch_processing_type1_different_tb_per_slot.scs_minus30k_hz.unpack(bref));
}
if (pdsch_processing_type1_different_tb_per_slot.scs_minus60k_hz_present) {
HANDLE_CODE(pdsch_processing_type1_different_tb_per_slot.scs_minus60k_hz.unpack(bref));
}
if (pdsch_processing_type1_different_tb_per_slot.scs_minus120k_hz_present) {
HANDLE_CODE(pdsch_processing_type1_different_tb_per_slot.scs_minus120k_hz.unpack(bref));
}
}
if (dummy3_present) {
HANDLE_CODE(dummy3.unpack(bref));
}
if (dummy4_present) {
HANDLE_CODE(unpack_dyn_seq_of(dummy4, bref, 1, 16));
}
if (dummy5_present) {
HANDLE_CODE(unpack_dyn_seq_of(dummy5, bref, 1, 16));
}
if (dummy6_present) {
HANDLE_CODE(unpack_dyn_seq_of(dummy6, bref, 1, 16));
}
if (dummy7_present) {
HANDLE_CODE(unpack_dyn_seq_of(dummy7, bref, 1, 16));
}
return SRSASN_SUCCESS;
}
void feature_set_dl_s::to_json(json_writer& j) const
{
j.start_obj();
j.start_array("featureSetListPerDownlinkCC");
for (const auto& e1 : feature_set_list_per_dl_cc) {
j.write_int(e1);
}
j.end_array();
if (intra_band_freq_separation_dl_present) {
j.write_str("intraBandFreqSeparationDL", intra_band_freq_separation_dl.to_string());
}
if (scaling_factor_present) {
j.write_str("scalingFactor", scaling_factor.to_string());
}
if (cross_carrier_sched_other_scs_present) {
j.write_str("crossCarrierScheduling-OtherSCS", "supported");
}
if (scell_without_ssb_present) {
j.write_str("scellWithoutSSB", "supported");
}
if (csi_rs_meas_scell_without_ssb_present) {
j.write_str("csi-RS-MeasSCellWithoutSSB", "supported");
}
if (dummy1_present) {
j.write_str("dummy1", "supported");
}
if (type1_minus3_css_present) {
j.write_str("type1-3-CSS", "supported");
}
if (pdcch_monitoring_any_occasions_present) {
j.write_str("pdcch-MonitoringAnyOccasions", pdcch_monitoring_any_occasions.to_string());
}
if (dummy2_present) {
j.write_str("dummy2", "supported");
}
if (ue_specific_ul_dl_assign_present) {
j.write_str("ue-SpecificUL-DL-Assignment", "supported");
}
if (search_space_sharing_ca_dl_present) {
j.write_str("searchSpaceSharingCA-DL", "supported");
}
if (time_dur_for_qcl_present) {
j.write_fieldname("timeDurationForQCL");
j.start_obj();
if (time_dur_for_qcl.scs_minus60k_hz_present) {
j.write_str("scs-60kHz", time_dur_for_qcl.scs_minus60k_hz.to_string());
}
if (time_dur_for_qcl.scs_minus120k_hz_present) {
j.write_str("scs-120kHz", time_dur_for_qcl.scs_minus120k_hz.to_string());
}
j.end_obj();
}
if (pdsch_processing_type1_different_tb_per_slot_present) {
j.write_fieldname("pdsch-ProcessingType1-DifferentTB-PerSlot");
j.start_obj();
if (pdsch_processing_type1_different_tb_per_slot.scs_minus15k_hz_present) {
j.write_str("scs-15kHz", pdsch_processing_type1_different_tb_per_slot.scs_minus15k_hz.to_string());
}
if (pdsch_processing_type1_different_tb_per_slot.scs_minus30k_hz_present) {
j.write_str("scs-30kHz", pdsch_processing_type1_different_tb_per_slot.scs_minus30k_hz.to_string());
}
if (pdsch_processing_type1_different_tb_per_slot.scs_minus60k_hz_present) {
j.write_str("scs-60kHz", pdsch_processing_type1_different_tb_per_slot.scs_minus60k_hz.to_string());
}
if (pdsch_processing_type1_different_tb_per_slot.scs_minus120k_hz_present) {
j.write_str("scs-120kHz", pdsch_processing_type1_different_tb_per_slot.scs_minus120k_hz.to_string());
}
j.end_obj();
}
if (dummy3_present) {
j.write_fieldname("dummy3");
dummy3.to_json(j);
}
if (dummy4_present) {
j.start_array("dummy4");
for (const auto& e1 : dummy4) {
e1.to_json(j);
}
j.end_array();
}
if (dummy5_present) {
j.start_array("dummy5");
for (const auto& e1 : dummy5) {
e1.to_json(j);
}
j.end_array();
}
if (dummy6_present) {
j.start_array("dummy6");
for (const auto& e1 : dummy6) {
e1.to_json(j);
}
j.end_array();
}
if (dummy7_present) {
j.start_array("dummy7");
for (const auto& e1 : dummy7) {
e1.to_json(j);
}
j.end_array();
}
j.end_obj();
}
const char* feature_set_dl_s::scaling_factor_opts::to_string() const
{
static const char* options[] = {"f0p4", "f0p75", "f0p8"};
return convert_enum_idx(options, 3, value, "feature_set_dl_s::scaling_factor_e_");
}
const char* feature_set_dl_s::pdcch_monitoring_any_occasions_opts::to_string() const
{
static const char* options[] = {"withoutDCI-Gap", "withDCI-Gap"};
return convert_enum_idx(options, 2, value, "feature_set_dl_s::pdcch_monitoring_any_occasions_e_");
}
const char* feature_set_dl_s::time_dur_for_qcl_s_::scs_minus60k_hz_opts::to_string() const
{
static const char* options[] = {"s7", "s14", "s28"};
return convert_enum_idx(options, 3, value, "feature_set_dl_s::time_dur_for_qcl_s_::scs_minus60k_hz_e_");
}
uint8_t feature_set_dl_s::time_dur_for_qcl_s_::scs_minus60k_hz_opts::to_number() const
{
static const uint8_t options[] = {7, 14, 28};
return map_enum_number(options, 3, value, "feature_set_dl_s::time_dur_for_qcl_s_::scs_minus60k_hz_e_");
}
const char* feature_set_dl_s::time_dur_for_qcl_s_::scs_minus120k_hz_opts::to_string() const
{
static const char* options[] = {"s14", "s28"};
return convert_enum_idx(options, 2, value, "feature_set_dl_s::time_dur_for_qcl_s_::scs_minus120k_hz_e_");
}
uint8_t feature_set_dl_s::time_dur_for_qcl_s_::scs_minus120k_hz_opts::to_number() const
{
static const uint8_t options[] = {14, 28};
return map_enum_number(options, 2, value, "feature_set_dl_s::time_dur_for_qcl_s_::scs_minus120k_hz_e_");
}
const char* feature_set_dl_s::pdsch_processing_type1_different_tb_per_slot_s_::scs_minus15k_hz_opts::to_string() const
{
static const char* options[] = {"upto2", "upto4", "upto7"};
return convert_enum_idx(
options, 3, value, "feature_set_dl_s::pdsch_processing_type1_different_tb_per_slot_s_::scs_minus15k_hz_e_");
}
uint8_t feature_set_dl_s::pdsch_processing_type1_different_tb_per_slot_s_::scs_minus15k_hz_opts::to_number() const
{
static const uint8_t options[] = {2, 4, 7};
return map_enum_number(
options, 3, value, "feature_set_dl_s::pdsch_processing_type1_different_tb_per_slot_s_::scs_minus15k_hz_e_");
}
const char* feature_set_dl_s::pdsch_processing_type1_different_tb_per_slot_s_::scs_minus30k_hz_opts::to_string() const
{
static const char* options[] = {"upto2", "upto4", "upto7"};
return convert_enum_idx(
options, 3, value, "feature_set_dl_s::pdsch_processing_type1_different_tb_per_slot_s_::scs_minus30k_hz_e_");
}
uint8_t feature_set_dl_s::pdsch_processing_type1_different_tb_per_slot_s_::scs_minus30k_hz_opts::to_number() const
{
static const uint8_t options[] = {2, 4, 7};
return map_enum_number(
options, 3, value, "feature_set_dl_s::pdsch_processing_type1_different_tb_per_slot_s_::scs_minus30k_hz_e_");
}
const char* feature_set_dl_s::pdsch_processing_type1_different_tb_per_slot_s_::scs_minus60k_hz_opts::to_string() const
{
static const char* options[] = {"upto2", "upto4", "upto7"};
return convert_enum_idx(
options, 3, value, "feature_set_dl_s::pdsch_processing_type1_different_tb_per_slot_s_::scs_minus60k_hz_e_");
}
uint8_t feature_set_dl_s::pdsch_processing_type1_different_tb_per_slot_s_::scs_minus60k_hz_opts::to_number() const
{
static const uint8_t options[] = {2, 4, 7};
return map_enum_number(
options, 3, value, "feature_set_dl_s::pdsch_processing_type1_different_tb_per_slot_s_::scs_minus60k_hz_e_");
}
const char* feature_set_dl_s::pdsch_processing_type1_different_tb_per_slot_s_::scs_minus120k_hz_opts::to_string() const
{
static const char* options[] = {"upto2", "upto4", "upto7"};
return convert_enum_idx(
options, 3, value, "feature_set_dl_s::pdsch_processing_type1_different_tb_per_slot_s_::scs_minus120k_hz_e_");
}
uint8_t feature_set_dl_s::pdsch_processing_type1_different_tb_per_slot_s_::scs_minus120k_hz_opts::to_number() const
{
static const uint8_t options[] = {2, 4, 7};
return map_enum_number(
options, 3, value, "feature_set_dl_s::pdsch_processing_type1_different_tb_per_slot_s_::scs_minus120k_hz_e_");
}
// ProcessingParameters ::= SEQUENCE
SRSASN_CODE processing_params_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(different_tb_per_slot_present, 1));
HANDLE_CODE(fallback.pack(bref));
if (different_tb_per_slot_present) {
HANDLE_CODE(bref.pack(different_tb_per_slot.upto1_present, 1));
HANDLE_CODE(bref.pack(different_tb_per_slot.upto2_present, 1));
HANDLE_CODE(bref.pack(different_tb_per_slot.upto4_present, 1));
HANDLE_CODE(bref.pack(different_tb_per_slot.upto7_present, 1));
if (different_tb_per_slot.upto1_present) {
HANDLE_CODE(pack_integer(bref, different_tb_per_slot.upto1, (uint8_t)1u, (uint8_t)16u));
}
if (different_tb_per_slot.upto2_present) {
HANDLE_CODE(pack_integer(bref, different_tb_per_slot.upto2, (uint8_t)1u, (uint8_t)16u));
}
if (different_tb_per_slot.upto4_present) {
HANDLE_CODE(pack_integer(bref, different_tb_per_slot.upto4, (uint8_t)1u, (uint8_t)16u));
}
if (different_tb_per_slot.upto7_present) {
HANDLE_CODE(pack_integer(bref, different_tb_per_slot.upto7, (uint8_t)1u, (uint8_t)16u));
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE processing_params_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(different_tb_per_slot_present, 1));
HANDLE_CODE(fallback.unpack(bref));
if (different_tb_per_slot_present) {
HANDLE_CODE(bref.unpack(different_tb_per_slot.upto1_present, 1));
HANDLE_CODE(bref.unpack(different_tb_per_slot.upto2_present, 1));
HANDLE_CODE(bref.unpack(different_tb_per_slot.upto4_present, 1));
HANDLE_CODE(bref.unpack(different_tb_per_slot.upto7_present, 1));
if (different_tb_per_slot.upto1_present) {
HANDLE_CODE(unpack_integer(different_tb_per_slot.upto1, bref, (uint8_t)1u, (uint8_t)16u));
}
if (different_tb_per_slot.upto2_present) {
HANDLE_CODE(unpack_integer(different_tb_per_slot.upto2, bref, (uint8_t)1u, (uint8_t)16u));
}
if (different_tb_per_slot.upto4_present) {
HANDLE_CODE(unpack_integer(different_tb_per_slot.upto4, bref, (uint8_t)1u, (uint8_t)16u));
}
if (different_tb_per_slot.upto7_present) {
HANDLE_CODE(unpack_integer(different_tb_per_slot.upto7, bref, (uint8_t)1u, (uint8_t)16u));
}
}
return SRSASN_SUCCESS;
}
void processing_params_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("fallback", fallback.to_string());
if (different_tb_per_slot_present) {
j.write_fieldname("differentTB-PerSlot");
j.start_obj();
if (different_tb_per_slot.upto1_present) {
j.write_int("upto1", different_tb_per_slot.upto1);
}
if (different_tb_per_slot.upto2_present) {
j.write_int("upto2", different_tb_per_slot.upto2);
}
if (different_tb_per_slot.upto4_present) {
j.write_int("upto4", different_tb_per_slot.upto4);
}
if (different_tb_per_slot.upto7_present) {
j.write_int("upto7", different_tb_per_slot.upto7);
}
j.end_obj();
}
j.end_obj();
}
const char* processing_params_s::fallback_opts::to_string() const
{
static const char* options[] = {"sc", "cap1-only"};
return convert_enum_idx(options, 2, value, "processing_params_s::fallback_e_");
}
uint8_t processing_params_s::fallback_opts::to_number() const
{
if (value == cap1_only) {
return 1;
}
invalid_enum_number(value, "processing_params_s::fallback_e_");
return 0;
}
// FeatureSetDownlink-v1540 ::= SEQUENCE
SRSASN_CODE feature_set_dl_v1540_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(one_fl_dmrs_two_add_dmrs_dl_present, 1));
HANDLE_CODE(bref.pack(add_dmrs_dl_alt_present, 1));
HANDLE_CODE(bref.pack(two_fl_dmrs_two_add_dmrs_dl_present, 1));
HANDLE_CODE(bref.pack(one_fl_dmrs_three_add_dmrs_dl_present, 1));
HANDLE_CODE(bref.pack(pdcch_monitoring_any_occasions_with_span_gap_present, 1));
HANDLE_CODE(bref.pack(pdsch_separation_with_gap_present, 1));
HANDLE_CODE(bref.pack(pdsch_processing_type2_present, 1));
HANDLE_CODE(bref.pack(pdsch_processing_type2_limited_present, 1));
HANDLE_CODE(bref.pack(dl_mcs_table_alt_dynamic_ind_present, 1));
if (pdcch_monitoring_any_occasions_with_span_gap_present) {
HANDLE_CODE(bref.pack(pdcch_monitoring_any_occasions_with_span_gap.scs_minus15k_hz_present, 1));
HANDLE_CODE(bref.pack(pdcch_monitoring_any_occasions_with_span_gap.scs_minus30k_hz_present, 1));
HANDLE_CODE(bref.pack(pdcch_monitoring_any_occasions_with_span_gap.scs_minus60k_hz_present, 1));
HANDLE_CODE(bref.pack(pdcch_monitoring_any_occasions_with_span_gap.scs_minus120k_hz_present, 1));
if (pdcch_monitoring_any_occasions_with_span_gap.scs_minus15k_hz_present) {
HANDLE_CODE(pdcch_monitoring_any_occasions_with_span_gap.scs_minus15k_hz.pack(bref));
}
if (pdcch_monitoring_any_occasions_with_span_gap.scs_minus30k_hz_present) {
HANDLE_CODE(pdcch_monitoring_any_occasions_with_span_gap.scs_minus30k_hz.pack(bref));
}
if (pdcch_monitoring_any_occasions_with_span_gap.scs_minus60k_hz_present) {
HANDLE_CODE(pdcch_monitoring_any_occasions_with_span_gap.scs_minus60k_hz.pack(bref));
}
if (pdcch_monitoring_any_occasions_with_span_gap.scs_minus120k_hz_present) {
HANDLE_CODE(pdcch_monitoring_any_occasions_with_span_gap.scs_minus120k_hz.pack(bref));
}
}
if (pdsch_processing_type2_present) {
HANDLE_CODE(bref.pack(pdsch_processing_type2.scs_minus15k_hz_present, 1));
HANDLE_CODE(bref.pack(pdsch_processing_type2.scs_minus30k_hz_present, 1));
HANDLE_CODE(bref.pack(pdsch_processing_type2.scs_minus60k_hz_present, 1));
if (pdsch_processing_type2.scs_minus15k_hz_present) {
HANDLE_CODE(pdsch_processing_type2.scs_minus15k_hz.pack(bref));
}
if (pdsch_processing_type2.scs_minus30k_hz_present) {
HANDLE_CODE(pdsch_processing_type2.scs_minus30k_hz.pack(bref));
}
if (pdsch_processing_type2.scs_minus60k_hz_present) {
HANDLE_CODE(pdsch_processing_type2.scs_minus60k_hz.pack(bref));
}
}
if (pdsch_processing_type2_limited_present) {
HANDLE_CODE(pdsch_processing_type2_limited.different_tb_per_slot_scs_minus30k_hz.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE feature_set_dl_v1540_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(one_fl_dmrs_two_add_dmrs_dl_present, 1));
HANDLE_CODE(bref.unpack(add_dmrs_dl_alt_present, 1));
HANDLE_CODE(bref.unpack(two_fl_dmrs_two_add_dmrs_dl_present, 1));
HANDLE_CODE(bref.unpack(one_fl_dmrs_three_add_dmrs_dl_present, 1));
HANDLE_CODE(bref.unpack(pdcch_monitoring_any_occasions_with_span_gap_present, 1));
HANDLE_CODE(bref.unpack(pdsch_separation_with_gap_present, 1));
HANDLE_CODE(bref.unpack(pdsch_processing_type2_present, 1));
HANDLE_CODE(bref.unpack(pdsch_processing_type2_limited_present, 1));
HANDLE_CODE(bref.unpack(dl_mcs_table_alt_dynamic_ind_present, 1));
if (pdcch_monitoring_any_occasions_with_span_gap_present) {
HANDLE_CODE(bref.unpack(pdcch_monitoring_any_occasions_with_span_gap.scs_minus15k_hz_present, 1));
HANDLE_CODE(bref.unpack(pdcch_monitoring_any_occasions_with_span_gap.scs_minus30k_hz_present, 1));
HANDLE_CODE(bref.unpack(pdcch_monitoring_any_occasions_with_span_gap.scs_minus60k_hz_present, 1));
HANDLE_CODE(bref.unpack(pdcch_monitoring_any_occasions_with_span_gap.scs_minus120k_hz_present, 1));
if (pdcch_monitoring_any_occasions_with_span_gap.scs_minus15k_hz_present) {
HANDLE_CODE(pdcch_monitoring_any_occasions_with_span_gap.scs_minus15k_hz.unpack(bref));
}
if (pdcch_monitoring_any_occasions_with_span_gap.scs_minus30k_hz_present) {
HANDLE_CODE(pdcch_monitoring_any_occasions_with_span_gap.scs_minus30k_hz.unpack(bref));
}
if (pdcch_monitoring_any_occasions_with_span_gap.scs_minus60k_hz_present) {
HANDLE_CODE(pdcch_monitoring_any_occasions_with_span_gap.scs_minus60k_hz.unpack(bref));
}
if (pdcch_monitoring_any_occasions_with_span_gap.scs_minus120k_hz_present) {
HANDLE_CODE(pdcch_monitoring_any_occasions_with_span_gap.scs_minus120k_hz.unpack(bref));
}
}
if (pdsch_processing_type2_present) {
HANDLE_CODE(bref.unpack(pdsch_processing_type2.scs_minus15k_hz_present, 1));
HANDLE_CODE(bref.unpack(pdsch_processing_type2.scs_minus30k_hz_present, 1));
HANDLE_CODE(bref.unpack(pdsch_processing_type2.scs_minus60k_hz_present, 1));
if (pdsch_processing_type2.scs_minus15k_hz_present) {
HANDLE_CODE(pdsch_processing_type2.scs_minus15k_hz.unpack(bref));
}
if (pdsch_processing_type2.scs_minus30k_hz_present) {
HANDLE_CODE(pdsch_processing_type2.scs_minus30k_hz.unpack(bref));
}
if (pdsch_processing_type2.scs_minus60k_hz_present) {
HANDLE_CODE(pdsch_processing_type2.scs_minus60k_hz.unpack(bref));
}
}
if (pdsch_processing_type2_limited_present) {
HANDLE_CODE(pdsch_processing_type2_limited.different_tb_per_slot_scs_minus30k_hz.unpack(bref));
}
return SRSASN_SUCCESS;
}
void feature_set_dl_v1540_s::to_json(json_writer& j) const
{
j.start_obj();
if (one_fl_dmrs_two_add_dmrs_dl_present) {
j.write_str("oneFL-DMRS-TwoAdditionalDMRS-DL", "supported");
}
if (add_dmrs_dl_alt_present) {
j.write_str("additionalDMRS-DL-Alt", "supported");
}
if (two_fl_dmrs_two_add_dmrs_dl_present) {
j.write_str("twoFL-DMRS-TwoAdditionalDMRS-DL", "supported");
}
if (one_fl_dmrs_three_add_dmrs_dl_present) {
j.write_str("oneFL-DMRS-ThreeAdditionalDMRS-DL", "supported");
}
if (pdcch_monitoring_any_occasions_with_span_gap_present) {
j.write_fieldname("pdcch-MonitoringAnyOccasionsWithSpanGap");
j.start_obj();
if (pdcch_monitoring_any_occasions_with_span_gap.scs_minus15k_hz_present) {
j.write_str("scs-15kHz", pdcch_monitoring_any_occasions_with_span_gap.scs_minus15k_hz.to_string());
}
if (pdcch_monitoring_any_occasions_with_span_gap.scs_minus30k_hz_present) {
j.write_str("scs-30kHz", pdcch_monitoring_any_occasions_with_span_gap.scs_minus30k_hz.to_string());
}
if (pdcch_monitoring_any_occasions_with_span_gap.scs_minus60k_hz_present) {
j.write_str("scs-60kHz", pdcch_monitoring_any_occasions_with_span_gap.scs_minus60k_hz.to_string());
}
if (pdcch_monitoring_any_occasions_with_span_gap.scs_minus120k_hz_present) {
j.write_str("scs-120kHz", pdcch_monitoring_any_occasions_with_span_gap.scs_minus120k_hz.to_string());
}
j.end_obj();
}
if (pdsch_separation_with_gap_present) {
j.write_str("pdsch-SeparationWithGap", "supported");
}
if (pdsch_processing_type2_present) {
j.write_fieldname("pdsch-ProcessingType2");
j.start_obj();
if (pdsch_processing_type2.scs_minus15k_hz_present) {
j.write_fieldname("scs-15kHz");
pdsch_processing_type2.scs_minus15k_hz.to_json(j);
}
if (pdsch_processing_type2.scs_minus30k_hz_present) {
j.write_fieldname("scs-30kHz");
pdsch_processing_type2.scs_minus30k_hz.to_json(j);
}
if (pdsch_processing_type2.scs_minus60k_hz_present) {
j.write_fieldname("scs-60kHz");
pdsch_processing_type2.scs_minus60k_hz.to_json(j);
}
j.end_obj();
}
if (pdsch_processing_type2_limited_present) {
j.write_fieldname("pdsch-ProcessingType2-Limited");
j.start_obj();
j.write_str("differentTB-PerSlot-SCS-30kHz",
pdsch_processing_type2_limited.different_tb_per_slot_scs_minus30k_hz.to_string());
j.end_obj();
}
if (dl_mcs_table_alt_dynamic_ind_present) {
j.write_str("dl-MCS-TableAlt-DynamicIndication", "supported");
}
j.end_obj();
}
const char*
feature_set_dl_v1540_s::pdcch_monitoring_any_occasions_with_span_gap_s_::scs_minus15k_hz_opts::to_string() const
{
static const char* options[] = {"set1", "set2", "set3"};
return convert_enum_idx(
options, 3, value, "feature_set_dl_v1540_s::pdcch_monitoring_any_occasions_with_span_gap_s_::scs_minus15k_hz_e_");
}
uint8_t feature_set_dl_v1540_s::pdcch_monitoring_any_occasions_with_span_gap_s_::scs_minus15k_hz_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 3};
return map_enum_number(
options, 3, value, "feature_set_dl_v1540_s::pdcch_monitoring_any_occasions_with_span_gap_s_::scs_minus15k_hz_e_");
}
const char*
feature_set_dl_v1540_s::pdcch_monitoring_any_occasions_with_span_gap_s_::scs_minus30k_hz_opts::to_string() const
{
static const char* options[] = {"set1", "set2", "set3"};
return convert_enum_idx(
options, 3, value, "feature_set_dl_v1540_s::pdcch_monitoring_any_occasions_with_span_gap_s_::scs_minus30k_hz_e_");
}
uint8_t feature_set_dl_v1540_s::pdcch_monitoring_any_occasions_with_span_gap_s_::scs_minus30k_hz_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 3};
return map_enum_number(
options, 3, value, "feature_set_dl_v1540_s::pdcch_monitoring_any_occasions_with_span_gap_s_::scs_minus30k_hz_e_");
}
const char*
feature_set_dl_v1540_s::pdcch_monitoring_any_occasions_with_span_gap_s_::scs_minus60k_hz_opts::to_string() const
{
static const char* options[] = {"set1", "set2", "set3"};
return convert_enum_idx(
options, 3, value, "feature_set_dl_v1540_s::pdcch_monitoring_any_occasions_with_span_gap_s_::scs_minus60k_hz_e_");
}
uint8_t feature_set_dl_v1540_s::pdcch_monitoring_any_occasions_with_span_gap_s_::scs_minus60k_hz_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 3};
return map_enum_number(
options, 3, value, "feature_set_dl_v1540_s::pdcch_monitoring_any_occasions_with_span_gap_s_::scs_minus60k_hz_e_");
}
const char*
feature_set_dl_v1540_s::pdcch_monitoring_any_occasions_with_span_gap_s_::scs_minus120k_hz_opts::to_string() const
{
static const char* options[] = {"set1", "set2", "set3"};
return convert_enum_idx(
options,
3,
value,
"feature_set_dl_v1540_s::pdcch_monitoring_any_occasions_with_span_gap_s_::scs_minus120k_hz_e_");
}
uint8_t
feature_set_dl_v1540_s::pdcch_monitoring_any_occasions_with_span_gap_s_::scs_minus120k_hz_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 3};
return map_enum_number(
options,
3,
value,
"feature_set_dl_v1540_s::pdcch_monitoring_any_occasions_with_span_gap_s_::scs_minus120k_hz_e_");
}
const char*
feature_set_dl_v1540_s::pdsch_processing_type2_limited_s_::different_tb_per_slot_scs_minus30k_hz_opts::to_string() const
{
static const char* options[] = {"upto1", "upto2", "upto4", "upto7"};
return convert_enum_idx(
options,
4,
value,
"feature_set_dl_v1540_s::pdsch_processing_type2_limited_s_::different_tb_per_slot_scs_minus30k_hz_e_");
}
uint8_t
feature_set_dl_v1540_s::pdsch_processing_type2_limited_s_::different_tb_per_slot_scs_minus30k_hz_opts::to_number() const
{
static const uint8_t options[] = {1, 2, 4, 7};
return map_enum_number(
options,
4,
value,
"feature_set_dl_v1540_s::pdsch_processing_type2_limited_s_::different_tb_per_slot_scs_minus30k_hz_e_");
}
// FeatureSetDownlink-v15a0 ::= SEQUENCE
SRSASN_CODE feature_set_dl_v15a0_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(supported_srs_res_present, 1));
if (supported_srs_res_present) {
HANDLE_CODE(supported_srs_res.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE feature_set_dl_v15a0_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(supported_srs_res_present, 1));
if (supported_srs_res_present) {
HANDLE_CODE(supported_srs_res.unpack(bref));
}
return SRSASN_SUCCESS;
}
void feature_set_dl_v15a0_s::to_json(json_writer& j) const
{
j.start_obj();
if (supported_srs_res_present) {
j.write_fieldname("supportedSRS-Resources");
supported_srs_res.to_json(j);
}
j.end_obj();
}
// ModulationOrder ::= ENUMERATED
const char* mod_order_opts::to_string() const
{
static const char* options[] = {"bpsk-halfpi", "bpsk", "qpsk", "qam16", "qam64", "qam256"};
return convert_enum_idx(options, 6, value, "mod_order_e");
}
float mod_order_opts::to_number() const
{
switch (value) {
case bpsk_halfpi:
return 0.5;
case qam16:
return 16.0;
case qam64:
return 64.0;
case qam256:
return 256.0;
default:
invalid_enum_number(value, "mod_order_e");
}
return 0;
}
const char* mod_order_opts::to_number_string() const
{
static const char* options[] = {"0.5", "16", "64", "256"};
return convert_enum_idx(options, 6, value, "mod_order_e");
}
// SupportedBandwidth ::= CHOICE
void supported_bw_c::destroy_() {}
void supported_bw_c::set(types::options e)
{
destroy_();
type_ = e;
}
supported_bw_c::supported_bw_c(const supported_bw_c& other)
{
type_ = other.type();
switch (type_) {
case types::fr1:
c.init(other.c.get<fr1_e_>());
break;
case types::fr2:
c.init(other.c.get<fr2_e_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "supported_bw_c");
}
}
supported_bw_c& supported_bw_c::operator=(const supported_bw_c& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::fr1:
c.set(other.c.get<fr1_e_>());
break;
case types::fr2:
c.set(other.c.get<fr2_e_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "supported_bw_c");
}
return *this;
}
supported_bw_c::fr1_e_& supported_bw_c::set_fr1()
{
set(types::fr1);
return c.get<fr1_e_>();
}
supported_bw_c::fr2_e_& supported_bw_c::set_fr2()
{
set(types::fr2);
return c.get<fr2_e_>();
}
void supported_bw_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::fr1:
j.write_str("fr1", c.get<fr1_e_>().to_string());
break;
case types::fr2:
j.write_str("fr2", c.get<fr2_e_>().to_string());
break;
default:
log_invalid_choice_id(type_, "supported_bw_c");
}
j.end_obj();
}
SRSASN_CODE supported_bw_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::fr1:
HANDLE_CODE(c.get<fr1_e_>().pack(bref));
break;
case types::fr2:
HANDLE_CODE(c.get<fr2_e_>().pack(bref));
break;
default:
log_invalid_choice_id(type_, "supported_bw_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE supported_bw_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::fr1:
HANDLE_CODE(c.get<fr1_e_>().unpack(bref));
break;
case types::fr2:
HANDLE_CODE(c.get<fr2_e_>().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "supported_bw_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* supported_bw_c::fr1_opts::to_string() const
{
static const char* options[] = {
"mhz5", "mhz10", "mhz15", "mhz20", "mhz25", "mhz30", "mhz40", "mhz50", "mhz60", "mhz80", "mhz100"};
return convert_enum_idx(options, 11, value, "supported_bw_c::fr1_e_");
}
uint8_t supported_bw_c::fr1_opts::to_number() const
{
static const uint8_t options[] = {5, 10, 15, 20, 25, 30, 40, 50, 60, 80, 100};
return map_enum_number(options, 11, value, "supported_bw_c::fr1_e_");
}
const char* supported_bw_c::fr2_opts::to_string() const
{
static const char* options[] = {"mhz50", "mhz100", "mhz200", "mhz400"};
return convert_enum_idx(options, 4, value, "supported_bw_c::fr2_e_");
}
uint16_t supported_bw_c::fr2_opts::to_number() const
{
static const uint16_t options[] = {50, 100, 200, 400};
return map_enum_number(options, 4, value, "supported_bw_c::fr2_e_");
}
const char* supported_bw_c::types_opts::to_string() const
{
static const char* options[] = {"fr1", "fr2"};
return convert_enum_idx(options, 2, value, "supported_bw_c::types");
}
uint8_t supported_bw_c::types_opts::to_number() const
{
static const uint8_t options[] = {1, 2};
return map_enum_number(options, 2, value, "supported_bw_c::types");
}
// FeatureSetDownlinkPerCC ::= SEQUENCE
SRSASN_CODE feature_set_dl_per_cc_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(ch_bw_minus90mhz_present, 1));
HANDLE_CODE(bref.pack(max_num_mimo_layers_pdsch_present, 1));
HANDLE_CODE(bref.pack(supported_mod_order_dl_present, 1));
HANDLE_CODE(supported_subcarrier_spacing_dl.pack(bref));
HANDLE_CODE(supported_bw_dl.pack(bref));
if (max_num_mimo_layers_pdsch_present) {
HANDLE_CODE(max_num_mimo_layers_pdsch.pack(bref));
}
if (supported_mod_order_dl_present) {
HANDLE_CODE(supported_mod_order_dl.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE feature_set_dl_per_cc_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(ch_bw_minus90mhz_present, 1));
HANDLE_CODE(bref.unpack(max_num_mimo_layers_pdsch_present, 1));
HANDLE_CODE(bref.unpack(supported_mod_order_dl_present, 1));
HANDLE_CODE(supported_subcarrier_spacing_dl.unpack(bref));
HANDLE_CODE(supported_bw_dl.unpack(bref));
if (max_num_mimo_layers_pdsch_present) {
HANDLE_CODE(max_num_mimo_layers_pdsch.unpack(bref));
}
if (supported_mod_order_dl_present) {
HANDLE_CODE(supported_mod_order_dl.unpack(bref));
}
return SRSASN_SUCCESS;
}
void feature_set_dl_per_cc_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("supportedSubcarrierSpacingDL", supported_subcarrier_spacing_dl.to_string());
j.write_fieldname("supportedBandwidthDL");
supported_bw_dl.to_json(j);
if (ch_bw_minus90mhz_present) {
j.write_str("channelBW-90mhz", "supported");
}
if (max_num_mimo_layers_pdsch_present) {
j.write_str("maxNumberMIMO-LayersPDSCH", max_num_mimo_layers_pdsch.to_string());
}
if (supported_mod_order_dl_present) {
j.write_str("supportedModulationOrderDL", supported_mod_order_dl.to_string());
}
j.end_obj();
}
// DummyF ::= SEQUENCE
SRSASN_CODE dummy_f_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, max_num_periodic_csi_report_per_bwp, (uint8_t)1u, (uint8_t)4u));
HANDLE_CODE(pack_integer(bref, max_num_aperiodic_csi_report_per_bwp, (uint8_t)1u, (uint8_t)4u));
HANDLE_CODE(pack_integer(bref, max_num_semi_persistent_csi_report_per_bwp, (uint8_t)0u, (uint8_t)4u));
HANDLE_CODE(pack_integer(bref, simul_csi_reports_all_cc, (uint8_t)5u, (uint8_t)32u));
return SRSASN_SUCCESS;
}
SRSASN_CODE dummy_f_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(max_num_periodic_csi_report_per_bwp, bref, (uint8_t)1u, (uint8_t)4u));
HANDLE_CODE(unpack_integer(max_num_aperiodic_csi_report_per_bwp, bref, (uint8_t)1u, (uint8_t)4u));
HANDLE_CODE(unpack_integer(max_num_semi_persistent_csi_report_per_bwp, bref, (uint8_t)0u, (uint8_t)4u));
HANDLE_CODE(unpack_integer(simul_csi_reports_all_cc, bref, (uint8_t)5u, (uint8_t)32u));
return SRSASN_SUCCESS;
}
void dummy_f_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("maxNumberPeriodicCSI-ReportPerBWP", max_num_periodic_csi_report_per_bwp);
j.write_int("maxNumberAperiodicCSI-ReportPerBWP", max_num_aperiodic_csi_report_per_bwp);
j.write_int("maxNumberSemiPersistentCSI-ReportPerBWP", max_num_semi_persistent_csi_report_per_bwp);
j.write_int("simultaneousCSI-ReportsAllCC", simul_csi_reports_all_cc);
j.end_obj();
}
// DummyI ::= SEQUENCE
SRSASN_CODE dummy_i_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(tx_switch_impact_to_rx_present, 1));
HANDLE_CODE(supported_srs_tx_port_switch.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE dummy_i_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(tx_switch_impact_to_rx_present, 1));
HANDLE_CODE(supported_srs_tx_port_switch.unpack(bref));
return SRSASN_SUCCESS;
}
void dummy_i_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("supportedSRS-TxPortSwitch", supported_srs_tx_port_switch.to_string());
if (tx_switch_impact_to_rx_present) {
j.write_str("txSwitchImpactToRx", "true");
}
j.end_obj();
}
const char* dummy_i_s::supported_srs_tx_port_switch_opts::to_string() const
{
static const char* options[] = {"t1r2", "t1r4", "t2r4", "t1r4-t2r4", "tr-equal"};
return convert_enum_idx(options, 5, value, "dummy_i_s::supported_srs_tx_port_switch_e_");
}
// FeatureSetUplink ::= SEQUENCE
SRSASN_CODE feature_set_ul_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(scaling_factor_present, 1));
HANDLE_CODE(bref.pack(cross_carrier_sched_other_scs_present, 1));
HANDLE_CODE(bref.pack(intra_band_freq_separation_ul_present, 1));
HANDLE_CODE(bref.pack(search_space_sharing_ca_ul_present, 1));
HANDLE_CODE(bref.pack(dummy1_present, 1));
HANDLE_CODE(bref.pack(supported_srs_res_present, 1));
HANDLE_CODE(bref.pack(two_pucch_group_present, 1));
HANDLE_CODE(bref.pack(dynamic_switch_sul_present, 1));
HANDLE_CODE(bref.pack(simul_tx_sul_non_sul_present, 1));
HANDLE_CODE(bref.pack(pusch_processing_type1_different_tb_per_slot_present, 1));
HANDLE_CODE(bref.pack(dummy2_present, 1));
HANDLE_CODE(pack_dyn_seq_of(bref, feature_set_list_per_ul_cc, 1, 32, integer_packer<uint16_t>(1, 1024)));
if (scaling_factor_present) {
HANDLE_CODE(scaling_factor.pack(bref));
}
if (intra_band_freq_separation_ul_present) {
HANDLE_CODE(intra_band_freq_separation_ul.pack(bref));
}
if (dummy1_present) {
HANDLE_CODE(dummy1.pack(bref));
}
if (supported_srs_res_present) {
HANDLE_CODE(supported_srs_res.pack(bref));
}
if (pusch_processing_type1_different_tb_per_slot_present) {
HANDLE_CODE(bref.pack(pusch_processing_type1_different_tb_per_slot.scs_minus15k_hz_present, 1));
HANDLE_CODE(bref.pack(pusch_processing_type1_different_tb_per_slot.scs_minus30k_hz_present, 1));
HANDLE_CODE(bref.pack(pusch_processing_type1_different_tb_per_slot.scs_minus60k_hz_present, 1));
HANDLE_CODE(bref.pack(pusch_processing_type1_different_tb_per_slot.scs_minus120k_hz_present, 1));
if (pusch_processing_type1_different_tb_per_slot.scs_minus15k_hz_present) {
HANDLE_CODE(pusch_processing_type1_different_tb_per_slot.scs_minus15k_hz.pack(bref));
}
if (pusch_processing_type1_different_tb_per_slot.scs_minus30k_hz_present) {
HANDLE_CODE(pusch_processing_type1_different_tb_per_slot.scs_minus30k_hz.pack(bref));
}
if (pusch_processing_type1_different_tb_per_slot.scs_minus60k_hz_present) {
HANDLE_CODE(pusch_processing_type1_different_tb_per_slot.scs_minus60k_hz.pack(bref));
}
if (pusch_processing_type1_different_tb_per_slot.scs_minus120k_hz_present) {
HANDLE_CODE(pusch_processing_type1_different_tb_per_slot.scs_minus120k_hz.pack(bref));
}
}
if (dummy2_present) {
HANDLE_CODE(dummy2.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE feature_set_ul_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(scaling_factor_present, 1));
HANDLE_CODE(bref.unpack(cross_carrier_sched_other_scs_present, 1));
HANDLE_CODE(bref.unpack(intra_band_freq_separation_ul_present, 1));
HANDLE_CODE(bref.unpack(search_space_sharing_ca_ul_present, 1));
HANDLE_CODE(bref.unpack(dummy1_present, 1));
HANDLE_CODE(bref.unpack(supported_srs_res_present, 1));
HANDLE_CODE(bref.unpack(two_pucch_group_present, 1));
HANDLE_CODE(bref.unpack(dynamic_switch_sul_present, 1));
HANDLE_CODE(bref.unpack(simul_tx_sul_non_sul_present, 1));
HANDLE_CODE(bref.unpack(pusch_processing_type1_different_tb_per_slot_present, 1));
HANDLE_CODE(bref.unpack(dummy2_present, 1));
HANDLE_CODE(unpack_dyn_seq_of(feature_set_list_per_ul_cc, bref, 1, 32, integer_packer<uint16_t>(1, 1024)));
if (scaling_factor_present) {
HANDLE_CODE(scaling_factor.unpack(bref));
}
if (intra_band_freq_separation_ul_present) {
HANDLE_CODE(intra_band_freq_separation_ul.unpack(bref));
}
if (dummy1_present) {
HANDLE_CODE(dummy1.unpack(bref));
}
if (supported_srs_res_present) {
HANDLE_CODE(supported_srs_res.unpack(bref));
}
if (pusch_processing_type1_different_tb_per_slot_present) {
HANDLE_CODE(bref.unpack(pusch_processing_type1_different_tb_per_slot.scs_minus15k_hz_present, 1));
HANDLE_CODE(bref.unpack(pusch_processing_type1_different_tb_per_slot.scs_minus30k_hz_present, 1));
HANDLE_CODE(bref.unpack(pusch_processing_type1_different_tb_per_slot.scs_minus60k_hz_present, 1));
HANDLE_CODE(bref.unpack(pusch_processing_type1_different_tb_per_slot.scs_minus120k_hz_present, 1));
if (pusch_processing_type1_different_tb_per_slot.scs_minus15k_hz_present) {
HANDLE_CODE(pusch_processing_type1_different_tb_per_slot.scs_minus15k_hz.unpack(bref));
}
if (pusch_processing_type1_different_tb_per_slot.scs_minus30k_hz_present) {
HANDLE_CODE(pusch_processing_type1_different_tb_per_slot.scs_minus30k_hz.unpack(bref));
}
if (pusch_processing_type1_different_tb_per_slot.scs_minus60k_hz_present) {
HANDLE_CODE(pusch_processing_type1_different_tb_per_slot.scs_minus60k_hz.unpack(bref));
}
if (pusch_processing_type1_different_tb_per_slot.scs_minus120k_hz_present) {
HANDLE_CODE(pusch_processing_type1_different_tb_per_slot.scs_minus120k_hz.unpack(bref));
}
}
if (dummy2_present) {
HANDLE_CODE(dummy2.unpack(bref));
}
return SRSASN_SUCCESS;
}
void feature_set_ul_s::to_json(json_writer& j) const
{
j.start_obj();
j.start_array("featureSetListPerUplinkCC");
for (const auto& e1 : feature_set_list_per_ul_cc) {
j.write_int(e1);
}
j.end_array();
if (scaling_factor_present) {
j.write_str("scalingFactor", scaling_factor.to_string());
}
if (cross_carrier_sched_other_scs_present) {
j.write_str("crossCarrierScheduling-OtherSCS", "supported");
}
if (intra_band_freq_separation_ul_present) {
j.write_str("intraBandFreqSeparationUL", intra_band_freq_separation_ul.to_string());
}
if (search_space_sharing_ca_ul_present) {
j.write_str("searchSpaceSharingCA-UL", "supported");
}
if (dummy1_present) {
j.write_fieldname("dummy1");
dummy1.to_json(j);
}
if (supported_srs_res_present) {
j.write_fieldname("supportedSRS-Resources");
supported_srs_res.to_json(j);
}
if (two_pucch_group_present) {
j.write_str("twoPUCCH-Group", "supported");
}
if (dynamic_switch_sul_present) {
j.write_str("dynamicSwitchSUL", "supported");
}
if (simul_tx_sul_non_sul_present) {
j.write_str("simultaneousTxSUL-NonSUL", "supported");
}
if (pusch_processing_type1_different_tb_per_slot_present) {
j.write_fieldname("pusch-ProcessingType1-DifferentTB-PerSlot");
j.start_obj();
if (pusch_processing_type1_different_tb_per_slot.scs_minus15k_hz_present) {
j.write_str("scs-15kHz", pusch_processing_type1_different_tb_per_slot.scs_minus15k_hz.to_string());
}
if (pusch_processing_type1_different_tb_per_slot.scs_minus30k_hz_present) {
j.write_str("scs-30kHz", pusch_processing_type1_different_tb_per_slot.scs_minus30k_hz.to_string());
}
if (pusch_processing_type1_different_tb_per_slot.scs_minus60k_hz_present) {
j.write_str("scs-60kHz", pusch_processing_type1_different_tb_per_slot.scs_minus60k_hz.to_string());
}
if (pusch_processing_type1_different_tb_per_slot.scs_minus120k_hz_present) {
j.write_str("scs-120kHz", pusch_processing_type1_different_tb_per_slot.scs_minus120k_hz.to_string());
}
j.end_obj();
}
if (dummy2_present) {
j.write_fieldname("dummy2");
dummy2.to_json(j);
}
j.end_obj();
}
const char* feature_set_ul_s::scaling_factor_opts::to_string() const
{
static const char* options[] = {"f0p4", "f0p75", "f0p8"};
return convert_enum_idx(options, 3, value, "feature_set_ul_s::scaling_factor_e_");
}
const char* feature_set_ul_s::pusch_processing_type1_different_tb_per_slot_s_::scs_minus15k_hz_opts::to_string() const
{
static const char* options[] = {"upto2", "upto4", "upto7"};
return convert_enum_idx(
options, 3, value, "feature_set_ul_s::pusch_processing_type1_different_tb_per_slot_s_::scs_minus15k_hz_e_");
}
uint8_t feature_set_ul_s::pusch_processing_type1_different_tb_per_slot_s_::scs_minus15k_hz_opts::to_number() const
{
static const uint8_t options[] = {2, 4, 7};
return map_enum_number(
options, 3, value, "feature_set_ul_s::pusch_processing_type1_different_tb_per_slot_s_::scs_minus15k_hz_e_");
}
const char* feature_set_ul_s::pusch_processing_type1_different_tb_per_slot_s_::scs_minus30k_hz_opts::to_string() const
{
static const char* options[] = {"upto2", "upto4", "upto7"};
return convert_enum_idx(
options, 3, value, "feature_set_ul_s::pusch_processing_type1_different_tb_per_slot_s_::scs_minus30k_hz_e_");
}
uint8_t feature_set_ul_s::pusch_processing_type1_different_tb_per_slot_s_::scs_minus30k_hz_opts::to_number() const
{
static const uint8_t options[] = {2, 4, 7};
return map_enum_number(
options, 3, value, "feature_set_ul_s::pusch_processing_type1_different_tb_per_slot_s_::scs_minus30k_hz_e_");
}
const char* feature_set_ul_s::pusch_processing_type1_different_tb_per_slot_s_::scs_minus60k_hz_opts::to_string() const
{
static const char* options[] = {"upto2", "upto4", "upto7"};
return convert_enum_idx(
options, 3, value, "feature_set_ul_s::pusch_processing_type1_different_tb_per_slot_s_::scs_minus60k_hz_e_");
}
uint8_t feature_set_ul_s::pusch_processing_type1_different_tb_per_slot_s_::scs_minus60k_hz_opts::to_number() const
{
static const uint8_t options[] = {2, 4, 7};
return map_enum_number(
options, 3, value, "feature_set_ul_s::pusch_processing_type1_different_tb_per_slot_s_::scs_minus60k_hz_e_");
}
const char* feature_set_ul_s::pusch_processing_type1_different_tb_per_slot_s_::scs_minus120k_hz_opts::to_string() const
{
static const char* options[] = {"upto2", "upto4", "upto7"};
return convert_enum_idx(
options, 3, value, "feature_set_ul_s::pusch_processing_type1_different_tb_per_slot_s_::scs_minus120k_hz_e_");
}
uint8_t feature_set_ul_s::pusch_processing_type1_different_tb_per_slot_s_::scs_minus120k_hz_opts::to_number() const
{
static const uint8_t options[] = {2, 4, 7};
return map_enum_number(
options, 3, value, "feature_set_ul_s::pusch_processing_type1_different_tb_per_slot_s_::scs_minus120k_hz_e_");
}
// FeatureSetUplink-v1540 ::= SEQUENCE
SRSASN_CODE feature_set_ul_v1540_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(zero_slot_offset_aperiodic_srs_present, 1));
HANDLE_CODE(bref.pack(pa_phase_discontinuity_impacts_present, 1));
HANDLE_CODE(bref.pack(pusch_separation_with_gap_present, 1));
HANDLE_CODE(bref.pack(pusch_processing_type2_present, 1));
HANDLE_CODE(bref.pack(ul_mcs_table_alt_dynamic_ind_present, 1));
if (pusch_processing_type2_present) {
HANDLE_CODE(bref.pack(pusch_processing_type2.scs_minus15k_hz_present, 1));
HANDLE_CODE(bref.pack(pusch_processing_type2.scs_minus30k_hz_present, 1));
HANDLE_CODE(bref.pack(pusch_processing_type2.scs_minus60k_hz_present, 1));
if (pusch_processing_type2.scs_minus15k_hz_present) {
HANDLE_CODE(pusch_processing_type2.scs_minus15k_hz.pack(bref));
}
if (pusch_processing_type2.scs_minus30k_hz_present) {
HANDLE_CODE(pusch_processing_type2.scs_minus30k_hz.pack(bref));
}
if (pusch_processing_type2.scs_minus60k_hz_present) {
HANDLE_CODE(pusch_processing_type2.scs_minus60k_hz.pack(bref));
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE feature_set_ul_v1540_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(zero_slot_offset_aperiodic_srs_present, 1));
HANDLE_CODE(bref.unpack(pa_phase_discontinuity_impacts_present, 1));
HANDLE_CODE(bref.unpack(pusch_separation_with_gap_present, 1));
HANDLE_CODE(bref.unpack(pusch_processing_type2_present, 1));
HANDLE_CODE(bref.unpack(ul_mcs_table_alt_dynamic_ind_present, 1));
if (pusch_processing_type2_present) {
HANDLE_CODE(bref.unpack(pusch_processing_type2.scs_minus15k_hz_present, 1));
HANDLE_CODE(bref.unpack(pusch_processing_type2.scs_minus30k_hz_present, 1));
HANDLE_CODE(bref.unpack(pusch_processing_type2.scs_minus60k_hz_present, 1));
if (pusch_processing_type2.scs_minus15k_hz_present) {
HANDLE_CODE(pusch_processing_type2.scs_minus15k_hz.unpack(bref));
}
if (pusch_processing_type2.scs_minus30k_hz_present) {
HANDLE_CODE(pusch_processing_type2.scs_minus30k_hz.unpack(bref));
}
if (pusch_processing_type2.scs_minus60k_hz_present) {
HANDLE_CODE(pusch_processing_type2.scs_minus60k_hz.unpack(bref));
}
}
return SRSASN_SUCCESS;
}
void feature_set_ul_v1540_s::to_json(json_writer& j) const
{
j.start_obj();
if (zero_slot_offset_aperiodic_srs_present) {
j.write_str("zeroSlotOffsetAperiodicSRS", "supported");
}
if (pa_phase_discontinuity_impacts_present) {
j.write_str("pa-PhaseDiscontinuityImpacts", "supported");
}
if (pusch_separation_with_gap_present) {
j.write_str("pusch-SeparationWithGap", "supported");
}
if (pusch_processing_type2_present) {
j.write_fieldname("pusch-ProcessingType2");
j.start_obj();
if (pusch_processing_type2.scs_minus15k_hz_present) {
j.write_fieldname("scs-15kHz");
pusch_processing_type2.scs_minus15k_hz.to_json(j);
}
if (pusch_processing_type2.scs_minus30k_hz_present) {
j.write_fieldname("scs-30kHz");
pusch_processing_type2.scs_minus30k_hz.to_json(j);
}
if (pusch_processing_type2.scs_minus60k_hz_present) {
j.write_fieldname("scs-60kHz");
pusch_processing_type2.scs_minus60k_hz.to_json(j);
}
j.end_obj();
}
if (ul_mcs_table_alt_dynamic_ind_present) {
j.write_str("ul-MCS-TableAlt-DynamicIndication", "supported");
}
j.end_obj();
}
// FeatureSetUplinkPerCC ::= SEQUENCE
SRSASN_CODE feature_set_ul_per_cc_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(ch_bw_minus90mhz_present, 1));
HANDLE_CODE(bref.pack(mimo_cb_pusch_present, 1));
HANDLE_CODE(bref.pack(max_num_mimo_layers_non_cb_pusch_present, 1));
HANDLE_CODE(bref.pack(supported_mod_order_ul_present, 1));
HANDLE_CODE(supported_subcarrier_spacing_ul.pack(bref));
HANDLE_CODE(supported_bw_ul.pack(bref));
if (mimo_cb_pusch_present) {
HANDLE_CODE(bref.pack(mimo_cb_pusch.max_num_mimo_layers_cb_pusch_present, 1));
if (mimo_cb_pusch.max_num_mimo_layers_cb_pusch_present) {
HANDLE_CODE(mimo_cb_pusch.max_num_mimo_layers_cb_pusch.pack(bref));
}
HANDLE_CODE(pack_integer(bref, mimo_cb_pusch.max_num_srs_res_per_set, (uint8_t)1u, (uint8_t)2u));
}
if (max_num_mimo_layers_non_cb_pusch_present) {
HANDLE_CODE(max_num_mimo_layers_non_cb_pusch.pack(bref));
}
if (supported_mod_order_ul_present) {
HANDLE_CODE(supported_mod_order_ul.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE feature_set_ul_per_cc_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(ch_bw_minus90mhz_present, 1));
HANDLE_CODE(bref.unpack(mimo_cb_pusch_present, 1));
HANDLE_CODE(bref.unpack(max_num_mimo_layers_non_cb_pusch_present, 1));
HANDLE_CODE(bref.unpack(supported_mod_order_ul_present, 1));
HANDLE_CODE(supported_subcarrier_spacing_ul.unpack(bref));
HANDLE_CODE(supported_bw_ul.unpack(bref));
if (mimo_cb_pusch_present) {
HANDLE_CODE(bref.unpack(mimo_cb_pusch.max_num_mimo_layers_cb_pusch_present, 1));
if (mimo_cb_pusch.max_num_mimo_layers_cb_pusch_present) {
HANDLE_CODE(mimo_cb_pusch.max_num_mimo_layers_cb_pusch.unpack(bref));
}
HANDLE_CODE(unpack_integer(mimo_cb_pusch.max_num_srs_res_per_set, bref, (uint8_t)1u, (uint8_t)2u));
}
if (max_num_mimo_layers_non_cb_pusch_present) {
HANDLE_CODE(max_num_mimo_layers_non_cb_pusch.unpack(bref));
}
if (supported_mod_order_ul_present) {
HANDLE_CODE(supported_mod_order_ul.unpack(bref));
}
return SRSASN_SUCCESS;
}
void feature_set_ul_per_cc_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("supportedSubcarrierSpacingUL", supported_subcarrier_spacing_ul.to_string());
j.write_fieldname("supportedBandwidthUL");
supported_bw_ul.to_json(j);
if (ch_bw_minus90mhz_present) {
j.write_str("channelBW-90mhz", "supported");
}
if (mimo_cb_pusch_present) {
j.write_fieldname("mimo-CB-PUSCH");
j.start_obj();
if (mimo_cb_pusch.max_num_mimo_layers_cb_pusch_present) {
j.write_str("maxNumberMIMO-LayersCB-PUSCH", mimo_cb_pusch.max_num_mimo_layers_cb_pusch.to_string());
}
j.write_int("maxNumberSRS-ResourcePerSet", mimo_cb_pusch.max_num_srs_res_per_set);
j.end_obj();
}
if (max_num_mimo_layers_non_cb_pusch_present) {
j.write_str("maxNumberMIMO-LayersNonCB-PUSCH", max_num_mimo_layers_non_cb_pusch.to_string());
}
if (supported_mod_order_ul_present) {
j.write_str("supportedModulationOrderUL", supported_mod_order_ul.to_string());
}
j.end_obj();
}
// FeatureSetUplinkPerCC-v1540 ::= SEQUENCE
SRSASN_CODE feature_set_ul_per_cc_v1540_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(mimo_non_cb_pusch_present, 1));
if (mimo_non_cb_pusch_present) {
HANDLE_CODE(pack_integer(bref, mimo_non_cb_pusch.max_num_srs_res_per_set, (uint8_t)1u, (uint8_t)4u));
HANDLE_CODE(pack_integer(bref, mimo_non_cb_pusch.max_num_simul_srs_res_tx, (uint8_t)1u, (uint8_t)4u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE feature_set_ul_per_cc_v1540_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(mimo_non_cb_pusch_present, 1));
if (mimo_non_cb_pusch_present) {
HANDLE_CODE(unpack_integer(mimo_non_cb_pusch.max_num_srs_res_per_set, bref, (uint8_t)1u, (uint8_t)4u));
HANDLE_CODE(unpack_integer(mimo_non_cb_pusch.max_num_simul_srs_res_tx, bref, (uint8_t)1u, (uint8_t)4u));
}
return SRSASN_SUCCESS;
}
void feature_set_ul_per_cc_v1540_s::to_json(json_writer& j) const
{
j.start_obj();
if (mimo_non_cb_pusch_present) {
j.write_fieldname("mimo-NonCB-PUSCH");
j.start_obj();
j.write_int("maxNumberSRS-ResourcePerSet", mimo_non_cb_pusch.max_num_srs_res_per_set);
j.write_int("maxNumberSimultaneousSRS-ResourceTx", mimo_non_cb_pusch.max_num_simul_srs_res_tx);
j.end_obj();
}
j.end_obj();
}
// FeatureSets ::= SEQUENCE
SRSASN_CODE feature_sets_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(feature_sets_dl_present, 1));
HANDLE_CODE(bref.pack(feature_sets_dl_per_cc_present, 1));
HANDLE_CODE(bref.pack(feature_sets_ul_present, 1));
HANDLE_CODE(bref.pack(feature_sets_ul_per_cc_present, 1));
if (feature_sets_dl_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, feature_sets_dl, 1, 1024));
}
if (feature_sets_dl_per_cc_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, feature_sets_dl_per_cc, 1, 1024));
}
if (feature_sets_ul_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, feature_sets_ul, 1, 1024));
}
if (feature_sets_ul_per_cc_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, feature_sets_ul_per_cc, 1, 1024));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= feature_sets_dl_v1540.is_present();
group_flags[0] |= feature_sets_ul_v1540.is_present();
group_flags[0] |= feature_sets_ul_per_cc_v1540.is_present();
group_flags[1] |= feature_sets_dl_v15a0.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(feature_sets_dl_v1540.is_present(), 1));
HANDLE_CODE(bref.pack(feature_sets_ul_v1540.is_present(), 1));
HANDLE_CODE(bref.pack(feature_sets_ul_per_cc_v1540.is_present(), 1));
if (feature_sets_dl_v1540.is_present()) {
HANDLE_CODE(pack_dyn_seq_of(bref, *feature_sets_dl_v1540, 1, 1024));
}
if (feature_sets_ul_v1540.is_present()) {
HANDLE_CODE(pack_dyn_seq_of(bref, *feature_sets_ul_v1540, 1, 1024));
}
if (feature_sets_ul_per_cc_v1540.is_present()) {
HANDLE_CODE(pack_dyn_seq_of(bref, *feature_sets_ul_per_cc_v1540, 1, 1024));
}
}
if (group_flags[1]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(feature_sets_dl_v15a0.is_present(), 1));
if (feature_sets_dl_v15a0.is_present()) {
HANDLE_CODE(pack_dyn_seq_of(bref, *feature_sets_dl_v15a0, 1, 1024));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE feature_sets_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(feature_sets_dl_present, 1));
HANDLE_CODE(bref.unpack(feature_sets_dl_per_cc_present, 1));
HANDLE_CODE(bref.unpack(feature_sets_ul_present, 1));
HANDLE_CODE(bref.unpack(feature_sets_ul_per_cc_present, 1));
if (feature_sets_dl_present) {
HANDLE_CODE(unpack_dyn_seq_of(feature_sets_dl, bref, 1, 1024));
}
if (feature_sets_dl_per_cc_present) {
HANDLE_CODE(unpack_dyn_seq_of(feature_sets_dl_per_cc, bref, 1, 1024));
}
if (feature_sets_ul_present) {
HANDLE_CODE(unpack_dyn_seq_of(feature_sets_ul, bref, 1, 1024));
}
if (feature_sets_ul_per_cc_present) {
HANDLE_CODE(unpack_dyn_seq_of(feature_sets_ul_per_cc, bref, 1, 1024));
}
if (ext) {
ext_groups_unpacker_guard group_flags(2);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool feature_sets_dl_v1540_present;
HANDLE_CODE(bref.unpack(feature_sets_dl_v1540_present, 1));
feature_sets_dl_v1540.set_present(feature_sets_dl_v1540_present);
bool feature_sets_ul_v1540_present;
HANDLE_CODE(bref.unpack(feature_sets_ul_v1540_present, 1));
feature_sets_ul_v1540.set_present(feature_sets_ul_v1540_present);
bool feature_sets_ul_per_cc_v1540_present;
HANDLE_CODE(bref.unpack(feature_sets_ul_per_cc_v1540_present, 1));
feature_sets_ul_per_cc_v1540.set_present(feature_sets_ul_per_cc_v1540_present);
if (feature_sets_dl_v1540.is_present()) {
HANDLE_CODE(unpack_dyn_seq_of(*feature_sets_dl_v1540, bref, 1, 1024));
}
if (feature_sets_ul_v1540.is_present()) {
HANDLE_CODE(unpack_dyn_seq_of(*feature_sets_ul_v1540, bref, 1, 1024));
}
if (feature_sets_ul_per_cc_v1540.is_present()) {
HANDLE_CODE(unpack_dyn_seq_of(*feature_sets_ul_per_cc_v1540, bref, 1, 1024));
}
}
if (group_flags[1]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool feature_sets_dl_v15a0_present;
HANDLE_CODE(bref.unpack(feature_sets_dl_v15a0_present, 1));
feature_sets_dl_v15a0.set_present(feature_sets_dl_v15a0_present);
if (feature_sets_dl_v15a0.is_present()) {
HANDLE_CODE(unpack_dyn_seq_of(*feature_sets_dl_v15a0, bref, 1, 1024));
}
}
}
return SRSASN_SUCCESS;
}
void feature_sets_s::to_json(json_writer& j) const
{
j.start_obj();
if (feature_sets_dl_present) {
j.start_array("featureSetsDownlink");
for (const auto& e1 : feature_sets_dl) {
e1.to_json(j);
}
j.end_array();
}
if (feature_sets_dl_per_cc_present) {
j.start_array("featureSetsDownlinkPerCC");
for (const auto& e1 : feature_sets_dl_per_cc) {
e1.to_json(j);
}
j.end_array();
}
if (feature_sets_ul_present) {
j.start_array("featureSetsUplink");
for (const auto& e1 : feature_sets_ul) {
e1.to_json(j);
}
j.end_array();
}
if (feature_sets_ul_per_cc_present) {
j.start_array("featureSetsUplinkPerCC");
for (const auto& e1 : feature_sets_ul_per_cc) {
e1.to_json(j);
}
j.end_array();
}
if (ext) {
if (feature_sets_dl_v1540.is_present()) {
j.start_array("featureSetsDownlink-v1540");
for (const auto& e1 : *feature_sets_dl_v1540) {
e1.to_json(j);
}
j.end_array();
}
if (feature_sets_ul_v1540.is_present()) {
j.start_array("featureSetsUplink-v1540");
for (const auto& e1 : *feature_sets_ul_v1540) {
e1.to_json(j);
}
j.end_array();
}
if (feature_sets_ul_per_cc_v1540.is_present()) {
j.start_array("featureSetsUplinkPerCC-v1540");
for (const auto& e1 : *feature_sets_ul_per_cc_v1540) {
e1.to_json(j);
}
j.end_array();
}
if (feature_sets_dl_v15a0.is_present()) {
j.start_array("featureSetsDownlink-v15a0");
for (const auto& e1 : *feature_sets_dl_v15a0) {
e1.to_json(j);
}
j.end_array();
}
}
j.end_obj();
}
// AggregatedBandwidth ::= ENUMERATED
const char* aggregated_bw_opts::to_string() const
{
static const char* options[] = {"mhz50",
"mhz100",
"mhz150",
"mhz200",
"mhz250",
"mhz300",
"mhz350",
"mhz400",
"mhz450",
"mhz500",
"mhz550",
"mhz600",
"mhz650",
"mhz700",
"mhz750",
"mhz800"};
return convert_enum_idx(options, 16, value, "aggregated_bw_e");
}
uint16_t aggregated_bw_opts::to_number() const
{
static const uint16_t options[] = {50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800};
return map_enum_number(options, 16, value, "aggregated_bw_e");
}
// FreqBandInformationEUTRA ::= SEQUENCE
SRSASN_CODE freq_band_info_eutra_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(ca_bw_class_dl_eutra_present, 1));
HANDLE_CODE(bref.pack(ca_bw_class_ul_eutra_present, 1));
HANDLE_CODE(pack_integer(bref, band_eutra, (uint16_t)1u, (uint16_t)256u));
if (ca_bw_class_dl_eutra_present) {
HANDLE_CODE(ca_bw_class_dl_eutra.pack(bref));
}
if (ca_bw_class_ul_eutra_present) {
HANDLE_CODE(ca_bw_class_ul_eutra.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE freq_band_info_eutra_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(ca_bw_class_dl_eutra_present, 1));
HANDLE_CODE(bref.unpack(ca_bw_class_ul_eutra_present, 1));
HANDLE_CODE(unpack_integer(band_eutra, bref, (uint16_t)1u, (uint16_t)256u));
if (ca_bw_class_dl_eutra_present) {
HANDLE_CODE(ca_bw_class_dl_eutra.unpack(bref));
}
if (ca_bw_class_ul_eutra_present) {
HANDLE_CODE(ca_bw_class_ul_eutra.unpack(bref));
}
return SRSASN_SUCCESS;
}
void freq_band_info_eutra_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("bandEUTRA", band_eutra);
if (ca_bw_class_dl_eutra_present) {
j.write_str("ca-BandwidthClassDL-EUTRA", ca_bw_class_dl_eutra.to_string());
}
if (ca_bw_class_ul_eutra_present) {
j.write_str("ca-BandwidthClassUL-EUTRA", ca_bw_class_ul_eutra.to_string());
}
j.end_obj();
}
// FreqBandInformationNR ::= SEQUENCE
SRSASN_CODE freq_band_info_nr_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(max_bw_requested_dl_present, 1));
HANDLE_CODE(bref.pack(max_bw_requested_ul_present, 1));
HANDLE_CODE(bref.pack(max_carriers_requested_dl_present, 1));
HANDLE_CODE(bref.pack(max_carriers_requested_ul_present, 1));
HANDLE_CODE(pack_integer(bref, band_nr, (uint16_t)1u, (uint16_t)1024u));
if (max_bw_requested_dl_present) {
HANDLE_CODE(max_bw_requested_dl.pack(bref));
}
if (max_bw_requested_ul_present) {
HANDLE_CODE(max_bw_requested_ul.pack(bref));
}
if (max_carriers_requested_dl_present) {
HANDLE_CODE(pack_integer(bref, max_carriers_requested_dl, (uint8_t)1u, (uint8_t)32u));
}
if (max_carriers_requested_ul_present) {
HANDLE_CODE(pack_integer(bref, max_carriers_requested_ul, (uint8_t)1u, (uint8_t)32u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE freq_band_info_nr_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(max_bw_requested_dl_present, 1));
HANDLE_CODE(bref.unpack(max_bw_requested_ul_present, 1));
HANDLE_CODE(bref.unpack(max_carriers_requested_dl_present, 1));
HANDLE_CODE(bref.unpack(max_carriers_requested_ul_present, 1));
HANDLE_CODE(unpack_integer(band_nr, bref, (uint16_t)1u, (uint16_t)1024u));
if (max_bw_requested_dl_present) {
HANDLE_CODE(max_bw_requested_dl.unpack(bref));
}
if (max_bw_requested_ul_present) {
HANDLE_CODE(max_bw_requested_ul.unpack(bref));
}
if (max_carriers_requested_dl_present) {
HANDLE_CODE(unpack_integer(max_carriers_requested_dl, bref, (uint8_t)1u, (uint8_t)32u));
}
if (max_carriers_requested_ul_present) {
HANDLE_CODE(unpack_integer(max_carriers_requested_ul, bref, (uint8_t)1u, (uint8_t)32u));
}
return SRSASN_SUCCESS;
}
void freq_band_info_nr_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("bandNR", band_nr);
if (max_bw_requested_dl_present) {
j.write_str("maxBandwidthRequestedDL", max_bw_requested_dl.to_string());
}
if (max_bw_requested_ul_present) {
j.write_str("maxBandwidthRequestedUL", max_bw_requested_ul.to_string());
}
if (max_carriers_requested_dl_present) {
j.write_int("maxCarriersRequestedDL", max_carriers_requested_dl);
}
if (max_carriers_requested_ul_present) {
j.write_int("maxCarriersRequestedUL", max_carriers_requested_ul);
}
j.end_obj();
}
// FreqBandInformation ::= CHOICE
void freq_band_info_c::destroy_()
{
switch (type_) {
case types::band_info_eutra:
c.destroy<freq_band_info_eutra_s>();
break;
case types::band_info_nr:
c.destroy<freq_band_info_nr_s>();
break;
default:
break;
}
}
void freq_band_info_c::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::band_info_eutra:
c.init<freq_band_info_eutra_s>();
break;
case types::band_info_nr:
c.init<freq_band_info_nr_s>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "freq_band_info_c");
}
}
freq_band_info_c::freq_band_info_c(const freq_band_info_c& other)
{
type_ = other.type();
switch (type_) {
case types::band_info_eutra:
c.init(other.c.get<freq_band_info_eutra_s>());
break;
case types::band_info_nr:
c.init(other.c.get<freq_band_info_nr_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "freq_band_info_c");
}
}
freq_band_info_c& freq_band_info_c::operator=(const freq_band_info_c& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::band_info_eutra:
c.set(other.c.get<freq_band_info_eutra_s>());
break;
case types::band_info_nr:
c.set(other.c.get<freq_band_info_nr_s>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "freq_band_info_c");
}
return *this;
}
freq_band_info_eutra_s& freq_band_info_c::set_band_info_eutra()
{
set(types::band_info_eutra);
return c.get<freq_band_info_eutra_s>();
}
freq_band_info_nr_s& freq_band_info_c::set_band_info_nr()
{
set(types::band_info_nr);
return c.get<freq_band_info_nr_s>();
}
void freq_band_info_c::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::band_info_eutra:
j.write_fieldname("bandInformationEUTRA");
c.get<freq_band_info_eutra_s>().to_json(j);
break;
case types::band_info_nr:
j.write_fieldname("bandInformationNR");
c.get<freq_band_info_nr_s>().to_json(j);
break;
default:
log_invalid_choice_id(type_, "freq_band_info_c");
}
j.end_obj();
}
SRSASN_CODE freq_band_info_c::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::band_info_eutra:
HANDLE_CODE(c.get<freq_band_info_eutra_s>().pack(bref));
break;
case types::band_info_nr:
HANDLE_CODE(c.get<freq_band_info_nr_s>().pack(bref));
break;
default:
log_invalid_choice_id(type_, "freq_band_info_c");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE freq_band_info_c::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::band_info_eutra:
HANDLE_CODE(c.get<freq_band_info_eutra_s>().unpack(bref));
break;
case types::band_info_nr:
HANDLE_CODE(c.get<freq_band_info_nr_s>().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "freq_band_info_c");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* freq_band_info_c::types_opts::to_string() const
{
static const char* options[] = {"bandInformationEUTRA", "bandInformationNR"};
return convert_enum_idx(options, 2, value, "freq_band_info_c::types");
}
// IMS-ParametersCommon ::= SEQUENCE
SRSASN_CODE ims_params_common_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(voice_over_eutra_minus5_gc_present, 1));
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= voice_over_scg_bearer_eutra_minus5_gc_present;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(voice_over_scg_bearer_eutra_minus5_gc_present, 1));
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ims_params_common_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(voice_over_eutra_minus5_gc_present, 1));
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(voice_over_scg_bearer_eutra_minus5_gc_present, 1));
}
}
return SRSASN_SUCCESS;
}
void ims_params_common_s::to_json(json_writer& j) const
{
j.start_obj();
if (voice_over_eutra_minus5_gc_present) {
j.write_str("voiceOverEUTRA-5GC", "supported");
}
if (ext) {
if (voice_over_scg_bearer_eutra_minus5_gc_present) {
j.write_str("voiceOverSCG-BearerEUTRA-5GC", "supported");
}
}
j.end_obj();
}
// IMS-ParametersFRX-Diff ::= SEQUENCE
SRSASN_CODE ims_params_frx_diff_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(voice_over_nr_present, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE ims_params_frx_diff_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(voice_over_nr_present, 1));
return SRSASN_SUCCESS;
}
void ims_params_frx_diff_s::to_json(json_writer& j) const
{
j.start_obj();
if (voice_over_nr_present) {
j.write_str("voiceOverNR", "supported");
}
j.end_obj();
}
// IMS-Parameters ::= SEQUENCE
SRSASN_CODE ims_params_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(ims_params_common_present, 1));
HANDLE_CODE(bref.pack(ims_params_frx_diff_present, 1));
if (ims_params_common_present) {
HANDLE_CODE(ims_params_common.pack(bref));
}
if (ims_params_frx_diff_present) {
HANDLE_CODE(ims_params_frx_diff.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ims_params_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(ims_params_common_present, 1));
HANDLE_CODE(bref.unpack(ims_params_frx_diff_present, 1));
if (ims_params_common_present) {
HANDLE_CODE(ims_params_common.unpack(bref));
}
if (ims_params_frx_diff_present) {
HANDLE_CODE(ims_params_frx_diff.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ims_params_s::to_json(json_writer& j) const
{
j.start_obj();
if (ims_params_common_present) {
j.write_fieldname("ims-ParametersCommon");
ims_params_common.to_json(j);
}
if (ims_params_frx_diff_present) {
j.write_fieldname("ims-ParametersFRX-Diff");
ims_params_frx_diff.to_json(j);
}
j.end_obj();
}
// InterRAT-Parameters ::= SEQUENCE
SRSASN_CODE inter_rat_params_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(eutra_present, 1));
if (eutra_present) {
HANDLE_CODE(eutra.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE inter_rat_params_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(eutra_present, 1));
if (eutra_present) {
HANDLE_CODE(eutra.unpack(bref));
}
return SRSASN_SUCCESS;
}
void inter_rat_params_s::to_json(json_writer& j) const
{
j.start_obj();
if (eutra_present) {
j.write_fieldname("eutra");
eutra.to_json(j);
}
j.end_obj();
}
// MAC-ParametersCommon ::= SEQUENCE
SRSASN_CODE mac_params_common_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(lcp_restrict_present, 1));
HANDLE_CODE(bref.pack(dummy_present, 1));
HANDLE_CODE(bref.pack(lch_to_scell_restrict_present, 1));
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= recommended_bit_rate_present;
group_flags[0] |= recommended_bit_rate_query_present;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(recommended_bit_rate_present, 1));
HANDLE_CODE(bref.pack(recommended_bit_rate_query_present, 1));
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE mac_params_common_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(lcp_restrict_present, 1));
HANDLE_CODE(bref.unpack(dummy_present, 1));
HANDLE_CODE(bref.unpack(lch_to_scell_restrict_present, 1));
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(recommended_bit_rate_present, 1));
HANDLE_CODE(bref.unpack(recommended_bit_rate_query_present, 1));
}
}
return SRSASN_SUCCESS;
}
void mac_params_common_s::to_json(json_writer& j) const
{
j.start_obj();
if (lcp_restrict_present) {
j.write_str("lcp-Restriction", "supported");
}
if (dummy_present) {
j.write_str("dummy", "supported");
}
if (lch_to_scell_restrict_present) {
j.write_str("lch-ToSCellRestriction", "supported");
}
if (ext) {
if (recommended_bit_rate_present) {
j.write_str("recommendedBitRate", "supported");
}
if (recommended_bit_rate_query_present) {
j.write_str("recommendedBitRateQuery", "supported");
}
}
j.end_obj();
}
// MAC-ParametersXDD-Diff ::= SEQUENCE
SRSASN_CODE mac_params_xdd_diff_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(skip_ul_tx_dynamic_present, 1));
HANDLE_CODE(bref.pack(lc_ch_sr_delay_timer_present, 1));
HANDLE_CODE(bref.pack(long_drx_cycle_present, 1));
HANDLE_CODE(bref.pack(short_drx_cycle_present, 1));
HANDLE_CODE(bref.pack(multiple_sr_cfgs_present, 1));
HANDLE_CODE(bref.pack(multiple_cfgured_grants_present, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE mac_params_xdd_diff_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(skip_ul_tx_dynamic_present, 1));
HANDLE_CODE(bref.unpack(lc_ch_sr_delay_timer_present, 1));
HANDLE_CODE(bref.unpack(long_drx_cycle_present, 1));
HANDLE_CODE(bref.unpack(short_drx_cycle_present, 1));
HANDLE_CODE(bref.unpack(multiple_sr_cfgs_present, 1));
HANDLE_CODE(bref.unpack(multiple_cfgured_grants_present, 1));
return SRSASN_SUCCESS;
}
void mac_params_xdd_diff_s::to_json(json_writer& j) const
{
j.start_obj();
if (skip_ul_tx_dynamic_present) {
j.write_str("skipUplinkTxDynamic", "supported");
}
if (lc_ch_sr_delay_timer_present) {
j.write_str("logicalChannelSR-DelayTimer", "supported");
}
if (long_drx_cycle_present) {
j.write_str("longDRX-Cycle", "supported");
}
if (short_drx_cycle_present) {
j.write_str("shortDRX-Cycle", "supported");
}
if (multiple_sr_cfgs_present) {
j.write_str("multipleSR-Configurations", "supported");
}
if (multiple_cfgured_grants_present) {
j.write_str("multipleConfiguredGrants", "supported");
}
j.end_obj();
}
// MAC-Parameters ::= SEQUENCE
SRSASN_CODE mac_params_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(mac_params_common_present, 1));
HANDLE_CODE(bref.pack(mac_params_xdd_diff_present, 1));
if (mac_params_common_present) {
HANDLE_CODE(mac_params_common.pack(bref));
}
if (mac_params_xdd_diff_present) {
HANDLE_CODE(mac_params_xdd_diff.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE mac_params_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(mac_params_common_present, 1));
HANDLE_CODE(bref.unpack(mac_params_xdd_diff_present, 1));
if (mac_params_common_present) {
HANDLE_CODE(mac_params_common.unpack(bref));
}
if (mac_params_xdd_diff_present) {
HANDLE_CODE(mac_params_xdd_diff.unpack(bref));
}
return SRSASN_SUCCESS;
}
void mac_params_s::to_json(json_writer& j) const
{
j.start_obj();
if (mac_params_common_present) {
j.write_fieldname("mac-ParametersCommon");
mac_params_common.to_json(j);
}
if (mac_params_xdd_diff_present) {
j.write_fieldname("mac-ParametersXDD-Diff");
mac_params_xdd_diff.to_json(j);
}
j.end_obj();
}
// MeasAndMobParametersCommon ::= SEQUENCE
SRSASN_CODE meas_and_mob_params_common_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(supported_gap_pattern_present, 1));
HANDLE_CODE(bref.pack(ssb_rlm_present, 1));
HANDLE_CODE(bref.pack(ssb_and_csi_rs_rlm_present, 1));
if (supported_gap_pattern_present) {
HANDLE_CODE(supported_gap_pattern.pack(bref));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= event_b_meas_and_report_present;
group_flags[0] |= ho_fdd_tdd_present;
group_flags[0] |= eutra_cgi_report_present;
group_flags[0] |= nr_cgi_report_present;
group_flags[1] |= independent_gap_cfg_present;
group_flags[1] |= periodic_eutra_meas_and_report_present;
group_flags[1] |= ho_fr1_fr2_present;
group_flags[1] |= max_num_csi_rs_rrm_rs_sinr_present;
group_flags[2] |= nr_cgi_report_endc_present;
group_flags[3] |= eutra_cgi_report_nedc_present;
group_flags[3] |= eutra_cgi_report_nrdc_present;
group_flags[3] |= nr_cgi_report_nedc_present;
group_flags[3] |= nr_cgi_report_nrdc_present;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(event_b_meas_and_report_present, 1));
HANDLE_CODE(bref.pack(ho_fdd_tdd_present, 1));
HANDLE_CODE(bref.pack(eutra_cgi_report_present, 1));
HANDLE_CODE(bref.pack(nr_cgi_report_present, 1));
}
if (group_flags[1]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(independent_gap_cfg_present, 1));
HANDLE_CODE(bref.pack(periodic_eutra_meas_and_report_present, 1));
HANDLE_CODE(bref.pack(ho_fr1_fr2_present, 1));
HANDLE_CODE(bref.pack(max_num_csi_rs_rrm_rs_sinr_present, 1));
if (max_num_csi_rs_rrm_rs_sinr_present) {
HANDLE_CODE(max_num_csi_rs_rrm_rs_sinr.pack(bref));
}
}
if (group_flags[2]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(nr_cgi_report_endc_present, 1));
}
if (group_flags[3]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(eutra_cgi_report_nedc_present, 1));
HANDLE_CODE(bref.pack(eutra_cgi_report_nrdc_present, 1));
HANDLE_CODE(bref.pack(nr_cgi_report_nedc_present, 1));
HANDLE_CODE(bref.pack(nr_cgi_report_nrdc_present, 1));
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_and_mob_params_common_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(supported_gap_pattern_present, 1));
HANDLE_CODE(bref.unpack(ssb_rlm_present, 1));
HANDLE_CODE(bref.unpack(ssb_and_csi_rs_rlm_present, 1));
if (supported_gap_pattern_present) {
HANDLE_CODE(supported_gap_pattern.unpack(bref));
}
if (ext) {
ext_groups_unpacker_guard group_flags(4);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(event_b_meas_and_report_present, 1));
HANDLE_CODE(bref.unpack(ho_fdd_tdd_present, 1));
HANDLE_CODE(bref.unpack(eutra_cgi_report_present, 1));
HANDLE_CODE(bref.unpack(nr_cgi_report_present, 1));
}
if (group_flags[1]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(independent_gap_cfg_present, 1));
HANDLE_CODE(bref.unpack(periodic_eutra_meas_and_report_present, 1));
HANDLE_CODE(bref.unpack(ho_fr1_fr2_present, 1));
HANDLE_CODE(bref.unpack(max_num_csi_rs_rrm_rs_sinr_present, 1));
if (max_num_csi_rs_rrm_rs_sinr_present) {
HANDLE_CODE(max_num_csi_rs_rrm_rs_sinr.unpack(bref));
}
}
if (group_flags[2]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(nr_cgi_report_endc_present, 1));
}
if (group_flags[3]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(eutra_cgi_report_nedc_present, 1));
HANDLE_CODE(bref.unpack(eutra_cgi_report_nrdc_present, 1));
HANDLE_CODE(bref.unpack(nr_cgi_report_nedc_present, 1));
HANDLE_CODE(bref.unpack(nr_cgi_report_nrdc_present, 1));
}
}
return SRSASN_SUCCESS;
}
void meas_and_mob_params_common_s::to_json(json_writer& j) const
{
j.start_obj();
if (supported_gap_pattern_present) {
j.write_str("supportedGapPattern", supported_gap_pattern.to_string());
}
if (ssb_rlm_present) {
j.write_str("ssb-RLM", "supported");
}
if (ssb_and_csi_rs_rlm_present) {
j.write_str("ssb-AndCSI-RS-RLM", "supported");
}
if (ext) {
if (event_b_meas_and_report_present) {
j.write_str("eventB-MeasAndReport", "supported");
}
if (ho_fdd_tdd_present) {
j.write_str("handoverFDD-TDD", "supported");
}
if (eutra_cgi_report_present) {
j.write_str("eutra-CGI-Reporting", "supported");
}
if (nr_cgi_report_present) {
j.write_str("nr-CGI-Reporting", "supported");
}
if (independent_gap_cfg_present) {
j.write_str("independentGapConfig", "supported");
}
if (periodic_eutra_meas_and_report_present) {
j.write_str("periodicEUTRA-MeasAndReport", "supported");
}
if (ho_fr1_fr2_present) {
j.write_str("handoverFR1-FR2", "supported");
}
if (max_num_csi_rs_rrm_rs_sinr_present) {
j.write_str("maxNumberCSI-RS-RRM-RS-SINR", max_num_csi_rs_rrm_rs_sinr.to_string());
}
if (nr_cgi_report_endc_present) {
j.write_str("nr-CGI-Reporting-ENDC", "supported");
}
if (eutra_cgi_report_nedc_present) {
j.write_str("eutra-CGI-Reporting-NEDC", "supported");
}
if (eutra_cgi_report_nrdc_present) {
j.write_str("eutra-CGI-Reporting-NRDC", "supported");
}
if (nr_cgi_report_nedc_present) {
j.write_str("nr-CGI-Reporting-NEDC", "supported");
}
if (nr_cgi_report_nrdc_present) {
j.write_str("nr-CGI-Reporting-NRDC", "supported");
}
}
j.end_obj();
}
const char* meas_and_mob_params_common_s::max_num_csi_rs_rrm_rs_sinr_opts::to_string() const
{
static const char* options[] = {"n4", "n8", "n16", "n32", "n64", "n96"};
return convert_enum_idx(options, 6, value, "meas_and_mob_params_common_s::max_num_csi_rs_rrm_rs_sinr_e_");
}
uint8_t meas_and_mob_params_common_s::max_num_csi_rs_rrm_rs_sinr_opts::to_number() const
{
static const uint8_t options[] = {4, 8, 16, 32, 64, 96};
return map_enum_number(options, 6, value, "meas_and_mob_params_common_s::max_num_csi_rs_rrm_rs_sinr_e_");
}
// MeasAndMobParametersFRX-Diff ::= SEQUENCE
SRSASN_CODE meas_and_mob_params_frx_diff_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(ss_sinr_meas_present, 1));
HANDLE_CODE(bref.pack(csi_rsrp_and_rsrq_meas_with_ssb_present, 1));
HANDLE_CODE(bref.pack(csi_rsrp_and_rsrq_meas_without_ssb_present, 1));
HANDLE_CODE(bref.pack(csi_sinr_meas_present, 1));
HANDLE_CODE(bref.pack(csi_rs_rlm_present, 1));
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= ho_inter_f_present;
group_flags[0] |= ho_lte_epc_present;
group_flags[0] |= ho_lte_minus5_gc_present;
group_flags[1] |= max_num_res_csi_rs_rlm_present;
group_flags[2] |= simul_rx_data_ssb_diff_numerology_present;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(ho_inter_f_present, 1));
HANDLE_CODE(bref.pack(ho_lte_epc_present, 1));
HANDLE_CODE(bref.pack(ho_lte_minus5_gc_present, 1));
}
if (group_flags[1]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(max_num_res_csi_rs_rlm_present, 1));
if (max_num_res_csi_rs_rlm_present) {
HANDLE_CODE(max_num_res_csi_rs_rlm.pack(bref));
}
}
if (group_flags[2]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(simul_rx_data_ssb_diff_numerology_present, 1));
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_and_mob_params_frx_diff_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(ss_sinr_meas_present, 1));
HANDLE_CODE(bref.unpack(csi_rsrp_and_rsrq_meas_with_ssb_present, 1));
HANDLE_CODE(bref.unpack(csi_rsrp_and_rsrq_meas_without_ssb_present, 1));
HANDLE_CODE(bref.unpack(csi_sinr_meas_present, 1));
HANDLE_CODE(bref.unpack(csi_rs_rlm_present, 1));
if (ext) {
ext_groups_unpacker_guard group_flags(3);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(ho_inter_f_present, 1));
HANDLE_CODE(bref.unpack(ho_lte_epc_present, 1));
HANDLE_CODE(bref.unpack(ho_lte_minus5_gc_present, 1));
}
if (group_flags[1]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(max_num_res_csi_rs_rlm_present, 1));
if (max_num_res_csi_rs_rlm_present) {
HANDLE_CODE(max_num_res_csi_rs_rlm.unpack(bref));
}
}
if (group_flags[2]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(simul_rx_data_ssb_diff_numerology_present, 1));
}
}
return SRSASN_SUCCESS;
}
void meas_and_mob_params_frx_diff_s::to_json(json_writer& j) const
{
j.start_obj();
if (ss_sinr_meas_present) {
j.write_str("ss-SINR-Meas", "supported");
}
if (csi_rsrp_and_rsrq_meas_with_ssb_present) {
j.write_str("csi-RSRP-AndRSRQ-MeasWithSSB", "supported");
}
if (csi_rsrp_and_rsrq_meas_without_ssb_present) {
j.write_str("csi-RSRP-AndRSRQ-MeasWithoutSSB", "supported");
}
if (csi_sinr_meas_present) {
j.write_str("csi-SINR-Meas", "supported");
}
if (csi_rs_rlm_present) {
j.write_str("csi-RS-RLM", "supported");
}
if (ext) {
if (ho_inter_f_present) {
j.write_str("handoverInterF", "supported");
}
if (ho_lte_epc_present) {
j.write_str("handoverLTE-EPC", "supported");
}
if (ho_lte_minus5_gc_present) {
j.write_str("handoverLTE-5GC", "supported");
}
if (max_num_res_csi_rs_rlm_present) {
j.write_str("maxNumberResource-CSI-RS-RLM", max_num_res_csi_rs_rlm.to_string());
}
if (simul_rx_data_ssb_diff_numerology_present) {
j.write_str("simultaneousRxDataSSB-DiffNumerology", "supported");
}
}
j.end_obj();
}
const char* meas_and_mob_params_frx_diff_s::max_num_res_csi_rs_rlm_opts::to_string() const
{
static const char* options[] = {"n2", "n4", "n6", "n8"};
return convert_enum_idx(options, 4, value, "meas_and_mob_params_frx_diff_s::max_num_res_csi_rs_rlm_e_");
}
uint8_t meas_and_mob_params_frx_diff_s::max_num_res_csi_rs_rlm_opts::to_number() const
{
static const uint8_t options[] = {2, 4, 6, 8};
return map_enum_number(options, 4, value, "meas_and_mob_params_frx_diff_s::max_num_res_csi_rs_rlm_e_");
}
// MeasAndMobParametersXDD-Diff ::= SEQUENCE
SRSASN_CODE meas_and_mob_params_xdd_diff_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(intra_and_inter_f_meas_and_report_present, 1));
HANDLE_CODE(bref.pack(event_a_meas_and_report_present, 1));
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= ho_inter_f_present;
group_flags[0] |= ho_lte_epc_present;
group_flags[0] |= ho_lte_minus5_gc_present;
group_flags[1] |= sftd_meas_nr_neigh_present;
group_flags[1] |= sftd_meas_nr_neigh_drx_present;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(ho_inter_f_present, 1));
HANDLE_CODE(bref.pack(ho_lte_epc_present, 1));
HANDLE_CODE(bref.pack(ho_lte_minus5_gc_present, 1));
}
if (group_flags[1]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(sftd_meas_nr_neigh_present, 1));
HANDLE_CODE(bref.pack(sftd_meas_nr_neigh_drx_present, 1));
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_and_mob_params_xdd_diff_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(intra_and_inter_f_meas_and_report_present, 1));
HANDLE_CODE(bref.unpack(event_a_meas_and_report_present, 1));
if (ext) {
ext_groups_unpacker_guard group_flags(2);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(ho_inter_f_present, 1));
HANDLE_CODE(bref.unpack(ho_lte_epc_present, 1));
HANDLE_CODE(bref.unpack(ho_lte_minus5_gc_present, 1));
}
if (group_flags[1]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(sftd_meas_nr_neigh_present, 1));
HANDLE_CODE(bref.unpack(sftd_meas_nr_neigh_drx_present, 1));
}
}
return SRSASN_SUCCESS;
}
void meas_and_mob_params_xdd_diff_s::to_json(json_writer& j) const
{
j.start_obj();
if (intra_and_inter_f_meas_and_report_present) {
j.write_str("intraAndInterF-MeasAndReport", "supported");
}
if (event_a_meas_and_report_present) {
j.write_str("eventA-MeasAndReport", "supported");
}
if (ext) {
if (ho_inter_f_present) {
j.write_str("handoverInterF", "supported");
}
if (ho_lte_epc_present) {
j.write_str("handoverLTE-EPC", "supported");
}
if (ho_lte_minus5_gc_present) {
j.write_str("handoverLTE-5GC", "supported");
}
if (sftd_meas_nr_neigh_present) {
j.write_str("sftd-MeasNR-Neigh", "supported");
}
if (sftd_meas_nr_neigh_drx_present) {
j.write_str("sftd-MeasNR-Neigh-DRX", "supported");
}
}
j.end_obj();
}
// MeasAndMobParameters ::= SEQUENCE
SRSASN_CODE meas_and_mob_params_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(meas_and_mob_params_common_present, 1));
HANDLE_CODE(bref.pack(meas_and_mob_params_xdd_diff_present, 1));
HANDLE_CODE(bref.pack(meas_and_mob_params_frx_diff_present, 1));
if (meas_and_mob_params_common_present) {
HANDLE_CODE(meas_and_mob_params_common.pack(bref));
}
if (meas_and_mob_params_xdd_diff_present) {
HANDLE_CODE(meas_and_mob_params_xdd_diff.pack(bref));
}
if (meas_and_mob_params_frx_diff_present) {
HANDLE_CODE(meas_and_mob_params_frx_diff.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_and_mob_params_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(meas_and_mob_params_common_present, 1));
HANDLE_CODE(bref.unpack(meas_and_mob_params_xdd_diff_present, 1));
HANDLE_CODE(bref.unpack(meas_and_mob_params_frx_diff_present, 1));
if (meas_and_mob_params_common_present) {
HANDLE_CODE(meas_and_mob_params_common.unpack(bref));
}
if (meas_and_mob_params_xdd_diff_present) {
HANDLE_CODE(meas_and_mob_params_xdd_diff.unpack(bref));
}
if (meas_and_mob_params_frx_diff_present) {
HANDLE_CODE(meas_and_mob_params_frx_diff.unpack(bref));
}
return SRSASN_SUCCESS;
}
void meas_and_mob_params_s::to_json(json_writer& j) const
{
j.start_obj();
if (meas_and_mob_params_common_present) {
j.write_fieldname("measAndMobParametersCommon");
meas_and_mob_params_common.to_json(j);
}
if (meas_and_mob_params_xdd_diff_present) {
j.write_fieldname("measAndMobParametersXDD-Diff");
meas_and_mob_params_xdd_diff.to_json(j);
}
if (meas_and_mob_params_frx_diff_present) {
j.write_fieldname("measAndMobParametersFRX-Diff");
meas_and_mob_params_frx_diff.to_json(j);
}
j.end_obj();
}
// MeasAndMobParametersMRDC-Common ::= SEQUENCE
SRSASN_CODE meas_and_mob_params_mrdc_common_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(independent_gap_cfg_present, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_and_mob_params_mrdc_common_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(independent_gap_cfg_present, 1));
return SRSASN_SUCCESS;
}
void meas_and_mob_params_mrdc_common_s::to_json(json_writer& j) const
{
j.start_obj();
if (independent_gap_cfg_present) {
j.write_str("independentGapConfig", "supported");
}
j.end_obj();
}
// MeasAndMobParametersMRDC-FRX-Diff ::= SEQUENCE
SRSASN_CODE meas_and_mob_params_mrdc_frx_diff_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(simul_rx_data_ssb_diff_numerology_present, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_and_mob_params_mrdc_frx_diff_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(simul_rx_data_ssb_diff_numerology_present, 1));
return SRSASN_SUCCESS;
}
void meas_and_mob_params_mrdc_frx_diff_s::to_json(json_writer& j) const
{
j.start_obj();
if (simul_rx_data_ssb_diff_numerology_present) {
j.write_str("simultaneousRxDataSSB-DiffNumerology", "supported");
}
j.end_obj();
}
// MeasAndMobParametersMRDC-XDD-Diff ::= SEQUENCE
SRSASN_CODE meas_and_mob_params_mrdc_xdd_diff_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(sftd_meas_ps_cell_present, 1));
HANDLE_CODE(bref.pack(sftd_meas_nr_cell_present, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_and_mob_params_mrdc_xdd_diff_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(sftd_meas_ps_cell_present, 1));
HANDLE_CODE(bref.unpack(sftd_meas_nr_cell_present, 1));
return SRSASN_SUCCESS;
}
void meas_and_mob_params_mrdc_xdd_diff_s::to_json(json_writer& j) const
{
j.start_obj();
if (sftd_meas_ps_cell_present) {
j.write_str("sftd-MeasPSCell", "supported");
}
if (sftd_meas_nr_cell_present) {
j.write_str("sftd-MeasNR-Cell", "supported");
}
j.end_obj();
}
// MeasAndMobParametersMRDC ::= SEQUENCE
SRSASN_CODE meas_and_mob_params_mrdc_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(meas_and_mob_params_mrdc_common_present, 1));
HANDLE_CODE(bref.pack(meas_and_mob_params_mrdc_xdd_diff_present, 1));
HANDLE_CODE(bref.pack(meas_and_mob_params_mrdc_frx_diff_present, 1));
if (meas_and_mob_params_mrdc_common_present) {
HANDLE_CODE(meas_and_mob_params_mrdc_common.pack(bref));
}
if (meas_and_mob_params_mrdc_xdd_diff_present) {
HANDLE_CODE(meas_and_mob_params_mrdc_xdd_diff.pack(bref));
}
if (meas_and_mob_params_mrdc_frx_diff_present) {
HANDLE_CODE(meas_and_mob_params_mrdc_frx_diff.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_and_mob_params_mrdc_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(meas_and_mob_params_mrdc_common_present, 1));
HANDLE_CODE(bref.unpack(meas_and_mob_params_mrdc_xdd_diff_present, 1));
HANDLE_CODE(bref.unpack(meas_and_mob_params_mrdc_frx_diff_present, 1));
if (meas_and_mob_params_mrdc_common_present) {
HANDLE_CODE(meas_and_mob_params_mrdc_common.unpack(bref));
}
if (meas_and_mob_params_mrdc_xdd_diff_present) {
HANDLE_CODE(meas_and_mob_params_mrdc_xdd_diff.unpack(bref));
}
if (meas_and_mob_params_mrdc_frx_diff_present) {
HANDLE_CODE(meas_and_mob_params_mrdc_frx_diff.unpack(bref));
}
return SRSASN_SUCCESS;
}
void meas_and_mob_params_mrdc_s::to_json(json_writer& j) const
{
j.start_obj();
if (meas_and_mob_params_mrdc_common_present) {
j.write_fieldname("measAndMobParametersMRDC-Common");
meas_and_mob_params_mrdc_common.to_json(j);
}
if (meas_and_mob_params_mrdc_xdd_diff_present) {
j.write_fieldname("measAndMobParametersMRDC-XDD-Diff");
meas_and_mob_params_mrdc_xdd_diff.to_json(j);
}
if (meas_and_mob_params_mrdc_frx_diff_present) {
j.write_fieldname("measAndMobParametersMRDC-FRX-Diff");
meas_and_mob_params_mrdc_frx_diff.to_json(j);
}
j.end_obj();
}
// MeasAndMobParametersMRDC-XDD-Diff-v1560 ::= SEQUENCE
SRSASN_CODE meas_and_mob_params_mrdc_xdd_diff_v1560_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(sftd_meas_ps_cell_nedc_present, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_and_mob_params_mrdc_xdd_diff_v1560_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(sftd_meas_ps_cell_nedc_present, 1));
return SRSASN_SUCCESS;
}
void meas_and_mob_params_mrdc_xdd_diff_v1560_s::to_json(json_writer& j) const
{
j.start_obj();
if (sftd_meas_ps_cell_nedc_present) {
j.write_str("sftd-MeasPSCell-NEDC", "supported");
}
j.end_obj();
}
// MeasAndMobParametersMRDC-v1560 ::= SEQUENCE
SRSASN_CODE meas_and_mob_params_mrdc_v1560_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(meas_and_mob_params_mrdc_xdd_diff_v1560_present, 1));
if (meas_and_mob_params_mrdc_xdd_diff_v1560_present) {
HANDLE_CODE(meas_and_mob_params_mrdc_xdd_diff_v1560.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_and_mob_params_mrdc_v1560_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(meas_and_mob_params_mrdc_xdd_diff_v1560_present, 1));
if (meas_and_mob_params_mrdc_xdd_diff_v1560_present) {
HANDLE_CODE(meas_and_mob_params_mrdc_xdd_diff_v1560.unpack(bref));
}
return SRSASN_SUCCESS;
}
void meas_and_mob_params_mrdc_v1560_s::to_json(json_writer& j) const
{
j.start_obj();
if (meas_and_mob_params_mrdc_xdd_diff_v1560_present) {
j.write_fieldname("measAndMobParametersMRDC-XDD-Diff-v1560");
meas_and_mob_params_mrdc_xdd_diff_v1560.to_json(j);
}
j.end_obj();
}
// MeasResultSCG-Failure ::= SEQUENCE
SRSASN_CODE meas_result_scg_fail_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_per_mo_list, 1, 8));
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_result_scg_fail_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(unpack_dyn_seq_of(meas_result_per_mo_list, bref, 1, 8));
return SRSASN_SUCCESS;
}
void meas_result_scg_fail_s::to_json(json_writer& j) const
{
j.start_obj();
j.start_array("measResultPerMOList");
for (const auto& e1 : meas_result_per_mo_list) {
e1.to_json(j);
}
j.end_array();
j.end_obj();
}
// GeneralParametersMRDC-XDD-Diff ::= SEQUENCE
SRSASN_CODE general_params_mrdc_xdd_diff_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(split_srb_with_one_ul_path_present, 1));
HANDLE_CODE(bref.pack(split_drb_with_ul_both_mcg_scg_present, 1));
HANDLE_CODE(bref.pack(srb3_present, 1));
HANDLE_CODE(bref.pack(v2x_eutra_present, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE general_params_mrdc_xdd_diff_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(split_srb_with_one_ul_path_present, 1));
HANDLE_CODE(bref.unpack(split_drb_with_ul_both_mcg_scg_present, 1));
HANDLE_CODE(bref.unpack(srb3_present, 1));
HANDLE_CODE(bref.unpack(v2x_eutra_present, 1));
return SRSASN_SUCCESS;
}
void general_params_mrdc_xdd_diff_s::to_json(json_writer& j) const
{
j.start_obj();
if (split_srb_with_one_ul_path_present) {
j.write_str("splitSRB-WithOneUL-Path", "supported");
}
if (split_drb_with_ul_both_mcg_scg_present) {
j.write_str("splitDRB-withUL-Both-MCG-SCG", "supported");
}
if (srb3_present) {
j.write_str("srb3", "supported");
}
if (v2x_eutra_present) {
j.write_str("v2x-EUTRA", "supported");
}
j.end_obj();
}
// UE-MRDC-CapabilityAddFRX-Mode ::= SEQUENCE
SRSASN_CODE ue_mrdc_cap_add_frx_mode_s::pack(bit_ref& bref) const
{
HANDLE_CODE(meas_and_mob_params_mrdc_frx_diff.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_mrdc_cap_add_frx_mode_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(meas_and_mob_params_mrdc_frx_diff.unpack(bref));
return SRSASN_SUCCESS;
}
void ue_mrdc_cap_add_frx_mode_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("measAndMobParametersMRDC-FRX-Diff");
meas_and_mob_params_mrdc_frx_diff.to_json(j);
j.end_obj();
}
// UE-MRDC-CapabilityAddXDD-Mode ::= SEQUENCE
SRSASN_CODE ue_mrdc_cap_add_xdd_mode_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(meas_and_mob_params_mrdc_xdd_diff_present, 1));
HANDLE_CODE(bref.pack(general_params_mrdc_xdd_diff_present, 1));
if (meas_and_mob_params_mrdc_xdd_diff_present) {
HANDLE_CODE(meas_and_mob_params_mrdc_xdd_diff.pack(bref));
}
if (general_params_mrdc_xdd_diff_present) {
HANDLE_CODE(general_params_mrdc_xdd_diff.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_mrdc_cap_add_xdd_mode_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(meas_and_mob_params_mrdc_xdd_diff_present, 1));
HANDLE_CODE(bref.unpack(general_params_mrdc_xdd_diff_present, 1));
if (meas_and_mob_params_mrdc_xdd_diff_present) {
HANDLE_CODE(meas_and_mob_params_mrdc_xdd_diff.unpack(bref));
}
if (general_params_mrdc_xdd_diff_present) {
HANDLE_CODE(general_params_mrdc_xdd_diff.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ue_mrdc_cap_add_xdd_mode_s::to_json(json_writer& j) const
{
j.start_obj();
if (meas_and_mob_params_mrdc_xdd_diff_present) {
j.write_fieldname("measAndMobParametersMRDC-XDD-Diff");
meas_and_mob_params_mrdc_xdd_diff.to_json(j);
}
if (general_params_mrdc_xdd_diff_present) {
j.write_fieldname("generalParametersMRDC-XDD-Diff");
general_params_mrdc_xdd_diff.to_json(j);
}
j.end_obj();
}
// NRDC-Parameters ::= SEQUENCE
SRSASN_CODE nrdc_params_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(meas_and_mob_params_nrdc_present, 1));
HANDLE_CODE(bref.pack(general_params_nrdc_present, 1));
HANDLE_CODE(bref.pack(fdd_add_ue_nrdc_cap_present, 1));
HANDLE_CODE(bref.pack(tdd_add_ue_nrdc_cap_present, 1));
HANDLE_CODE(bref.pack(fr1_add_ue_nrdc_cap_present, 1));
HANDLE_CODE(bref.pack(fr2_add_ue_nrdc_cap_present, 1));
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(dummy_present, 1));
if (meas_and_mob_params_nrdc_present) {
HANDLE_CODE(meas_and_mob_params_nrdc.pack(bref));
}
if (general_params_nrdc_present) {
HANDLE_CODE(general_params_nrdc.pack(bref));
}
if (fdd_add_ue_nrdc_cap_present) {
HANDLE_CODE(fdd_add_ue_nrdc_cap.pack(bref));
}
if (tdd_add_ue_nrdc_cap_present) {
HANDLE_CODE(tdd_add_ue_nrdc_cap.pack(bref));
}
if (fr1_add_ue_nrdc_cap_present) {
HANDLE_CODE(fr1_add_ue_nrdc_cap.pack(bref));
}
if (fr2_add_ue_nrdc_cap_present) {
HANDLE_CODE(fr2_add_ue_nrdc_cap.pack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE nrdc_params_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(meas_and_mob_params_nrdc_present, 1));
HANDLE_CODE(bref.unpack(general_params_nrdc_present, 1));
HANDLE_CODE(bref.unpack(fdd_add_ue_nrdc_cap_present, 1));
HANDLE_CODE(bref.unpack(tdd_add_ue_nrdc_cap_present, 1));
HANDLE_CODE(bref.unpack(fr1_add_ue_nrdc_cap_present, 1));
HANDLE_CODE(bref.unpack(fr2_add_ue_nrdc_cap_present, 1));
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(dummy_present, 1));
if (meas_and_mob_params_nrdc_present) {
HANDLE_CODE(meas_and_mob_params_nrdc.unpack(bref));
}
if (general_params_nrdc_present) {
HANDLE_CODE(general_params_nrdc.unpack(bref));
}
if (fdd_add_ue_nrdc_cap_present) {
HANDLE_CODE(fdd_add_ue_nrdc_cap.unpack(bref));
}
if (tdd_add_ue_nrdc_cap_present) {
HANDLE_CODE(tdd_add_ue_nrdc_cap.unpack(bref));
}
if (fr1_add_ue_nrdc_cap_present) {
HANDLE_CODE(fr1_add_ue_nrdc_cap.unpack(bref));
}
if (fr2_add_ue_nrdc_cap_present) {
HANDLE_CODE(fr2_add_ue_nrdc_cap.unpack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void nrdc_params_s::to_json(json_writer& j) const
{
j.start_obj();
if (meas_and_mob_params_nrdc_present) {
j.write_fieldname("measAndMobParametersNRDC");
meas_and_mob_params_nrdc.to_json(j);
}
if (general_params_nrdc_present) {
j.write_fieldname("generalParametersNRDC");
general_params_nrdc.to_json(j);
}
if (fdd_add_ue_nrdc_cap_present) {
j.write_fieldname("fdd-Add-UE-NRDC-Capabilities");
fdd_add_ue_nrdc_cap.to_json(j);
}
if (tdd_add_ue_nrdc_cap_present) {
j.write_fieldname("tdd-Add-UE-NRDC-Capabilities");
tdd_add_ue_nrdc_cap.to_json(j);
}
if (fr1_add_ue_nrdc_cap_present) {
j.write_fieldname("fr1-Add-UE-NRDC-Capabilities");
fr1_add_ue_nrdc_cap.to_json(j);
}
if (fr2_add_ue_nrdc_cap_present) {
j.write_fieldname("fr2-Add-UE-NRDC-Capabilities");
fr2_add_ue_nrdc_cap.to_json(j);
}
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (dummy_present) {
j.write_fieldname("dummy");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// CarrierAggregationVariant ::= SEQUENCE
SRSASN_CODE carrier_aggregation_variant_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(fr1fdd_fr1_tdd_ca_sp_cell_on_fr1_fdd_present, 1));
HANDLE_CODE(bref.pack(fr1fdd_fr1_tdd_ca_sp_cell_on_fr1_tdd_present, 1));
HANDLE_CODE(bref.pack(fr1fdd_fr2_tdd_ca_sp_cell_on_fr1_fdd_present, 1));
HANDLE_CODE(bref.pack(fr1fdd_fr2_tdd_ca_sp_cell_on_fr2_tdd_present, 1));
HANDLE_CODE(bref.pack(fr1tdd_fr2_tdd_ca_sp_cell_on_fr1_tdd_present, 1));
HANDLE_CODE(bref.pack(fr1tdd_fr2_tdd_ca_sp_cell_on_fr2_tdd_present, 1));
HANDLE_CODE(bref.pack(fr1fdd_fr1_tdd_fr2_tdd_ca_sp_cell_on_fr1_fdd_present, 1));
HANDLE_CODE(bref.pack(fr1fdd_fr1_tdd_fr2_tdd_ca_sp_cell_on_fr1_tdd_present, 1));
HANDLE_CODE(bref.pack(fr1fdd_fr1_tdd_fr2_tdd_ca_sp_cell_on_fr2_tdd_present, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE carrier_aggregation_variant_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(fr1fdd_fr1_tdd_ca_sp_cell_on_fr1_fdd_present, 1));
HANDLE_CODE(bref.unpack(fr1fdd_fr1_tdd_ca_sp_cell_on_fr1_tdd_present, 1));
HANDLE_CODE(bref.unpack(fr1fdd_fr2_tdd_ca_sp_cell_on_fr1_fdd_present, 1));
HANDLE_CODE(bref.unpack(fr1fdd_fr2_tdd_ca_sp_cell_on_fr2_tdd_present, 1));
HANDLE_CODE(bref.unpack(fr1tdd_fr2_tdd_ca_sp_cell_on_fr1_tdd_present, 1));
HANDLE_CODE(bref.unpack(fr1tdd_fr2_tdd_ca_sp_cell_on_fr2_tdd_present, 1));
HANDLE_CODE(bref.unpack(fr1fdd_fr1_tdd_fr2_tdd_ca_sp_cell_on_fr1_fdd_present, 1));
HANDLE_CODE(bref.unpack(fr1fdd_fr1_tdd_fr2_tdd_ca_sp_cell_on_fr1_tdd_present, 1));
HANDLE_CODE(bref.unpack(fr1fdd_fr1_tdd_fr2_tdd_ca_sp_cell_on_fr2_tdd_present, 1));
return SRSASN_SUCCESS;
}
void carrier_aggregation_variant_s::to_json(json_writer& j) const
{
j.start_obj();
if (fr1fdd_fr1_tdd_ca_sp_cell_on_fr1_fdd_present) {
j.write_str("fr1fdd-FR1TDD-CA-SpCellOnFR1FDD", "supported");
}
if (fr1fdd_fr1_tdd_ca_sp_cell_on_fr1_tdd_present) {
j.write_str("fr1fdd-FR1TDD-CA-SpCellOnFR1TDD", "supported");
}
if (fr1fdd_fr2_tdd_ca_sp_cell_on_fr1_fdd_present) {
j.write_str("fr1fdd-FR2TDD-CA-SpCellOnFR1FDD", "supported");
}
if (fr1fdd_fr2_tdd_ca_sp_cell_on_fr2_tdd_present) {
j.write_str("fr1fdd-FR2TDD-CA-SpCellOnFR2TDD", "supported");
}
if (fr1tdd_fr2_tdd_ca_sp_cell_on_fr1_tdd_present) {
j.write_str("fr1tdd-FR2TDD-CA-SpCellOnFR1TDD", "supported");
}
if (fr1tdd_fr2_tdd_ca_sp_cell_on_fr2_tdd_present) {
j.write_str("fr1tdd-FR2TDD-CA-SpCellOnFR2TDD", "supported");
}
if (fr1fdd_fr1_tdd_fr2_tdd_ca_sp_cell_on_fr1_fdd_present) {
j.write_str("fr1fdd-FR1TDD-FR2TDD-CA-SpCellOnFR1FDD", "supported");
}
if (fr1fdd_fr1_tdd_fr2_tdd_ca_sp_cell_on_fr1_tdd_present) {
j.write_str("fr1fdd-FR1TDD-FR2TDD-CA-SpCellOnFR1TDD", "supported");
}
if (fr1fdd_fr1_tdd_fr2_tdd_ca_sp_cell_on_fr2_tdd_present) {
j.write_str("fr1fdd-FR1TDD-FR2TDD-CA-SpCellOnFR2TDD", "supported");
}
j.end_obj();
}
// Phy-ParametersCommon ::= SEQUENCE
SRSASN_CODE phy_params_common_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(csi_rs_cfra_for_ho_present, 1));
HANDLE_CODE(bref.pack(dynamic_prb_bundling_dl_present, 1));
HANDLE_CODE(bref.pack(sp_csi_report_pucch_present, 1));
HANDLE_CODE(bref.pack(sp_csi_report_pusch_present, 1));
HANDLE_CODE(bref.pack(nzp_csi_rs_intef_mgmt_present, 1));
HANDLE_CODE(bref.pack(type2_sp_csi_feedback_long_pucch_present, 1));
HANDLE_CODE(bref.pack(precoder_granularity_coreset_present, 1));
HANDLE_CODE(bref.pack(dynamic_harq_ack_codebook_present, 1));
HANDLE_CODE(bref.pack(semi_static_harq_ack_codebook_present, 1));
HANDLE_CODE(bref.pack(spatial_bundling_harq_ack_present, 1));
HANDLE_CODE(bref.pack(dynamic_beta_offset_ind_harq_ack_csi_present, 1));
HANDLE_CODE(bref.pack(pucch_repeat_f1_minus3_minus4_present, 1));
HANDLE_CODE(bref.pack(ra_type0_pusch_present, 1));
HANDLE_CODE(bref.pack(dynamic_switch_ra_type0_minus1_pdsch_present, 1));
HANDLE_CODE(bref.pack(dynamic_switch_ra_type0_minus1_pusch_present, 1));
HANDLE_CODE(bref.pack(pdsch_map_type_a_present, 1));
HANDLE_CODE(bref.pack(pdsch_map_type_b_present, 1));
HANDLE_CODE(bref.pack(interleaving_vrb_to_prb_pdsch_present, 1));
HANDLE_CODE(bref.pack(inter_slot_freq_hop_pusch_present, 1));
HANDLE_CODE(bref.pack(type1_pusch_repeat_multi_slots_present, 1));
HANDLE_CODE(bref.pack(type2_pusch_repeat_multi_slots_present, 1));
HANDLE_CODE(bref.pack(pusch_repeat_multi_slots_present, 1));
HANDLE_CODE(bref.pack(pdsch_repeat_multi_slots_present, 1));
HANDLE_CODE(bref.pack(dl_sps_present, 1));
HANDLE_CODE(bref.pack(cfgured_ul_grant_type1_present, 1));
HANDLE_CODE(bref.pack(cfgured_ul_grant_type2_present, 1));
HANDLE_CODE(bref.pack(pre_empt_ind_dl_present, 1));
HANDLE_CODE(bref.pack(cbg_trans_ind_dl_present, 1));
HANDLE_CODE(bref.pack(cbg_trans_ind_ul_present, 1));
HANDLE_CODE(bref.pack(cbg_flush_ind_dl_present, 1));
HANDLE_CODE(bref.pack(dynamic_harq_ack_code_b_cbg_retx_dl_present, 1));
HANDLE_CODE(bref.pack(rate_matching_resrc_set_semi_static_present, 1));
HANDLE_CODE(bref.pack(rate_matching_resrc_set_dynamic_present, 1));
HANDLE_CODE(bref.pack(bwp_switching_delay_present, 1));
if (bwp_switching_delay_present) {
HANDLE_CODE(bwp_switching_delay.pack(bref));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= dummy_present;
group_flags[1] |= max_num_search_spaces_present;
group_flags[1] |= rate_matching_ctrl_resrc_set_dynamic_present;
group_flags[1] |= max_layers_mimo_ind_present;
group_flags[2] |= sp_cell_placement.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(dummy_present, 1));
}
if (group_flags[1]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(max_num_search_spaces_present, 1));
HANDLE_CODE(bref.pack(rate_matching_ctrl_resrc_set_dynamic_present, 1));
HANDLE_CODE(bref.pack(max_layers_mimo_ind_present, 1));
}
if (group_flags[2]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(sp_cell_placement.is_present(), 1));
if (sp_cell_placement.is_present()) {
HANDLE_CODE(sp_cell_placement->pack(bref));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE phy_params_common_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(csi_rs_cfra_for_ho_present, 1));
HANDLE_CODE(bref.unpack(dynamic_prb_bundling_dl_present, 1));
HANDLE_CODE(bref.unpack(sp_csi_report_pucch_present, 1));
HANDLE_CODE(bref.unpack(sp_csi_report_pusch_present, 1));
HANDLE_CODE(bref.unpack(nzp_csi_rs_intef_mgmt_present, 1));
HANDLE_CODE(bref.unpack(type2_sp_csi_feedback_long_pucch_present, 1));
HANDLE_CODE(bref.unpack(precoder_granularity_coreset_present, 1));
HANDLE_CODE(bref.unpack(dynamic_harq_ack_codebook_present, 1));
HANDLE_CODE(bref.unpack(semi_static_harq_ack_codebook_present, 1));
HANDLE_CODE(bref.unpack(spatial_bundling_harq_ack_present, 1));
HANDLE_CODE(bref.unpack(dynamic_beta_offset_ind_harq_ack_csi_present, 1));
HANDLE_CODE(bref.unpack(pucch_repeat_f1_minus3_minus4_present, 1));
HANDLE_CODE(bref.unpack(ra_type0_pusch_present, 1));
HANDLE_CODE(bref.unpack(dynamic_switch_ra_type0_minus1_pdsch_present, 1));
HANDLE_CODE(bref.unpack(dynamic_switch_ra_type0_minus1_pusch_present, 1));
HANDLE_CODE(bref.unpack(pdsch_map_type_a_present, 1));
HANDLE_CODE(bref.unpack(pdsch_map_type_b_present, 1));
HANDLE_CODE(bref.unpack(interleaving_vrb_to_prb_pdsch_present, 1));
HANDLE_CODE(bref.unpack(inter_slot_freq_hop_pusch_present, 1));
HANDLE_CODE(bref.unpack(type1_pusch_repeat_multi_slots_present, 1));
HANDLE_CODE(bref.unpack(type2_pusch_repeat_multi_slots_present, 1));
HANDLE_CODE(bref.unpack(pusch_repeat_multi_slots_present, 1));
HANDLE_CODE(bref.unpack(pdsch_repeat_multi_slots_present, 1));
HANDLE_CODE(bref.unpack(dl_sps_present, 1));
HANDLE_CODE(bref.unpack(cfgured_ul_grant_type1_present, 1));
HANDLE_CODE(bref.unpack(cfgured_ul_grant_type2_present, 1));
HANDLE_CODE(bref.unpack(pre_empt_ind_dl_present, 1));
HANDLE_CODE(bref.unpack(cbg_trans_ind_dl_present, 1));
HANDLE_CODE(bref.unpack(cbg_trans_ind_ul_present, 1));
HANDLE_CODE(bref.unpack(cbg_flush_ind_dl_present, 1));
HANDLE_CODE(bref.unpack(dynamic_harq_ack_code_b_cbg_retx_dl_present, 1));
HANDLE_CODE(bref.unpack(rate_matching_resrc_set_semi_static_present, 1));
HANDLE_CODE(bref.unpack(rate_matching_resrc_set_dynamic_present, 1));
HANDLE_CODE(bref.unpack(bwp_switching_delay_present, 1));
if (bwp_switching_delay_present) {
HANDLE_CODE(bwp_switching_delay.unpack(bref));
}
if (ext) {
ext_groups_unpacker_guard group_flags(3);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(dummy_present, 1));
}
if (group_flags[1]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(max_num_search_spaces_present, 1));
HANDLE_CODE(bref.unpack(rate_matching_ctrl_resrc_set_dynamic_present, 1));
HANDLE_CODE(bref.unpack(max_layers_mimo_ind_present, 1));
}
if (group_flags[2]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool sp_cell_placement_present;
HANDLE_CODE(bref.unpack(sp_cell_placement_present, 1));
sp_cell_placement.set_present(sp_cell_placement_present);
if (sp_cell_placement.is_present()) {
HANDLE_CODE(sp_cell_placement->unpack(bref));
}
}
}
return SRSASN_SUCCESS;
}
void phy_params_common_s::to_json(json_writer& j) const
{
j.start_obj();
if (csi_rs_cfra_for_ho_present) {
j.write_str("csi-RS-CFRA-ForHO", "supported");
}
if (dynamic_prb_bundling_dl_present) {
j.write_str("dynamicPRB-BundlingDL", "supported");
}
if (sp_csi_report_pucch_present) {
j.write_str("sp-CSI-ReportPUCCH", "supported");
}
if (sp_csi_report_pusch_present) {
j.write_str("sp-CSI-ReportPUSCH", "supported");
}
if (nzp_csi_rs_intef_mgmt_present) {
j.write_str("nzp-CSI-RS-IntefMgmt", "supported");
}
if (type2_sp_csi_feedback_long_pucch_present) {
j.write_str("type2-SP-CSI-Feedback-LongPUCCH", "supported");
}
if (precoder_granularity_coreset_present) {
j.write_str("precoderGranularityCORESET", "supported");
}
if (dynamic_harq_ack_codebook_present) {
j.write_str("dynamicHARQ-ACK-Codebook", "supported");
}
if (semi_static_harq_ack_codebook_present) {
j.write_str("semiStaticHARQ-ACK-Codebook", "supported");
}
if (spatial_bundling_harq_ack_present) {
j.write_str("spatialBundlingHARQ-ACK", "supported");
}
if (dynamic_beta_offset_ind_harq_ack_csi_present) {
j.write_str("dynamicBetaOffsetInd-HARQ-ACK-CSI", "supported");
}
if (pucch_repeat_f1_minus3_minus4_present) {
j.write_str("pucch-Repetition-F1-3-4", "supported");
}
if (ra_type0_pusch_present) {
j.write_str("ra-Type0-PUSCH", "supported");
}
if (dynamic_switch_ra_type0_minus1_pdsch_present) {
j.write_str("dynamicSwitchRA-Type0-1-PDSCH", "supported");
}
if (dynamic_switch_ra_type0_minus1_pusch_present) {
j.write_str("dynamicSwitchRA-Type0-1-PUSCH", "supported");
}
if (pdsch_map_type_a_present) {
j.write_str("pdsch-MappingTypeA", "supported");
}
if (pdsch_map_type_b_present) {
j.write_str("pdsch-MappingTypeB", "supported");
}
if (interleaving_vrb_to_prb_pdsch_present) {
j.write_str("interleavingVRB-ToPRB-PDSCH", "supported");
}
if (inter_slot_freq_hop_pusch_present) {
j.write_str("interSlotFreqHopping-PUSCH", "supported");
}
if (type1_pusch_repeat_multi_slots_present) {
j.write_str("type1-PUSCH-RepetitionMultiSlots", "supported");
}
if (type2_pusch_repeat_multi_slots_present) {
j.write_str("type2-PUSCH-RepetitionMultiSlots", "supported");
}
if (pusch_repeat_multi_slots_present) {
j.write_str("pusch-RepetitionMultiSlots", "supported");
}
if (pdsch_repeat_multi_slots_present) {
j.write_str("pdsch-RepetitionMultiSlots", "supported");
}
if (dl_sps_present) {
j.write_str("downlinkSPS", "supported");
}
if (cfgured_ul_grant_type1_present) {
j.write_str("configuredUL-GrantType1", "supported");
}
if (cfgured_ul_grant_type2_present) {
j.write_str("configuredUL-GrantType2", "supported");
}
if (pre_empt_ind_dl_present) {
j.write_str("pre-EmptIndication-DL", "supported");
}
if (cbg_trans_ind_dl_present) {
j.write_str("cbg-TransIndication-DL", "supported");
}
if (cbg_trans_ind_ul_present) {
j.write_str("cbg-TransIndication-UL", "supported");
}
if (cbg_flush_ind_dl_present) {
j.write_str("cbg-FlushIndication-DL", "supported");
}
if (dynamic_harq_ack_code_b_cbg_retx_dl_present) {
j.write_str("dynamicHARQ-ACK-CodeB-CBG-Retx-DL", "supported");
}
if (rate_matching_resrc_set_semi_static_present) {
j.write_str("rateMatchingResrcSetSemi-Static", "supported");
}
if (rate_matching_resrc_set_dynamic_present) {
j.write_str("rateMatchingResrcSetDynamic", "supported");
}
if (bwp_switching_delay_present) {
j.write_str("bwp-SwitchingDelay", bwp_switching_delay.to_string());
}
if (ext) {
if (dummy_present) {
j.write_str("dummy", "supported");
}
if (max_num_search_spaces_present) {
j.write_str("maxNumberSearchSpaces", "n10");
}
if (rate_matching_ctrl_resrc_set_dynamic_present) {
j.write_str("rateMatchingCtrlResrcSetDynamic", "supported");
}
if (max_layers_mimo_ind_present) {
j.write_str("maxLayersMIMO-Indication", "supported");
}
if (sp_cell_placement.is_present()) {
j.write_fieldname("spCellPlacement");
sp_cell_placement->to_json(j);
}
}
j.end_obj();
}
const char* phy_params_common_s::bwp_switching_delay_opts::to_string() const
{
static const char* options[] = {"type1", "type2"};
return convert_enum_idx(options, 2, value, "phy_params_common_s::bwp_switching_delay_e_");
}
uint8_t phy_params_common_s::bwp_switching_delay_opts::to_number() const
{
static const uint8_t options[] = {1, 2};
return map_enum_number(options, 2, value, "phy_params_common_s::bwp_switching_delay_e_");
}
// Phy-ParametersFR1 ::= SEQUENCE
SRSASN_CODE phy_params_fr1_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(pdcch_monitoring_single_occasion_present, 1));
HANDLE_CODE(bref.pack(scs_minus60k_hz_present, 1));
HANDLE_CODE(bref.pack(pdsch_minus256_qam_fr1_present, 1));
HANDLE_CODE(bref.pack(pdsch_re_map_fr1_per_symbol_present, 1));
if (pdsch_re_map_fr1_per_symbol_present) {
HANDLE_CODE(pdsch_re_map_fr1_per_symbol.pack(bref));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= pdsch_re_map_fr1_per_slot_present;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(pdsch_re_map_fr1_per_slot_present, 1));
if (pdsch_re_map_fr1_per_slot_present) {
HANDLE_CODE(pdsch_re_map_fr1_per_slot.pack(bref));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE phy_params_fr1_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(pdcch_monitoring_single_occasion_present, 1));
HANDLE_CODE(bref.unpack(scs_minus60k_hz_present, 1));
HANDLE_CODE(bref.unpack(pdsch_minus256_qam_fr1_present, 1));
HANDLE_CODE(bref.unpack(pdsch_re_map_fr1_per_symbol_present, 1));
if (pdsch_re_map_fr1_per_symbol_present) {
HANDLE_CODE(pdsch_re_map_fr1_per_symbol.unpack(bref));
}
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(pdsch_re_map_fr1_per_slot_present, 1));
if (pdsch_re_map_fr1_per_slot_present) {
HANDLE_CODE(pdsch_re_map_fr1_per_slot.unpack(bref));
}
}
}
return SRSASN_SUCCESS;
}
void phy_params_fr1_s::to_json(json_writer& j) const
{
j.start_obj();
if (pdcch_monitoring_single_occasion_present) {
j.write_str("pdcch-MonitoringSingleOccasion", "supported");
}
if (scs_minus60k_hz_present) {
j.write_str("scs-60kHz", "supported");
}
if (pdsch_minus256_qam_fr1_present) {
j.write_str("pdsch-256QAM-FR1", "supported");
}
if (pdsch_re_map_fr1_per_symbol_present) {
j.write_str("pdsch-RE-MappingFR1-PerSymbol", pdsch_re_map_fr1_per_symbol.to_string());
}
if (ext) {
if (pdsch_re_map_fr1_per_slot_present) {
j.write_str("pdsch-RE-MappingFR1-PerSlot", pdsch_re_map_fr1_per_slot.to_string());
}
}
j.end_obj();
}
const char* phy_params_fr1_s::pdsch_re_map_fr1_per_symbol_opts::to_string() const
{
static const char* options[] = {"n10", "n20"};
return convert_enum_idx(options, 2, value, "phy_params_fr1_s::pdsch_re_map_fr1_per_symbol_e_");
}
uint8_t phy_params_fr1_s::pdsch_re_map_fr1_per_symbol_opts::to_number() const
{
static const uint8_t options[] = {10, 20};
return map_enum_number(options, 2, value, "phy_params_fr1_s::pdsch_re_map_fr1_per_symbol_e_");
}
const char* phy_params_fr1_s::pdsch_re_map_fr1_per_slot_opts::to_string() const
{
static const char* options[] = {"n16",
"n32",
"n48",
"n64",
"n80",
"n96",
"n112",
"n128",
"n144",
"n160",
"n176",
"n192",
"n208",
"n224",
"n240",
"n256"};
return convert_enum_idx(options, 16, value, "phy_params_fr1_s::pdsch_re_map_fr1_per_slot_e_");
}
uint16_t phy_params_fr1_s::pdsch_re_map_fr1_per_slot_opts::to_number() const
{
static const uint16_t options[] = {16, 32, 48, 64, 80, 96, 112, 128, 144, 160, 176, 192, 208, 224, 240, 256};
return map_enum_number(options, 16, value, "phy_params_fr1_s::pdsch_re_map_fr1_per_slot_e_");
}
// Phy-ParametersFR2 ::= SEQUENCE
SRSASN_CODE phy_params_fr2_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(dummy_present, 1));
HANDLE_CODE(bref.pack(pdsch_re_map_fr2_per_symbol_present, 1));
if (pdsch_re_map_fr2_per_symbol_present) {
HANDLE_CODE(pdsch_re_map_fr2_per_symbol.pack(bref));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= pcell_fr2_present;
group_flags[0] |= pdsch_re_map_fr2_per_slot_present;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(pcell_fr2_present, 1));
HANDLE_CODE(bref.pack(pdsch_re_map_fr2_per_slot_present, 1));
if (pdsch_re_map_fr2_per_slot_present) {
HANDLE_CODE(pdsch_re_map_fr2_per_slot.pack(bref));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE phy_params_fr2_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(dummy_present, 1));
HANDLE_CODE(bref.unpack(pdsch_re_map_fr2_per_symbol_present, 1));
if (pdsch_re_map_fr2_per_symbol_present) {
HANDLE_CODE(pdsch_re_map_fr2_per_symbol.unpack(bref));
}
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(pcell_fr2_present, 1));
HANDLE_CODE(bref.unpack(pdsch_re_map_fr2_per_slot_present, 1));
if (pdsch_re_map_fr2_per_slot_present) {
HANDLE_CODE(pdsch_re_map_fr2_per_slot.unpack(bref));
}
}
}
return SRSASN_SUCCESS;
}
void phy_params_fr2_s::to_json(json_writer& j) const
{
j.start_obj();
if (dummy_present) {
j.write_str("dummy", "supported");
}
if (pdsch_re_map_fr2_per_symbol_present) {
j.write_str("pdsch-RE-MappingFR2-PerSymbol", pdsch_re_map_fr2_per_symbol.to_string());
}
if (ext) {
if (pcell_fr2_present) {
j.write_str("pCell-FR2", "supported");
}
if (pdsch_re_map_fr2_per_slot_present) {
j.write_str("pdsch-RE-MappingFR2-PerSlot", pdsch_re_map_fr2_per_slot.to_string());
}
}
j.end_obj();
}
const char* phy_params_fr2_s::pdsch_re_map_fr2_per_symbol_opts::to_string() const
{
static const char* options[] = {"n6", "n20"};
return convert_enum_idx(options, 2, value, "phy_params_fr2_s::pdsch_re_map_fr2_per_symbol_e_");
}
uint8_t phy_params_fr2_s::pdsch_re_map_fr2_per_symbol_opts::to_number() const
{
static const uint8_t options[] = {6, 20};
return map_enum_number(options, 2, value, "phy_params_fr2_s::pdsch_re_map_fr2_per_symbol_e_");
}
const char* phy_params_fr2_s::pdsch_re_map_fr2_per_slot_opts::to_string() const
{
static const char* options[] = {"n16",
"n32",
"n48",
"n64",
"n80",
"n96",
"n112",
"n128",
"n144",
"n160",
"n176",
"n192",
"n208",
"n224",
"n240",
"n256"};
return convert_enum_idx(options, 16, value, "phy_params_fr2_s::pdsch_re_map_fr2_per_slot_e_");
}
uint16_t phy_params_fr2_s::pdsch_re_map_fr2_per_slot_opts::to_number() const
{
static const uint16_t options[] = {16, 32, 48, 64, 80, 96, 112, 128, 144, 160, 176, 192, 208, 224, 240, 256};
return map_enum_number(options, 16, value, "phy_params_fr2_s::pdsch_re_map_fr2_per_slot_e_");
}
// Phy-ParametersFRX-Diff ::= SEQUENCE
SRSASN_CODE phy_params_frx_diff_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(dynamic_sfi_present, 1));
HANDLE_CODE(bref.pack(dummy1_present, 1));
HANDLE_CODE(bref.pack(two_fl_dmrs_present, 1));
HANDLE_CODE(bref.pack(dummy2_present, 1));
HANDLE_CODE(bref.pack(dummy3_present, 1));
HANDLE_CODE(bref.pack(supported_dmrs_type_dl_present, 1));
HANDLE_CODE(bref.pack(supported_dmrs_type_ul_present, 1));
HANDLE_CODE(bref.pack(semi_open_loop_csi_present, 1));
HANDLE_CODE(bref.pack(csi_report_without_pmi_present, 1));
HANDLE_CODE(bref.pack(csi_report_without_cqi_present, 1));
HANDLE_CODE(bref.pack(one_ports_ptrs_present, 1));
HANDLE_CODE(bref.pack(two_pucch_f0_minus2_consec_symbols_present, 1));
HANDLE_CODE(bref.pack(pucch_f2_with_fh_present, 1));
HANDLE_CODE(bref.pack(pucch_f3_with_fh_present, 1));
HANDLE_CODE(bref.pack(pucch_f4_with_fh_present, 1));
HANDLE_CODE(bref.pack(pucch_f0_minus2_without_fh_present, 1));
HANDLE_CODE(bref.pack(pucch_f1_minus3_minus4_without_fh_present, 1));
HANDLE_CODE(bref.pack(mux_sr_harq_ack_csi_pucch_multi_per_slot_present, 1));
HANDLE_CODE(bref.pack(uci_code_block_segmentation_present, 1));
HANDLE_CODE(bref.pack(one_pucch_long_and_short_format_present, 1));
HANDLE_CODE(bref.pack(two_pucch_any_others_in_slot_present, 1));
HANDLE_CODE(bref.pack(intra_slot_freq_hop_pusch_present, 1));
HANDLE_CODE(bref.pack(pusch_lbrm_present, 1));
HANDLE_CODE(bref.pack(pdcch_blind_detection_ca_present, 1));
HANDLE_CODE(bref.pack(tpc_pusch_rnti_present, 1));
HANDLE_CODE(bref.pack(tpc_pucch_rnti_present, 1));
HANDLE_CODE(bref.pack(tpc_srs_rnti_present, 1));
HANDLE_CODE(bref.pack(absolute_tpc_cmd_present, 1));
HANDLE_CODE(bref.pack(two_different_tpc_loop_pusch_present, 1));
HANDLE_CODE(bref.pack(two_different_tpc_loop_pucch_present, 1));
HANDLE_CODE(bref.pack(pusch_half_pi_bpsk_present, 1));
HANDLE_CODE(bref.pack(pucch_f3_minus4_half_pi_bpsk_present, 1));
HANDLE_CODE(bref.pack(almost_contiguous_cp_ofdm_ul_present, 1));
HANDLE_CODE(bref.pack(sp_csi_rs_present, 1));
HANDLE_CODE(bref.pack(sp_csi_im_present, 1));
HANDLE_CODE(bref.pack(tdd_multi_dl_ul_switch_per_slot_present, 1));
HANDLE_CODE(bref.pack(multiple_coreset_present, 1));
if (dummy1_present) {
HANDLE_CODE(dummy1.pack(bref));
}
if (two_fl_dmrs_present) {
HANDLE_CODE(two_fl_dmrs.pack(bref));
}
if (dummy2_present) {
HANDLE_CODE(dummy2.pack(bref));
}
if (dummy3_present) {
HANDLE_CODE(dummy3.pack(bref));
}
if (supported_dmrs_type_dl_present) {
HANDLE_CODE(supported_dmrs_type_dl.pack(bref));
}
if (supported_dmrs_type_ul_present) {
HANDLE_CODE(supported_dmrs_type_ul.pack(bref));
}
if (one_ports_ptrs_present) {
HANDLE_CODE(one_ports_ptrs.pack(bref));
}
if (pdcch_blind_detection_ca_present) {
HANDLE_CODE(pack_integer(bref, pdcch_blind_detection_ca, (uint8_t)4u, (uint8_t)16u));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= csi_rs_im_reception_for_feedback.is_present();
group_flags[0] |= csi_rs_proc_framework_for_srs.is_present();
group_flags[0] |= csi_report_framework.is_present();
group_flags[0] |= mux_sr_harq_ack_csi_pucch_once_per_slot.is_present();
group_flags[0] |= mux_sr_harq_ack_pucch_present;
group_flags[0] |= mux_multiple_group_ctrl_ch_overlap_present;
group_flags[0] |= dl_sched_offset_pdsch_type_a_present;
group_flags[0] |= dl_sched_offset_pdsch_type_b_present;
group_flags[0] |= ul_sched_offset_present;
group_flags[0] |= dl_minus64_qam_mcs_table_alt_present;
group_flags[0] |= ul_minus64_qam_mcs_table_alt_present;
group_flags[0] |= cqi_table_alt_present;
group_flags[0] |= one_fl_dmrs_two_add_dmrs_ul_present;
group_flags[0] |= two_fl_dmrs_two_add_dmrs_ul_present;
group_flags[0] |= one_fl_dmrs_three_add_dmrs_ul_present;
group_flags[1] |= pdcch_blind_detection_nrdc.is_present();
group_flags[1] |= mux_harq_ack_pusch_diff_symbol_present;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(csi_rs_im_reception_for_feedback.is_present(), 1));
HANDLE_CODE(bref.pack(csi_rs_proc_framework_for_srs.is_present(), 1));
HANDLE_CODE(bref.pack(csi_report_framework.is_present(), 1));
HANDLE_CODE(bref.pack(mux_sr_harq_ack_csi_pucch_once_per_slot.is_present(), 1));
HANDLE_CODE(bref.pack(mux_sr_harq_ack_pucch_present, 1));
HANDLE_CODE(bref.pack(mux_multiple_group_ctrl_ch_overlap_present, 1));
HANDLE_CODE(bref.pack(dl_sched_offset_pdsch_type_a_present, 1));
HANDLE_CODE(bref.pack(dl_sched_offset_pdsch_type_b_present, 1));
HANDLE_CODE(bref.pack(ul_sched_offset_present, 1));
HANDLE_CODE(bref.pack(dl_minus64_qam_mcs_table_alt_present, 1));
HANDLE_CODE(bref.pack(ul_minus64_qam_mcs_table_alt_present, 1));
HANDLE_CODE(bref.pack(cqi_table_alt_present, 1));
HANDLE_CODE(bref.pack(one_fl_dmrs_two_add_dmrs_ul_present, 1));
HANDLE_CODE(bref.pack(two_fl_dmrs_two_add_dmrs_ul_present, 1));
HANDLE_CODE(bref.pack(one_fl_dmrs_three_add_dmrs_ul_present, 1));
if (csi_rs_im_reception_for_feedback.is_present()) {
HANDLE_CODE(csi_rs_im_reception_for_feedback->pack(bref));
}
if (csi_rs_proc_framework_for_srs.is_present()) {
HANDLE_CODE(csi_rs_proc_framework_for_srs->pack(bref));
}
if (csi_report_framework.is_present()) {
HANDLE_CODE(csi_report_framework->pack(bref));
}
if (mux_sr_harq_ack_csi_pucch_once_per_slot.is_present()) {
HANDLE_CODE(bref.pack(mux_sr_harq_ack_csi_pucch_once_per_slot->same_symbol_present, 1));
HANDLE_CODE(bref.pack(mux_sr_harq_ack_csi_pucch_once_per_slot->diff_symbol_present, 1));
}
}
if (group_flags[1]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(pdcch_blind_detection_nrdc.is_present(), 1));
HANDLE_CODE(bref.pack(mux_harq_ack_pusch_diff_symbol_present, 1));
if (pdcch_blind_detection_nrdc.is_present()) {
HANDLE_CODE(
pack_integer(bref, pdcch_blind_detection_nrdc->pdcch_blind_detection_mcg_ue, (uint8_t)1u, (uint8_t)15u));
HANDLE_CODE(
pack_integer(bref, pdcch_blind_detection_nrdc->pdcch_blind_detection_scg_ue, (uint8_t)1u, (uint8_t)15u));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE phy_params_frx_diff_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(dynamic_sfi_present, 1));
HANDLE_CODE(bref.unpack(dummy1_present, 1));
HANDLE_CODE(bref.unpack(two_fl_dmrs_present, 1));
HANDLE_CODE(bref.unpack(dummy2_present, 1));
HANDLE_CODE(bref.unpack(dummy3_present, 1));
HANDLE_CODE(bref.unpack(supported_dmrs_type_dl_present, 1));
HANDLE_CODE(bref.unpack(supported_dmrs_type_ul_present, 1));
HANDLE_CODE(bref.unpack(semi_open_loop_csi_present, 1));
HANDLE_CODE(bref.unpack(csi_report_without_pmi_present, 1));
HANDLE_CODE(bref.unpack(csi_report_without_cqi_present, 1));
HANDLE_CODE(bref.unpack(one_ports_ptrs_present, 1));
HANDLE_CODE(bref.unpack(two_pucch_f0_minus2_consec_symbols_present, 1));
HANDLE_CODE(bref.unpack(pucch_f2_with_fh_present, 1));
HANDLE_CODE(bref.unpack(pucch_f3_with_fh_present, 1));
HANDLE_CODE(bref.unpack(pucch_f4_with_fh_present, 1));
HANDLE_CODE(bref.unpack(pucch_f0_minus2_without_fh_present, 1));
HANDLE_CODE(bref.unpack(pucch_f1_minus3_minus4_without_fh_present, 1));
HANDLE_CODE(bref.unpack(mux_sr_harq_ack_csi_pucch_multi_per_slot_present, 1));
HANDLE_CODE(bref.unpack(uci_code_block_segmentation_present, 1));
HANDLE_CODE(bref.unpack(one_pucch_long_and_short_format_present, 1));
HANDLE_CODE(bref.unpack(two_pucch_any_others_in_slot_present, 1));
HANDLE_CODE(bref.unpack(intra_slot_freq_hop_pusch_present, 1));
HANDLE_CODE(bref.unpack(pusch_lbrm_present, 1));
HANDLE_CODE(bref.unpack(pdcch_blind_detection_ca_present, 1));
HANDLE_CODE(bref.unpack(tpc_pusch_rnti_present, 1));
HANDLE_CODE(bref.unpack(tpc_pucch_rnti_present, 1));
HANDLE_CODE(bref.unpack(tpc_srs_rnti_present, 1));
HANDLE_CODE(bref.unpack(absolute_tpc_cmd_present, 1));
HANDLE_CODE(bref.unpack(two_different_tpc_loop_pusch_present, 1));
HANDLE_CODE(bref.unpack(two_different_tpc_loop_pucch_present, 1));
HANDLE_CODE(bref.unpack(pusch_half_pi_bpsk_present, 1));
HANDLE_CODE(bref.unpack(pucch_f3_minus4_half_pi_bpsk_present, 1));
HANDLE_CODE(bref.unpack(almost_contiguous_cp_ofdm_ul_present, 1));
HANDLE_CODE(bref.unpack(sp_csi_rs_present, 1));
HANDLE_CODE(bref.unpack(sp_csi_im_present, 1));
HANDLE_CODE(bref.unpack(tdd_multi_dl_ul_switch_per_slot_present, 1));
HANDLE_CODE(bref.unpack(multiple_coreset_present, 1));
if (dummy1_present) {
HANDLE_CODE(dummy1.unpack(bref));
}
if (two_fl_dmrs_present) {
HANDLE_CODE(two_fl_dmrs.unpack(bref));
}
if (dummy2_present) {
HANDLE_CODE(dummy2.unpack(bref));
}
if (dummy3_present) {
HANDLE_CODE(dummy3.unpack(bref));
}
if (supported_dmrs_type_dl_present) {
HANDLE_CODE(supported_dmrs_type_dl.unpack(bref));
}
if (supported_dmrs_type_ul_present) {
HANDLE_CODE(supported_dmrs_type_ul.unpack(bref));
}
if (one_ports_ptrs_present) {
HANDLE_CODE(one_ports_ptrs.unpack(bref));
}
if (pdcch_blind_detection_ca_present) {
HANDLE_CODE(unpack_integer(pdcch_blind_detection_ca, bref, (uint8_t)4u, (uint8_t)16u));
}
if (ext) {
ext_groups_unpacker_guard group_flags(2);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool csi_rs_im_reception_for_feedback_present;
HANDLE_CODE(bref.unpack(csi_rs_im_reception_for_feedback_present, 1));
csi_rs_im_reception_for_feedback.set_present(csi_rs_im_reception_for_feedback_present);
bool csi_rs_proc_framework_for_srs_present;
HANDLE_CODE(bref.unpack(csi_rs_proc_framework_for_srs_present, 1));
csi_rs_proc_framework_for_srs.set_present(csi_rs_proc_framework_for_srs_present);
bool csi_report_framework_present;
HANDLE_CODE(bref.unpack(csi_report_framework_present, 1));
csi_report_framework.set_present(csi_report_framework_present);
bool mux_sr_harq_ack_csi_pucch_once_per_slot_present;
HANDLE_CODE(bref.unpack(mux_sr_harq_ack_csi_pucch_once_per_slot_present, 1));
mux_sr_harq_ack_csi_pucch_once_per_slot.set_present(mux_sr_harq_ack_csi_pucch_once_per_slot_present);
HANDLE_CODE(bref.unpack(mux_sr_harq_ack_pucch_present, 1));
HANDLE_CODE(bref.unpack(mux_multiple_group_ctrl_ch_overlap_present, 1));
HANDLE_CODE(bref.unpack(dl_sched_offset_pdsch_type_a_present, 1));
HANDLE_CODE(bref.unpack(dl_sched_offset_pdsch_type_b_present, 1));
HANDLE_CODE(bref.unpack(ul_sched_offset_present, 1));
HANDLE_CODE(bref.unpack(dl_minus64_qam_mcs_table_alt_present, 1));
HANDLE_CODE(bref.unpack(ul_minus64_qam_mcs_table_alt_present, 1));
HANDLE_CODE(bref.unpack(cqi_table_alt_present, 1));
HANDLE_CODE(bref.unpack(one_fl_dmrs_two_add_dmrs_ul_present, 1));
HANDLE_CODE(bref.unpack(two_fl_dmrs_two_add_dmrs_ul_present, 1));
HANDLE_CODE(bref.unpack(one_fl_dmrs_three_add_dmrs_ul_present, 1));
if (csi_rs_im_reception_for_feedback.is_present()) {
HANDLE_CODE(csi_rs_im_reception_for_feedback->unpack(bref));
}
if (csi_rs_proc_framework_for_srs.is_present()) {
HANDLE_CODE(csi_rs_proc_framework_for_srs->unpack(bref));
}
if (csi_report_framework.is_present()) {
HANDLE_CODE(csi_report_framework->unpack(bref));
}
if (mux_sr_harq_ack_csi_pucch_once_per_slot.is_present()) {
HANDLE_CODE(bref.unpack(mux_sr_harq_ack_csi_pucch_once_per_slot->same_symbol_present, 1));
HANDLE_CODE(bref.unpack(mux_sr_harq_ack_csi_pucch_once_per_slot->diff_symbol_present, 1));
}
}
if (group_flags[1]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool pdcch_blind_detection_nrdc_present;
HANDLE_CODE(bref.unpack(pdcch_blind_detection_nrdc_present, 1));
pdcch_blind_detection_nrdc.set_present(pdcch_blind_detection_nrdc_present);
HANDLE_CODE(bref.unpack(mux_harq_ack_pusch_diff_symbol_present, 1));
if (pdcch_blind_detection_nrdc.is_present()) {
HANDLE_CODE(
unpack_integer(pdcch_blind_detection_nrdc->pdcch_blind_detection_mcg_ue, bref, (uint8_t)1u, (uint8_t)15u));
HANDLE_CODE(
unpack_integer(pdcch_blind_detection_nrdc->pdcch_blind_detection_scg_ue, bref, (uint8_t)1u, (uint8_t)15u));
}
}
}
return SRSASN_SUCCESS;
}
void phy_params_frx_diff_s::to_json(json_writer& j) const
{
j.start_obj();
if (dynamic_sfi_present) {
j.write_str("dynamicSFI", "supported");
}
if (dummy1_present) {
j.write_str("dummy1", dummy1.to_string());
}
if (two_fl_dmrs_present) {
j.write_str("twoFL-DMRS", two_fl_dmrs.to_string());
}
if (dummy2_present) {
j.write_str("dummy2", dummy2.to_string());
}
if (dummy3_present) {
j.write_str("dummy3", dummy3.to_string());
}
if (supported_dmrs_type_dl_present) {
j.write_str("supportedDMRS-TypeDL", supported_dmrs_type_dl.to_string());
}
if (supported_dmrs_type_ul_present) {
j.write_str("supportedDMRS-TypeUL", supported_dmrs_type_ul.to_string());
}
if (semi_open_loop_csi_present) {
j.write_str("semiOpenLoopCSI", "supported");
}
if (csi_report_without_pmi_present) {
j.write_str("csi-ReportWithoutPMI", "supported");
}
if (csi_report_without_cqi_present) {
j.write_str("csi-ReportWithoutCQI", "supported");
}
if (one_ports_ptrs_present) {
j.write_str("onePortsPTRS", one_ports_ptrs.to_string());
}
if (two_pucch_f0_minus2_consec_symbols_present) {
j.write_str("twoPUCCH-F0-2-ConsecSymbols", "supported");
}
if (pucch_f2_with_fh_present) {
j.write_str("pucch-F2-WithFH", "supported");
}
if (pucch_f3_with_fh_present) {
j.write_str("pucch-F3-WithFH", "supported");
}
if (pucch_f4_with_fh_present) {
j.write_str("pucch-F4-WithFH", "supported");
}
if (pucch_f0_minus2_without_fh_present) {
j.write_str("pucch-F0-2WithoutFH", "notSupported");
}
if (pucch_f1_minus3_minus4_without_fh_present) {
j.write_str("pucch-F1-3-4WithoutFH", "notSupported");
}
if (mux_sr_harq_ack_csi_pucch_multi_per_slot_present) {
j.write_str("mux-SR-HARQ-ACK-CSI-PUCCH-MultiPerSlot", "supported");
}
if (uci_code_block_segmentation_present) {
j.write_str("uci-CodeBlockSegmentation", "supported");
}
if (one_pucch_long_and_short_format_present) {
j.write_str("onePUCCH-LongAndShortFormat", "supported");
}
if (two_pucch_any_others_in_slot_present) {
j.write_str("twoPUCCH-AnyOthersInSlot", "supported");
}
if (intra_slot_freq_hop_pusch_present) {
j.write_str("intraSlotFreqHopping-PUSCH", "supported");
}
if (pusch_lbrm_present) {
j.write_str("pusch-LBRM", "supported");
}
if (pdcch_blind_detection_ca_present) {
j.write_int("pdcch-BlindDetectionCA", pdcch_blind_detection_ca);
}
if (tpc_pusch_rnti_present) {
j.write_str("tpc-PUSCH-RNTI", "supported");
}
if (tpc_pucch_rnti_present) {
j.write_str("tpc-PUCCH-RNTI", "supported");
}
if (tpc_srs_rnti_present) {
j.write_str("tpc-SRS-RNTI", "supported");
}
if (absolute_tpc_cmd_present) {
j.write_str("absoluteTPC-Command", "supported");
}
if (two_different_tpc_loop_pusch_present) {
j.write_str("twoDifferentTPC-Loop-PUSCH", "supported");
}
if (two_different_tpc_loop_pucch_present) {
j.write_str("twoDifferentTPC-Loop-PUCCH", "supported");
}
if (pusch_half_pi_bpsk_present) {
j.write_str("pusch-HalfPi-BPSK", "supported");
}
if (pucch_f3_minus4_half_pi_bpsk_present) {
j.write_str("pucch-F3-4-HalfPi-BPSK", "supported");
}
if (almost_contiguous_cp_ofdm_ul_present) {
j.write_str("almostContiguousCP-OFDM-UL", "supported");
}
if (sp_csi_rs_present) {
j.write_str("sp-CSI-RS", "supported");
}
if (sp_csi_im_present) {
j.write_str("sp-CSI-IM", "supported");
}
if (tdd_multi_dl_ul_switch_per_slot_present) {
j.write_str("tdd-MultiDL-UL-SwitchPerSlot", "supported");
}
if (multiple_coreset_present) {
j.write_str("multipleCORESET", "supported");
}
if (ext) {
if (csi_rs_im_reception_for_feedback.is_present()) {
j.write_fieldname("csi-RS-IM-ReceptionForFeedback");
csi_rs_im_reception_for_feedback->to_json(j);
}
if (csi_rs_proc_framework_for_srs.is_present()) {
j.write_fieldname("csi-RS-ProcFrameworkForSRS");
csi_rs_proc_framework_for_srs->to_json(j);
}
if (csi_report_framework.is_present()) {
j.write_fieldname("csi-ReportFramework");
csi_report_framework->to_json(j);
}
if (mux_sr_harq_ack_csi_pucch_once_per_slot.is_present()) {
j.write_fieldname("mux-SR-HARQ-ACK-CSI-PUCCH-OncePerSlot");
j.start_obj();
if (mux_sr_harq_ack_csi_pucch_once_per_slot->same_symbol_present) {
j.write_str("sameSymbol", "supported");
}
if (mux_sr_harq_ack_csi_pucch_once_per_slot->diff_symbol_present) {
j.write_str("diffSymbol", "supported");
}
j.end_obj();
}
if (mux_sr_harq_ack_pucch_present) {
j.write_str("mux-SR-HARQ-ACK-PUCCH", "supported");
}
if (mux_multiple_group_ctrl_ch_overlap_present) {
j.write_str("mux-MultipleGroupCtrlCH-Overlap", "supported");
}
if (dl_sched_offset_pdsch_type_a_present) {
j.write_str("dl-SchedulingOffset-PDSCH-TypeA", "supported");
}
if (dl_sched_offset_pdsch_type_b_present) {
j.write_str("dl-SchedulingOffset-PDSCH-TypeB", "supported");
}
if (ul_sched_offset_present) {
j.write_str("ul-SchedulingOffset", "supported");
}
if (dl_minus64_qam_mcs_table_alt_present) {
j.write_str("dl-64QAM-MCS-TableAlt", "supported");
}
if (ul_minus64_qam_mcs_table_alt_present) {
j.write_str("ul-64QAM-MCS-TableAlt", "supported");
}
if (cqi_table_alt_present) {
j.write_str("cqi-TableAlt", "supported");
}
if (one_fl_dmrs_two_add_dmrs_ul_present) {
j.write_str("oneFL-DMRS-TwoAdditionalDMRS-UL", "supported");
}
if (two_fl_dmrs_two_add_dmrs_ul_present) {
j.write_str("twoFL-DMRS-TwoAdditionalDMRS-UL", "supported");
}
if (one_fl_dmrs_three_add_dmrs_ul_present) {
j.write_str("oneFL-DMRS-ThreeAdditionalDMRS-UL", "supported");
}
if (pdcch_blind_detection_nrdc.is_present()) {
j.write_fieldname("pdcch-BlindDetectionNRDC");
j.start_obj();
j.write_int("pdcch-BlindDetectionMCG-UE", pdcch_blind_detection_nrdc->pdcch_blind_detection_mcg_ue);
j.write_int("pdcch-BlindDetectionSCG-UE", pdcch_blind_detection_nrdc->pdcch_blind_detection_scg_ue);
j.end_obj();
}
if (mux_harq_ack_pusch_diff_symbol_present) {
j.write_str("mux-HARQ-ACK-PUSCH-DiffSymbol", "supported");
}
}
j.end_obj();
}
const char* phy_params_frx_diff_s::supported_dmrs_type_dl_opts::to_string() const
{
static const char* options[] = {"type1", "type1And2"};
return convert_enum_idx(options, 2, value, "phy_params_frx_diff_s::supported_dmrs_type_dl_e_");
}
const char* phy_params_frx_diff_s::supported_dmrs_type_ul_opts::to_string() const
{
static const char* options[] = {"type1", "type1And2"};
return convert_enum_idx(options, 2, value, "phy_params_frx_diff_s::supported_dmrs_type_ul_e_");
}
// Phy-ParametersXDD-Diff ::= SEQUENCE
SRSASN_CODE phy_params_xdd_diff_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(dynamic_sfi_present, 1));
HANDLE_CODE(bref.pack(two_pucch_f0_minus2_consec_symbols_present, 1));
HANDLE_CODE(bref.pack(two_different_tpc_loop_pusch_present, 1));
HANDLE_CODE(bref.pack(two_different_tpc_loop_pucch_present, 1));
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= dl_sched_offset_pdsch_type_a_present;
group_flags[0] |= dl_sched_offset_pdsch_type_b_present;
group_flags[0] |= ul_sched_offset_present;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(dl_sched_offset_pdsch_type_a_present, 1));
HANDLE_CODE(bref.pack(dl_sched_offset_pdsch_type_b_present, 1));
HANDLE_CODE(bref.pack(ul_sched_offset_present, 1));
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE phy_params_xdd_diff_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(dynamic_sfi_present, 1));
HANDLE_CODE(bref.unpack(two_pucch_f0_minus2_consec_symbols_present, 1));
HANDLE_CODE(bref.unpack(two_different_tpc_loop_pusch_present, 1));
HANDLE_CODE(bref.unpack(two_different_tpc_loop_pucch_present, 1));
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(dl_sched_offset_pdsch_type_a_present, 1));
HANDLE_CODE(bref.unpack(dl_sched_offset_pdsch_type_b_present, 1));
HANDLE_CODE(bref.unpack(ul_sched_offset_present, 1));
}
}
return SRSASN_SUCCESS;
}
void phy_params_xdd_diff_s::to_json(json_writer& j) const
{
j.start_obj();
if (dynamic_sfi_present) {
j.write_str("dynamicSFI", "supported");
}
if (two_pucch_f0_minus2_consec_symbols_present) {
j.write_str("twoPUCCH-F0-2-ConsecSymbols", "supported");
}
if (two_different_tpc_loop_pusch_present) {
j.write_str("twoDifferentTPC-Loop-PUSCH", "supported");
}
if (two_different_tpc_loop_pucch_present) {
j.write_str("twoDifferentTPC-Loop-PUCCH", "supported");
}
if (ext) {
if (dl_sched_offset_pdsch_type_a_present) {
j.write_str("dl-SchedulingOffset-PDSCH-TypeA", "supported");
}
if (dl_sched_offset_pdsch_type_b_present) {
j.write_str("dl-SchedulingOffset-PDSCH-TypeB", "supported");
}
if (ul_sched_offset_present) {
j.write_str("ul-SchedulingOffset", "supported");
}
}
j.end_obj();
}
// Phy-Parameters ::= SEQUENCE
SRSASN_CODE phy_params_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(phy_params_common_present, 1));
HANDLE_CODE(bref.pack(phy_params_xdd_diff_present, 1));
HANDLE_CODE(bref.pack(phy_params_frx_diff_present, 1));
HANDLE_CODE(bref.pack(phy_params_fr1_present, 1));
HANDLE_CODE(bref.pack(phy_params_fr2_present, 1));
if (phy_params_common_present) {
HANDLE_CODE(phy_params_common.pack(bref));
}
if (phy_params_xdd_diff_present) {
HANDLE_CODE(phy_params_xdd_diff.pack(bref));
}
if (phy_params_frx_diff_present) {
HANDLE_CODE(phy_params_frx_diff.pack(bref));
}
if (phy_params_fr1_present) {
HANDLE_CODE(phy_params_fr1.pack(bref));
}
if (phy_params_fr2_present) {
HANDLE_CODE(phy_params_fr2.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE phy_params_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(phy_params_common_present, 1));
HANDLE_CODE(bref.unpack(phy_params_xdd_diff_present, 1));
HANDLE_CODE(bref.unpack(phy_params_frx_diff_present, 1));
HANDLE_CODE(bref.unpack(phy_params_fr1_present, 1));
HANDLE_CODE(bref.unpack(phy_params_fr2_present, 1));
if (phy_params_common_present) {
HANDLE_CODE(phy_params_common.unpack(bref));
}
if (phy_params_xdd_diff_present) {
HANDLE_CODE(phy_params_xdd_diff.unpack(bref));
}
if (phy_params_frx_diff_present) {
HANDLE_CODE(phy_params_frx_diff.unpack(bref));
}
if (phy_params_fr1_present) {
HANDLE_CODE(phy_params_fr1.unpack(bref));
}
if (phy_params_fr2_present) {
HANDLE_CODE(phy_params_fr2.unpack(bref));
}
return SRSASN_SUCCESS;
}
void phy_params_s::to_json(json_writer& j) const
{
j.start_obj();
if (phy_params_common_present) {
j.write_fieldname("phy-ParametersCommon");
phy_params_common.to_json(j);
}
if (phy_params_xdd_diff_present) {
j.write_fieldname("phy-ParametersXDD-Diff");
phy_params_xdd_diff.to_json(j);
}
if (phy_params_frx_diff_present) {
j.write_fieldname("phy-ParametersFRX-Diff");
phy_params_frx_diff.to_json(j);
}
if (phy_params_fr1_present) {
j.write_fieldname("phy-ParametersFR1");
phy_params_fr1.to_json(j);
}
if (phy_params_fr2_present) {
j.write_fieldname("phy-ParametersFR2");
phy_params_fr2.to_json(j);
}
j.end_obj();
}
// NAICS-Capability-Entry ::= SEQUENCE
SRSASN_CODE naics_cap_entry_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(pack_integer(bref, nof_naics_capable_cc, (uint8_t)1u, (uint8_t)5u));
HANDLE_CODE(nof_aggregated_prb.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE naics_cap_entry_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(unpack_integer(nof_naics_capable_cc, bref, (uint8_t)1u, (uint8_t)5u));
HANDLE_CODE(nof_aggregated_prb.unpack(bref));
return SRSASN_SUCCESS;
}
void naics_cap_entry_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("numberOfNAICS-CapableCC", nof_naics_capable_cc);
j.write_str("numberOfAggregatedPRB", nof_aggregated_prb.to_string());
j.end_obj();
}
const char* naics_cap_entry_s::nof_aggregated_prb_opts::to_string() const
{
static const char* options[] = {"n50",
"n75",
"n100",
"n125",
"n150",
"n175",
"n200",
"n225",
"n250",
"n275",
"n300",
"n350",
"n400",
"n450",
"n500",
"spare"};
return convert_enum_idx(options, 16, value, "naics_cap_entry_s::nof_aggregated_prb_e_");
}
uint16_t naics_cap_entry_s::nof_aggregated_prb_opts::to_number() const
{
static const uint16_t options[] = {50, 75, 100, 125, 150, 175, 200, 225, 250, 275, 300, 350, 400, 450, 500};
return map_enum_number(options, 15, value, "naics_cap_entry_s::nof_aggregated_prb_e_");
}
// Phy-ParametersMRDC ::= SEQUENCE
SRSASN_CODE phy_params_mrdc_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(naics_cap_list_present, 1));
if (naics_cap_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, naics_cap_list, 1, 8));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= sp_cell_placement.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(sp_cell_placement.is_present(), 1));
if (sp_cell_placement.is_present()) {
HANDLE_CODE(sp_cell_placement->pack(bref));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE phy_params_mrdc_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(naics_cap_list_present, 1));
if (naics_cap_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(naics_cap_list, bref, 1, 8));
}
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool sp_cell_placement_present;
HANDLE_CODE(bref.unpack(sp_cell_placement_present, 1));
sp_cell_placement.set_present(sp_cell_placement_present);
if (sp_cell_placement.is_present()) {
HANDLE_CODE(sp_cell_placement->unpack(bref));
}
}
}
return SRSASN_SUCCESS;
}
void phy_params_mrdc_s::to_json(json_writer& j) const
{
j.start_obj();
if (naics_cap_list_present) {
j.start_array("naics-Capability-List");
for (const auto& e1 : naics_cap_list) {
e1.to_json(j);
}
j.end_array();
}
if (ext) {
if (sp_cell_placement.is_present()) {
j.write_fieldname("spCellPlacement");
sp_cell_placement->to_json(j);
}
}
j.end_obj();
}
// RF-Parameters ::= SEQUENCE
SRSASN_CODE rf_params_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(supported_band_combination_list_present, 1));
HANDLE_CODE(bref.pack(applied_freq_band_list_filt_present, 1));
HANDLE_CODE(pack_dyn_seq_of(bref, supported_band_list_nr, 1, 1024));
if (supported_band_combination_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, supported_band_combination_list, 1, 65536));
}
if (applied_freq_band_list_filt_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, applied_freq_band_list_filt, 1, 1280));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= supported_band_combination_list_v1540.is_present();
group_flags[0] |= srs_switching_time_requested_present;
group_flags[1] |= supported_band_combination_list_v1550.is_present();
group_flags[2] |= supported_band_combination_list_v1560.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(supported_band_combination_list_v1540.is_present(), 1));
HANDLE_CODE(bref.pack(srs_switching_time_requested_present, 1));
if (supported_band_combination_list_v1540.is_present()) {
HANDLE_CODE(pack_dyn_seq_of(bref, *supported_band_combination_list_v1540, 1, 65536));
}
}
if (group_flags[1]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(supported_band_combination_list_v1550.is_present(), 1));
if (supported_band_combination_list_v1550.is_present()) {
HANDLE_CODE(pack_dyn_seq_of(bref, *supported_band_combination_list_v1550, 1, 65536));
}
}
if (group_flags[2]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(supported_band_combination_list_v1560.is_present(), 1));
if (supported_band_combination_list_v1560.is_present()) {
HANDLE_CODE(pack_dyn_seq_of(bref, *supported_band_combination_list_v1560, 1, 65536));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rf_params_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(supported_band_combination_list_present, 1));
HANDLE_CODE(bref.unpack(applied_freq_band_list_filt_present, 1));
HANDLE_CODE(unpack_dyn_seq_of(supported_band_list_nr, bref, 1, 1024));
if (supported_band_combination_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(supported_band_combination_list, bref, 1, 65536));
}
if (applied_freq_band_list_filt_present) {
HANDLE_CODE(unpack_dyn_seq_of(applied_freq_band_list_filt, bref, 1, 1280));
}
if (ext) {
ext_groups_unpacker_guard group_flags(3);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool supported_band_combination_list_v1540_present;
HANDLE_CODE(bref.unpack(supported_band_combination_list_v1540_present, 1));
supported_band_combination_list_v1540.set_present(supported_band_combination_list_v1540_present);
HANDLE_CODE(bref.unpack(srs_switching_time_requested_present, 1));
if (supported_band_combination_list_v1540.is_present()) {
HANDLE_CODE(unpack_dyn_seq_of(*supported_band_combination_list_v1540, bref, 1, 65536));
}
}
if (group_flags[1]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool supported_band_combination_list_v1550_present;
HANDLE_CODE(bref.unpack(supported_band_combination_list_v1550_present, 1));
supported_band_combination_list_v1550.set_present(supported_band_combination_list_v1550_present);
if (supported_band_combination_list_v1550.is_present()) {
HANDLE_CODE(unpack_dyn_seq_of(*supported_band_combination_list_v1550, bref, 1, 65536));
}
}
if (group_flags[2]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool supported_band_combination_list_v1560_present;
HANDLE_CODE(bref.unpack(supported_band_combination_list_v1560_present, 1));
supported_band_combination_list_v1560.set_present(supported_band_combination_list_v1560_present);
if (supported_band_combination_list_v1560.is_present()) {
HANDLE_CODE(unpack_dyn_seq_of(*supported_band_combination_list_v1560, bref, 1, 65536));
}
}
}
return SRSASN_SUCCESS;
}
void rf_params_s::to_json(json_writer& j) const
{
j.start_obj();
j.start_array("supportedBandListNR");
for (const auto& e1 : supported_band_list_nr) {
e1.to_json(j);
}
j.end_array();
if (supported_band_combination_list_present) {
j.start_array("supportedBandCombinationList");
for (const auto& e1 : supported_band_combination_list) {
e1.to_json(j);
}
j.end_array();
}
if (applied_freq_band_list_filt_present) {
j.start_array("appliedFreqBandListFilter");
for (const auto& e1 : applied_freq_band_list_filt) {
e1.to_json(j);
}
j.end_array();
}
if (ext) {
if (supported_band_combination_list_v1540.is_present()) {
j.start_array("supportedBandCombinationList-v1540");
for (const auto& e1 : *supported_band_combination_list_v1540) {
e1.to_json(j);
}
j.end_array();
}
if (srs_switching_time_requested_present) {
j.write_str("srs-SwitchingTimeRequested", "true");
}
if (supported_band_combination_list_v1550.is_present()) {
j.start_array("supportedBandCombinationList-v1550");
for (const auto& e1 : *supported_band_combination_list_v1550) {
e1.to_json(j);
}
j.end_array();
}
if (supported_band_combination_list_v1560.is_present()) {
j.start_array("supportedBandCombinationList-v1560");
for (const auto& e1 : *supported_band_combination_list_v1560) {
e1.to_json(j);
}
j.end_array();
}
}
j.end_obj();
}
// RF-ParametersMRDC ::= SEQUENCE
SRSASN_CODE rf_params_mrdc_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(supported_band_combination_list_present, 1));
HANDLE_CODE(bref.pack(applied_freq_band_list_filt_present, 1));
if (supported_band_combination_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, supported_band_combination_list, 1, 65536));
}
if (applied_freq_band_list_filt_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, applied_freq_band_list_filt, 1, 1280));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= srs_switching_time_requested_present;
group_flags[0] |= supported_band_combination_list_v1540.is_present();
group_flags[1] |= supported_band_combination_list_v1550.is_present();
group_flags[2] |= supported_band_combination_list_v1560.is_present();
group_flags[2] |= supported_band_combination_list_nedc_only.is_present();
group_flags[3] |= supported_band_combination_list_v1570.is_present();
group_flags[4] |= supported_band_combination_list_v1580.is_present();
group_flags[5] |= supported_band_combination_list_v1590.is_present();
group_flags[6] |= supported_band_combination_list_nedc_only_v15a0.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(srs_switching_time_requested_present, 1));
HANDLE_CODE(bref.pack(supported_band_combination_list_v1540.is_present(), 1));
if (supported_band_combination_list_v1540.is_present()) {
HANDLE_CODE(pack_dyn_seq_of(bref, *supported_band_combination_list_v1540, 1, 65536));
}
}
if (group_flags[1]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(supported_band_combination_list_v1550.is_present(), 1));
if (supported_band_combination_list_v1550.is_present()) {
HANDLE_CODE(pack_dyn_seq_of(bref, *supported_band_combination_list_v1550, 1, 65536));
}
}
if (group_flags[2]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(supported_band_combination_list_v1560.is_present(), 1));
HANDLE_CODE(bref.pack(supported_band_combination_list_nedc_only.is_present(), 1));
if (supported_band_combination_list_v1560.is_present()) {
HANDLE_CODE(pack_dyn_seq_of(bref, *supported_band_combination_list_v1560, 1, 65536));
}
if (supported_band_combination_list_nedc_only.is_present()) {
HANDLE_CODE(pack_dyn_seq_of(bref, *supported_band_combination_list_nedc_only, 1, 65536));
}
}
if (group_flags[3]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(supported_band_combination_list_v1570.is_present(), 1));
if (supported_band_combination_list_v1570.is_present()) {
HANDLE_CODE(pack_dyn_seq_of(bref, *supported_band_combination_list_v1570, 1, 65536));
}
}
if (group_flags[4]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(supported_band_combination_list_v1580.is_present(), 1));
if (supported_band_combination_list_v1580.is_present()) {
HANDLE_CODE(pack_dyn_seq_of(bref, *supported_band_combination_list_v1580, 1, 65536));
}
}
if (group_flags[5]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(supported_band_combination_list_v1590.is_present(), 1));
if (supported_band_combination_list_v1590.is_present()) {
HANDLE_CODE(pack_dyn_seq_of(bref, *supported_band_combination_list_v1590, 1, 65536));
}
}
if (group_flags[6]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(supported_band_combination_list_nedc_only_v15a0.is_present(), 1));
if (supported_band_combination_list_nedc_only_v15a0.is_present()) {
HANDLE_CODE(bref.pack(
supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1540_present, 1));
HANDLE_CODE(bref.pack(
supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1560_present, 1));
HANDLE_CODE(bref.pack(
supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1570_present, 1));
HANDLE_CODE(bref.pack(
supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1580_present, 1));
HANDLE_CODE(bref.pack(
supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1590_present, 1));
if (supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1540_present) {
HANDLE_CODE(pack_dyn_seq_of(
bref, supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1540, 1, 65536));
}
if (supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1560_present) {
HANDLE_CODE(pack_dyn_seq_of(
bref, supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1560, 1, 65536));
}
if (supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1570_present) {
HANDLE_CODE(pack_dyn_seq_of(
bref, supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1570, 1, 65536));
}
if (supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1580_present) {
HANDLE_CODE(pack_dyn_seq_of(
bref, supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1580, 1, 65536));
}
if (supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1590_present) {
HANDLE_CODE(pack_dyn_seq_of(
bref, supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1590, 1, 65536));
}
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rf_params_mrdc_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(supported_band_combination_list_present, 1));
HANDLE_CODE(bref.unpack(applied_freq_band_list_filt_present, 1));
if (supported_band_combination_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(supported_band_combination_list, bref, 1, 65536));
}
if (applied_freq_band_list_filt_present) {
HANDLE_CODE(unpack_dyn_seq_of(applied_freq_band_list_filt, bref, 1, 1280));
}
if (ext) {
ext_groups_unpacker_guard group_flags(7);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(srs_switching_time_requested_present, 1));
bool supported_band_combination_list_v1540_present;
HANDLE_CODE(bref.unpack(supported_band_combination_list_v1540_present, 1));
supported_band_combination_list_v1540.set_present(supported_band_combination_list_v1540_present);
if (supported_band_combination_list_v1540.is_present()) {
HANDLE_CODE(unpack_dyn_seq_of(*supported_band_combination_list_v1540, bref, 1, 65536));
}
}
if (group_flags[1]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool supported_band_combination_list_v1550_present;
HANDLE_CODE(bref.unpack(supported_band_combination_list_v1550_present, 1));
supported_band_combination_list_v1550.set_present(supported_band_combination_list_v1550_present);
if (supported_band_combination_list_v1550.is_present()) {
HANDLE_CODE(unpack_dyn_seq_of(*supported_band_combination_list_v1550, bref, 1, 65536));
}
}
if (group_flags[2]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool supported_band_combination_list_v1560_present;
HANDLE_CODE(bref.unpack(supported_band_combination_list_v1560_present, 1));
supported_band_combination_list_v1560.set_present(supported_band_combination_list_v1560_present);
bool supported_band_combination_list_nedc_only_present;
HANDLE_CODE(bref.unpack(supported_band_combination_list_nedc_only_present, 1));
supported_band_combination_list_nedc_only.set_present(supported_band_combination_list_nedc_only_present);
if (supported_band_combination_list_v1560.is_present()) {
HANDLE_CODE(unpack_dyn_seq_of(*supported_band_combination_list_v1560, bref, 1, 65536));
}
if (supported_band_combination_list_nedc_only.is_present()) {
HANDLE_CODE(unpack_dyn_seq_of(*supported_band_combination_list_nedc_only, bref, 1, 65536));
}
}
if (group_flags[3]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool supported_band_combination_list_v1570_present;
HANDLE_CODE(bref.unpack(supported_band_combination_list_v1570_present, 1));
supported_band_combination_list_v1570.set_present(supported_band_combination_list_v1570_present);
if (supported_band_combination_list_v1570.is_present()) {
HANDLE_CODE(unpack_dyn_seq_of(*supported_band_combination_list_v1570, bref, 1, 65536));
}
}
if (group_flags[4]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool supported_band_combination_list_v1580_present;
HANDLE_CODE(bref.unpack(supported_band_combination_list_v1580_present, 1));
supported_band_combination_list_v1580.set_present(supported_band_combination_list_v1580_present);
if (supported_band_combination_list_v1580.is_present()) {
HANDLE_CODE(unpack_dyn_seq_of(*supported_band_combination_list_v1580, bref, 1, 65536));
}
}
if (group_flags[5]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool supported_band_combination_list_v1590_present;
HANDLE_CODE(bref.unpack(supported_band_combination_list_v1590_present, 1));
supported_band_combination_list_v1590.set_present(supported_band_combination_list_v1590_present);
if (supported_band_combination_list_v1590.is_present()) {
HANDLE_CODE(unpack_dyn_seq_of(*supported_band_combination_list_v1590, bref, 1, 65536));
}
}
if (group_flags[6]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool supported_band_combination_list_nedc_only_v15a0_present;
HANDLE_CODE(bref.unpack(supported_band_combination_list_nedc_only_v15a0_present, 1));
supported_band_combination_list_nedc_only_v15a0.set_present(
supported_band_combination_list_nedc_only_v15a0_present);
if (supported_band_combination_list_nedc_only_v15a0.is_present()) {
HANDLE_CODE(bref.unpack(
supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1540_present, 1));
HANDLE_CODE(bref.unpack(
supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1560_present, 1));
HANDLE_CODE(bref.unpack(
supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1570_present, 1));
HANDLE_CODE(bref.unpack(
supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1580_present, 1));
HANDLE_CODE(bref.unpack(
supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1590_present, 1));
if (supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1540_present) {
HANDLE_CODE(unpack_dyn_seq_of(
supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1540, bref, 1, 65536));
}
if (supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1560_present) {
HANDLE_CODE(unpack_dyn_seq_of(
supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1560, bref, 1, 65536));
}
if (supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1570_present) {
HANDLE_CODE(unpack_dyn_seq_of(
supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1570, bref, 1, 65536));
}
if (supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1580_present) {
HANDLE_CODE(unpack_dyn_seq_of(
supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1580, bref, 1, 65536));
}
if (supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1590_present) {
HANDLE_CODE(unpack_dyn_seq_of(
supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1590, bref, 1, 65536));
}
}
}
}
return SRSASN_SUCCESS;
}
void rf_params_mrdc_s::to_json(json_writer& j) const
{
j.start_obj();
if (supported_band_combination_list_present) {
j.start_array("supportedBandCombinationList");
for (const auto& e1 : supported_band_combination_list) {
e1.to_json(j);
}
j.end_array();
}
if (applied_freq_band_list_filt_present) {
j.start_array("appliedFreqBandListFilter");
for (const auto& e1 : applied_freq_band_list_filt) {
e1.to_json(j);
}
j.end_array();
}
if (ext) {
if (srs_switching_time_requested_present) {
j.write_str("srs-SwitchingTimeRequested", "true");
}
if (supported_band_combination_list_v1540.is_present()) {
j.start_array("supportedBandCombinationList-v1540");
for (const auto& e1 : *supported_band_combination_list_v1540) {
e1.to_json(j);
}
j.end_array();
}
if (supported_band_combination_list_v1550.is_present()) {
j.start_array("supportedBandCombinationList-v1550");
for (const auto& e1 : *supported_band_combination_list_v1550) {
e1.to_json(j);
}
j.end_array();
}
if (supported_band_combination_list_v1560.is_present()) {
j.start_array("supportedBandCombinationList-v1560");
for (const auto& e1 : *supported_band_combination_list_v1560) {
e1.to_json(j);
}
j.end_array();
}
if (supported_band_combination_list_nedc_only.is_present()) {
j.start_array("supportedBandCombinationListNEDC-Only");
for (const auto& e1 : *supported_band_combination_list_nedc_only) {
e1.to_json(j);
}
j.end_array();
}
if (supported_band_combination_list_v1570.is_present()) {
j.start_array("supportedBandCombinationList-v1570");
for (const auto& e1 : *supported_band_combination_list_v1570) {
e1.to_json(j);
}
j.end_array();
}
if (supported_band_combination_list_v1580.is_present()) {
j.start_array("supportedBandCombinationList-v1580");
for (const auto& e1 : *supported_band_combination_list_v1580) {
e1.to_json(j);
}
j.end_array();
}
if (supported_band_combination_list_v1590.is_present()) {
j.start_array("supportedBandCombinationList-v1590");
for (const auto& e1 : *supported_band_combination_list_v1590) {
e1.to_json(j);
}
j.end_array();
}
if (supported_band_combination_list_nedc_only_v15a0.is_present()) {
j.write_fieldname("supportedBandCombinationListNEDC-Only-v15a0");
j.start_obj();
if (supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1540_present) {
j.start_array("supportedBandCombinationList-v1540");
for (const auto& e1 : supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1540) {
e1.to_json(j);
}
j.end_array();
}
if (supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1560_present) {
j.start_array("supportedBandCombinationList-v1560");
for (const auto& e1 : supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1560) {
e1.to_json(j);
}
j.end_array();
}
if (supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1570_present) {
j.start_array("supportedBandCombinationList-v1570");
for (const auto& e1 : supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1570) {
e1.to_json(j);
}
j.end_array();
}
if (supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1580_present) {
j.start_array("supportedBandCombinationList-v1580");
for (const auto& e1 : supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1580) {
e1.to_json(j);
}
j.end_array();
}
if (supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1590_present) {
j.start_array("supportedBandCombinationList-v1590");
for (const auto& e1 : supported_band_combination_list_nedc_only_v15a0->supported_band_combination_list_v1590) {
e1.to_json(j);
}
j.end_array();
}
j.end_obj();
}
}
j.end_obj();
}
// UE-CapabilityRequestFilterNR-v1540 ::= SEQUENCE
SRSASN_CODE ue_cap_request_filt_nr_v1540_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(srs_switching_time_request_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_cap_request_filt_nr_v1540_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(srs_switching_time_request_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
return SRSASN_SUCCESS;
}
void ue_cap_request_filt_nr_v1540_s::to_json(json_writer& j) const
{
j.start_obj();
if (srs_switching_time_request_present) {
j.write_str("srs-SwitchingTimeRequest", "true");
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// UE-CapabilityRequestFilterNR ::= SEQUENCE
SRSASN_CODE ue_cap_request_filt_nr_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(freq_band_list_filt_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (freq_band_list_filt_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, freq_band_list_filt, 1, 1280));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_cap_request_filt_nr_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(freq_band_list_filt_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (freq_band_list_filt_present) {
HANDLE_CODE(unpack_dyn_seq_of(freq_band_list_filt, bref, 1, 1280));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ue_cap_request_filt_nr_s::to_json(json_writer& j) const
{
j.start_obj();
if (freq_band_list_filt_present) {
j.start_array("frequencyBandListFilter");
for (const auto& e1 : freq_band_list_filt) {
e1.to_json(j);
}
j.end_array();
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
// UE-MRDC-CapabilityAddXDD-Mode-v1560 ::= SEQUENCE
SRSASN_CODE ue_mrdc_cap_add_xdd_mode_v1560_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(meas_and_mob_params_mrdc_xdd_diff_v1560_present, 1));
if (meas_and_mob_params_mrdc_xdd_diff_v1560_present) {
HANDLE_CODE(meas_and_mob_params_mrdc_xdd_diff_v1560.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_mrdc_cap_add_xdd_mode_v1560_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(meas_and_mob_params_mrdc_xdd_diff_v1560_present, 1));
if (meas_and_mob_params_mrdc_xdd_diff_v1560_present) {
HANDLE_CODE(meas_and_mob_params_mrdc_xdd_diff_v1560.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ue_mrdc_cap_add_xdd_mode_v1560_s::to_json(json_writer& j) const
{
j.start_obj();
if (meas_and_mob_params_mrdc_xdd_diff_v1560_present) {
j.write_fieldname("measAndMobParametersMRDC-XDD-Diff-v1560");
meas_and_mob_params_mrdc_xdd_diff_v1560.to_json(j);
}
j.end_obj();
}
// PDCP-ParametersMRDC ::= SEQUENCE
SRSASN_CODE pdcp_params_mrdc_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(pdcp_dupl_split_srb_present, 1));
HANDLE_CODE(bref.pack(pdcp_dupl_split_drb_present, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE pdcp_params_mrdc_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(pdcp_dupl_split_srb_present, 1));
HANDLE_CODE(bref.unpack(pdcp_dupl_split_drb_present, 1));
return SRSASN_SUCCESS;
}
void pdcp_params_mrdc_s::to_json(json_writer& j) const
{
j.start_obj();
if (pdcp_dupl_split_srb_present) {
j.write_str("pdcp-DuplicationSplitSRB", "supported");
}
if (pdcp_dupl_split_drb_present) {
j.write_str("pdcp-DuplicationSplitDRB", "supported");
}
j.end_obj();
}
// UE-MRDC-Capability-v1560 ::= SEQUENCE
SRSASN_CODE ue_mrdc_cap_v1560_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(rx_filts_present, 1));
HANDLE_CODE(bref.pack(meas_and_mob_params_mrdc_v1560_present, 1));
HANDLE_CODE(bref.pack(fdd_add_ue_mrdc_cap_v1560_present, 1));
HANDLE_CODE(bref.pack(tdd_add_ue_mrdc_cap_v1560_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (rx_filts_present) {
HANDLE_CODE(rx_filts.pack(bref));
}
if (meas_and_mob_params_mrdc_v1560_present) {
HANDLE_CODE(meas_and_mob_params_mrdc_v1560.pack(bref));
}
if (fdd_add_ue_mrdc_cap_v1560_present) {
HANDLE_CODE(fdd_add_ue_mrdc_cap_v1560.pack(bref));
}
if (tdd_add_ue_mrdc_cap_v1560_present) {
HANDLE_CODE(tdd_add_ue_mrdc_cap_v1560.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_mrdc_cap_v1560_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(rx_filts_present, 1));
HANDLE_CODE(bref.unpack(meas_and_mob_params_mrdc_v1560_present, 1));
HANDLE_CODE(bref.unpack(fdd_add_ue_mrdc_cap_v1560_present, 1));
HANDLE_CODE(bref.unpack(tdd_add_ue_mrdc_cap_v1560_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (rx_filts_present) {
HANDLE_CODE(rx_filts.unpack(bref));
}
if (meas_and_mob_params_mrdc_v1560_present) {
HANDLE_CODE(meas_and_mob_params_mrdc_v1560.unpack(bref));
}
if (fdd_add_ue_mrdc_cap_v1560_present) {
HANDLE_CODE(fdd_add_ue_mrdc_cap_v1560.unpack(bref));
}
if (tdd_add_ue_mrdc_cap_v1560_present) {
HANDLE_CODE(tdd_add_ue_mrdc_cap_v1560.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ue_mrdc_cap_v1560_s::to_json(json_writer& j) const
{
j.start_obj();
if (rx_filts_present) {
j.write_str("receivedFilters", rx_filts.to_string());
}
if (meas_and_mob_params_mrdc_v1560_present) {
j.write_fieldname("measAndMobParametersMRDC-v1560");
meas_and_mob_params_mrdc_v1560.to_json(j);
}
if (fdd_add_ue_mrdc_cap_v1560_present) {
j.write_fieldname("fdd-Add-UE-MRDC-Capabilities-v1560");
fdd_add_ue_mrdc_cap_v1560.to_json(j);
}
if (tdd_add_ue_mrdc_cap_v1560_present) {
j.write_fieldname("tdd-Add-UE-MRDC-Capabilities-v1560");
tdd_add_ue_mrdc_cap_v1560.to_json(j);
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// UE-MRDC-Capability ::= SEQUENCE
SRSASN_CODE ue_mrdc_cap_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(meas_and_mob_params_mrdc_present, 1));
HANDLE_CODE(bref.pack(phy_params_mrdc_v1530_present, 1));
HANDLE_CODE(bref.pack(general_params_mrdc_present, 1));
HANDLE_CODE(bref.pack(fdd_add_ue_mrdc_cap_present, 1));
HANDLE_CODE(bref.pack(tdd_add_ue_mrdc_cap_present, 1));
HANDLE_CODE(bref.pack(fr1_add_ue_mrdc_cap_present, 1));
HANDLE_CODE(bref.pack(fr2_add_ue_mrdc_cap_present, 1));
HANDLE_CODE(bref.pack(feature_set_combinations_present, 1));
HANDLE_CODE(bref.pack(pdcp_params_mrdc_v1530_present, 1));
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (meas_and_mob_params_mrdc_present) {
HANDLE_CODE(meas_and_mob_params_mrdc.pack(bref));
}
if (phy_params_mrdc_v1530_present) {
HANDLE_CODE(phy_params_mrdc_v1530.pack(bref));
}
HANDLE_CODE(rf_params_mrdc.pack(bref));
if (general_params_mrdc_present) {
HANDLE_CODE(general_params_mrdc.pack(bref));
}
if (fdd_add_ue_mrdc_cap_present) {
HANDLE_CODE(fdd_add_ue_mrdc_cap.pack(bref));
}
if (tdd_add_ue_mrdc_cap_present) {
HANDLE_CODE(tdd_add_ue_mrdc_cap.pack(bref));
}
if (fr1_add_ue_mrdc_cap_present) {
HANDLE_CODE(fr1_add_ue_mrdc_cap.pack(bref));
}
if (fr2_add_ue_mrdc_cap_present) {
HANDLE_CODE(fr2_add_ue_mrdc_cap.pack(bref));
}
if (feature_set_combinations_present) {
HANDLE_CODE(pack_dyn_seq_of(bref,
feature_set_combinations,
1,
1024,
SeqOfPacker<SeqOfPacker<Packer> >(1, 32, SeqOfPacker<Packer>(1, 128, Packer()))));
}
if (pdcp_params_mrdc_v1530_present) {
HANDLE_CODE(pdcp_params_mrdc_v1530.pack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_mrdc_cap_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(meas_and_mob_params_mrdc_present, 1));
HANDLE_CODE(bref.unpack(phy_params_mrdc_v1530_present, 1));
HANDLE_CODE(bref.unpack(general_params_mrdc_present, 1));
HANDLE_CODE(bref.unpack(fdd_add_ue_mrdc_cap_present, 1));
HANDLE_CODE(bref.unpack(tdd_add_ue_mrdc_cap_present, 1));
HANDLE_CODE(bref.unpack(fr1_add_ue_mrdc_cap_present, 1));
HANDLE_CODE(bref.unpack(fr2_add_ue_mrdc_cap_present, 1));
HANDLE_CODE(bref.unpack(feature_set_combinations_present, 1));
HANDLE_CODE(bref.unpack(pdcp_params_mrdc_v1530_present, 1));
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (meas_and_mob_params_mrdc_present) {
HANDLE_CODE(meas_and_mob_params_mrdc.unpack(bref));
}
if (phy_params_mrdc_v1530_present) {
HANDLE_CODE(phy_params_mrdc_v1530.unpack(bref));
}
HANDLE_CODE(rf_params_mrdc.unpack(bref));
if (general_params_mrdc_present) {
HANDLE_CODE(general_params_mrdc.unpack(bref));
}
if (fdd_add_ue_mrdc_cap_present) {
HANDLE_CODE(fdd_add_ue_mrdc_cap.unpack(bref));
}
if (tdd_add_ue_mrdc_cap_present) {
HANDLE_CODE(tdd_add_ue_mrdc_cap.unpack(bref));
}
if (fr1_add_ue_mrdc_cap_present) {
HANDLE_CODE(fr1_add_ue_mrdc_cap.unpack(bref));
}
if (fr2_add_ue_mrdc_cap_present) {
HANDLE_CODE(fr2_add_ue_mrdc_cap.unpack(bref));
}
if (feature_set_combinations_present) {
HANDLE_CODE(unpack_dyn_seq_of(feature_set_combinations,
bref,
1,
1024,
SeqOfPacker<SeqOfPacker<Packer> >(1, 32, SeqOfPacker<Packer>(1, 128, Packer()))));
}
if (pdcp_params_mrdc_v1530_present) {
HANDLE_CODE(pdcp_params_mrdc_v1530.unpack(bref));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ue_mrdc_cap_s::to_json(json_writer& j) const
{
j.start_obj();
if (meas_and_mob_params_mrdc_present) {
j.write_fieldname("measAndMobParametersMRDC");
meas_and_mob_params_mrdc.to_json(j);
}
if (phy_params_mrdc_v1530_present) {
j.write_fieldname("phy-ParametersMRDC-v1530");
phy_params_mrdc_v1530.to_json(j);
}
j.write_fieldname("rf-ParametersMRDC");
rf_params_mrdc.to_json(j);
if (general_params_mrdc_present) {
j.write_fieldname("generalParametersMRDC");
general_params_mrdc.to_json(j);
}
if (fdd_add_ue_mrdc_cap_present) {
j.write_fieldname("fdd-Add-UE-MRDC-Capabilities");
fdd_add_ue_mrdc_cap.to_json(j);
}
if (tdd_add_ue_mrdc_cap_present) {
j.write_fieldname("tdd-Add-UE-MRDC-Capabilities");
tdd_add_ue_mrdc_cap.to_json(j);
}
if (fr1_add_ue_mrdc_cap_present) {
j.write_fieldname("fr1-Add-UE-MRDC-Capabilities");
fr1_add_ue_mrdc_cap.to_json(j);
}
if (fr2_add_ue_mrdc_cap_present) {
j.write_fieldname("fr2-Add-UE-MRDC-Capabilities");
fr2_add_ue_mrdc_cap.to_json(j);
}
if (feature_set_combinations_present) {
j.start_array("featureSetCombinations");
for (const auto& e1 : feature_set_combinations) {
j.start_array();
for (const auto& e2 : e1) {
j.start_array();
for (const auto& e3 : e2) {
e3.to_json(j);
}
j.end_array();
}
j.end_array();
}
j.end_array();
}
if (pdcp_params_mrdc_v1530_present) {
j.write_fieldname("pdcp-ParametersMRDC-v1530");
pdcp_params_mrdc_v1530.to_json(j);
}
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
// NRDC-Parameters-v1570 ::= SEQUENCE
SRSASN_CODE nrdc_params_v1570_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(sfn_sync_nrdc_present, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE nrdc_params_v1570_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(sfn_sync_nrdc_present, 1));
return SRSASN_SUCCESS;
}
void nrdc_params_v1570_s::to_json(json_writer& j) const
{
j.start_obj();
if (sfn_sync_nrdc_present) {
j.write_str("sfn-SyncNRDC", "supported");
}
j.end_obj();
}
// UE-NR-Capability-v1570 ::= SEQUENCE
SRSASN_CODE ue_nr_cap_v1570_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(nrdc_params_v1570_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (nrdc_params_v1570_present) {
HANDLE_CODE(nrdc_params_v1570.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_nr_cap_v1570_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(nrdc_params_v1570_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (nrdc_params_v1570_present) {
HANDLE_CODE(nrdc_params_v1570.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ue_nr_cap_v1570_s::to_json(json_writer& j) const
{
j.start_obj();
if (nrdc_params_v1570_present) {
j.write_fieldname("nrdc-Parameters-v1570");
nrdc_params_v1570.to_json(j);
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// UE-NR-Capability-v1560 ::= SEQUENCE
SRSASN_CODE ue_nr_cap_v1560_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(nrdc_params_present, 1));
HANDLE_CODE(bref.pack(rx_filts_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (nrdc_params_present) {
HANDLE_CODE(nrdc_params.pack(bref));
}
if (rx_filts_present) {
HANDLE_CODE(rx_filts.pack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_nr_cap_v1560_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(nrdc_params_present, 1));
HANDLE_CODE(bref.unpack(rx_filts_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (nrdc_params_present) {
HANDLE_CODE(nrdc_params.unpack(bref));
}
if (rx_filts_present) {
HANDLE_CODE(rx_filts.unpack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ue_nr_cap_v1560_s::to_json(json_writer& j) const
{
j.start_obj();
if (nrdc_params_present) {
j.write_fieldname("nrdc-Parameters");
nrdc_params.to_json(j);
}
if (rx_filts_present) {
j.write_str("receivedFilters", rx_filts.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
// SDAP-Parameters ::= SEQUENCE
SRSASN_CODE sdap_params_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(as_reflective_qos_present, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE sdap_params_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(as_reflective_qos_present, 1));
return SRSASN_SUCCESS;
}
void sdap_params_s::to_json(json_writer& j) const
{
j.start_obj();
if (as_reflective_qos_present) {
j.write_str("as-ReflectiveQoS", "true");
}
j.end_obj();
}
// UE-NR-Capability-v1550 ::= SEQUENCE
SRSASN_CODE ue_nr_cap_v1550_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(reduced_cp_latency_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_nr_cap_v1550_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(reduced_cp_latency_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ue_nr_cap_v1550_s::to_json(json_writer& j) const
{
j.start_obj();
if (reduced_cp_latency_present) {
j.write_str("reducedCP-Latency", "supported");
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
// UE-NR-CapabilityAddFRX-Mode ::= SEQUENCE
SRSASN_CODE ue_nr_cap_add_frx_mode_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(phy_params_frx_diff_present, 1));
HANDLE_CODE(bref.pack(meas_and_mob_params_frx_diff_present, 1));
if (phy_params_frx_diff_present) {
HANDLE_CODE(phy_params_frx_diff.pack(bref));
}
if (meas_and_mob_params_frx_diff_present) {
HANDLE_CODE(meas_and_mob_params_frx_diff.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_nr_cap_add_frx_mode_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(phy_params_frx_diff_present, 1));
HANDLE_CODE(bref.unpack(meas_and_mob_params_frx_diff_present, 1));
if (phy_params_frx_diff_present) {
HANDLE_CODE(phy_params_frx_diff.unpack(bref));
}
if (meas_and_mob_params_frx_diff_present) {
HANDLE_CODE(meas_and_mob_params_frx_diff.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ue_nr_cap_add_frx_mode_s::to_json(json_writer& j) const
{
j.start_obj();
if (phy_params_frx_diff_present) {
j.write_fieldname("phy-ParametersFRX-Diff");
phy_params_frx_diff.to_json(j);
}
if (meas_and_mob_params_frx_diff_present) {
j.write_fieldname("measAndMobParametersFRX-Diff");
meas_and_mob_params_frx_diff.to_json(j);
}
j.end_obj();
}
// UE-NR-CapabilityAddFRX-Mode-v1540 ::= SEQUENCE
SRSASN_CODE ue_nr_cap_add_frx_mode_v1540_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(ims_params_frx_diff_present, 1));
if (ims_params_frx_diff_present) {
HANDLE_CODE(ims_params_frx_diff.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_nr_cap_add_frx_mode_v1540_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(ims_params_frx_diff_present, 1));
if (ims_params_frx_diff_present) {
HANDLE_CODE(ims_params_frx_diff.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ue_nr_cap_add_frx_mode_v1540_s::to_json(json_writer& j) const
{
j.start_obj();
if (ims_params_frx_diff_present) {
j.write_fieldname("ims-ParametersFRX-Diff");
ims_params_frx_diff.to_json(j);
}
j.end_obj();
}
// UE-NR-Capability-v1540 ::= SEQUENCE
SRSASN_CODE ue_nr_cap_v1540_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(sdap_params_present, 1));
HANDLE_CODE(bref.pack(overheat_ind_present, 1));
HANDLE_CODE(bref.pack(ims_params_present, 1));
HANDLE_CODE(bref.pack(fr1_add_ue_nr_cap_v1540_present, 1));
HANDLE_CODE(bref.pack(fr2_add_ue_nr_cap_v1540_present, 1));
HANDLE_CODE(bref.pack(fr1_fr2_add_ue_nr_cap_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (sdap_params_present) {
HANDLE_CODE(sdap_params.pack(bref));
}
if (ims_params_present) {
HANDLE_CODE(ims_params.pack(bref));
}
if (fr1_add_ue_nr_cap_v1540_present) {
HANDLE_CODE(fr1_add_ue_nr_cap_v1540.pack(bref));
}
if (fr2_add_ue_nr_cap_v1540_present) {
HANDLE_CODE(fr2_add_ue_nr_cap_v1540.pack(bref));
}
if (fr1_fr2_add_ue_nr_cap_present) {
HANDLE_CODE(fr1_fr2_add_ue_nr_cap.pack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_nr_cap_v1540_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(sdap_params_present, 1));
HANDLE_CODE(bref.unpack(overheat_ind_present, 1));
HANDLE_CODE(bref.unpack(ims_params_present, 1));
HANDLE_CODE(bref.unpack(fr1_add_ue_nr_cap_v1540_present, 1));
HANDLE_CODE(bref.unpack(fr2_add_ue_nr_cap_v1540_present, 1));
HANDLE_CODE(bref.unpack(fr1_fr2_add_ue_nr_cap_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (sdap_params_present) {
HANDLE_CODE(sdap_params.unpack(bref));
}
if (ims_params_present) {
HANDLE_CODE(ims_params.unpack(bref));
}
if (fr1_add_ue_nr_cap_v1540_present) {
HANDLE_CODE(fr1_add_ue_nr_cap_v1540.unpack(bref));
}
if (fr2_add_ue_nr_cap_v1540_present) {
HANDLE_CODE(fr2_add_ue_nr_cap_v1540.unpack(bref));
}
if (fr1_fr2_add_ue_nr_cap_present) {
HANDLE_CODE(fr1_fr2_add_ue_nr_cap.unpack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ue_nr_cap_v1540_s::to_json(json_writer& j) const
{
j.start_obj();
if (sdap_params_present) {
j.write_fieldname("sdap-Parameters");
sdap_params.to_json(j);
}
if (overheat_ind_present) {
j.write_str("overheatingInd", "supported");
}
if (ims_params_present) {
j.write_fieldname("ims-Parameters");
ims_params.to_json(j);
}
if (fr1_add_ue_nr_cap_v1540_present) {
j.write_fieldname("fr1-Add-UE-NR-Capabilities-v1540");
fr1_add_ue_nr_cap_v1540.to_json(j);
}
if (fr2_add_ue_nr_cap_v1540_present) {
j.write_fieldname("fr2-Add-UE-NR-Capabilities-v1540");
fr2_add_ue_nr_cap_v1540.to_json(j);
}
if (fr1_fr2_add_ue_nr_cap_present) {
j.write_fieldname("fr1-fr2-Add-UE-NR-Capabilities");
fr1_fr2_add_ue_nr_cap.to_json(j);
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
// UE-NR-CapabilityAddXDD-Mode-v1530 ::= SEQUENCE
SRSASN_CODE ue_nr_cap_add_xdd_mode_v1530_s::pack(bit_ref& bref) const
{
HANDLE_CODE(eutra_params_xdd_diff.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_nr_cap_add_xdd_mode_v1530_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(eutra_params_xdd_diff.unpack(bref));
return SRSASN_SUCCESS;
}
void ue_nr_cap_add_xdd_mode_v1530_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("eutra-ParametersXDD-Diff");
eutra_params_xdd_diff.to_json(j);
j.end_obj();
}
// AccessStratumRelease ::= ENUMERATED
const char* access_stratum_release_opts::to_string() const
{
static const char* options[] = {"rel15", "spare7", "spare6", "spare5", "spare4", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 8, value, "access_stratum_release_e");
}
uint8_t access_stratum_release_opts::to_number() const
{
static const uint8_t options[] = {15};
return map_enum_number(options, 1, value, "access_stratum_release_e");
}
// PDCP-Parameters ::= SEQUENCE
SRSASN_CODE pdcp_params_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(ul_only_rohc_profiles_present, 1));
HANDLE_CODE(bref.pack(continue_rohc_context_present, 1));
HANDLE_CODE(bref.pack(out_of_order_delivery_present, 1));
HANDLE_CODE(bref.pack(short_sn_present, 1));
HANDLE_CODE(bref.pack(pdcp_dupl_srb_present, 1));
HANDLE_CODE(bref.pack(pdcp_dupl_mcg_or_scg_drb_present, 1));
HANDLE_CODE(bref.pack(supported_rohc_profiles.profile0x0000, 1));
HANDLE_CODE(bref.pack(supported_rohc_profiles.profile0x0001, 1));
HANDLE_CODE(bref.pack(supported_rohc_profiles.profile0x0002, 1));
HANDLE_CODE(bref.pack(supported_rohc_profiles.profile0x0003, 1));
HANDLE_CODE(bref.pack(supported_rohc_profiles.profile0x0004, 1));
HANDLE_CODE(bref.pack(supported_rohc_profiles.profile0x0006, 1));
HANDLE_CODE(bref.pack(supported_rohc_profiles.profile0x0101, 1));
HANDLE_CODE(bref.pack(supported_rohc_profiles.profile0x0102, 1));
HANDLE_CODE(bref.pack(supported_rohc_profiles.profile0x0103, 1));
HANDLE_CODE(bref.pack(supported_rohc_profiles.profile0x0104, 1));
HANDLE_CODE(max_num_rohc_context_sessions.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE pdcp_params_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(ul_only_rohc_profiles_present, 1));
HANDLE_CODE(bref.unpack(continue_rohc_context_present, 1));
HANDLE_CODE(bref.unpack(out_of_order_delivery_present, 1));
HANDLE_CODE(bref.unpack(short_sn_present, 1));
HANDLE_CODE(bref.unpack(pdcp_dupl_srb_present, 1));
HANDLE_CODE(bref.unpack(pdcp_dupl_mcg_or_scg_drb_present, 1));
HANDLE_CODE(bref.unpack(supported_rohc_profiles.profile0x0000, 1));
HANDLE_CODE(bref.unpack(supported_rohc_profiles.profile0x0001, 1));
HANDLE_CODE(bref.unpack(supported_rohc_profiles.profile0x0002, 1));
HANDLE_CODE(bref.unpack(supported_rohc_profiles.profile0x0003, 1));
HANDLE_CODE(bref.unpack(supported_rohc_profiles.profile0x0004, 1));
HANDLE_CODE(bref.unpack(supported_rohc_profiles.profile0x0006, 1));
HANDLE_CODE(bref.unpack(supported_rohc_profiles.profile0x0101, 1));
HANDLE_CODE(bref.unpack(supported_rohc_profiles.profile0x0102, 1));
HANDLE_CODE(bref.unpack(supported_rohc_profiles.profile0x0103, 1));
HANDLE_CODE(bref.unpack(supported_rohc_profiles.profile0x0104, 1));
HANDLE_CODE(max_num_rohc_context_sessions.unpack(bref));
return SRSASN_SUCCESS;
}
void pdcp_params_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("supportedROHC-Profiles");
j.start_obj();
j.write_bool("profile0x0000", supported_rohc_profiles.profile0x0000);
j.write_bool("profile0x0001", supported_rohc_profiles.profile0x0001);
j.write_bool("profile0x0002", supported_rohc_profiles.profile0x0002);
j.write_bool("profile0x0003", supported_rohc_profiles.profile0x0003);
j.write_bool("profile0x0004", supported_rohc_profiles.profile0x0004);
j.write_bool("profile0x0006", supported_rohc_profiles.profile0x0006);
j.write_bool("profile0x0101", supported_rohc_profiles.profile0x0101);
j.write_bool("profile0x0102", supported_rohc_profiles.profile0x0102);
j.write_bool("profile0x0103", supported_rohc_profiles.profile0x0103);
j.write_bool("profile0x0104", supported_rohc_profiles.profile0x0104);
j.end_obj();
j.write_str("maxNumberROHC-ContextSessions", max_num_rohc_context_sessions.to_string());
if (ul_only_rohc_profiles_present) {
j.write_str("uplinkOnlyROHC-Profiles", "supported");
}
if (continue_rohc_context_present) {
j.write_str("continueROHC-Context", "supported");
}
if (out_of_order_delivery_present) {
j.write_str("outOfOrderDelivery", "supported");
}
if (short_sn_present) {
j.write_str("shortSN", "supported");
}
if (pdcp_dupl_srb_present) {
j.write_str("pdcp-DuplicationSRB", "supported");
}
if (pdcp_dupl_mcg_or_scg_drb_present) {
j.write_str("pdcp-DuplicationMCG-OrSCG-DRB", "supported");
}
j.end_obj();
}
const char* pdcp_params_s::max_num_rohc_context_sessions_opts::to_string() const
{
static const char* options[] = {"cs2",
"cs4",
"cs8",
"cs12",
"cs16",
"cs24",
"cs32",
"cs48",
"cs64",
"cs128",
"cs256",
"cs512",
"cs1024",
"cs16384",
"spare2",
"spare1"};
return convert_enum_idx(options, 16, value, "pdcp_params_s::max_num_rohc_context_sessions_e_");
}
uint16_t pdcp_params_s::max_num_rohc_context_sessions_opts::to_number() const
{
static const uint16_t options[] = {2, 4, 8, 12, 16, 24, 32, 48, 64, 128, 256, 512, 1024, 16384};
return map_enum_number(options, 14, value, "pdcp_params_s::max_num_rohc_context_sessions_e_");
}
// RLC-Parameters ::= SEQUENCE
SRSASN_CODE rlc_params_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(am_with_short_sn_present, 1));
HANDLE_CODE(bref.pack(um_with_short_sn_present, 1));
HANDLE_CODE(bref.pack(um_with_long_sn_present, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE rlc_params_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(am_with_short_sn_present, 1));
HANDLE_CODE(bref.unpack(um_with_short_sn_present, 1));
HANDLE_CODE(bref.unpack(um_with_long_sn_present, 1));
return SRSASN_SUCCESS;
}
void rlc_params_s::to_json(json_writer& j) const
{
j.start_obj();
if (am_with_short_sn_present) {
j.write_str("am-WithShortSN", "supported");
}
if (um_with_short_sn_present) {
j.write_str("um-WithShortSN", "supported");
}
if (um_with_long_sn_present) {
j.write_str("um-WithLongSN", "supported");
}
j.end_obj();
}
// UE-NR-Capability-v1530 ::= SEQUENCE
SRSASN_CODE ue_nr_cap_v1530_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(fdd_add_ue_nr_cap_v1530_present, 1));
HANDLE_CODE(bref.pack(tdd_add_ue_nr_cap_v1530_present, 1));
HANDLE_CODE(bref.pack(dummy_present, 1));
HANDLE_CODE(bref.pack(inter_rat_params_present, 1));
HANDLE_CODE(bref.pack(inactive_state_present, 1));
HANDLE_CODE(bref.pack(delay_budget_report_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (fdd_add_ue_nr_cap_v1530_present) {
HANDLE_CODE(fdd_add_ue_nr_cap_v1530.pack(bref));
}
if (tdd_add_ue_nr_cap_v1530_present) {
HANDLE_CODE(tdd_add_ue_nr_cap_v1530.pack(bref));
}
if (inter_rat_params_present) {
HANDLE_CODE(inter_rat_params.pack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_nr_cap_v1530_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(fdd_add_ue_nr_cap_v1530_present, 1));
HANDLE_CODE(bref.unpack(tdd_add_ue_nr_cap_v1530_present, 1));
HANDLE_CODE(bref.unpack(dummy_present, 1));
HANDLE_CODE(bref.unpack(inter_rat_params_present, 1));
HANDLE_CODE(bref.unpack(inactive_state_present, 1));
HANDLE_CODE(bref.unpack(delay_budget_report_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (fdd_add_ue_nr_cap_v1530_present) {
HANDLE_CODE(fdd_add_ue_nr_cap_v1530.unpack(bref));
}
if (tdd_add_ue_nr_cap_v1530_present) {
HANDLE_CODE(tdd_add_ue_nr_cap_v1530.unpack(bref));
}
if (inter_rat_params_present) {
HANDLE_CODE(inter_rat_params.unpack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ue_nr_cap_v1530_s::to_json(json_writer& j) const
{
j.start_obj();
if (fdd_add_ue_nr_cap_v1530_present) {
j.write_fieldname("fdd-Add-UE-NR-Capabilities-v1530");
fdd_add_ue_nr_cap_v1530.to_json(j);
}
if (tdd_add_ue_nr_cap_v1530_present) {
j.write_fieldname("tdd-Add-UE-NR-Capabilities-v1530");
tdd_add_ue_nr_cap_v1530.to_json(j);
}
if (dummy_present) {
j.write_str("dummy", "supported");
}
if (inter_rat_params_present) {
j.write_fieldname("interRAT-Parameters");
inter_rat_params.to_json(j);
}
if (inactive_state_present) {
j.write_str("inactiveState", "supported");
}
if (delay_budget_report_present) {
j.write_str("delayBudgetReporting", "supported");
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
// UE-NR-CapabilityAddXDD-Mode ::= SEQUENCE
SRSASN_CODE ue_nr_cap_add_xdd_mode_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(phy_params_xdd_diff_present, 1));
HANDLE_CODE(bref.pack(mac_params_xdd_diff_present, 1));
HANDLE_CODE(bref.pack(meas_and_mob_params_xdd_diff_present, 1));
if (phy_params_xdd_diff_present) {
HANDLE_CODE(phy_params_xdd_diff.pack(bref));
}
if (mac_params_xdd_diff_present) {
HANDLE_CODE(mac_params_xdd_diff.pack(bref));
}
if (meas_and_mob_params_xdd_diff_present) {
HANDLE_CODE(meas_and_mob_params_xdd_diff.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_nr_cap_add_xdd_mode_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(phy_params_xdd_diff_present, 1));
HANDLE_CODE(bref.unpack(mac_params_xdd_diff_present, 1));
HANDLE_CODE(bref.unpack(meas_and_mob_params_xdd_diff_present, 1));
if (phy_params_xdd_diff_present) {
HANDLE_CODE(phy_params_xdd_diff.unpack(bref));
}
if (mac_params_xdd_diff_present) {
HANDLE_CODE(mac_params_xdd_diff.unpack(bref));
}
if (meas_and_mob_params_xdd_diff_present) {
HANDLE_CODE(meas_and_mob_params_xdd_diff.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ue_nr_cap_add_xdd_mode_s::to_json(json_writer& j) const
{
j.start_obj();
if (phy_params_xdd_diff_present) {
j.write_fieldname("phy-ParametersXDD-Diff");
phy_params_xdd_diff.to_json(j);
}
if (mac_params_xdd_diff_present) {
j.write_fieldname("mac-ParametersXDD-Diff");
mac_params_xdd_diff.to_json(j);
}
if (meas_and_mob_params_xdd_diff_present) {
j.write_fieldname("measAndMobParametersXDD-Diff");
meas_and_mob_params_xdd_diff.to_json(j);
}
j.end_obj();
}
// UE-NR-Capability ::= SEQUENCE
SRSASN_CODE ue_nr_cap_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(rlc_params_present, 1));
HANDLE_CODE(bref.pack(mac_params_present, 1));
HANDLE_CODE(bref.pack(meas_and_mob_params_present, 1));
HANDLE_CODE(bref.pack(fdd_add_ue_nr_cap_present, 1));
HANDLE_CODE(bref.pack(tdd_add_ue_nr_cap_present, 1));
HANDLE_CODE(bref.pack(fr1_add_ue_nr_cap_present, 1));
HANDLE_CODE(bref.pack(fr2_add_ue_nr_cap_present, 1));
HANDLE_CODE(bref.pack(feature_sets_present, 1));
HANDLE_CODE(bref.pack(feature_set_combinations_present, 1));
HANDLE_CODE(bref.pack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
HANDLE_CODE(access_stratum_release.pack(bref));
HANDLE_CODE(pdcp_params.pack(bref));
if (rlc_params_present) {
HANDLE_CODE(rlc_params.pack(bref));
}
if (mac_params_present) {
HANDLE_CODE(mac_params.pack(bref));
}
HANDLE_CODE(phy_params.pack(bref));
HANDLE_CODE(rf_params.pack(bref));
if (meas_and_mob_params_present) {
HANDLE_CODE(meas_and_mob_params.pack(bref));
}
if (fdd_add_ue_nr_cap_present) {
HANDLE_CODE(fdd_add_ue_nr_cap.pack(bref));
}
if (tdd_add_ue_nr_cap_present) {
HANDLE_CODE(tdd_add_ue_nr_cap.pack(bref));
}
if (fr1_add_ue_nr_cap_present) {
HANDLE_CODE(fr1_add_ue_nr_cap.pack(bref));
}
if (fr2_add_ue_nr_cap_present) {
HANDLE_CODE(fr2_add_ue_nr_cap.pack(bref));
}
if (feature_sets_present) {
HANDLE_CODE(feature_sets.pack(bref));
}
if (feature_set_combinations_present) {
HANDLE_CODE(pack_dyn_seq_of(bref,
feature_set_combinations,
1,
1024,
SeqOfPacker<SeqOfPacker<Packer> >(1, 32, SeqOfPacker<Packer>(1, 128, Packer()))));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_nr_cap_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(rlc_params_present, 1));
HANDLE_CODE(bref.unpack(mac_params_present, 1));
HANDLE_CODE(bref.unpack(meas_and_mob_params_present, 1));
HANDLE_CODE(bref.unpack(fdd_add_ue_nr_cap_present, 1));
HANDLE_CODE(bref.unpack(tdd_add_ue_nr_cap_present, 1));
HANDLE_CODE(bref.unpack(fr1_add_ue_nr_cap_present, 1));
HANDLE_CODE(bref.unpack(fr2_add_ue_nr_cap_present, 1));
HANDLE_CODE(bref.unpack(feature_sets_present, 1));
HANDLE_CODE(bref.unpack(feature_set_combinations_present, 1));
HANDLE_CODE(bref.unpack(late_non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
HANDLE_CODE(access_stratum_release.unpack(bref));
HANDLE_CODE(pdcp_params.unpack(bref));
if (rlc_params_present) {
HANDLE_CODE(rlc_params.unpack(bref));
}
if (mac_params_present) {
HANDLE_CODE(mac_params.unpack(bref));
}
HANDLE_CODE(phy_params.unpack(bref));
HANDLE_CODE(rf_params.unpack(bref));
if (meas_and_mob_params_present) {
HANDLE_CODE(meas_and_mob_params.unpack(bref));
}
if (fdd_add_ue_nr_cap_present) {
HANDLE_CODE(fdd_add_ue_nr_cap.unpack(bref));
}
if (tdd_add_ue_nr_cap_present) {
HANDLE_CODE(tdd_add_ue_nr_cap.unpack(bref));
}
if (fr1_add_ue_nr_cap_present) {
HANDLE_CODE(fr1_add_ue_nr_cap.unpack(bref));
}
if (fr2_add_ue_nr_cap_present) {
HANDLE_CODE(fr2_add_ue_nr_cap.unpack(bref));
}
if (feature_sets_present) {
HANDLE_CODE(feature_sets.unpack(bref));
}
if (feature_set_combinations_present) {
HANDLE_CODE(unpack_dyn_seq_of(feature_set_combinations,
bref,
1,
1024,
SeqOfPacker<SeqOfPacker<Packer> >(1, 32, SeqOfPacker<Packer>(1, 128, Packer()))));
}
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ue_nr_cap_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("accessStratumRelease", access_stratum_release.to_string());
j.write_fieldname("pdcp-Parameters");
pdcp_params.to_json(j);
if (rlc_params_present) {
j.write_fieldname("rlc-Parameters");
rlc_params.to_json(j);
}
if (mac_params_present) {
j.write_fieldname("mac-Parameters");
mac_params.to_json(j);
}
j.write_fieldname("phy-Parameters");
phy_params.to_json(j);
j.write_fieldname("rf-Parameters");
rf_params.to_json(j);
if (meas_and_mob_params_present) {
j.write_fieldname("measAndMobParameters");
meas_and_mob_params.to_json(j);
}
if (fdd_add_ue_nr_cap_present) {
j.write_fieldname("fdd-Add-UE-NR-Capabilities");
fdd_add_ue_nr_cap.to_json(j);
}
if (tdd_add_ue_nr_cap_present) {
j.write_fieldname("tdd-Add-UE-NR-Capabilities");
tdd_add_ue_nr_cap.to_json(j);
}
if (fr1_add_ue_nr_cap_present) {
j.write_fieldname("fr1-Add-UE-NR-Capabilities");
fr1_add_ue_nr_cap.to_json(j);
}
if (fr2_add_ue_nr_cap_present) {
j.write_fieldname("fr2-Add-UE-NR-Capabilities");
fr2_add_ue_nr_cap.to_json(j);
}
if (feature_sets_present) {
j.write_fieldname("featureSets");
feature_sets.to_json(j);
}
if (feature_set_combinations_present) {
j.start_array("featureSetCombinations");
for (const auto& e1 : feature_set_combinations) {
j.start_array();
for (const auto& e2 : e1) {
j.start_array();
for (const auto& e3 : e2) {
e3.to_json(j);
}
j.end_array();
}
j.end_array();
}
j.end_array();
}
if (late_non_crit_ext_present) {
j.write_str("lateNonCriticalExtension", late_non_crit_ext.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
// UE-CapabilityRequestFilterCommon ::= SEQUENCE
SRSASN_CODE ue_cap_request_filt_common_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(mrdc_request_present, 1));
if (mrdc_request_present) {
HANDLE_CODE(bref.pack(mrdc_request.omit_en_dc_present, 1));
HANDLE_CODE(bref.pack(mrdc_request.include_nr_dc_present, 1));
HANDLE_CODE(bref.pack(mrdc_request.include_ne_dc_present, 1));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_cap_request_filt_common_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(mrdc_request_present, 1));
if (mrdc_request_present) {
HANDLE_CODE(bref.unpack(mrdc_request.omit_en_dc_present, 1));
HANDLE_CODE(bref.unpack(mrdc_request.include_nr_dc_present, 1));
HANDLE_CODE(bref.unpack(mrdc_request.include_ne_dc_present, 1));
}
return SRSASN_SUCCESS;
}
void ue_cap_request_filt_common_s::to_json(json_writer& j) const
{
j.start_obj();
if (mrdc_request_present) {
j.write_fieldname("mrdc-Request");
j.start_obj();
if (mrdc_request.omit_en_dc_present) {
j.write_str("omitEN-DC", "true");
}
if (mrdc_request.include_nr_dc_present) {
j.write_str("includeNR-DC", "true");
}
if (mrdc_request.include_ne_dc_present) {
j.write_str("includeNE-DC", "true");
}
j.end_obj();
}
j.end_obj();
}
// UECapabilityEnquiry-v1560-IEs ::= SEQUENCE
SRSASN_CODE ue_cap_enquiry_v1560_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(cap_request_filt_common_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (cap_request_filt_common_present) {
HANDLE_CODE(cap_request_filt_common.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_cap_enquiry_v1560_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(cap_request_filt_common_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (cap_request_filt_common_present) {
HANDLE_CODE(cap_request_filt_common.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ue_cap_enquiry_v1560_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (cap_request_filt_common_present) {
j.write_fieldname("capabilityRequestFilterCommon");
cap_request_filt_common.to_json(j);
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// AS-Config ::= SEQUENCE
SRSASN_CODE as_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(rrc_recfg.pack(bref));
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= source_rb_sn_cfg_present;
group_flags[0] |= source_scg_nr_cfg_present;
group_flags[0] |= source_scg_eutra_cfg_present;
group_flags[1] |= source_scg_cfgured_present;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(source_rb_sn_cfg_present, 1));
HANDLE_CODE(bref.pack(source_scg_nr_cfg_present, 1));
HANDLE_CODE(bref.pack(source_scg_eutra_cfg_present, 1));
if (source_rb_sn_cfg_present) {
HANDLE_CODE(source_rb_sn_cfg.pack(bref));
}
if (source_scg_nr_cfg_present) {
HANDLE_CODE(source_scg_nr_cfg.pack(bref));
}
if (source_scg_eutra_cfg_present) {
HANDLE_CODE(source_scg_eutra_cfg.pack(bref));
}
}
if (group_flags[1]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(source_scg_cfgured_present, 1));
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE as_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(rrc_recfg.unpack(bref));
if (ext) {
ext_groups_unpacker_guard group_flags(2);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(source_rb_sn_cfg_present, 1));
HANDLE_CODE(bref.unpack(source_scg_nr_cfg_present, 1));
HANDLE_CODE(bref.unpack(source_scg_eutra_cfg_present, 1));
if (source_rb_sn_cfg_present) {
HANDLE_CODE(source_rb_sn_cfg.unpack(bref));
}
if (source_scg_nr_cfg_present) {
HANDLE_CODE(source_scg_nr_cfg.unpack(bref));
}
if (source_scg_eutra_cfg_present) {
HANDLE_CODE(source_scg_eutra_cfg.unpack(bref));
}
}
if (group_flags[1]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(source_scg_cfgured_present, 1));
}
}
return SRSASN_SUCCESS;
}
void as_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("rrcReconfiguration", rrc_recfg.to_string());
if (ext) {
if (source_rb_sn_cfg_present) {
j.write_str("sourceRB-SN-Config", source_rb_sn_cfg.to_string());
}
if (source_scg_nr_cfg_present) {
j.write_str("sourceSCG-NR-Config", source_scg_nr_cfg.to_string());
}
if (source_scg_eutra_cfg_present) {
j.write_str("sourceSCG-EUTRA-Config", source_scg_eutra_cfg.to_string());
}
if (source_scg_cfgured_present) {
j.write_str("sourceSCG-Configured", "true");
}
}
j.end_obj();
}
// BandCombinationInfo ::= SEQUENCE
SRSASN_CODE band_combination_info_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, band_combination_idx, (uint32_t)1u, (uint32_t)65536u));
HANDLE_CODE(pack_dyn_seq_of(bref, allowed_feature_sets_list, 1, 128, integer_packer<uint8_t>(1, 128)));
return SRSASN_SUCCESS;
}
SRSASN_CODE band_combination_info_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(band_combination_idx, bref, (uint32_t)1u, (uint32_t)65536u));
HANDLE_CODE(unpack_dyn_seq_of(allowed_feature_sets_list, bref, 1, 128, integer_packer<uint8_t>(1, 128)));
return SRSASN_SUCCESS;
}
void band_combination_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("bandCombinationIndex", band_combination_idx);
j.start_array("allowedFeatureSetsList");
for (const auto& e1 : allowed_feature_sets_list) {
j.write_int(e1);
}
j.end_array();
j.end_obj();
}
// ReestabNCellInfo ::= SEQUENCE
SRSASN_CODE reestab_ncell_info_s::pack(bit_ref& bref) const
{
HANDLE_CODE(cell_id.pack(bref));
HANDLE_CODE(key_g_node_b_star.pack(bref));
HANDLE_CODE(short_mac_i.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE reestab_ncell_info_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(cell_id.unpack(bref));
HANDLE_CODE(key_g_node_b_star.unpack(bref));
HANDLE_CODE(short_mac_i.unpack(bref));
return SRSASN_SUCCESS;
}
void reestab_ncell_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("cellIdentity", cell_id.to_string());
j.write_str("key-gNodeB-Star", key_g_node_b_star.to_string());
j.write_str("shortMAC-I", short_mac_i.to_string());
j.end_obj();
}
// BandCombinationInfoSN ::= SEQUENCE
SRSASN_CODE band_combination_info_sn_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, band_combination_idx, (uint32_t)1u, (uint32_t)65536u));
HANDLE_CODE(pack_integer(bref, requested_feature_sets, (uint8_t)1u, (uint8_t)128u));
return SRSASN_SUCCESS;
}
SRSASN_CODE band_combination_info_sn_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(band_combination_idx, bref, (uint32_t)1u, (uint32_t)65536u));
HANDLE_CODE(unpack_integer(requested_feature_sets, bref, (uint8_t)1u, (uint8_t)128u));
return SRSASN_SUCCESS;
}
void band_combination_info_sn_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("bandCombinationIndex", band_combination_idx);
j.write_int("requestedFeatureSets", requested_feature_sets);
j.end_obj();
}
// ConfigRestrictInfoSCG ::= SEQUENCE
SRSASN_CODE cfg_restrict_info_scg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(allowed_bc_list_mrdc_present, 1));
HANDLE_CODE(bref.pack(pwr_coordination_fr1_present, 1));
HANDLE_CODE(bref.pack(serv_cell_idx_range_scg_present, 1));
HANDLE_CODE(bref.pack(max_meas_freqs_scg_present, 1));
HANDLE_CODE(bref.pack(dummy_present, 1));
if (allowed_bc_list_mrdc_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, allowed_bc_list_mrdc, 1, 65536));
}
if (pwr_coordination_fr1_present) {
HANDLE_CODE(bref.pack(pwr_coordination_fr1.p_max_nr_fr1_present, 1));
HANDLE_CODE(bref.pack(pwr_coordination_fr1.p_max_eutra_present, 1));
HANDLE_CODE(bref.pack(pwr_coordination_fr1.p_max_ue_fr1_present, 1));
if (pwr_coordination_fr1.p_max_nr_fr1_present) {
HANDLE_CODE(pack_integer(bref, pwr_coordination_fr1.p_max_nr_fr1, (int8_t)-30, (int8_t)33));
}
if (pwr_coordination_fr1.p_max_eutra_present) {
HANDLE_CODE(pack_integer(bref, pwr_coordination_fr1.p_max_eutra, (int8_t)-30, (int8_t)33));
}
if (pwr_coordination_fr1.p_max_ue_fr1_present) {
HANDLE_CODE(pack_integer(bref, pwr_coordination_fr1.p_max_ue_fr1, (int8_t)-30, (int8_t)33));
}
}
if (serv_cell_idx_range_scg_present) {
HANDLE_CODE(pack_integer(bref, serv_cell_idx_range_scg.low_bound, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(pack_integer(bref, serv_cell_idx_range_scg.up_bound, (uint8_t)0u, (uint8_t)31u));
}
if (max_meas_freqs_scg_present) {
HANDLE_CODE(pack_integer(bref, max_meas_freqs_scg, (uint8_t)1u, (uint8_t)32u));
}
if (dummy_present) {
HANDLE_CODE(pack_integer(bref, dummy, (uint8_t)1u, (uint8_t)62u));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= sel_band_entries_mn_list.is_present();
group_flags[0] |= pdcch_blind_detection_scg_present;
group_flags[0] |= max_num_rohc_context_sessions_sn_present;
group_flags[1] |= max_intra_freq_meas_identities_scg_present;
group_flags[1] |= max_inter_freq_meas_identities_scg_present;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(sel_band_entries_mn_list.is_present(), 1));
HANDLE_CODE(bref.pack(pdcch_blind_detection_scg_present, 1));
HANDLE_CODE(bref.pack(max_num_rohc_context_sessions_sn_present, 1));
if (sel_band_entries_mn_list.is_present()) {
HANDLE_CODE(pack_dyn_seq_of(bref,
*sel_band_entries_mn_list,
1,
65536,
SeqOfPacker<integer_packer<uint8_t> >(1, 32, integer_packer<uint8_t>(0, 32))));
}
if (pdcch_blind_detection_scg_present) {
HANDLE_CODE(pack_integer(bref, pdcch_blind_detection_scg, (uint8_t)1u, (uint8_t)15u));
}
if (max_num_rohc_context_sessions_sn_present) {
HANDLE_CODE(pack_integer(bref, max_num_rohc_context_sessions_sn, (uint16_t)0u, (uint16_t)16384u));
}
}
if (group_flags[1]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(max_intra_freq_meas_identities_scg_present, 1));
HANDLE_CODE(bref.pack(max_inter_freq_meas_identities_scg_present, 1));
if (max_intra_freq_meas_identities_scg_present) {
HANDLE_CODE(pack_integer(bref, max_intra_freq_meas_identities_scg, (uint8_t)1u, (uint8_t)62u));
}
if (max_inter_freq_meas_identities_scg_present) {
HANDLE_CODE(pack_integer(bref, max_inter_freq_meas_identities_scg, (uint8_t)1u, (uint8_t)62u));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE cfg_restrict_info_scg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(allowed_bc_list_mrdc_present, 1));
HANDLE_CODE(bref.unpack(pwr_coordination_fr1_present, 1));
HANDLE_CODE(bref.unpack(serv_cell_idx_range_scg_present, 1));
HANDLE_CODE(bref.unpack(max_meas_freqs_scg_present, 1));
HANDLE_CODE(bref.unpack(dummy_present, 1));
if (allowed_bc_list_mrdc_present) {
HANDLE_CODE(unpack_dyn_seq_of(allowed_bc_list_mrdc, bref, 1, 65536));
}
if (pwr_coordination_fr1_present) {
HANDLE_CODE(bref.unpack(pwr_coordination_fr1.p_max_nr_fr1_present, 1));
HANDLE_CODE(bref.unpack(pwr_coordination_fr1.p_max_eutra_present, 1));
HANDLE_CODE(bref.unpack(pwr_coordination_fr1.p_max_ue_fr1_present, 1));
if (pwr_coordination_fr1.p_max_nr_fr1_present) {
HANDLE_CODE(unpack_integer(pwr_coordination_fr1.p_max_nr_fr1, bref, (int8_t)-30, (int8_t)33));
}
if (pwr_coordination_fr1.p_max_eutra_present) {
HANDLE_CODE(unpack_integer(pwr_coordination_fr1.p_max_eutra, bref, (int8_t)-30, (int8_t)33));
}
if (pwr_coordination_fr1.p_max_ue_fr1_present) {
HANDLE_CODE(unpack_integer(pwr_coordination_fr1.p_max_ue_fr1, bref, (int8_t)-30, (int8_t)33));
}
}
if (serv_cell_idx_range_scg_present) {
HANDLE_CODE(unpack_integer(serv_cell_idx_range_scg.low_bound, bref, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(unpack_integer(serv_cell_idx_range_scg.up_bound, bref, (uint8_t)0u, (uint8_t)31u));
}
if (max_meas_freqs_scg_present) {
HANDLE_CODE(unpack_integer(max_meas_freqs_scg, bref, (uint8_t)1u, (uint8_t)32u));
}
if (dummy_present) {
HANDLE_CODE(unpack_integer(dummy, bref, (uint8_t)1u, (uint8_t)62u));
}
if (ext) {
ext_groups_unpacker_guard group_flags(2);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool sel_band_entries_mn_list_present;
HANDLE_CODE(bref.unpack(sel_band_entries_mn_list_present, 1));
sel_band_entries_mn_list.set_present(sel_band_entries_mn_list_present);
HANDLE_CODE(bref.unpack(pdcch_blind_detection_scg_present, 1));
HANDLE_CODE(bref.unpack(max_num_rohc_context_sessions_sn_present, 1));
if (sel_band_entries_mn_list.is_present()) {
HANDLE_CODE(unpack_dyn_seq_of(*sel_band_entries_mn_list,
bref,
1,
65536,
SeqOfPacker<integer_packer<uint8_t> >(1, 32, integer_packer<uint8_t>(0, 32))));
}
if (pdcch_blind_detection_scg_present) {
HANDLE_CODE(unpack_integer(pdcch_blind_detection_scg, bref, (uint8_t)1u, (uint8_t)15u));
}
if (max_num_rohc_context_sessions_sn_present) {
HANDLE_CODE(unpack_integer(max_num_rohc_context_sessions_sn, bref, (uint16_t)0u, (uint16_t)16384u));
}
}
if (group_flags[1]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(max_intra_freq_meas_identities_scg_present, 1));
HANDLE_CODE(bref.unpack(max_inter_freq_meas_identities_scg_present, 1));
if (max_intra_freq_meas_identities_scg_present) {
HANDLE_CODE(unpack_integer(max_intra_freq_meas_identities_scg, bref, (uint8_t)1u, (uint8_t)62u));
}
if (max_inter_freq_meas_identities_scg_present) {
HANDLE_CODE(unpack_integer(max_inter_freq_meas_identities_scg, bref, (uint8_t)1u, (uint8_t)62u));
}
}
}
return SRSASN_SUCCESS;
}
void cfg_restrict_info_scg_s::to_json(json_writer& j) const
{
j.start_obj();
if (allowed_bc_list_mrdc_present) {
j.start_array("allowedBC-ListMRDC");
for (const auto& e1 : allowed_bc_list_mrdc) {
e1.to_json(j);
}
j.end_array();
}
if (pwr_coordination_fr1_present) {
j.write_fieldname("powerCoordination-FR1");
j.start_obj();
if (pwr_coordination_fr1.p_max_nr_fr1_present) {
j.write_int("p-maxNR-FR1", pwr_coordination_fr1.p_max_nr_fr1);
}
if (pwr_coordination_fr1.p_max_eutra_present) {
j.write_int("p-maxEUTRA", pwr_coordination_fr1.p_max_eutra);
}
if (pwr_coordination_fr1.p_max_ue_fr1_present) {
j.write_int("p-maxUE-FR1", pwr_coordination_fr1.p_max_ue_fr1);
}
j.end_obj();
}
if (serv_cell_idx_range_scg_present) {
j.write_fieldname("servCellIndexRangeSCG");
j.start_obj();
j.write_int("lowBound", serv_cell_idx_range_scg.low_bound);
j.write_int("upBound", serv_cell_idx_range_scg.up_bound);
j.end_obj();
}
if (max_meas_freqs_scg_present) {
j.write_int("maxMeasFreqsSCG", max_meas_freqs_scg);
}
if (dummy_present) {
j.write_int("dummy", dummy);
}
if (ext) {
if (sel_band_entries_mn_list.is_present()) {
j.start_array("selectedBandEntriesMNList");
for (const auto& e1 : *sel_band_entries_mn_list) {
j.start_array();
for (const auto& e2 : e1) {
j.write_int(e2);
}
j.end_array();
}
j.end_array();
}
if (pdcch_blind_detection_scg_present) {
j.write_int("pdcch-BlindDetectionSCG", pdcch_blind_detection_scg);
}
if (max_num_rohc_context_sessions_sn_present) {
j.write_int("maxNumberROHC-ContextSessionsSN", max_num_rohc_context_sessions_sn);
}
if (max_intra_freq_meas_identities_scg_present) {
j.write_int("maxIntraFreqMeasIdentitiesSCG", max_intra_freq_meas_identities_scg);
}
if (max_inter_freq_meas_identities_scg_present) {
j.write_int("maxInterFreqMeasIdentitiesSCG", max_inter_freq_meas_identities_scg);
}
}
j.end_obj();
}
// ReestablishmentInfo ::= SEQUENCE
SRSASN_CODE reest_info_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(add_reestab_info_list_present, 1));
HANDLE_CODE(pack_integer(bref, source_pci, (uint16_t)0u, (uint16_t)1007u));
HANDLE_CODE(target_cell_short_mac_i.pack(bref));
if (add_reestab_info_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, add_reestab_info_list, 1, 32));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE reest_info_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(add_reestab_info_list_present, 1));
HANDLE_CODE(unpack_integer(source_pci, bref, (uint16_t)0u, (uint16_t)1007u));
HANDLE_CODE(target_cell_short_mac_i.unpack(bref));
if (add_reestab_info_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(add_reestab_info_list, bref, 1, 32));
}
return SRSASN_SUCCESS;
}
void reest_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("sourcePhysCellId", source_pci);
j.write_str("targetCellShortMAC-I", target_cell_short_mac_i.to_string());
if (add_reestab_info_list_present) {
j.start_array("additionalReestabInfoList");
for (const auto& e1 : add_reestab_info_list) {
e1.to_json(j);
}
j.end_array();
}
j.end_obj();
}
// AS-Context ::= SEQUENCE
SRSASN_CODE as_context_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(reest_info_present, 1));
HANDLE_CODE(bref.pack(cfg_restrict_info_present, 1));
if (reest_info_present) {
HANDLE_CODE(reest_info.pack(bref));
}
if (cfg_restrict_info_present) {
HANDLE_CODE(cfg_restrict_info.pack(bref));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= ran_notif_area_info.is_present();
group_flags[1] |= ue_assist_info_present;
group_flags[2] |= sel_band_combination_sn.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(ran_notif_area_info.is_present(), 1));
if (ran_notif_area_info.is_present()) {
HANDLE_CODE(ran_notif_area_info->pack(bref));
}
}
if (group_flags[1]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(ue_assist_info_present, 1));
if (ue_assist_info_present) {
HANDLE_CODE(ue_assist_info.pack(bref));
}
}
if (group_flags[2]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(sel_band_combination_sn.is_present(), 1));
if (sel_band_combination_sn.is_present()) {
HANDLE_CODE(sel_band_combination_sn->pack(bref));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE as_context_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(reest_info_present, 1));
HANDLE_CODE(bref.unpack(cfg_restrict_info_present, 1));
if (reest_info_present) {
HANDLE_CODE(reest_info.unpack(bref));
}
if (cfg_restrict_info_present) {
HANDLE_CODE(cfg_restrict_info.unpack(bref));
}
if (ext) {
ext_groups_unpacker_guard group_flags(3);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool ran_notif_area_info_present;
HANDLE_CODE(bref.unpack(ran_notif_area_info_present, 1));
ran_notif_area_info.set_present(ran_notif_area_info_present);
if (ran_notif_area_info.is_present()) {
HANDLE_CODE(ran_notif_area_info->unpack(bref));
}
}
if (group_flags[1]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(ue_assist_info_present, 1));
if (ue_assist_info_present) {
HANDLE_CODE(ue_assist_info.unpack(bref));
}
}
if (group_flags[2]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool sel_band_combination_sn_present;
HANDLE_CODE(bref.unpack(sel_band_combination_sn_present, 1));
sel_band_combination_sn.set_present(sel_band_combination_sn_present);
if (sel_band_combination_sn.is_present()) {
HANDLE_CODE(sel_band_combination_sn->unpack(bref));
}
}
}
return SRSASN_SUCCESS;
}
void as_context_s::to_json(json_writer& j) const
{
j.start_obj();
if (reest_info_present) {
j.write_fieldname("reestablishmentInfo");
reest_info.to_json(j);
}
if (cfg_restrict_info_present) {
j.write_fieldname("configRestrictInfo");
cfg_restrict_info.to_json(j);
}
if (ext) {
if (ran_notif_area_info.is_present()) {
j.write_fieldname("ran-NotificationAreaInfo");
ran_notif_area_info->to_json(j);
}
if (ue_assist_info_present) {
j.write_str("ueAssistanceInformation", ue_assist_info.to_string());
}
if (sel_band_combination_sn.is_present()) {
j.write_fieldname("selectedBandCombinationSN");
sel_band_combination_sn->to_json(j);
}
}
j.end_obj();
}
// VictimSystemType ::= SEQUENCE
SRSASN_CODE victim_sys_type_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(gps_present, 1));
HANDLE_CODE(bref.pack(glonass_present, 1));
HANDLE_CODE(bref.pack(bds_present, 1));
HANDLE_CODE(bref.pack(galileo_present, 1));
HANDLE_CODE(bref.pack(wlan_present, 1));
HANDLE_CODE(bref.pack(bluetooth_present, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE victim_sys_type_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(gps_present, 1));
HANDLE_CODE(bref.unpack(glonass_present, 1));
HANDLE_CODE(bref.unpack(bds_present, 1));
HANDLE_CODE(bref.unpack(galileo_present, 1));
HANDLE_CODE(bref.unpack(wlan_present, 1));
HANDLE_CODE(bref.unpack(bluetooth_present, 1));
return SRSASN_SUCCESS;
}
void victim_sys_type_s::to_json(json_writer& j) const
{
j.start_obj();
if (gps_present) {
j.write_str("gps", "true");
}
if (glonass_present) {
j.write_str("glonass", "true");
}
if (bds_present) {
j.write_str("bds", "true");
}
if (galileo_present) {
j.write_str("galileo", "true");
}
if (wlan_present) {
j.write_str("wlan", "true");
}
if (bluetooth_present) {
j.write_str("bluetooth", "true");
}
j.end_obj();
}
// AffectedCarrierFreqCombInfoMRDC ::= SEQUENCE
SRSASN_CODE affected_carrier_freq_comb_info_mrdc_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(affected_carrier_freq_comb_mrdc_present, 1));
HANDLE_CODE(victim_sys_type.pack(bref));
HANDLE_CODE(interference_direction_mrdc.pack(bref));
if (affected_carrier_freq_comb_mrdc_present) {
HANDLE_CODE(bref.pack(affected_carrier_freq_comb_mrdc.affected_carrier_freq_comb_eutra_present, 1));
if (affected_carrier_freq_comb_mrdc.affected_carrier_freq_comb_eutra_present) {
HANDLE_CODE(pack_dyn_seq_of(bref,
affected_carrier_freq_comb_mrdc.affected_carrier_freq_comb_eutra,
1,
32,
integer_packer<uint32_t>(0, 262143)));
}
HANDLE_CODE(pack_dyn_seq_of(bref,
affected_carrier_freq_comb_mrdc.affected_carrier_freq_comb_nr,
1,
32,
integer_packer<uint32_t>(0, 3279165)));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE affected_carrier_freq_comb_info_mrdc_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(affected_carrier_freq_comb_mrdc_present, 1));
HANDLE_CODE(victim_sys_type.unpack(bref));
HANDLE_CODE(interference_direction_mrdc.unpack(bref));
if (affected_carrier_freq_comb_mrdc_present) {
HANDLE_CODE(bref.unpack(affected_carrier_freq_comb_mrdc.affected_carrier_freq_comb_eutra_present, 1));
if (affected_carrier_freq_comb_mrdc.affected_carrier_freq_comb_eutra_present) {
HANDLE_CODE(unpack_dyn_seq_of(affected_carrier_freq_comb_mrdc.affected_carrier_freq_comb_eutra,
bref,
1,
32,
integer_packer<uint32_t>(0, 262143)));
}
HANDLE_CODE(unpack_dyn_seq_of(affected_carrier_freq_comb_mrdc.affected_carrier_freq_comb_nr,
bref,
1,
32,
integer_packer<uint32_t>(0, 3279165)));
}
return SRSASN_SUCCESS;
}
void affected_carrier_freq_comb_info_mrdc_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("victimSystemType");
victim_sys_type.to_json(j);
j.write_str("interferenceDirectionMRDC", interference_direction_mrdc.to_string());
if (affected_carrier_freq_comb_mrdc_present) {
j.write_fieldname("affectedCarrierFreqCombMRDC");
j.start_obj();
if (affected_carrier_freq_comb_mrdc.affected_carrier_freq_comb_eutra_present) {
j.start_array("affectedCarrierFreqCombEUTRA");
for (const auto& e1 : affected_carrier_freq_comb_mrdc.affected_carrier_freq_comb_eutra) {
j.write_int(e1);
}
j.end_array();
}
j.start_array("affectedCarrierFreqCombNR");
for (const auto& e1 : affected_carrier_freq_comb_mrdc.affected_carrier_freq_comb_nr) {
j.write_int(e1);
}
j.end_array();
j.end_obj();
}
j.end_obj();
}
const char* affected_carrier_freq_comb_info_mrdc_s::interference_direction_mrdc_opts::to_string() const
{
static const char* options[] = {"eutra-nr", "nr", "other", "utra-nr-other", "nr-other", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 8, value, "affected_carrier_freq_comb_info_mrdc_s::interference_direction_mrdc_e_");
}
// PH-UplinkCarrierSCG ::= SEQUENCE
SRSASN_CODE ph_ul_carrier_scg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(ph_type1or3.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE ph_ul_carrier_scg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(ph_type1or3.unpack(bref));
return SRSASN_SUCCESS;
}
void ph_ul_carrier_scg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("ph-Type1or3", ph_type1or3.to_string());
j.end_obj();
}
const char* ph_ul_carrier_scg_s::ph_type1or3_opts::to_string() const
{
static const char* options[] = {"type1", "type3"};
return convert_enum_idx(options, 2, value, "ph_ul_carrier_scg_s::ph_type1or3_e_");
}
uint8_t ph_ul_carrier_scg_s::ph_type1or3_opts::to_number() const
{
static const uint8_t options[] = {1, 3};
return map_enum_number(options, 2, value, "ph_ul_carrier_scg_s::ph_type1or3_e_");
}
// CG-Config-v1590-IEs ::= SEQUENCE
SRSASN_CODE cg_cfg_v1590_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(scell_frequencies_sn_nr_present, 1));
HANDLE_CODE(bref.pack(scell_frequencies_sn_eutra_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (scell_frequencies_sn_nr_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, scell_frequencies_sn_nr, 1, 31, integer_packer<uint32_t>(0, 3279165)));
}
if (scell_frequencies_sn_eutra_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, scell_frequencies_sn_eutra, 1, 31, integer_packer<uint32_t>(0, 262143)));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE cg_cfg_v1590_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(scell_frequencies_sn_nr_present, 1));
HANDLE_CODE(bref.unpack(scell_frequencies_sn_eutra_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (scell_frequencies_sn_nr_present) {
HANDLE_CODE(unpack_dyn_seq_of(scell_frequencies_sn_nr, bref, 1, 31, integer_packer<uint32_t>(0, 3279165)));
}
if (scell_frequencies_sn_eutra_present) {
HANDLE_CODE(unpack_dyn_seq_of(scell_frequencies_sn_eutra, bref, 1, 31, integer_packer<uint32_t>(0, 262143)));
}
return SRSASN_SUCCESS;
}
void cg_cfg_v1590_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (scell_frequencies_sn_nr_present) {
j.start_array("scellFrequenciesSN-NR");
for (const auto& e1 : scell_frequencies_sn_nr) {
j.write_int(e1);
}
j.end_array();
}
if (scell_frequencies_sn_eutra_present) {
j.start_array("scellFrequenciesSN-EUTRA");
for (const auto& e1 : scell_frequencies_sn_eutra) {
j.write_int(e1);
}
j.end_array();
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// PH-InfoSCG ::= SEQUENCE
SRSASN_CODE ph_info_scg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(ph_supplementary_ul_present, 1));
HANDLE_CODE(pack_integer(bref, serv_cell_idx, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(ph_ul.pack(bref));
if (ph_supplementary_ul_present) {
HANDLE_CODE(ph_supplementary_ul.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ph_info_scg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(ph_supplementary_ul_present, 1));
HANDLE_CODE(unpack_integer(serv_cell_idx, bref, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(ph_ul.unpack(bref));
if (ph_supplementary_ul_present) {
HANDLE_CODE(ph_supplementary_ul.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ph_info_scg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("servCellIndex", serv_cell_idx);
j.write_fieldname("ph-Uplink");
ph_ul.to_json(j);
if (ph_supplementary_ul_present) {
j.write_fieldname("ph-SupplementaryUplink");
ph_supplementary_ul.to_json(j);
}
j.end_obj();
}
// CG-Config-v1560-IEs ::= SEQUENCE
SRSASN_CODE cg_cfg_v1560_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(pscell_freq_eutra_present, 1));
HANDLE_CODE(bref.pack(scg_cell_group_cfg_eutra_present, 1));
HANDLE_CODE(bref.pack(candidate_cell_info_list_sn_eutra_present, 1));
HANDLE_CODE(bref.pack(candidate_serving_freq_list_eutra_present, 1));
HANDLE_CODE(bref.pack(need_for_gaps_present, 1));
HANDLE_CODE(bref.pack(drx_cfg_scg_present, 1));
HANDLE_CODE(bref.pack(report_cgi_request_eutra_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (pscell_freq_eutra_present) {
HANDLE_CODE(pack_integer(bref, pscell_freq_eutra, (uint32_t)0u, (uint32_t)262143u));
}
if (scg_cell_group_cfg_eutra_present) {
HANDLE_CODE(scg_cell_group_cfg_eutra.pack(bref));
}
if (candidate_cell_info_list_sn_eutra_present) {
HANDLE_CODE(candidate_cell_info_list_sn_eutra.pack(bref));
}
if (candidate_serving_freq_list_eutra_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, candidate_serving_freq_list_eutra, 1, 32, integer_packer<uint32_t>(0, 262143)));
}
if (drx_cfg_scg_present) {
HANDLE_CODE(drx_cfg_scg.pack(bref));
}
if (report_cgi_request_eutra_present) {
HANDLE_CODE(bref.pack(report_cgi_request_eutra.requested_cell_info_eutra_present, 1));
if (report_cgi_request_eutra.requested_cell_info_eutra_present) {
HANDLE_CODE(pack_integer(
bref, report_cgi_request_eutra.requested_cell_info_eutra.eutra_freq, (uint32_t)0u, (uint32_t)262143u));
HANDLE_CODE(pack_integer(bref,
report_cgi_request_eutra.requested_cell_info_eutra.cell_for_which_to_report_cgi_eutra,
(uint16_t)0u,
(uint16_t)503u));
}
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE cg_cfg_v1560_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(pscell_freq_eutra_present, 1));
HANDLE_CODE(bref.unpack(scg_cell_group_cfg_eutra_present, 1));
HANDLE_CODE(bref.unpack(candidate_cell_info_list_sn_eutra_present, 1));
HANDLE_CODE(bref.unpack(candidate_serving_freq_list_eutra_present, 1));
HANDLE_CODE(bref.unpack(need_for_gaps_present, 1));
HANDLE_CODE(bref.unpack(drx_cfg_scg_present, 1));
HANDLE_CODE(bref.unpack(report_cgi_request_eutra_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (pscell_freq_eutra_present) {
HANDLE_CODE(unpack_integer(pscell_freq_eutra, bref, (uint32_t)0u, (uint32_t)262143u));
}
if (scg_cell_group_cfg_eutra_present) {
HANDLE_CODE(scg_cell_group_cfg_eutra.unpack(bref));
}
if (candidate_cell_info_list_sn_eutra_present) {
HANDLE_CODE(candidate_cell_info_list_sn_eutra.unpack(bref));
}
if (candidate_serving_freq_list_eutra_present) {
HANDLE_CODE(unpack_dyn_seq_of(candidate_serving_freq_list_eutra, bref, 1, 32, integer_packer<uint32_t>(0, 262143)));
}
if (drx_cfg_scg_present) {
HANDLE_CODE(drx_cfg_scg.unpack(bref));
}
if (report_cgi_request_eutra_present) {
HANDLE_CODE(bref.unpack(report_cgi_request_eutra.requested_cell_info_eutra_present, 1));
if (report_cgi_request_eutra.requested_cell_info_eutra_present) {
HANDLE_CODE(unpack_integer(
report_cgi_request_eutra.requested_cell_info_eutra.eutra_freq, bref, (uint32_t)0u, (uint32_t)262143u));
HANDLE_CODE(unpack_integer(report_cgi_request_eutra.requested_cell_info_eutra.cell_for_which_to_report_cgi_eutra,
bref,
(uint16_t)0u,
(uint16_t)503u));
}
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void cg_cfg_v1560_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (pscell_freq_eutra_present) {
j.write_int("pSCellFrequencyEUTRA", pscell_freq_eutra);
}
if (scg_cell_group_cfg_eutra_present) {
j.write_str("scg-CellGroupConfigEUTRA", scg_cell_group_cfg_eutra.to_string());
}
if (candidate_cell_info_list_sn_eutra_present) {
j.write_str("candidateCellInfoListSN-EUTRA", candidate_cell_info_list_sn_eutra.to_string());
}
if (candidate_serving_freq_list_eutra_present) {
j.start_array("candidateServingFreqListEUTRA");
for (const auto& e1 : candidate_serving_freq_list_eutra) {
j.write_int(e1);
}
j.end_array();
}
if (need_for_gaps_present) {
j.write_str("needForGaps", "true");
}
if (drx_cfg_scg_present) {
j.write_fieldname("drx-ConfigSCG");
drx_cfg_scg.to_json(j);
}
if (report_cgi_request_eutra_present) {
j.write_fieldname("reportCGI-RequestEUTRA");
j.start_obj();
if (report_cgi_request_eutra.requested_cell_info_eutra_present) {
j.write_fieldname("requestedCellInfoEUTRA");
j.start_obj();
j.write_int("eutraFrequency", report_cgi_request_eutra.requested_cell_info_eutra.eutra_freq);
j.write_int("cellForWhichToReportCGI-EUTRA",
report_cgi_request_eutra.requested_cell_info_eutra.cell_for_which_to_report_cgi_eutra);
j.end_obj();
}
j.end_obj();
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
// FR-Info ::= SEQUENCE
SRSASN_CODE fr_info_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, serv_cell_idx, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(fr_type.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE fr_info_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(serv_cell_idx, bref, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(fr_type.unpack(bref));
return SRSASN_SUCCESS;
}
void fr_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("servCellIndex", serv_cell_idx);
j.write_str("fr-Type", fr_type.to_string());
j.end_obj();
}
const char* fr_info_s::fr_type_opts::to_string() const
{
static const char* options[] = {"fr1", "fr2"};
return convert_enum_idx(options, 2, value, "fr_info_s::fr_type_e_");
}
uint8_t fr_info_s::fr_type_opts::to_number() const
{
static const uint8_t options[] = {1, 2};
return map_enum_number(options, 2, value, "fr_info_s::fr_type_e_");
}
// NR-FreqInfo ::= SEQUENCE
SRSASN_CODE nr_freq_info_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(measured_freq_present, 1));
if (measured_freq_present) {
HANDLE_CODE(pack_integer(bref, measured_freq, (uint32_t)0u, (uint32_t)3279165u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE nr_freq_info_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(measured_freq_present, 1));
if (measured_freq_present) {
HANDLE_CODE(unpack_integer(measured_freq, bref, (uint32_t)0u, (uint32_t)3279165u));
}
return SRSASN_SUCCESS;
}
void nr_freq_info_s::to_json(json_writer& j) const
{
j.start_obj();
if (measured_freq_present) {
j.write_int("measuredFrequency", measured_freq);
}
j.end_obj();
}
// CG-Config-v1540-IEs ::= SEQUENCE
SRSASN_CODE cg_cfg_v1540_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(pscell_freq_present, 1));
HANDLE_CODE(bref.pack(report_cgi_request_nr_present, 1));
HANDLE_CODE(bref.pack(ph_info_scg_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (pscell_freq_present) {
HANDLE_CODE(pack_integer(bref, pscell_freq, (uint32_t)0u, (uint32_t)3279165u));
}
if (report_cgi_request_nr_present) {
HANDLE_CODE(bref.pack(report_cgi_request_nr.requested_cell_info_present, 1));
if (report_cgi_request_nr.requested_cell_info_present) {
HANDLE_CODE(
pack_integer(bref, report_cgi_request_nr.requested_cell_info.ssb_freq, (uint32_t)0u, (uint32_t)3279165u));
HANDLE_CODE(pack_integer(
bref, report_cgi_request_nr.requested_cell_info.cell_for_which_to_report_cgi, (uint16_t)0u, (uint16_t)1007u));
}
}
if (ph_info_scg_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, ph_info_scg, 1, 32));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE cg_cfg_v1540_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(pscell_freq_present, 1));
HANDLE_CODE(bref.unpack(report_cgi_request_nr_present, 1));
HANDLE_CODE(bref.unpack(ph_info_scg_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (pscell_freq_present) {
HANDLE_CODE(unpack_integer(pscell_freq, bref, (uint32_t)0u, (uint32_t)3279165u));
}
if (report_cgi_request_nr_present) {
HANDLE_CODE(bref.unpack(report_cgi_request_nr.requested_cell_info_present, 1));
if (report_cgi_request_nr.requested_cell_info_present) {
HANDLE_CODE(
unpack_integer(report_cgi_request_nr.requested_cell_info.ssb_freq, bref, (uint32_t)0u, (uint32_t)3279165u));
HANDLE_CODE(unpack_integer(
report_cgi_request_nr.requested_cell_info.cell_for_which_to_report_cgi, bref, (uint16_t)0u, (uint16_t)1007u));
}
}
if (ph_info_scg_present) {
HANDLE_CODE(unpack_dyn_seq_of(ph_info_scg, bref, 1, 32));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void cg_cfg_v1540_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (pscell_freq_present) {
j.write_int("pSCellFrequency", pscell_freq);
}
if (report_cgi_request_nr_present) {
j.write_fieldname("reportCGI-RequestNR");
j.start_obj();
if (report_cgi_request_nr.requested_cell_info_present) {
j.write_fieldname("requestedCellInfo");
j.start_obj();
j.write_int("ssbFrequency", report_cgi_request_nr.requested_cell_info.ssb_freq);
j.write_int("cellForWhichToReportCGI", report_cgi_request_nr.requested_cell_info.cell_for_which_to_report_cgi);
j.end_obj();
}
j.end_obj();
}
if (ph_info_scg_present) {
j.start_array("ph-InfoSCG");
for (const auto& e1 : ph_info_scg) {
e1.to_json(j);
}
j.end_array();
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
// ConfigRestrictModReqSCG ::= SEQUENCE
SRSASN_CODE cfg_restrict_mod_req_scg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(requested_bc_mrdc_present, 1));
HANDLE_CODE(bref.pack(requested_p_max_fr1_present, 1));
if (requested_bc_mrdc_present) {
HANDLE_CODE(requested_bc_mrdc.pack(bref));
}
if (requested_p_max_fr1_present) {
HANDLE_CODE(pack_integer(bref, requested_p_max_fr1, (int8_t)-30, (int8_t)33));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= requested_pdcch_blind_detection_scg_present;
group_flags[0] |= requested_p_max_eutra_present;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(requested_pdcch_blind_detection_scg_present, 1));
HANDLE_CODE(bref.pack(requested_p_max_eutra_present, 1));
if (requested_pdcch_blind_detection_scg_present) {
HANDLE_CODE(pack_integer(bref, requested_pdcch_blind_detection_scg, (uint8_t)1u, (uint8_t)15u));
}
if (requested_p_max_eutra_present) {
HANDLE_CODE(pack_integer(bref, requested_p_max_eutra, (int8_t)-30, (int8_t)33));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE cfg_restrict_mod_req_scg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(requested_bc_mrdc_present, 1));
HANDLE_CODE(bref.unpack(requested_p_max_fr1_present, 1));
if (requested_bc_mrdc_present) {
HANDLE_CODE(requested_bc_mrdc.unpack(bref));
}
if (requested_p_max_fr1_present) {
HANDLE_CODE(unpack_integer(requested_p_max_fr1, bref, (int8_t)-30, (int8_t)33));
}
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(requested_pdcch_blind_detection_scg_present, 1));
HANDLE_CODE(bref.unpack(requested_p_max_eutra_present, 1));
if (requested_pdcch_blind_detection_scg_present) {
HANDLE_CODE(unpack_integer(requested_pdcch_blind_detection_scg, bref, (uint8_t)1u, (uint8_t)15u));
}
if (requested_p_max_eutra_present) {
HANDLE_CODE(unpack_integer(requested_p_max_eutra, bref, (int8_t)-30, (int8_t)33));
}
}
}
return SRSASN_SUCCESS;
}
void cfg_restrict_mod_req_scg_s::to_json(json_writer& j) const
{
j.start_obj();
if (requested_bc_mrdc_present) {
j.write_fieldname("requestedBC-MRDC");
requested_bc_mrdc.to_json(j);
}
if (requested_p_max_fr1_present) {
j.write_int("requestedP-MaxFR1", requested_p_max_fr1);
}
if (ext) {
if (requested_pdcch_blind_detection_scg_present) {
j.write_int("requestedPDCCH-BlindDetectionSCG", requested_pdcch_blind_detection_scg);
}
if (requested_p_max_eutra_present) {
j.write_int("requestedP-MaxEUTRA", requested_p_max_eutra);
}
}
j.end_obj();
}
// DRX-Info ::= SEQUENCE
SRSASN_CODE drx_info_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(short_drx_present, 1));
HANDLE_CODE(drx_long_cycle_start_offset.pack(bref));
if (short_drx_present) {
HANDLE_CODE(short_drx.drx_short_cycle.pack(bref));
HANDLE_CODE(pack_integer(bref, short_drx.drx_short_cycle_timer, (uint8_t)1u, (uint8_t)16u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE drx_info_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(short_drx_present, 1));
HANDLE_CODE(drx_long_cycle_start_offset.unpack(bref));
if (short_drx_present) {
HANDLE_CODE(short_drx.drx_short_cycle.unpack(bref));
HANDLE_CODE(unpack_integer(short_drx.drx_short_cycle_timer, bref, (uint8_t)1u, (uint8_t)16u));
}
return SRSASN_SUCCESS;
}
void drx_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("drx-LongCycleStartOffset");
drx_long_cycle_start_offset.to_json(j);
if (short_drx_present) {
j.write_fieldname("shortDRX");
j.start_obj();
j.write_str("drx-ShortCycle", short_drx.drx_short_cycle.to_string());
j.write_int("drx-ShortCycleTimer", short_drx.drx_short_cycle_timer);
j.end_obj();
}
j.end_obj();
}
void drx_info_s::drx_long_cycle_start_offset_c_::destroy_() {}
void drx_info_s::drx_long_cycle_start_offset_c_::set(types::options e)
{
destroy_();
type_ = e;
}
drx_info_s::drx_long_cycle_start_offset_c_::drx_long_cycle_start_offset_c_(
const drx_info_s::drx_long_cycle_start_offset_c_& other)
{
type_ = other.type();
switch (type_) {
case types::ms10:
c.init(other.c.get<uint8_t>());
break;
case types::ms20:
c.init(other.c.get<uint8_t>());
break;
case types::ms32:
c.init(other.c.get<uint8_t>());
break;
case types::ms40:
c.init(other.c.get<uint8_t>());
break;
case types::ms60:
c.init(other.c.get<uint8_t>());
break;
case types::ms64:
c.init(other.c.get<uint8_t>());
break;
case types::ms70:
c.init(other.c.get<uint8_t>());
break;
case types::ms80:
c.init(other.c.get<uint8_t>());
break;
case types::ms128:
c.init(other.c.get<uint8_t>());
break;
case types::ms160:
c.init(other.c.get<uint8_t>());
break;
case types::ms256:
c.init(other.c.get<uint16_t>());
break;
case types::ms320:
c.init(other.c.get<uint16_t>());
break;
case types::ms512:
c.init(other.c.get<uint16_t>());
break;
case types::ms640:
c.init(other.c.get<uint16_t>());
break;
case types::ms1024:
c.init(other.c.get<uint16_t>());
break;
case types::ms1280:
c.init(other.c.get<uint16_t>());
break;
case types::ms2048:
c.init(other.c.get<uint16_t>());
break;
case types::ms2560:
c.init(other.c.get<uint16_t>());
break;
case types::ms5120:
c.init(other.c.get<uint16_t>());
break;
case types::ms10240:
c.init(other.c.get<uint16_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "drx_info_s::drx_long_cycle_start_offset_c_");
}
}
drx_info_s::drx_long_cycle_start_offset_c_&
drx_info_s::drx_long_cycle_start_offset_c_::operator=(const drx_info_s::drx_long_cycle_start_offset_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::ms10:
c.set(other.c.get<uint8_t>());
break;
case types::ms20:
c.set(other.c.get<uint8_t>());
break;
case types::ms32:
c.set(other.c.get<uint8_t>());
break;
case types::ms40:
c.set(other.c.get<uint8_t>());
break;
case types::ms60:
c.set(other.c.get<uint8_t>());
break;
case types::ms64:
c.set(other.c.get<uint8_t>());
break;
case types::ms70:
c.set(other.c.get<uint8_t>());
break;
case types::ms80:
c.set(other.c.get<uint8_t>());
break;
case types::ms128:
c.set(other.c.get<uint8_t>());
break;
case types::ms160:
c.set(other.c.get<uint8_t>());
break;
case types::ms256:
c.set(other.c.get<uint16_t>());
break;
case types::ms320:
c.set(other.c.get<uint16_t>());
break;
case types::ms512:
c.set(other.c.get<uint16_t>());
break;
case types::ms640:
c.set(other.c.get<uint16_t>());
break;
case types::ms1024:
c.set(other.c.get<uint16_t>());
break;
case types::ms1280:
c.set(other.c.get<uint16_t>());
break;
case types::ms2048:
c.set(other.c.get<uint16_t>());
break;
case types::ms2560:
c.set(other.c.get<uint16_t>());
break;
case types::ms5120:
c.set(other.c.get<uint16_t>());
break;
case types::ms10240:
c.set(other.c.get<uint16_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "drx_info_s::drx_long_cycle_start_offset_c_");
}
return *this;
}
uint8_t& drx_info_s::drx_long_cycle_start_offset_c_::set_ms10()
{
set(types::ms10);
return c.get<uint8_t>();
}
uint8_t& drx_info_s::drx_long_cycle_start_offset_c_::set_ms20()
{
set(types::ms20);
return c.get<uint8_t>();
}
uint8_t& drx_info_s::drx_long_cycle_start_offset_c_::set_ms32()
{
set(types::ms32);
return c.get<uint8_t>();
}
uint8_t& drx_info_s::drx_long_cycle_start_offset_c_::set_ms40()
{
set(types::ms40);
return c.get<uint8_t>();
}
uint8_t& drx_info_s::drx_long_cycle_start_offset_c_::set_ms60()
{
set(types::ms60);
return c.get<uint8_t>();
}
uint8_t& drx_info_s::drx_long_cycle_start_offset_c_::set_ms64()
{
set(types::ms64);
return c.get<uint8_t>();
}
uint8_t& drx_info_s::drx_long_cycle_start_offset_c_::set_ms70()
{
set(types::ms70);
return c.get<uint8_t>();
}
uint8_t& drx_info_s::drx_long_cycle_start_offset_c_::set_ms80()
{
set(types::ms80);
return c.get<uint8_t>();
}
uint8_t& drx_info_s::drx_long_cycle_start_offset_c_::set_ms128()
{
set(types::ms128);
return c.get<uint8_t>();
}
uint8_t& drx_info_s::drx_long_cycle_start_offset_c_::set_ms160()
{
set(types::ms160);
return c.get<uint8_t>();
}
uint16_t& drx_info_s::drx_long_cycle_start_offset_c_::set_ms256()
{
set(types::ms256);
return c.get<uint16_t>();
}
uint16_t& drx_info_s::drx_long_cycle_start_offset_c_::set_ms320()
{
set(types::ms320);
return c.get<uint16_t>();
}
uint16_t& drx_info_s::drx_long_cycle_start_offset_c_::set_ms512()
{
set(types::ms512);
return c.get<uint16_t>();
}
uint16_t& drx_info_s::drx_long_cycle_start_offset_c_::set_ms640()
{
set(types::ms640);
return c.get<uint16_t>();
}
uint16_t& drx_info_s::drx_long_cycle_start_offset_c_::set_ms1024()
{
set(types::ms1024);
return c.get<uint16_t>();
}
uint16_t& drx_info_s::drx_long_cycle_start_offset_c_::set_ms1280()
{
set(types::ms1280);
return c.get<uint16_t>();
}
uint16_t& drx_info_s::drx_long_cycle_start_offset_c_::set_ms2048()
{
set(types::ms2048);
return c.get<uint16_t>();
}
uint16_t& drx_info_s::drx_long_cycle_start_offset_c_::set_ms2560()
{
set(types::ms2560);
return c.get<uint16_t>();
}
uint16_t& drx_info_s::drx_long_cycle_start_offset_c_::set_ms5120()
{
set(types::ms5120);
return c.get<uint16_t>();
}
uint16_t& drx_info_s::drx_long_cycle_start_offset_c_::set_ms10240()
{
set(types::ms10240);
return c.get<uint16_t>();
}
void drx_info_s::drx_long_cycle_start_offset_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::ms10:
j.write_int("ms10", c.get<uint8_t>());
break;
case types::ms20:
j.write_int("ms20", c.get<uint8_t>());
break;
case types::ms32:
j.write_int("ms32", c.get<uint8_t>());
break;
case types::ms40:
j.write_int("ms40", c.get<uint8_t>());
break;
case types::ms60:
j.write_int("ms60", c.get<uint8_t>());
break;
case types::ms64:
j.write_int("ms64", c.get<uint8_t>());
break;
case types::ms70:
j.write_int("ms70", c.get<uint8_t>());
break;
case types::ms80:
j.write_int("ms80", c.get<uint8_t>());
break;
case types::ms128:
j.write_int("ms128", c.get<uint8_t>());
break;
case types::ms160:
j.write_int("ms160", c.get<uint8_t>());
break;
case types::ms256:
j.write_int("ms256", c.get<uint16_t>());
break;
case types::ms320:
j.write_int("ms320", c.get<uint16_t>());
break;
case types::ms512:
j.write_int("ms512", c.get<uint16_t>());
break;
case types::ms640:
j.write_int("ms640", c.get<uint16_t>());
break;
case types::ms1024:
j.write_int("ms1024", c.get<uint16_t>());
break;
case types::ms1280:
j.write_int("ms1280", c.get<uint16_t>());
break;
case types::ms2048:
j.write_int("ms2048", c.get<uint16_t>());
break;
case types::ms2560:
j.write_int("ms2560", c.get<uint16_t>());
break;
case types::ms5120:
j.write_int("ms5120", c.get<uint16_t>());
break;
case types::ms10240:
j.write_int("ms10240", c.get<uint16_t>());
break;
default:
log_invalid_choice_id(type_, "drx_info_s::drx_long_cycle_start_offset_c_");
}
j.end_obj();
}
SRSASN_CODE drx_info_s::drx_long_cycle_start_offset_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::ms10:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)9u));
break;
case types::ms20:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)19u));
break;
case types::ms32:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)31u));
break;
case types::ms40:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)39u));
break;
case types::ms60:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)59u));
break;
case types::ms64:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)63u));
break;
case types::ms70:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)69u));
break;
case types::ms80:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)79u));
break;
case types::ms128:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)127u));
break;
case types::ms160:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)159u));
break;
case types::ms256:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)255u));
break;
case types::ms320:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)319u));
break;
case types::ms512:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)511u));
break;
case types::ms640:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)639u));
break;
case types::ms1024:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)1023u));
break;
case types::ms1280:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)1279u));
break;
case types::ms2048:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)2047u));
break;
case types::ms2560:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)2559u));
break;
case types::ms5120:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)5119u));
break;
case types::ms10240:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)10239u));
break;
default:
log_invalid_choice_id(type_, "drx_info_s::drx_long_cycle_start_offset_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE drx_info_s::drx_long_cycle_start_offset_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::ms10:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)9u));
break;
case types::ms20:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)19u));
break;
case types::ms32:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)31u));
break;
case types::ms40:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)39u));
break;
case types::ms60:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)59u));
break;
case types::ms64:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)63u));
break;
case types::ms70:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)69u));
break;
case types::ms80:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)79u));
break;
case types::ms128:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)127u));
break;
case types::ms160:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)159u));
break;
case types::ms256:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)255u));
break;
case types::ms320:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)319u));
break;
case types::ms512:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)511u));
break;
case types::ms640:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)639u));
break;
case types::ms1024:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)1023u));
break;
case types::ms1280:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)1279u));
break;
case types::ms2048:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)2047u));
break;
case types::ms2560:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)2559u));
break;
case types::ms5120:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)5119u));
break;
case types::ms10240:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)10239u));
break;
default:
log_invalid_choice_id(type_, "drx_info_s::drx_long_cycle_start_offset_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* drx_info_s::drx_long_cycle_start_offset_c_::types_opts::to_string() const
{
static const char* options[] = {"ms10", "ms20", "ms32", "ms40", "ms60", "ms64", "ms70",
"ms80", "ms128", "ms160", "ms256", "ms320", "ms512", "ms640",
"ms1024", "ms1280", "ms2048", "ms2560", "ms5120", "ms10240"};
return convert_enum_idx(options, 20, value, "drx_info_s::drx_long_cycle_start_offset_c_::types");
}
uint16_t drx_info_s::drx_long_cycle_start_offset_c_::types_opts::to_number() const
{
static const uint16_t options[] = {10, 20, 32, 40, 60, 64, 70, 80, 128, 160,
256, 320, 512, 640, 1024, 1280, 2048, 2560, 5120, 10240};
return map_enum_number(options, 20, value, "drx_info_s::drx_long_cycle_start_offset_c_::types");
}
const char* drx_info_s::short_drx_s_::drx_short_cycle_opts::to_string() const
{
static const char* options[] = {"ms2", "ms3", "ms4", "ms5", "ms6", "ms7", "ms8", "ms10",
"ms14", "ms16", "ms20", "ms30", "ms32", "ms35", "ms40", "ms64",
"ms80", "ms128", "ms160", "ms256", "ms320", "ms512", "ms640", "spare9",
"spare8", "spare7", "spare6", "spare5", "spare4", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 32, value, "drx_info_s::short_drx_s_::drx_short_cycle_e_");
}
uint16_t drx_info_s::short_drx_s_::drx_short_cycle_opts::to_number() const
{
static const uint16_t options[] = {2, 3, 4, 5, 6, 7, 8, 10, 14, 16, 20, 30,
32, 35, 40, 64, 80, 128, 160, 256, 320, 512, 640};
return map_enum_number(options, 23, value, "drx_info_s::short_drx_s_::drx_short_cycle_e_");
}
// MeasConfigSN ::= SEQUENCE
SRSASN_CODE meas_cfg_sn_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(measured_frequencies_sn_present, 1));
if (measured_frequencies_sn_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, measured_frequencies_sn, 1, 32));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_cfg_sn_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(measured_frequencies_sn_present, 1));
if (measured_frequencies_sn_present) {
HANDLE_CODE(unpack_dyn_seq_of(measured_frequencies_sn, bref, 1, 32));
}
return SRSASN_SUCCESS;
}
void meas_cfg_sn_s::to_json(json_writer& j) const
{
j.start_obj();
if (measured_frequencies_sn_present) {
j.start_array("measuredFrequenciesSN");
for (const auto& e1 : measured_frequencies_sn) {
e1.to_json(j);
}
j.end_array();
}
j.end_obj();
}
// CG-Config-IEs ::= SEQUENCE
SRSASN_CODE cg_cfg_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(scg_cell_group_cfg_present, 1));
HANDLE_CODE(bref.pack(scg_rb_cfg_present, 1));
HANDLE_CODE(bref.pack(cfg_restrict_mod_req_present, 1));
HANDLE_CODE(bref.pack(drx_info_scg_present, 1));
HANDLE_CODE(bref.pack(candidate_cell_info_list_sn_present, 1));
HANDLE_CODE(bref.pack(meas_cfg_sn_present, 1));
HANDLE_CODE(bref.pack(sel_band_combination_present, 1));
HANDLE_CODE(bref.pack(fr_info_list_scg_present, 1));
HANDLE_CODE(bref.pack(candidate_serving_freq_list_nr_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (scg_cell_group_cfg_present) {
HANDLE_CODE(scg_cell_group_cfg.pack(bref));
}
if (scg_rb_cfg_present) {
HANDLE_CODE(scg_rb_cfg.pack(bref));
}
if (cfg_restrict_mod_req_present) {
HANDLE_CODE(cfg_restrict_mod_req.pack(bref));
}
if (drx_info_scg_present) {
HANDLE_CODE(drx_info_scg.pack(bref));
}
if (candidate_cell_info_list_sn_present) {
HANDLE_CODE(candidate_cell_info_list_sn.pack(bref));
}
if (meas_cfg_sn_present) {
HANDLE_CODE(meas_cfg_sn.pack(bref));
}
if (sel_band_combination_present) {
HANDLE_CODE(sel_band_combination.pack(bref));
}
if (fr_info_list_scg_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, fr_info_list_scg, 1, 31));
}
if (candidate_serving_freq_list_nr_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, candidate_serving_freq_list_nr, 1, 32, integer_packer<uint32_t>(0, 3279165)));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE cg_cfg_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(scg_cell_group_cfg_present, 1));
HANDLE_CODE(bref.unpack(scg_rb_cfg_present, 1));
HANDLE_CODE(bref.unpack(cfg_restrict_mod_req_present, 1));
HANDLE_CODE(bref.unpack(drx_info_scg_present, 1));
HANDLE_CODE(bref.unpack(candidate_cell_info_list_sn_present, 1));
HANDLE_CODE(bref.unpack(meas_cfg_sn_present, 1));
HANDLE_CODE(bref.unpack(sel_band_combination_present, 1));
HANDLE_CODE(bref.unpack(fr_info_list_scg_present, 1));
HANDLE_CODE(bref.unpack(candidate_serving_freq_list_nr_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (scg_cell_group_cfg_present) {
HANDLE_CODE(scg_cell_group_cfg.unpack(bref));
}
if (scg_rb_cfg_present) {
HANDLE_CODE(scg_rb_cfg.unpack(bref));
}
if (cfg_restrict_mod_req_present) {
HANDLE_CODE(cfg_restrict_mod_req.unpack(bref));
}
if (drx_info_scg_present) {
HANDLE_CODE(drx_info_scg.unpack(bref));
}
if (candidate_cell_info_list_sn_present) {
HANDLE_CODE(candidate_cell_info_list_sn.unpack(bref));
}
if (meas_cfg_sn_present) {
HANDLE_CODE(meas_cfg_sn.unpack(bref));
}
if (sel_band_combination_present) {
HANDLE_CODE(sel_band_combination.unpack(bref));
}
if (fr_info_list_scg_present) {
HANDLE_CODE(unpack_dyn_seq_of(fr_info_list_scg, bref, 1, 31));
}
if (candidate_serving_freq_list_nr_present) {
HANDLE_CODE(unpack_dyn_seq_of(candidate_serving_freq_list_nr, bref, 1, 32, integer_packer<uint32_t>(0, 3279165)));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void cg_cfg_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (scg_cell_group_cfg_present) {
j.write_str("scg-CellGroupConfig", scg_cell_group_cfg.to_string());
}
if (scg_rb_cfg_present) {
j.write_str("scg-RB-Config", scg_rb_cfg.to_string());
}
if (cfg_restrict_mod_req_present) {
j.write_fieldname("configRestrictModReq");
cfg_restrict_mod_req.to_json(j);
}
if (drx_info_scg_present) {
j.write_fieldname("drx-InfoSCG");
drx_info_scg.to_json(j);
}
if (candidate_cell_info_list_sn_present) {
j.write_str("candidateCellInfoListSN", candidate_cell_info_list_sn.to_string());
}
if (meas_cfg_sn_present) {
j.write_fieldname("measConfigSN");
meas_cfg_sn.to_json(j);
}
if (sel_band_combination_present) {
j.write_fieldname("selectedBandCombination");
sel_band_combination.to_json(j);
}
if (fr_info_list_scg_present) {
j.start_array("fr-InfoListSCG");
for (const auto& e1 : fr_info_list_scg) {
e1.to_json(j);
}
j.end_array();
}
if (candidate_serving_freq_list_nr_present) {
j.start_array("candidateServingFreqListNR");
for (const auto& e1 : candidate_serving_freq_list_nr) {
j.write_int(e1);
}
j.end_array();
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
// CG-Config ::= SEQUENCE
SRSASN_CODE cg_cfg_s::pack(bit_ref& bref) const
{
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE cg_cfg_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void cg_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void cg_cfg_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
cg_cfg_s::crit_exts_c_::c1_c_& cg_cfg_s::crit_exts_c_::set_c1()
{
set(types::c1);
return c;
}
void cg_cfg_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void cg_cfg_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::c1:
j.write_fieldname("c1");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "cg_cfg_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE cg_cfg_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::c1:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "cg_cfg_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE cg_cfg_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::c1:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "cg_cfg_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
void cg_cfg_s::crit_exts_c_::c1_c_::set(types::options e)
{
type_ = e;
}
cg_cfg_ies_s& cg_cfg_s::crit_exts_c_::c1_c_::set_cg_cfg()
{
set(types::cg_cfg);
return c;
}
void cg_cfg_s::crit_exts_c_::c1_c_::set_spare3()
{
set(types::spare3);
}
void cg_cfg_s::crit_exts_c_::c1_c_::set_spare2()
{
set(types::spare2);
}
void cg_cfg_s::crit_exts_c_::c1_c_::set_spare1()
{
set(types::spare1);
}
void cg_cfg_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::cg_cfg:
j.write_fieldname("cg-Config");
c.to_json(j);
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "cg_cfg_s::crit_exts_c_::c1_c_");
}
j.end_obj();
}
SRSASN_CODE cg_cfg_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::cg_cfg:
HANDLE_CODE(c.pack(bref));
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "cg_cfg_s::crit_exts_c_::c1_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE cg_cfg_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::cg_cfg:
HANDLE_CODE(c.unpack(bref));
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "cg_cfg_s::crit_exts_c_::c1_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* cg_cfg_s::crit_exts_c_::c1_c_::types_opts::to_string() const
{
static const char* options[] = {"cg-Config", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 4, value, "cg_cfg_s::crit_exts_c_::c1_c_::types");
}
const char* cg_cfg_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"c1", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "cg_cfg_s::crit_exts_c_::types");
}
uint8_t cg_cfg_s::crit_exts_c_::types_opts::to_number() const
{
static const uint8_t options[] = {1};
return map_enum_number(options, 1, value, "cg_cfg_s::crit_exts_c_::types");
}
// CG-ConfigInfo-v1590-IEs ::= SEQUENCE
SRSASN_CODE cg_cfg_info_v1590_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(serv_frequencies_mn_nr_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (serv_frequencies_mn_nr_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, serv_frequencies_mn_nr, 1, 31, integer_packer<uint32_t>(0, 3279165)));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE cg_cfg_info_v1590_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(serv_frequencies_mn_nr_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (serv_frequencies_mn_nr_present) {
HANDLE_CODE(unpack_dyn_seq_of(serv_frequencies_mn_nr, bref, 1, 31, integer_packer<uint32_t>(0, 3279165)));
}
return SRSASN_SUCCESS;
}
void cg_cfg_info_v1590_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (serv_frequencies_mn_nr_present) {
j.start_array("servFrequenciesMN-NR");
for (const auto& e1 : serv_frequencies_mn_nr) {
j.write_int(e1);
}
j.end_array();
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// PH-UplinkCarrierMCG ::= SEQUENCE
SRSASN_CODE ph_ul_carrier_mcg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(ph_type1or3.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE ph_ul_carrier_mcg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(ph_type1or3.unpack(bref));
return SRSASN_SUCCESS;
}
void ph_ul_carrier_mcg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("ph-Type1or3", ph_type1or3.to_string());
j.end_obj();
}
const char* ph_ul_carrier_mcg_s::ph_type1or3_opts::to_string() const
{
static const char* options[] = {"type1", "type3"};
return convert_enum_idx(options, 2, value, "ph_ul_carrier_mcg_s::ph_type1or3_e_");
}
uint8_t ph_ul_carrier_mcg_s::ph_type1or3_opts::to_number() const
{
static const uint8_t options[] = {1, 3};
return map_enum_number(options, 2, value, "ph_ul_carrier_mcg_s::ph_type1or3_e_");
}
// CG-ConfigInfo-v1570-IEs ::= SEQUENCE
SRSASN_CODE cg_cfg_info_v1570_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(sftd_freq_list_nr_present, 1));
HANDLE_CODE(bref.pack(sftd_freq_list_eutra_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (sftd_freq_list_nr_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, sftd_freq_list_nr, 1, 3, integer_packer<uint32_t>(0, 3279165)));
}
if (sftd_freq_list_eutra_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, sftd_freq_list_eutra, 1, 3, integer_packer<uint32_t>(0, 262143)));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE cg_cfg_info_v1570_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(sftd_freq_list_nr_present, 1));
HANDLE_CODE(bref.unpack(sftd_freq_list_eutra_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (sftd_freq_list_nr_present) {
HANDLE_CODE(unpack_dyn_seq_of(sftd_freq_list_nr, bref, 1, 3, integer_packer<uint32_t>(0, 3279165)));
}
if (sftd_freq_list_eutra_present) {
HANDLE_CODE(unpack_dyn_seq_of(sftd_freq_list_eutra, bref, 1, 3, integer_packer<uint32_t>(0, 262143)));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void cg_cfg_info_v1570_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (sftd_freq_list_nr_present) {
j.start_array("sftdFrequencyList-NR");
for (const auto& e1 : sftd_freq_list_nr) {
j.write_int(e1);
}
j.end_array();
}
if (sftd_freq_list_eutra_present) {
j.start_array("sftdFrequencyList-EUTRA");
for (const auto& e1 : sftd_freq_list_eutra) {
j.write_int(e1);
}
j.end_array();
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
// PH-InfoMCG ::= SEQUENCE
SRSASN_CODE ph_info_mcg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(ph_supplementary_ul_present, 1));
HANDLE_CODE(pack_integer(bref, serv_cell_idx, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(ph_ul.pack(bref));
if (ph_supplementary_ul_present) {
HANDLE_CODE(ph_supplementary_ul.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ph_info_mcg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(ph_supplementary_ul_present, 1));
HANDLE_CODE(unpack_integer(serv_cell_idx, bref, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(ph_ul.unpack(bref));
if (ph_supplementary_ul_present) {
HANDLE_CODE(ph_supplementary_ul.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ph_info_mcg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("servCellIndex", serv_cell_idx);
j.write_fieldname("ph-Uplink");
ph_ul.to_json(j);
if (ph_supplementary_ul_present) {
j.write_fieldname("ph-SupplementaryUplink");
ph_supplementary_ul.to_json(j);
}
j.end_obj();
}
// CG-ConfigInfo-v1560-IEs ::= SEQUENCE
SRSASN_CODE cg_cfg_info_v1560_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(candidate_cell_info_list_mn_eutra_present, 1));
HANDLE_CODE(bref.pack(candidate_cell_info_list_sn_eutra_present, 1));
HANDLE_CODE(bref.pack(source_cfg_scg_eutra_present, 1));
HANDLE_CODE(bref.pack(scg_fail_info_eutra_present, 1));
HANDLE_CODE(bref.pack(drx_cfg_mcg_present, 1));
HANDLE_CODE(bref.pack(meas_result_report_cgi_eutra_present, 1));
HANDLE_CODE(bref.pack(meas_result_cell_list_sftd_eutra_present, 1));
HANDLE_CODE(bref.pack(fr_info_list_mcg_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (candidate_cell_info_list_mn_eutra_present) {
HANDLE_CODE(candidate_cell_info_list_mn_eutra.pack(bref));
}
if (candidate_cell_info_list_sn_eutra_present) {
HANDLE_CODE(candidate_cell_info_list_sn_eutra.pack(bref));
}
if (source_cfg_scg_eutra_present) {
HANDLE_CODE(source_cfg_scg_eutra.pack(bref));
}
if (scg_fail_info_eutra_present) {
HANDLE_CODE(scg_fail_info_eutra.fail_type_eutra.pack(bref));
HANDLE_CODE(scg_fail_info_eutra.meas_result_scg_eutra.pack(bref));
}
if (drx_cfg_mcg_present) {
HANDLE_CODE(drx_cfg_mcg.pack(bref));
}
if (meas_result_report_cgi_eutra_present) {
HANDLE_CODE(pack_integer(bref, meas_result_report_cgi_eutra.eutra_freq, (uint32_t)0u, (uint32_t)262143u));
HANDLE_CODE(pack_integer(
bref, meas_result_report_cgi_eutra.cell_for_which_to_report_cgi_eutra, (uint16_t)0u, (uint16_t)503u));
HANDLE_CODE(meas_result_report_cgi_eutra.cgi_info_eutra.pack(bref));
}
if (meas_result_cell_list_sftd_eutra_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_cell_list_sftd_eutra, 1, 3));
}
if (fr_info_list_mcg_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, fr_info_list_mcg, 1, 31));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE cg_cfg_info_v1560_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(candidate_cell_info_list_mn_eutra_present, 1));
HANDLE_CODE(bref.unpack(candidate_cell_info_list_sn_eutra_present, 1));
HANDLE_CODE(bref.unpack(source_cfg_scg_eutra_present, 1));
HANDLE_CODE(bref.unpack(scg_fail_info_eutra_present, 1));
HANDLE_CODE(bref.unpack(drx_cfg_mcg_present, 1));
HANDLE_CODE(bref.unpack(meas_result_report_cgi_eutra_present, 1));
HANDLE_CODE(bref.unpack(meas_result_cell_list_sftd_eutra_present, 1));
HANDLE_CODE(bref.unpack(fr_info_list_mcg_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (candidate_cell_info_list_mn_eutra_present) {
HANDLE_CODE(candidate_cell_info_list_mn_eutra.unpack(bref));
}
if (candidate_cell_info_list_sn_eutra_present) {
HANDLE_CODE(candidate_cell_info_list_sn_eutra.unpack(bref));
}
if (source_cfg_scg_eutra_present) {
HANDLE_CODE(source_cfg_scg_eutra.unpack(bref));
}
if (scg_fail_info_eutra_present) {
HANDLE_CODE(scg_fail_info_eutra.fail_type_eutra.unpack(bref));
HANDLE_CODE(scg_fail_info_eutra.meas_result_scg_eutra.unpack(bref));
}
if (drx_cfg_mcg_present) {
HANDLE_CODE(drx_cfg_mcg.unpack(bref));
}
if (meas_result_report_cgi_eutra_present) {
HANDLE_CODE(unpack_integer(meas_result_report_cgi_eutra.eutra_freq, bref, (uint32_t)0u, (uint32_t)262143u));
HANDLE_CODE(unpack_integer(
meas_result_report_cgi_eutra.cell_for_which_to_report_cgi_eutra, bref, (uint16_t)0u, (uint16_t)503u));
HANDLE_CODE(meas_result_report_cgi_eutra.cgi_info_eutra.unpack(bref));
}
if (meas_result_cell_list_sftd_eutra_present) {
HANDLE_CODE(unpack_dyn_seq_of(meas_result_cell_list_sftd_eutra, bref, 1, 3));
}
if (fr_info_list_mcg_present) {
HANDLE_CODE(unpack_dyn_seq_of(fr_info_list_mcg, bref, 1, 31));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void cg_cfg_info_v1560_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (candidate_cell_info_list_mn_eutra_present) {
j.write_str("candidateCellInfoListMN-EUTRA", candidate_cell_info_list_mn_eutra.to_string());
}
if (candidate_cell_info_list_sn_eutra_present) {
j.write_str("candidateCellInfoListSN-EUTRA", candidate_cell_info_list_sn_eutra.to_string());
}
if (source_cfg_scg_eutra_present) {
j.write_str("sourceConfigSCG-EUTRA", source_cfg_scg_eutra.to_string());
}
if (scg_fail_info_eutra_present) {
j.write_fieldname("scgFailureInfoEUTRA");
j.start_obj();
j.write_str("failureTypeEUTRA", scg_fail_info_eutra.fail_type_eutra.to_string());
j.write_str("measResultSCG-EUTRA", scg_fail_info_eutra.meas_result_scg_eutra.to_string());
j.end_obj();
}
if (drx_cfg_mcg_present) {
j.write_fieldname("drx-ConfigMCG");
drx_cfg_mcg.to_json(j);
}
if (meas_result_report_cgi_eutra_present) {
j.write_fieldname("measResultReportCGI-EUTRA");
j.start_obj();
j.write_int("eutraFrequency", meas_result_report_cgi_eutra.eutra_freq);
j.write_int("cellForWhichToReportCGI-EUTRA", meas_result_report_cgi_eutra.cell_for_which_to_report_cgi_eutra);
j.write_fieldname("cgi-InfoEUTRA");
meas_result_report_cgi_eutra.cgi_info_eutra.to_json(j);
j.end_obj();
}
if (meas_result_cell_list_sftd_eutra_present) {
j.start_array("measResultCellListSFTD-EUTRA");
for (const auto& e1 : meas_result_cell_list_sftd_eutra) {
e1.to_json(j);
}
j.end_array();
}
if (fr_info_list_mcg_present) {
j.start_array("fr-InfoListMCG");
for (const auto& e1 : fr_info_list_mcg) {
e1.to_json(j);
}
j.end_array();
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
const char* cg_cfg_info_v1560_ies_s::scg_fail_info_eutra_s_::fail_type_eutra_opts::to_string() const
{
static const char* options[] = {"t313-Expiry", "randomAccessProblem", "rlc-MaxNumRetx", "scg-ChangeFailure"};
return convert_enum_idx(options, 4, value, "cg_cfg_info_v1560_ies_s::scg_fail_info_eutra_s_::fail_type_eutra_e_");
}
uint16_t cg_cfg_info_v1560_ies_s::scg_fail_info_eutra_s_::fail_type_eutra_opts::to_number() const
{
static const uint16_t options[] = {313};
return map_enum_number(options, 1, value, "cg_cfg_info_v1560_ies_s::scg_fail_info_eutra_s_::fail_type_eutra_e_");
}
// CG-ConfigInfo-v1540-IEs ::= SEQUENCE
SRSASN_CODE cg_cfg_info_v1540_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(ph_info_mcg_present, 1));
HANDLE_CODE(bref.pack(meas_result_report_cgi_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (ph_info_mcg_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, ph_info_mcg, 1, 32));
}
if (meas_result_report_cgi_present) {
HANDLE_CODE(pack_integer(bref, meas_result_report_cgi.ssb_freq, (uint32_t)0u, (uint32_t)3279165u));
HANDLE_CODE(pack_integer(bref, meas_result_report_cgi.cell_for_which_to_report_cgi, (uint16_t)0u, (uint16_t)1007u));
HANDLE_CODE(meas_result_report_cgi.cgi_info.pack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE cg_cfg_info_v1540_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(ph_info_mcg_present, 1));
HANDLE_CODE(bref.unpack(meas_result_report_cgi_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (ph_info_mcg_present) {
HANDLE_CODE(unpack_dyn_seq_of(ph_info_mcg, bref, 1, 32));
}
if (meas_result_report_cgi_present) {
HANDLE_CODE(unpack_integer(meas_result_report_cgi.ssb_freq, bref, (uint32_t)0u, (uint32_t)3279165u));
HANDLE_CODE(
unpack_integer(meas_result_report_cgi.cell_for_which_to_report_cgi, bref, (uint16_t)0u, (uint16_t)1007u));
HANDLE_CODE(meas_result_report_cgi.cgi_info.unpack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void cg_cfg_info_v1540_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (ph_info_mcg_present) {
j.start_array("ph-InfoMCG");
for (const auto& e1 : ph_info_mcg) {
e1.to_json(j);
}
j.end_array();
}
if (meas_result_report_cgi_present) {
j.write_fieldname("measResultReportCGI");
j.start_obj();
j.write_int("ssbFrequency", meas_result_report_cgi.ssb_freq);
j.write_int("cellForWhichToReportCGI", meas_result_report_cgi.cell_for_which_to_report_cgi);
j.write_fieldname("cgi-Info");
meas_result_report_cgi.cgi_info.to_json(j);
j.end_obj();
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
// MRDC-AssistanceInfo ::= SEQUENCE
SRSASN_CODE mrdc_assist_info_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(pack_dyn_seq_of(bref, affected_carrier_freq_comb_info_list_mrdc, 1, 128));
return SRSASN_SUCCESS;
}
SRSASN_CODE mrdc_assist_info_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(unpack_dyn_seq_of(affected_carrier_freq_comb_info_list_mrdc, bref, 1, 128));
return SRSASN_SUCCESS;
}
void mrdc_assist_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.start_array("affectedCarrierFreqCombInfoListMRDC");
for (const auto& e1 : affected_carrier_freq_comb_info_list_mrdc) {
e1.to_json(j);
}
j.end_array();
j.end_obj();
}
// MeasConfigMN ::= SEQUENCE
SRSASN_CODE meas_cfg_mn_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(measured_frequencies_mn_present, 1));
HANDLE_CODE(bref.pack(meas_gap_cfg_present, 1));
HANDLE_CODE(bref.pack(gap_purpose_present, 1));
if (measured_frequencies_mn_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, measured_frequencies_mn, 1, 32));
}
if (meas_gap_cfg_present) {
HANDLE_CODE(meas_gap_cfg.pack(bref));
}
if (gap_purpose_present) {
HANDLE_CODE(gap_purpose.pack(bref));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= meas_gap_cfg_fr2.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(meas_gap_cfg_fr2.is_present(), 1));
if (meas_gap_cfg_fr2.is_present()) {
HANDLE_CODE(meas_gap_cfg_fr2->pack(bref));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_cfg_mn_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(measured_frequencies_mn_present, 1));
HANDLE_CODE(bref.unpack(meas_gap_cfg_present, 1));
HANDLE_CODE(bref.unpack(gap_purpose_present, 1));
if (measured_frequencies_mn_present) {
HANDLE_CODE(unpack_dyn_seq_of(measured_frequencies_mn, bref, 1, 32));
}
if (meas_gap_cfg_present) {
HANDLE_CODE(meas_gap_cfg.unpack(bref));
}
if (gap_purpose_present) {
HANDLE_CODE(gap_purpose.unpack(bref));
}
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool meas_gap_cfg_fr2_present;
HANDLE_CODE(bref.unpack(meas_gap_cfg_fr2_present, 1));
meas_gap_cfg_fr2.set_present(meas_gap_cfg_fr2_present);
if (meas_gap_cfg_fr2.is_present()) {
HANDLE_CODE(meas_gap_cfg_fr2->unpack(bref));
}
}
}
return SRSASN_SUCCESS;
}
void meas_cfg_mn_s::to_json(json_writer& j) const
{
j.start_obj();
if (measured_frequencies_mn_present) {
j.start_array("measuredFrequenciesMN");
for (const auto& e1 : measured_frequencies_mn) {
e1.to_json(j);
}
j.end_array();
}
if (meas_gap_cfg_present) {
j.write_fieldname("measGapConfig");
meas_gap_cfg.to_json(j);
}
if (gap_purpose_present) {
j.write_str("gapPurpose", gap_purpose.to_string());
}
if (ext) {
if (meas_gap_cfg_fr2.is_present()) {
j.write_fieldname("measGapConfigFR2");
meas_gap_cfg_fr2->to_json(j);
}
}
j.end_obj();
}
const char* meas_cfg_mn_s::gap_purpose_opts::to_string() const
{
static const char* options[] = {"perUE", "perFR1"};
return convert_enum_idx(options, 2, value, "meas_cfg_mn_s::gap_purpose_e_");
}
uint8_t meas_cfg_mn_s::gap_purpose_opts::to_number() const
{
if (value == per_fr1) {
return 1;
}
invalid_enum_number(value, "meas_cfg_mn_s::gap_purpose_e_");
return 0;
}
// CG-ConfigInfo-IEs ::= SEQUENCE
SRSASN_CODE cg_cfg_info_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(ue_cap_info_present, 1));
HANDLE_CODE(bref.pack(candidate_cell_info_list_mn_present, 1));
HANDLE_CODE(bref.pack(candidate_cell_info_list_sn_present, 1));
HANDLE_CODE(bref.pack(meas_result_cell_list_sftd_nr_present, 1));
HANDLE_CODE(bref.pack(scg_fail_info_present, 1));
HANDLE_CODE(bref.pack(cfg_restrict_info_present, 1));
HANDLE_CODE(bref.pack(drx_info_mcg_present, 1));
HANDLE_CODE(bref.pack(meas_cfg_mn_present, 1));
HANDLE_CODE(bref.pack(source_cfg_scg_present, 1));
HANDLE_CODE(bref.pack(scg_rb_cfg_present, 1));
HANDLE_CODE(bref.pack(mcg_rb_cfg_present, 1));
HANDLE_CODE(bref.pack(mrdc_assist_info_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (ue_cap_info_present) {
HANDLE_CODE(ue_cap_info.pack(bref));
}
if (candidate_cell_info_list_mn_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, candidate_cell_info_list_mn, 1, 8));
}
if (candidate_cell_info_list_sn_present) {
HANDLE_CODE(candidate_cell_info_list_sn.pack(bref));
}
if (meas_result_cell_list_sftd_nr_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, meas_result_cell_list_sftd_nr, 1, 3));
}
if (scg_fail_info_present) {
HANDLE_CODE(scg_fail_info.fail_type.pack(bref));
HANDLE_CODE(scg_fail_info.meas_result_scg.pack(bref));
}
if (cfg_restrict_info_present) {
HANDLE_CODE(cfg_restrict_info.pack(bref));
}
if (drx_info_mcg_present) {
HANDLE_CODE(drx_info_mcg.pack(bref));
}
if (meas_cfg_mn_present) {
HANDLE_CODE(meas_cfg_mn.pack(bref));
}
if (source_cfg_scg_present) {
HANDLE_CODE(source_cfg_scg.pack(bref));
}
if (scg_rb_cfg_present) {
HANDLE_CODE(scg_rb_cfg.pack(bref));
}
if (mcg_rb_cfg_present) {
HANDLE_CODE(mcg_rb_cfg.pack(bref));
}
if (mrdc_assist_info_present) {
HANDLE_CODE(mrdc_assist_info.pack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE cg_cfg_info_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(ue_cap_info_present, 1));
HANDLE_CODE(bref.unpack(candidate_cell_info_list_mn_present, 1));
HANDLE_CODE(bref.unpack(candidate_cell_info_list_sn_present, 1));
HANDLE_CODE(bref.unpack(meas_result_cell_list_sftd_nr_present, 1));
HANDLE_CODE(bref.unpack(scg_fail_info_present, 1));
HANDLE_CODE(bref.unpack(cfg_restrict_info_present, 1));
HANDLE_CODE(bref.unpack(drx_info_mcg_present, 1));
HANDLE_CODE(bref.unpack(meas_cfg_mn_present, 1));
HANDLE_CODE(bref.unpack(source_cfg_scg_present, 1));
HANDLE_CODE(bref.unpack(scg_rb_cfg_present, 1));
HANDLE_CODE(bref.unpack(mcg_rb_cfg_present, 1));
HANDLE_CODE(bref.unpack(mrdc_assist_info_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (ue_cap_info_present) {
HANDLE_CODE(ue_cap_info.unpack(bref));
}
if (candidate_cell_info_list_mn_present) {
HANDLE_CODE(unpack_dyn_seq_of(candidate_cell_info_list_mn, bref, 1, 8));
}
if (candidate_cell_info_list_sn_present) {
HANDLE_CODE(candidate_cell_info_list_sn.unpack(bref));
}
if (meas_result_cell_list_sftd_nr_present) {
HANDLE_CODE(unpack_dyn_seq_of(meas_result_cell_list_sftd_nr, bref, 1, 3));
}
if (scg_fail_info_present) {
HANDLE_CODE(scg_fail_info.fail_type.unpack(bref));
HANDLE_CODE(scg_fail_info.meas_result_scg.unpack(bref));
}
if (cfg_restrict_info_present) {
HANDLE_CODE(cfg_restrict_info.unpack(bref));
}
if (drx_info_mcg_present) {
HANDLE_CODE(drx_info_mcg.unpack(bref));
}
if (meas_cfg_mn_present) {
HANDLE_CODE(meas_cfg_mn.unpack(bref));
}
if (source_cfg_scg_present) {
HANDLE_CODE(source_cfg_scg.unpack(bref));
}
if (scg_rb_cfg_present) {
HANDLE_CODE(scg_rb_cfg.unpack(bref));
}
if (mcg_rb_cfg_present) {
HANDLE_CODE(mcg_rb_cfg.unpack(bref));
}
if (mrdc_assist_info_present) {
HANDLE_CODE(mrdc_assist_info.unpack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void cg_cfg_info_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (ue_cap_info_present) {
j.write_str("ue-CapabilityInfo", ue_cap_info.to_string());
}
if (candidate_cell_info_list_mn_present) {
j.start_array("candidateCellInfoListMN");
for (const auto& e1 : candidate_cell_info_list_mn) {
e1.to_json(j);
}
j.end_array();
}
if (candidate_cell_info_list_sn_present) {
j.write_str("candidateCellInfoListSN", candidate_cell_info_list_sn.to_string());
}
if (meas_result_cell_list_sftd_nr_present) {
j.start_array("measResultCellListSFTD-NR");
for (const auto& e1 : meas_result_cell_list_sftd_nr) {
e1.to_json(j);
}
j.end_array();
}
if (scg_fail_info_present) {
j.write_fieldname("scgFailureInfo");
j.start_obj();
j.write_str("failureType", scg_fail_info.fail_type.to_string());
j.write_str("measResultSCG", scg_fail_info.meas_result_scg.to_string());
j.end_obj();
}
if (cfg_restrict_info_present) {
j.write_fieldname("configRestrictInfo");
cfg_restrict_info.to_json(j);
}
if (drx_info_mcg_present) {
j.write_fieldname("drx-InfoMCG");
drx_info_mcg.to_json(j);
}
if (meas_cfg_mn_present) {
j.write_fieldname("measConfigMN");
meas_cfg_mn.to_json(j);
}
if (source_cfg_scg_present) {
j.write_str("sourceConfigSCG", source_cfg_scg.to_string());
}
if (scg_rb_cfg_present) {
j.write_str("scg-RB-Config", scg_rb_cfg.to_string());
}
if (mcg_rb_cfg_present) {
j.write_str("mcg-RB-Config", mcg_rb_cfg.to_string());
}
if (mrdc_assist_info_present) {
j.write_fieldname("mrdc-AssistanceInfo");
mrdc_assist_info.to_json(j);
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
const char* cg_cfg_info_ies_s::scg_fail_info_s_::fail_type_opts::to_string() const
{
static const char* options[] = {"t310-Expiry",
"randomAccessProblem",
"rlc-MaxNumRetx",
"synchReconfigFailure-SCG",
"scg-reconfigFailure",
"srb3-IntegrityFailure"};
return convert_enum_idx(options, 6, value, "cg_cfg_info_ies_s::scg_fail_info_s_::fail_type_e_");
}
uint16_t cg_cfg_info_ies_s::scg_fail_info_s_::fail_type_opts::to_number() const
{
switch (value) {
case t310_expiry:
return 310;
case srb3_integrity_fail:
return 3;
default:
invalid_enum_number(value, "cg_cfg_info_ies_s::scg_fail_info_s_::fail_type_e_");
}
return 0;
}
// CG-ConfigInfo ::= SEQUENCE
SRSASN_CODE cg_cfg_info_s::pack(bit_ref& bref) const
{
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE cg_cfg_info_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void cg_cfg_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void cg_cfg_info_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
cg_cfg_info_s::crit_exts_c_::c1_c_& cg_cfg_info_s::crit_exts_c_::set_c1()
{
set(types::c1);
return c;
}
void cg_cfg_info_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void cg_cfg_info_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::c1:
j.write_fieldname("c1");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "cg_cfg_info_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE cg_cfg_info_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::c1:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "cg_cfg_info_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE cg_cfg_info_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::c1:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "cg_cfg_info_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
void cg_cfg_info_s::crit_exts_c_::c1_c_::set(types::options e)
{
type_ = e;
}
cg_cfg_info_ies_s& cg_cfg_info_s::crit_exts_c_::c1_c_::set_cg_cfg_info()
{
set(types::cg_cfg_info);
return c;
}
void cg_cfg_info_s::crit_exts_c_::c1_c_::set_spare3()
{
set(types::spare3);
}
void cg_cfg_info_s::crit_exts_c_::c1_c_::set_spare2()
{
set(types::spare2);
}
void cg_cfg_info_s::crit_exts_c_::c1_c_::set_spare1()
{
set(types::spare1);
}
void cg_cfg_info_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::cg_cfg_info:
j.write_fieldname("cg-ConfigInfo");
c.to_json(j);
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "cg_cfg_info_s::crit_exts_c_::c1_c_");
}
j.end_obj();
}
SRSASN_CODE cg_cfg_info_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::cg_cfg_info:
HANDLE_CODE(c.pack(bref));
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "cg_cfg_info_s::crit_exts_c_::c1_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE cg_cfg_info_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::cg_cfg_info:
HANDLE_CODE(c.unpack(bref));
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "cg_cfg_info_s::crit_exts_c_::c1_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* cg_cfg_info_s::crit_exts_c_::c1_c_::types_opts::to_string() const
{
static const char* options[] = {"cg-ConfigInfo", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 4, value, "cg_cfg_info_s::crit_exts_c_::c1_c_::types");
}
const char* cg_cfg_info_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"c1", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "cg_cfg_info_s::crit_exts_c_::types");
}
uint8_t cg_cfg_info_s::crit_exts_c_::types_opts::to_number() const
{
static const uint8_t options[] = {1};
return map_enum_number(options, 1, value, "cg_cfg_info_s::crit_exts_c_::types");
}
void cells_triggered_list_item_c_::destroy_() {}
void cells_triggered_list_item_c_::set(types::options e)
{
destroy_();
type_ = e;
}
cells_triggered_list_item_c_::cells_triggered_list_item_c_(const cells_triggered_list_item_c_& other)
{
type_ = other.type();
switch (type_) {
case types::pci:
c.init(other.c.get<uint16_t>());
break;
case types::pci_eutra:
c.init(other.c.get<uint16_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "cells_triggered_list_item_c_");
}
}
cells_triggered_list_item_c_& cells_triggered_list_item_c_::operator=(const cells_triggered_list_item_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::pci:
c.set(other.c.get<uint16_t>());
break;
case types::pci_eutra:
c.set(other.c.get<uint16_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "cells_triggered_list_item_c_");
}
return *this;
}
uint16_t& cells_triggered_list_item_c_::set_pci()
{
set(types::pci);
return c.get<uint16_t>();
}
uint16_t& cells_triggered_list_item_c_::set_pci_eutra()
{
set(types::pci_eutra);
return c.get<uint16_t>();
}
void cells_triggered_list_item_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::pci:
j.write_int("physCellId", c.get<uint16_t>());
break;
case types::pci_eutra:
j.write_int("physCellIdEUTRA", c.get<uint16_t>());
break;
default:
log_invalid_choice_id(type_, "cells_triggered_list_item_c_");
}
j.end_obj();
}
SRSASN_CODE cells_triggered_list_item_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::pci:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)1007u));
break;
case types::pci_eutra:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)503u));
break;
default:
log_invalid_choice_id(type_, "cells_triggered_list_item_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE cells_triggered_list_item_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::pci:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)1007u));
break;
case types::pci_eutra:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)503u));
break;
default:
log_invalid_choice_id(type_, "cells_triggered_list_item_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* cells_triggered_list_item_c_::types_opts::to_string() const
{
static const char* options[] = {"physCellId", "physCellIdEUTRA"};
return convert_enum_idx(options, 2, value, "cells_triggered_list_item_c_::types");
}
// HandoverCommand-IEs ::= SEQUENCE
SRSASN_CODE ho_cmd_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
HANDLE_CODE(ho_cmd_msg.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE ho_cmd_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
HANDLE_CODE(ho_cmd_msg.unpack(bref));
return SRSASN_SUCCESS;
}
void ho_cmd_ies_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("handoverCommandMessage", ho_cmd_msg.to_string());
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// HandoverCommand ::= SEQUENCE
SRSASN_CODE ho_cmd_s::pack(bit_ref& bref) const
{
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE ho_cmd_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void ho_cmd_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void ho_cmd_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
ho_cmd_s::crit_exts_c_::c1_c_& ho_cmd_s::crit_exts_c_::set_c1()
{
set(types::c1);
return c;
}
void ho_cmd_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void ho_cmd_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::c1:
j.write_fieldname("c1");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "ho_cmd_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE ho_cmd_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::c1:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "ho_cmd_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ho_cmd_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::c1:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "ho_cmd_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
void ho_cmd_s::crit_exts_c_::c1_c_::set(types::options e)
{
type_ = e;
}
ho_cmd_ies_s& ho_cmd_s::crit_exts_c_::c1_c_::set_ho_cmd()
{
set(types::ho_cmd);
return c;
}
void ho_cmd_s::crit_exts_c_::c1_c_::set_spare3()
{
set(types::spare3);
}
void ho_cmd_s::crit_exts_c_::c1_c_::set_spare2()
{
set(types::spare2);
}
void ho_cmd_s::crit_exts_c_::c1_c_::set_spare1()
{
set(types::spare1);
}
void ho_cmd_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::ho_cmd:
j.write_fieldname("handoverCommand");
c.to_json(j);
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "ho_cmd_s::crit_exts_c_::c1_c_");
}
j.end_obj();
}
SRSASN_CODE ho_cmd_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::ho_cmd:
HANDLE_CODE(c.pack(bref));
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "ho_cmd_s::crit_exts_c_::c1_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ho_cmd_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::ho_cmd:
HANDLE_CODE(c.unpack(bref));
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "ho_cmd_s::crit_exts_c_::c1_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* ho_cmd_s::crit_exts_c_::c1_c_::types_opts::to_string() const
{
static const char* options[] = {"handoverCommand", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 4, value, "ho_cmd_s::crit_exts_c_::c1_c_::types");
}
const char* ho_cmd_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"c1", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "ho_cmd_s::crit_exts_c_::types");
}
uint8_t ho_cmd_s::crit_exts_c_::types_opts::to_number() const
{
static const uint8_t options[] = {1};
return map_enum_number(options, 1, value, "ho_cmd_s::crit_exts_c_::types");
}
// RRM-Config ::= SEQUENCE
SRSASN_CODE rrm_cfg_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(ue_inactive_time_present, 1));
HANDLE_CODE(bref.pack(candidate_cell_info_list_present, 1));
if (ue_inactive_time_present) {
HANDLE_CODE(ue_inactive_time.pack(bref));
}
if (candidate_cell_info_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, candidate_cell_info_list, 1, 8));
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= candidate_cell_info_list_sn_eutra.is_present();
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(candidate_cell_info_list_sn_eutra.is_present(), 1));
if (candidate_cell_info_list_sn_eutra.is_present()) {
HANDLE_CODE(pack_dyn_seq_of(bref, *candidate_cell_info_list_sn_eutra, 1, 32));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrm_cfg_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(ue_inactive_time_present, 1));
HANDLE_CODE(bref.unpack(candidate_cell_info_list_present, 1));
if (ue_inactive_time_present) {
HANDLE_CODE(ue_inactive_time.unpack(bref));
}
if (candidate_cell_info_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(candidate_cell_info_list, bref, 1, 8));
}
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool candidate_cell_info_list_sn_eutra_present;
HANDLE_CODE(bref.unpack(candidate_cell_info_list_sn_eutra_present, 1));
candidate_cell_info_list_sn_eutra.set_present(candidate_cell_info_list_sn_eutra_present);
if (candidate_cell_info_list_sn_eutra.is_present()) {
HANDLE_CODE(unpack_dyn_seq_of(*candidate_cell_info_list_sn_eutra, bref, 1, 32));
}
}
}
return SRSASN_SUCCESS;
}
void rrm_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (ue_inactive_time_present) {
j.write_str("ue-InactiveTime", ue_inactive_time.to_string());
}
if (candidate_cell_info_list_present) {
j.start_array("candidateCellInfoList");
for (const auto& e1 : candidate_cell_info_list) {
e1.to_json(j);
}
j.end_array();
}
if (ext) {
if (candidate_cell_info_list_sn_eutra.is_present()) {
j.start_array("candidateCellInfoListSN-EUTRA");
for (const auto& e1 : *candidate_cell_info_list_sn_eutra) {
e1.to_json(j);
}
j.end_array();
}
}
j.end_obj();
}
const char* rrm_cfg_s::ue_inactive_time_opts::to_string() const
{
static const char* options[] = {
"s1", "s2", "s3", "s5", "s7", "s10", "s15", "s20", "s25", "s30",
"s40", "s50", "min1", "min1s20", "min1s40", "min2", "min2s30", "min3", "min3s30", "min4",
"min5", "min6", "min7", "min8", "min9", "min10", "min12", "min14", "min17", "min20",
"min24", "min28", "min33", "min38", "min44", "min50", "hr1", "hr1min30", "hr2", "hr2min30",
"hr3", "hr3min30", "hr4", "hr5", "hr6", "hr8", "hr10", "hr13", "hr16", "hr20",
"day1", "day1hr12", "day2", "day2hr12", "day3", "day4", "day5", "day7", "day10", "day14",
"day19", "day24", "day30", "dayMoreThan30"};
return convert_enum_idx(options, 64, value, "rrm_cfg_s::ue_inactive_time_e_");
}
// HandoverPreparationInformation-IEs ::= SEQUENCE
SRSASN_CODE ho_prep_info_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(source_cfg_present, 1));
HANDLE_CODE(bref.pack(rrm_cfg_present, 1));
HANDLE_CODE(bref.pack(as_context_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
HANDLE_CODE(pack_dyn_seq_of(bref, ue_cap_rat_list, 0, 8));
if (source_cfg_present) {
HANDLE_CODE(source_cfg.pack(bref));
}
if (rrm_cfg_present) {
HANDLE_CODE(rrm_cfg.pack(bref));
}
if (as_context_present) {
HANDLE_CODE(as_context.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ho_prep_info_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(source_cfg_present, 1));
HANDLE_CODE(bref.unpack(rrm_cfg_present, 1));
HANDLE_CODE(bref.unpack(as_context_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
HANDLE_CODE(unpack_dyn_seq_of(ue_cap_rat_list, bref, 0, 8));
if (source_cfg_present) {
HANDLE_CODE(source_cfg.unpack(bref));
}
if (rrm_cfg_present) {
HANDLE_CODE(rrm_cfg.unpack(bref));
}
if (as_context_present) {
HANDLE_CODE(as_context.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ho_prep_info_ies_s::to_json(json_writer& j) const
{
j.start_obj();
j.start_array("ue-CapabilityRAT-List");
for (const auto& e1 : ue_cap_rat_list) {
e1.to_json(j);
}
j.end_array();
if (source_cfg_present) {
j.write_fieldname("sourceConfig");
source_cfg.to_json(j);
}
if (rrm_cfg_present) {
j.write_fieldname("rrm-Config");
rrm_cfg.to_json(j);
}
if (as_context_present) {
j.write_fieldname("as-Context");
as_context.to_json(j);
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// HandoverPreparationInformation ::= SEQUENCE
SRSASN_CODE ho_prep_info_s::pack(bit_ref& bref) const
{
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE ho_prep_info_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void ho_prep_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void ho_prep_info_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
ho_prep_info_s::crit_exts_c_::c1_c_& ho_prep_info_s::crit_exts_c_::set_c1()
{
set(types::c1);
return c;
}
void ho_prep_info_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void ho_prep_info_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::c1:
j.write_fieldname("c1");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "ho_prep_info_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE ho_prep_info_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::c1:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "ho_prep_info_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ho_prep_info_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::c1:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "ho_prep_info_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
void ho_prep_info_s::crit_exts_c_::c1_c_::set(types::options e)
{
type_ = e;
}
ho_prep_info_ies_s& ho_prep_info_s::crit_exts_c_::c1_c_::set_ho_prep_info()
{
set(types::ho_prep_info);
return c;
}
void ho_prep_info_s::crit_exts_c_::c1_c_::set_spare3()
{
set(types::spare3);
}
void ho_prep_info_s::crit_exts_c_::c1_c_::set_spare2()
{
set(types::spare2);
}
void ho_prep_info_s::crit_exts_c_::c1_c_::set_spare1()
{
set(types::spare1);
}
void ho_prep_info_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::ho_prep_info:
j.write_fieldname("handoverPreparationInformation");
c.to_json(j);
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "ho_prep_info_s::crit_exts_c_::c1_c_");
}
j.end_obj();
}
SRSASN_CODE ho_prep_info_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::ho_prep_info:
HANDLE_CODE(c.pack(bref));
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "ho_prep_info_s::crit_exts_c_::c1_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ho_prep_info_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::ho_prep_info:
HANDLE_CODE(c.unpack(bref));
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "ho_prep_info_s::crit_exts_c_::c1_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* ho_prep_info_s::crit_exts_c_::c1_c_::types_opts::to_string() const
{
static const char* options[] = {"handoverPreparationInformation", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 4, value, "ho_prep_info_s::crit_exts_c_::c1_c_::types");
}
const char* ho_prep_info_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"c1", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "ho_prep_info_s::crit_exts_c_::types");
}
uint8_t ho_prep_info_s::crit_exts_c_::types_opts::to_number() const
{
static const uint8_t options[] = {1};
return map_enum_number(options, 1, value, "ho_prep_info_s::crit_exts_c_::types");
}
// MeasTiming ::= SEQUENCE
SRSASN_CODE meas_timing_s::pack(bit_ref& bref) const
{
bref.pack(ext, 1);
HANDLE_CODE(bref.pack(freq_and_timing_present, 1));
if (freq_and_timing_present) {
HANDLE_CODE(bref.pack(freq_and_timing.ss_rssi_meas_present, 1));
HANDLE_CODE(pack_integer(bref, freq_and_timing.carrier_freq, (uint32_t)0u, (uint32_t)3279165u));
HANDLE_CODE(freq_and_timing.ssb_subcarrier_spacing.pack(bref));
HANDLE_CODE(freq_and_timing.ssb_meas_timing_cfg.pack(bref));
if (freq_and_timing.ss_rssi_meas_present) {
HANDLE_CODE(freq_and_timing.ss_rssi_meas.pack(bref));
}
}
if (ext) {
ext_groups_packer_guard group_flags;
group_flags[0] |= ssb_to_measure.is_present();
group_flags[0] |= pci_present;
group_flags.pack(bref);
if (group_flags[0]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(ssb_to_measure.is_present(), 1));
HANDLE_CODE(bref.pack(pci_present, 1));
if (ssb_to_measure.is_present()) {
HANDLE_CODE(ssb_to_measure->pack(bref));
}
if (pci_present) {
HANDLE_CODE(pack_integer(bref, pci, (uint16_t)0u, (uint16_t)1007u));
}
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_timing_s::unpack(cbit_ref& bref)
{
bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(freq_and_timing_present, 1));
if (freq_and_timing_present) {
HANDLE_CODE(bref.unpack(freq_and_timing.ss_rssi_meas_present, 1));
HANDLE_CODE(unpack_integer(freq_and_timing.carrier_freq, bref, (uint32_t)0u, (uint32_t)3279165u));
HANDLE_CODE(freq_and_timing.ssb_subcarrier_spacing.unpack(bref));
HANDLE_CODE(freq_and_timing.ssb_meas_timing_cfg.unpack(bref));
if (freq_and_timing.ss_rssi_meas_present) {
HANDLE_CODE(freq_and_timing.ss_rssi_meas.unpack(bref));
}
}
if (ext) {
ext_groups_unpacker_guard group_flags(1);
group_flags.unpack(bref);
if (group_flags[0]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool ssb_to_measure_present;
HANDLE_CODE(bref.unpack(ssb_to_measure_present, 1));
ssb_to_measure.set_present(ssb_to_measure_present);
HANDLE_CODE(bref.unpack(pci_present, 1));
if (ssb_to_measure.is_present()) {
HANDLE_CODE(ssb_to_measure->unpack(bref));
}
if (pci_present) {
HANDLE_CODE(unpack_integer(pci, bref, (uint16_t)0u, (uint16_t)1007u));
}
}
}
return SRSASN_SUCCESS;
}
void meas_timing_s::to_json(json_writer& j) const
{
j.start_obj();
if (freq_and_timing_present) {
j.write_fieldname("frequencyAndTiming");
j.start_obj();
j.write_int("carrierFreq", freq_and_timing.carrier_freq);
j.write_str("ssbSubcarrierSpacing", freq_and_timing.ssb_subcarrier_spacing.to_string());
j.write_fieldname("ssb-MeasurementTimingConfiguration");
freq_and_timing.ssb_meas_timing_cfg.to_json(j);
if (freq_and_timing.ss_rssi_meas_present) {
j.write_fieldname("ss-RSSI-Measurement");
freq_and_timing.ss_rssi_meas.to_json(j);
}
j.end_obj();
}
if (ext) {
if (ssb_to_measure.is_present()) {
j.write_fieldname("ssb-ToMeasure");
ssb_to_measure->to_json(j);
}
if (pci_present) {
j.write_int("physCellId", pci);
}
}
j.end_obj();
}
// MeasurementTimingConfiguration-v1550-IEs ::= SEQUENCE
SRSASN_CODE meas_timing_cfg_v1550_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
HANDLE_CODE(bref.pack(camp_on_first_ssb, 1));
HANDLE_CODE(bref.pack(ps_cell_only_on_first_ssb, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_timing_cfg_v1550_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
HANDLE_CODE(bref.unpack(camp_on_first_ssb, 1));
HANDLE_CODE(bref.unpack(ps_cell_only_on_first_ssb, 1));
return SRSASN_SUCCESS;
}
void meas_timing_cfg_v1550_ies_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_bool("campOnFirstSSB", camp_on_first_ssb);
j.write_bool("psCellOnlyOnFirstSSB", ps_cell_only_on_first_ssb);
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// MeasurementTimingConfiguration-IEs ::= SEQUENCE
SRSASN_CODE meas_timing_cfg_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(meas_timing_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (meas_timing_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, meas_timing, 1, 32));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_timing_cfg_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(meas_timing_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (meas_timing_present) {
HANDLE_CODE(unpack_dyn_seq_of(meas_timing, bref, 1, 32));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void meas_timing_cfg_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (meas_timing_present) {
j.start_array("measTiming");
for (const auto& e1 : meas_timing) {
e1.to_json(j);
}
j.end_array();
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
// MeasurementTimingConfiguration ::= SEQUENCE
SRSASN_CODE meas_timing_cfg_s::pack(bit_ref& bref) const
{
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_timing_cfg_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void meas_timing_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void meas_timing_cfg_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
meas_timing_cfg_s::crit_exts_c_::c1_c_& meas_timing_cfg_s::crit_exts_c_::set_c1()
{
set(types::c1);
return c;
}
void meas_timing_cfg_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void meas_timing_cfg_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::c1:
j.write_fieldname("c1");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "meas_timing_cfg_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE meas_timing_cfg_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::c1:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "meas_timing_cfg_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_timing_cfg_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::c1:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "meas_timing_cfg_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
void meas_timing_cfg_s::crit_exts_c_::c1_c_::set(types::options e)
{
type_ = e;
}
meas_timing_cfg_ies_s& meas_timing_cfg_s::crit_exts_c_::c1_c_::set_meas_timing_conf()
{
set(types::meas_timing_conf);
return c;
}
void meas_timing_cfg_s::crit_exts_c_::c1_c_::set_spare3()
{
set(types::spare3);
}
void meas_timing_cfg_s::crit_exts_c_::c1_c_::set_spare2()
{
set(types::spare2);
}
void meas_timing_cfg_s::crit_exts_c_::c1_c_::set_spare1()
{
set(types::spare1);
}
void meas_timing_cfg_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::meas_timing_conf:
j.write_fieldname("measTimingConf");
c.to_json(j);
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "meas_timing_cfg_s::crit_exts_c_::c1_c_");
}
j.end_obj();
}
SRSASN_CODE meas_timing_cfg_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::meas_timing_conf:
HANDLE_CODE(c.pack(bref));
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "meas_timing_cfg_s::crit_exts_c_::c1_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE meas_timing_cfg_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::meas_timing_conf:
HANDLE_CODE(c.unpack(bref));
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "meas_timing_cfg_s::crit_exts_c_::c1_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* meas_timing_cfg_s::crit_exts_c_::c1_c_::types_opts::to_string() const
{
static const char* options[] = {"measTimingConf", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 4, value, "meas_timing_cfg_s::crit_exts_c_::c1_c_::types");
}
const char* meas_timing_cfg_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"c1", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "meas_timing_cfg_s::crit_exts_c_::types");
}
uint8_t meas_timing_cfg_s::crit_exts_c_::types_opts::to_number() const
{
static const uint8_t options[] = {1};
return map_enum_number(options, 1, value, "meas_timing_cfg_s::crit_exts_c_::types");
}
// UERadioAccessCapabilityInformation-IEs ::= SEQUENCE
SRSASN_CODE ue_radio_access_cap_info_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
HANDLE_CODE(ue_radio_access_cap_info.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_radio_access_cap_info_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
HANDLE_CODE(ue_radio_access_cap_info.unpack(bref));
return SRSASN_SUCCESS;
}
void ue_radio_access_cap_info_ies_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("ue-RadioAccessCapabilityInfo", ue_radio_access_cap_info.to_string());
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// UERadioAccessCapabilityInformation ::= SEQUENCE
SRSASN_CODE ue_radio_access_cap_info_s::pack(bit_ref& bref) const
{
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_radio_access_cap_info_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void ue_radio_access_cap_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void ue_radio_access_cap_info_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
ue_radio_access_cap_info_s::crit_exts_c_::c1_c_& ue_radio_access_cap_info_s::crit_exts_c_::set_c1()
{
set(types::c1);
return c;
}
void ue_radio_access_cap_info_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void ue_radio_access_cap_info_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::c1:
j.write_fieldname("c1");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "ue_radio_access_cap_info_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE ue_radio_access_cap_info_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::c1:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "ue_radio_access_cap_info_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_radio_access_cap_info_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::c1:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "ue_radio_access_cap_info_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
void ue_radio_access_cap_info_s::crit_exts_c_::c1_c_::set(types::options e)
{
type_ = e;
}
ue_radio_access_cap_info_ies_s& ue_radio_access_cap_info_s::crit_exts_c_::c1_c_::set_ue_radio_access_cap_info()
{
set(types::ue_radio_access_cap_info);
return c;
}
void ue_radio_access_cap_info_s::crit_exts_c_::c1_c_::set_spare7()
{
set(types::spare7);
}
void ue_radio_access_cap_info_s::crit_exts_c_::c1_c_::set_spare6()
{
set(types::spare6);
}
void ue_radio_access_cap_info_s::crit_exts_c_::c1_c_::set_spare5()
{
set(types::spare5);
}
void ue_radio_access_cap_info_s::crit_exts_c_::c1_c_::set_spare4()
{
set(types::spare4);
}
void ue_radio_access_cap_info_s::crit_exts_c_::c1_c_::set_spare3()
{
set(types::spare3);
}
void ue_radio_access_cap_info_s::crit_exts_c_::c1_c_::set_spare2()
{
set(types::spare2);
}
void ue_radio_access_cap_info_s::crit_exts_c_::c1_c_::set_spare1()
{
set(types::spare1);
}
void ue_radio_access_cap_info_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::ue_radio_access_cap_info:
j.write_fieldname("ueRadioAccessCapabilityInformation");
c.to_json(j);
break;
case types::spare7:
break;
case types::spare6:
break;
case types::spare5:
break;
case types::spare4:
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "ue_radio_access_cap_info_s::crit_exts_c_::c1_c_");
}
j.end_obj();
}
SRSASN_CODE ue_radio_access_cap_info_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::ue_radio_access_cap_info:
HANDLE_CODE(c.pack(bref));
break;
case types::spare7:
break;
case types::spare6:
break;
case types::spare5:
break;
case types::spare4:
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "ue_radio_access_cap_info_s::crit_exts_c_::c1_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_radio_access_cap_info_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::ue_radio_access_cap_info:
HANDLE_CODE(c.unpack(bref));
break;
case types::spare7:
break;
case types::spare6:
break;
case types::spare5:
break;
case types::spare4:
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "ue_radio_access_cap_info_s::crit_exts_c_::c1_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* ue_radio_access_cap_info_s::crit_exts_c_::c1_c_::types_opts::to_string() const
{
static const char* options[] = {
"ueRadioAccessCapabilityInformation", "spare7", "spare6", "spare5", "spare4", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 8, value, "ue_radio_access_cap_info_s::crit_exts_c_::c1_c_::types");
}
const char* ue_radio_access_cap_info_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"c1", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "ue_radio_access_cap_info_s::crit_exts_c_::types");
}
uint8_t ue_radio_access_cap_info_s::crit_exts_c_::types_opts::to_number() const
{
static const uint8_t options[] = {1};
return map_enum_number(options, 1, value, "ue_radio_access_cap_info_s::crit_exts_c_::types");
}
// UERadioPagingInformation-IEs ::= SEQUENCE
SRSASN_CODE ue_radio_paging_info_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(supported_band_list_nr_for_paging_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (supported_band_list_nr_for_paging_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, supported_band_list_nr_for_paging, 1, 1024, integer_packer<uint16_t>(1, 1024)));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_radio_paging_info_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(supported_band_list_nr_for_paging_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (supported_band_list_nr_for_paging_present) {
HANDLE_CODE(unpack_dyn_seq_of(supported_band_list_nr_for_paging, bref, 1, 1024, integer_packer<uint16_t>(1, 1024)));
}
return SRSASN_SUCCESS;
}
void ue_radio_paging_info_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (supported_band_list_nr_for_paging_present) {
j.start_array("supportedBandListNRForPaging");
for (const auto& e1 : supported_band_list_nr_for_paging) {
j.write_int(e1);
}
j.end_array();
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// UERadioPagingInformation ::= SEQUENCE
SRSASN_CODE ue_radio_paging_info_s::pack(bit_ref& bref) const
{
HANDLE_CODE(crit_exts.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_radio_paging_info_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(crit_exts.unpack(bref));
return SRSASN_SUCCESS;
}
void ue_radio_paging_info_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("criticalExtensions");
crit_exts.to_json(j);
j.end_obj();
}
void ue_radio_paging_info_s::crit_exts_c_::set(types::options e)
{
type_ = e;
}
ue_radio_paging_info_s::crit_exts_c_::c1_c_& ue_radio_paging_info_s::crit_exts_c_::set_c1()
{
set(types::c1);
return c;
}
void ue_radio_paging_info_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void ue_radio_paging_info_s::crit_exts_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::c1:
j.write_fieldname("c1");
c.to_json(j);
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "ue_radio_paging_info_s::crit_exts_c_");
}
j.end_obj();
}
SRSASN_CODE ue_radio_paging_info_s::crit_exts_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::c1:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "ue_radio_paging_info_s::crit_exts_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_radio_paging_info_s::crit_exts_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::c1:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future:
break;
default:
log_invalid_choice_id(type_, "ue_radio_paging_info_s::crit_exts_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
void ue_radio_paging_info_s::crit_exts_c_::c1_c_::set(types::options e)
{
type_ = e;
}
ue_radio_paging_info_ies_s& ue_radio_paging_info_s::crit_exts_c_::c1_c_::set_ue_radio_paging_info()
{
set(types::ue_radio_paging_info);
return c;
}
void ue_radio_paging_info_s::crit_exts_c_::c1_c_::set_spare7()
{
set(types::spare7);
}
void ue_radio_paging_info_s::crit_exts_c_::c1_c_::set_spare6()
{
set(types::spare6);
}
void ue_radio_paging_info_s::crit_exts_c_::c1_c_::set_spare5()
{
set(types::spare5);
}
void ue_radio_paging_info_s::crit_exts_c_::c1_c_::set_spare4()
{
set(types::spare4);
}
void ue_radio_paging_info_s::crit_exts_c_::c1_c_::set_spare3()
{
set(types::spare3);
}
void ue_radio_paging_info_s::crit_exts_c_::c1_c_::set_spare2()
{
set(types::spare2);
}
void ue_radio_paging_info_s::crit_exts_c_::c1_c_::set_spare1()
{
set(types::spare1);
}
void ue_radio_paging_info_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::ue_radio_paging_info:
j.write_fieldname("ueRadioPagingInformation");
c.to_json(j);
break;
case types::spare7:
break;
case types::spare6:
break;
case types::spare5:
break;
case types::spare4:
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "ue_radio_paging_info_s::crit_exts_c_::c1_c_");
}
j.end_obj();
}
SRSASN_CODE ue_radio_paging_info_s::crit_exts_c_::c1_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::ue_radio_paging_info:
HANDLE_CODE(c.pack(bref));
break;
case types::spare7:
break;
case types::spare6:
break;
case types::spare5:
break;
case types::spare4:
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "ue_radio_paging_info_s::crit_exts_c_::c1_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_radio_paging_info_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::ue_radio_paging_info:
HANDLE_CODE(c.unpack(bref));
break;
case types::spare7:
break;
case types::spare6:
break;
case types::spare5:
break;
case types::spare4:
break;
case types::spare3:
break;
case types::spare2:
break;
case types::spare1:
break;
default:
log_invalid_choice_id(type_, "ue_radio_paging_info_s::crit_exts_c_::c1_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* ue_radio_paging_info_s::crit_exts_c_::c1_c_::types_opts::to_string() const
{
static const char* options[] = {
"ueRadioPagingInformation", "spare7", "spare6", "spare5", "spare4", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 8, value, "ue_radio_paging_info_s::crit_exts_c_::c1_c_::types");
}
const char* ue_radio_paging_info_s::crit_exts_c_::types_opts::to_string() const
{
static const char* options[] = {"c1", "criticalExtensionsFuture"};
return convert_enum_idx(options, 2, value, "ue_radio_paging_info_s::crit_exts_c_::types");
}
uint8_t ue_radio_paging_info_s::crit_exts_c_::types_opts::to_number() const
{
static const uint8_t options[] = {1};
return map_enum_number(options, 1, value, "ue_radio_paging_info_s::crit_exts_c_::types");
}
// VarMeasConfig ::= SEQUENCE
SRSASN_CODE var_meas_cfg_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(meas_id_list_present, 1));
HANDLE_CODE(bref.pack(meas_obj_list_present, 1));
HANDLE_CODE(bref.pack(report_cfg_list_present, 1));
HANDLE_CODE(bref.pack(quant_cfg_present, 1));
HANDLE_CODE(bref.pack(s_measure_cfg_present, 1));
if (meas_id_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, meas_id_list, 1, 64));
}
if (meas_obj_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, meas_obj_list, 1, 64));
}
if (report_cfg_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, report_cfg_list, 1, 64));
}
if (quant_cfg_present) {
HANDLE_CODE(quant_cfg.pack(bref));
}
if (s_measure_cfg_present) {
HANDLE_CODE(s_measure_cfg.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE var_meas_cfg_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(meas_id_list_present, 1));
HANDLE_CODE(bref.unpack(meas_obj_list_present, 1));
HANDLE_CODE(bref.unpack(report_cfg_list_present, 1));
HANDLE_CODE(bref.unpack(quant_cfg_present, 1));
HANDLE_CODE(bref.unpack(s_measure_cfg_present, 1));
if (meas_id_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(meas_id_list, bref, 1, 64));
}
if (meas_obj_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(meas_obj_list, bref, 1, 64));
}
if (report_cfg_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(report_cfg_list, bref, 1, 64));
}
if (quant_cfg_present) {
HANDLE_CODE(quant_cfg.unpack(bref));
}
if (s_measure_cfg_present) {
HANDLE_CODE(s_measure_cfg.unpack(bref));
}
return SRSASN_SUCCESS;
}
void var_meas_cfg_s::to_json(json_writer& j) const
{
j.start_obj();
if (meas_id_list_present) {
j.start_array("measIdList");
for (const auto& e1 : meas_id_list) {
e1.to_json(j);
}
j.end_array();
}
if (meas_obj_list_present) {
j.start_array("measObjectList");
for (const auto& e1 : meas_obj_list) {
e1.to_json(j);
}
j.end_array();
}
if (report_cfg_list_present) {
j.start_array("reportConfigList");
for (const auto& e1 : report_cfg_list) {
e1.to_json(j);
}
j.end_array();
}
if (quant_cfg_present) {
j.write_fieldname("quantityConfig");
quant_cfg.to_json(j);
}
if (s_measure_cfg_present) {
j.write_fieldname("s-MeasureConfig");
s_measure_cfg.to_json(j);
}
j.end_obj();
}
void var_meas_cfg_s::s_measure_cfg_c_::destroy_() {}
void var_meas_cfg_s::s_measure_cfg_c_::set(types::options e)
{
destroy_();
type_ = e;
}
var_meas_cfg_s::s_measure_cfg_c_::s_measure_cfg_c_(const var_meas_cfg_s::s_measure_cfg_c_& other)
{
type_ = other.type();
switch (type_) {
case types::ssb_rsrp:
c.init(other.c.get<uint8_t>());
break;
case types::csi_rsrp:
c.init(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "var_meas_cfg_s::s_measure_cfg_c_");
}
}
var_meas_cfg_s::s_measure_cfg_c_&
var_meas_cfg_s::s_measure_cfg_c_::operator=(const var_meas_cfg_s::s_measure_cfg_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::ssb_rsrp:
c.set(other.c.get<uint8_t>());
break;
case types::csi_rsrp:
c.set(other.c.get<uint8_t>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "var_meas_cfg_s::s_measure_cfg_c_");
}
return *this;
}
uint8_t& var_meas_cfg_s::s_measure_cfg_c_::set_ssb_rsrp()
{
set(types::ssb_rsrp);
return c.get<uint8_t>();
}
uint8_t& var_meas_cfg_s::s_measure_cfg_c_::set_csi_rsrp()
{
set(types::csi_rsrp);
return c.get<uint8_t>();
}
void var_meas_cfg_s::s_measure_cfg_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::ssb_rsrp:
j.write_int("ssb-RSRP", c.get<uint8_t>());
break;
case types::csi_rsrp:
j.write_int("csi-RSRP", c.get<uint8_t>());
break;
default:
log_invalid_choice_id(type_, "var_meas_cfg_s::s_measure_cfg_c_");
}
j.end_obj();
}
SRSASN_CODE var_meas_cfg_s::s_measure_cfg_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::ssb_rsrp:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)127u));
break;
case types::csi_rsrp:
HANDLE_CODE(pack_integer(bref, c.get<uint8_t>(), (uint8_t)0u, (uint8_t)127u));
break;
default:
log_invalid_choice_id(type_, "var_meas_cfg_s::s_measure_cfg_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE var_meas_cfg_s::s_measure_cfg_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::ssb_rsrp:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)127u));
break;
case types::csi_rsrp:
HANDLE_CODE(unpack_integer(c.get<uint8_t>(), bref, (uint8_t)0u, (uint8_t)127u));
break;
default:
log_invalid_choice_id(type_, "var_meas_cfg_s::s_measure_cfg_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
const char* var_meas_cfg_s::s_measure_cfg_c_::types_opts::to_string() const
{
static const char* options[] = {"ssb-RSRP", "csi-RSRP"};
return convert_enum_idx(options, 2, value, "var_meas_cfg_s::s_measure_cfg_c_::types");
}
// VarMeasReport ::= SEQUENCE
SRSASN_CODE var_meas_report_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(cells_triggered_list_present, 1));
HANDLE_CODE(pack_integer(bref, meas_id, (uint8_t)1u, (uint8_t)64u));
if (cells_triggered_list_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, cells_triggered_list, 1, 32));
}
HANDLE_CODE(pack_unconstrained_integer(bref, nof_reports_sent));
return SRSASN_SUCCESS;
}
SRSASN_CODE var_meas_report_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(cells_triggered_list_present, 1));
HANDLE_CODE(unpack_integer(meas_id, bref, (uint8_t)1u, (uint8_t)64u));
if (cells_triggered_list_present) {
HANDLE_CODE(unpack_dyn_seq_of(cells_triggered_list, bref, 1, 32));
}
HANDLE_CODE(unpack_unconstrained_integer(nof_reports_sent, bref));
return SRSASN_SUCCESS;
}
void var_meas_report_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("measId", meas_id);
if (cells_triggered_list_present) {
j.start_array("cellsTriggeredList");
for (const auto& e1 : cells_triggered_list) {
e1.to_json(j);
}
j.end_array();
}
j.write_int("numberOfReportsSent", nof_reports_sent);
j.end_obj();
}
// VarResumeMAC-Input ::= SEQUENCE
SRSASN_CODE var_resume_mac_input_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, source_pci, (uint16_t)0u, (uint16_t)1007u));
HANDLE_CODE(target_cell_id.pack(bref));
HANDLE_CODE(pack_integer(bref, source_c_rnti, (uint32_t)0u, (uint32_t)65535u));
return SRSASN_SUCCESS;
}
SRSASN_CODE var_resume_mac_input_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(source_pci, bref, (uint16_t)0u, (uint16_t)1007u));
HANDLE_CODE(target_cell_id.unpack(bref));
HANDLE_CODE(unpack_integer(source_c_rnti, bref, (uint32_t)0u, (uint32_t)65535u));
return SRSASN_SUCCESS;
}
void var_resume_mac_input_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("sourcePhysCellId", source_pci);
j.write_str("targetCellIdentity", target_cell_id.to_string());
j.write_int("source-c-RNTI", source_c_rnti);
j.end_obj();
}
// VarShortMAC-Input ::= SEQUENCE
SRSASN_CODE var_short_mac_input_s::pack(bit_ref& bref) const
{
HANDLE_CODE(pack_integer(bref, source_pci, (uint16_t)0u, (uint16_t)1007u));
HANDLE_CODE(target_cell_id.pack(bref));
HANDLE_CODE(pack_integer(bref, source_c_rnti, (uint32_t)0u, (uint32_t)65535u));
return SRSASN_SUCCESS;
}
SRSASN_CODE var_short_mac_input_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(unpack_integer(source_pci, bref, (uint16_t)0u, (uint16_t)1007u));
HANDLE_CODE(target_cell_id.unpack(bref));
HANDLE_CODE(unpack_integer(source_c_rnti, bref, (uint32_t)0u, (uint32_t)65535u));
return SRSASN_SUCCESS;
}
void var_short_mac_input_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_int("sourcePhysCellId", source_pci);
j.write_str("targetCellIdentity", target_cell_id.to_string());
j.write_int("source-c-RNTI", source_c_rnti);
j.end_obj();
}