update rrc asn1 to release 17

master
Francisco Paisana 2 years ago committed by Justin Tallon
parent 51e4711bc4
commit e0d10a2625

@ -132,7 +132,8 @@ public:
bit_ref_impl() = default; bit_ref_impl() = default;
bit_ref_impl(Ptr start_ptr_, uint32_t max_size_) : bit_ref_impl(Ptr start_ptr_, uint32_t max_size_) :
ptr(start_ptr_), start_ptr(start_ptr_), max_ptr(max_size_ + start_ptr_) ptr(start_ptr_), start_ptr(start_ptr_), max_ptr(max_size_ + start_ptr_)
{} {
}
int distance(const bit_ref_impl<Ptr>& other) const; int distance(const bit_ref_impl<Ptr>& other) const;
int distance(const uint8_t* ref_ptr) const; int distance(const uint8_t* ref_ptr) const;
@ -1277,7 +1278,8 @@ struct choice_buffer_base_t {
template <typename... Ts> template <typename... Ts>
struct choice_buffer_t : public choice_buffer_base_t<static_max<sizeof(alignment_t), sizeof(Ts)...>::value, struct choice_buffer_t : public choice_buffer_base_t<static_max<sizeof(alignment_t), sizeof(Ts)...>::value,
static_max<alignof(alignment_t), alignof(Ts)...>::value> {}; static_max<alignof(alignment_t), alignof(Ts)...>::value> {
};
using pod_choice_buffer_t = choice_buffer_t<>; using pod_choice_buffer_t = choice_buffer_t<>;
@ -1539,6 +1541,11 @@ struct setup_release_c {
return c; return c;
} }
bool operator==(const setup_release_c<T>& other) const
{
return type_ == other.type_ and (type_ != types::setup or (c == other.c));
}
private: private:
types type_; types type_;
T c; T c;
@ -1645,15 +1652,18 @@ struct base_ie_field : public IEItem {
// ProtocolIE-Field{LAYER-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE{{IEsSetParam}} // ProtocolIE-Field{LAYER-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE{{IEsSetParam}}
template <class IEsSetParam> template <class IEsSetParam>
struct protocol_ie_field_s : public detail::base_ie_field<detail::ie_field_value_item<IEsSetParam> > {}; struct protocol_ie_field_s : public detail::base_ie_field<detail::ie_field_value_item<IEsSetParam> > {
};
// ProtocolIE-SingleContainer{LAYER-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE{{IEsSetParam}} // ProtocolIE-SingleContainer{LAYER-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE{{IEsSetParam}}
template <class ies_set_paramT_> template <class ies_set_paramT_>
struct protocol_ie_single_container_s : public protocol_ie_field_s<ies_set_paramT_> {}; struct protocol_ie_single_container_s : public protocol_ie_field_s<ies_set_paramT_> {
};
// ProtocolExtensionField{LAYER-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE{{LAYER-PROTOCOL-EXTENSION}} // ProtocolExtensionField{LAYER-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE{{LAYER-PROTOCOL-EXTENSION}}
template <class ExtensionSetParam> template <class ExtensionSetParam>
struct protocol_ext_field_s : public detail::base_ie_field<detail::ie_field_ext_item<ExtensionSetParam> > {}; struct protocol_ext_field_s : public detail::base_ie_field<detail::ie_field_ext_item<ExtensionSetParam> > {
};
namespace detail { namespace detail {

@ -12,7 +12,7 @@
/******************************************************************************* /*******************************************************************************
* *
* 3GPP TS ASN1 RRC v15.11.0 (2020-09) * 3GPP TS ASN1 RRC v17.4.0 (2023-03)
* *
******************************************************************************/ ******************************************************************************/
@ -46,8 +46,9 @@ struct mib_mbms_r14_s {
// member variables // member variables
dl_bw_mbms_r14_e_ dl_bw_mbms_r14; dl_bw_mbms_r14_e_ dl_bw_mbms_r14;
fixed_bitstring<6> sys_frame_num_r14; fixed_bitstring<6> sys_frame_num_r14;
uint8_t add_non_mbsfn_sfs_r14 = 0; uint8_t add_non_mbsfn_sfs_r14 = 0;
fixed_bitstring<13> spare; uint8_t semi_static_cfi_mbms_r16 = 0;
fixed_bitstring<11> spare;
// sequence methods // sequence methods
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;
@ -169,7 +170,7 @@ struct bcch_dl_sch_msg_mbms_s {
}; };
// ThresholdEUTRA-v1250 ::= INTEGER (0..97) // ThresholdEUTRA-v1250 ::= INTEGER (0..97)
using thres_eutra_v1250 = integer<uint8_t, 0, 97>; using thres_eutra_v1250 = uint8_t;
// MBMS-SessionInfo-r9 ::= SEQUENCE // MBMS-SessionInfo-r9 ::= SEQUENCE
struct mbms_session_info_r9_s { struct mbms_session_info_r9_s {
@ -186,6 +187,71 @@ struct mbms_session_info_r9_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// MBSFN-SubframeConfig-v1610 ::= SEQUENCE
struct mbsfn_sf_cfg_v1610_s {
struct sf_alloc_v1610_c_ {
struct types_opts {
enum options { one_frame_v1610, four_frames_v1610, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<types_opts> types;
// choice methods
sf_alloc_v1610_c_() = default;
sf_alloc_v1610_c_(const sf_alloc_v1610_c_& other);
sf_alloc_v1610_c_& operator=(const sf_alloc_v1610_c_& other);
~sf_alloc_v1610_c_() { destroy_(); }
void set(types::options e = types::nulltype);
types type() const { return type_; }
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
// getters
fixed_bitstring<2>& one_frame_v1610()
{
assert_choice_type(types::one_frame_v1610, type_, "subframeAllocation-v1610");
return c.get<fixed_bitstring<2> >();
}
fixed_bitstring<8>& four_frames_v1610()
{
assert_choice_type(types::four_frames_v1610, type_, "subframeAllocation-v1610");
return c.get<fixed_bitstring<8> >();
}
const fixed_bitstring<2>& one_frame_v1610() const
{
assert_choice_type(types::one_frame_v1610, type_, "subframeAllocation-v1610");
return c.get<fixed_bitstring<2> >();
}
const fixed_bitstring<8>& four_frames_v1610() const
{
assert_choice_type(types::four_frames_v1610, type_, "subframeAllocation-v1610");
return c.get<fixed_bitstring<8> >();
}
fixed_bitstring<2>& set_one_frame_v1610();
fixed_bitstring<8>& set_four_frames_v1610();
private:
types type_;
choice_buffer_t<fixed_bitstring<8> > c;
void destroy_();
};
// member variables
sf_alloc_v1610_c_ sf_alloc_v1610;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// CommonSF-AllocPatternList-v1610 ::= SEQUENCE (SIZE (1..8)) OF MBSFN-SubframeConfig-v1610
using common_sf_alloc_pattern_list_v1610_l = dyn_array<mbsfn_sf_cfg_v1610_s>;
// MBMS-SessionInfoList-r9 ::= SEQUENCE (SIZE (0..29)) OF MBMS-SessionInfo-r9 // MBMS-SessionInfoList-r9 ::= SEQUENCE (SIZE (0..29)) OF MBMS-SessionInfo-r9
using mbms_session_info_list_r9_l = dyn_array<mbms_session_info_r9_s>; using mbms_session_info_list_r9_l = dyn_array<mbms_session_info_r9_s>;
@ -272,8 +338,20 @@ struct pmch_cfg_r12_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// CommonSF-AllocPatternList-r14 ::= SEQUENCE (SIZE (1..8)) OF MBSFN-SubframeConfig-v1430 // CommonSF-AllocPatternList-v1430 ::= SEQUENCE (SIZE (1..8)) OF MBSFN-SubframeConfig-v1430
using common_sf_alloc_pattern_list_r14_l = dyn_array<mbsfn_sf_cfg_v1430_s>; using common_sf_alloc_pattern_list_v1430_l = dyn_array<mbsfn_sf_cfg_v1430_s>;
// MBSFNAreaConfiguration-v1610-IEs ::= SEQUENCE
struct mbsfn_area_cfg_v1610_ies_s {
bool common_sf_alloc_v1610_present = false;
bool non_crit_ext_present = false;
common_sf_alloc_pattern_list_v1610_l common_sf_alloc_v1610;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// PMCH-InfoExt-r12 ::= SEQUENCE // PMCH-InfoExt-r12 ::= SEQUENCE
struct pmch_info_ext_r12_s { struct pmch_info_ext_r12_s {
@ -290,8 +368,9 @@ struct pmch_info_ext_r12_s {
// MBSFNAreaConfiguration-v1430-IEs ::= SEQUENCE // MBSFNAreaConfiguration-v1430-IEs ::= SEQUENCE
struct mbsfn_area_cfg_v1430_ies_s { struct mbsfn_area_cfg_v1430_ies_s {
bool non_crit_ext_present = false; bool non_crit_ext_present = false;
common_sf_alloc_pattern_list_r14_l common_sf_alloc_r14; common_sf_alloc_pattern_list_v1430_l common_sf_alloc_v1430;
mbsfn_area_cfg_v1610_ies_s non_crit_ext;
// sequence methods // sequence methods
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;
@ -844,6 +923,157 @@ struct sc_mtch_sched_info_br_r14_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// SC-MTCH-Info-BR-r14 ::= SEQUENCE
struct sc_mtch_info_br_r14_s {
struct mpdcch_num_repeat_sc_mtch_r14_opts {
enum options { r1, r2, r4, r8, r16, r32, r64, r128, r256, nulltype } value;
typedef uint16_t number_type;
const char* to_string() const;
uint16_t to_number() const;
};
typedef enumerated<mpdcch_num_repeat_sc_mtch_r14_opts> mpdcch_num_repeat_sc_mtch_r14_e_;
struct mpdcch_start_sf_sc_mtch_r14_c_ {
struct fdd_r14_opts {
enum options { v1, v1dot5, v2, v2dot5, v4, v5, v8, v10, nulltype } value;
typedef float number_type;
const char* to_string() const;
float to_number() const;
const char* to_number_string() const;
};
typedef enumerated<fdd_r14_opts> fdd_r14_e_;
struct tdd_r14_opts {
enum options { v1, v2, v4, v5, v8, v10, v20, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<tdd_r14_opts> tdd_r14_e_;
struct types_opts {
enum options { fdd_r14, tdd_r14, nulltype } value;
const char* to_string() const;
};
typedef enumerated<types_opts> types;
// choice methods
mpdcch_start_sf_sc_mtch_r14_c_() = default;
mpdcch_start_sf_sc_mtch_r14_c_(const mpdcch_start_sf_sc_mtch_r14_c_& other);
mpdcch_start_sf_sc_mtch_r14_c_& operator=(const mpdcch_start_sf_sc_mtch_r14_c_& other);
~mpdcch_start_sf_sc_mtch_r14_c_() { destroy_(); }
void set(types::options e = types::nulltype);
types type() const { return type_; }
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
// getters
fdd_r14_e_& fdd_r14()
{
assert_choice_type(types::fdd_r14, type_, "mpdcch-StartSF-SC-MTCH-r14");
return c.get<fdd_r14_e_>();
}
tdd_r14_e_& tdd_r14()
{
assert_choice_type(types::tdd_r14, type_, "mpdcch-StartSF-SC-MTCH-r14");
return c.get<tdd_r14_e_>();
}
const fdd_r14_e_& fdd_r14() const
{
assert_choice_type(types::fdd_r14, type_, "mpdcch-StartSF-SC-MTCH-r14");
return c.get<fdd_r14_e_>();
}
const tdd_r14_e_& tdd_r14() const
{
assert_choice_type(types::tdd_r14, type_, "mpdcch-StartSF-SC-MTCH-r14");
return c.get<tdd_r14_e_>();
}
fdd_r14_e_& set_fdd_r14();
tdd_r14_e_& set_tdd_r14();
private:
types type_;
pod_choice_buffer_t c;
void destroy_();
};
struct mpdcch_pdsch_hop_cfg_sc_mtch_r14_opts {
enum options { on, off, nulltype } value;
const char* to_string() const;
};
typedef enumerated<mpdcch_pdsch_hop_cfg_sc_mtch_r14_opts> mpdcch_pdsch_hop_cfg_sc_mtch_r14_e_;
struct mpdcch_pdsch_cemode_cfg_sc_mtch_r14_opts {
enum options { ce_mode_a, ce_mode_b, nulltype } value;
const char* to_string() const;
};
typedef enumerated<mpdcch_pdsch_cemode_cfg_sc_mtch_r14_opts> mpdcch_pdsch_cemode_cfg_sc_mtch_r14_e_;
struct mpdcch_pdsch_max_bw_sc_mtch_r14_opts {
enum options { bw1dot4, bw5, nulltype } value;
typedef float number_type;
const char* to_string() const;
float to_number() const;
const char* to_number_string() const;
};
typedef enumerated<mpdcch_pdsch_max_bw_sc_mtch_r14_opts> mpdcch_pdsch_max_bw_sc_mtch_r14_e_;
struct mpdcch_offset_sc_mtch_r14_opts {
enum options {
zero,
one_eighth,
one_quarter,
three_eighth,
one_half,
five_eighth,
three_quarter,
seven_eighth,
nulltype
} value;
typedef float number_type;
const char* to_string() const;
float to_number() const;
const char* to_number_string() const;
};
typedef enumerated<mpdcch_offset_sc_mtch_r14_opts> mpdcch_offset_sc_mtch_r14_e_;
struct p_a_r14_opts {
enum options { db_minus6, db_minus4dot77, db_minus3, db_minus1dot77, db0, db1, db2, db3, nulltype } value;
typedef float number_type;
const char* to_string() const;
float to_number() const;
const char* to_number_string() const;
};
typedef enumerated<p_a_r14_opts> p_a_r14_e_;
// member variables
bool ext = false;
bool sc_mtch_sched_info_r14_present = false;
bool sc_mtch_neighbour_cell_r14_present = false;
bool p_a_r14_present = false;
uint32_t sc_mtch_carrier_freq_r14 = 0;
mbms_session_info_r13_s mbms_session_info_r14;
fixed_bitstring<16> g_rnti_r14;
sc_mtch_sched_info_br_r14_s sc_mtch_sched_info_r14;
fixed_bitstring<8> sc_mtch_neighbour_cell_r14;
uint8_t mpdcch_nb_sc_mtch_r14 = 1;
mpdcch_num_repeat_sc_mtch_r14_e_ mpdcch_num_repeat_sc_mtch_r14;
mpdcch_start_sf_sc_mtch_r14_c_ mpdcch_start_sf_sc_mtch_r14;
mpdcch_pdsch_hop_cfg_sc_mtch_r14_e_ mpdcch_pdsch_hop_cfg_sc_mtch_r14;
mpdcch_pdsch_cemode_cfg_sc_mtch_r14_e_ mpdcch_pdsch_cemode_cfg_sc_mtch_r14;
mpdcch_pdsch_max_bw_sc_mtch_r14_e_ mpdcch_pdsch_max_bw_sc_mtch_r14;
mpdcch_offset_sc_mtch_r14_e_ mpdcch_offset_sc_mtch_r14;
p_a_r14_e_ p_a_r14;
// ...
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// SC-MTCH-SchedulingInfo-r13 ::= SEQUENCE // SC-MTCH-SchedulingInfo-r13 ::= SEQUENCE
struct sc_mtch_sched_info_r13_s { struct sc_mtch_sched_info_r13_s {
struct on_dur_timer_scptm_r13_opts { struct on_dur_timer_scptm_r13_opts {
@ -1146,157 +1376,6 @@ struct pci_arfcn_r13_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// SC-MTCH-Info-BR-r14 ::= SEQUENCE
struct sc_mtch_info_br_r14_s {
struct mpdcch_num_repeat_sc_mtch_r14_opts {
enum options { r1, r2, r4, r8, r16, r32, r64, r128, r256, nulltype } value;
typedef uint16_t number_type;
const char* to_string() const;
uint16_t to_number() const;
};
typedef enumerated<mpdcch_num_repeat_sc_mtch_r14_opts> mpdcch_num_repeat_sc_mtch_r14_e_;
struct mpdcch_start_sf_sc_mtch_r14_c_ {
struct fdd_r14_opts {
enum options { v1, v1dot5, v2, v2dot5, v4, v5, v8, v10, nulltype } value;
typedef float number_type;
const char* to_string() const;
float to_number() const;
const char* to_number_string() const;
};
typedef enumerated<fdd_r14_opts> fdd_r14_e_;
struct tdd_r14_opts {
enum options { v1, v2, v4, v5, v8, v10, v20, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<tdd_r14_opts> tdd_r14_e_;
struct types_opts {
enum options { fdd_r14, tdd_r14, nulltype } value;
const char* to_string() const;
};
typedef enumerated<types_opts> types;
// choice methods
mpdcch_start_sf_sc_mtch_r14_c_() = default;
mpdcch_start_sf_sc_mtch_r14_c_(const mpdcch_start_sf_sc_mtch_r14_c_& other);
mpdcch_start_sf_sc_mtch_r14_c_& operator=(const mpdcch_start_sf_sc_mtch_r14_c_& other);
~mpdcch_start_sf_sc_mtch_r14_c_() { destroy_(); }
void set(types::options e = types::nulltype);
types type() const { return type_; }
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
// getters
fdd_r14_e_& fdd_r14()
{
assert_choice_type(types::fdd_r14, type_, "mpdcch-StartSF-SC-MTCH-r14");
return c.get<fdd_r14_e_>();
}
tdd_r14_e_& tdd_r14()
{
assert_choice_type(types::tdd_r14, type_, "mpdcch-StartSF-SC-MTCH-r14");
return c.get<tdd_r14_e_>();
}
const fdd_r14_e_& fdd_r14() const
{
assert_choice_type(types::fdd_r14, type_, "mpdcch-StartSF-SC-MTCH-r14");
return c.get<fdd_r14_e_>();
}
const tdd_r14_e_& tdd_r14() const
{
assert_choice_type(types::tdd_r14, type_, "mpdcch-StartSF-SC-MTCH-r14");
return c.get<tdd_r14_e_>();
}
fdd_r14_e_& set_fdd_r14();
tdd_r14_e_& set_tdd_r14();
private:
types type_;
pod_choice_buffer_t c;
void destroy_();
};
struct mpdcch_pdsch_hop_cfg_sc_mtch_r14_opts {
enum options { on, off, nulltype } value;
const char* to_string() const;
};
typedef enumerated<mpdcch_pdsch_hop_cfg_sc_mtch_r14_opts> mpdcch_pdsch_hop_cfg_sc_mtch_r14_e_;
struct mpdcch_pdsch_cemode_cfg_sc_mtch_r14_opts {
enum options { ce_mode_a, ce_mode_b, nulltype } value;
const char* to_string() const;
};
typedef enumerated<mpdcch_pdsch_cemode_cfg_sc_mtch_r14_opts> mpdcch_pdsch_cemode_cfg_sc_mtch_r14_e_;
struct mpdcch_pdsch_max_bw_sc_mtch_r14_opts {
enum options { bw1dot4, bw5, nulltype } value;
typedef float number_type;
const char* to_string() const;
float to_number() const;
const char* to_number_string() const;
};
typedef enumerated<mpdcch_pdsch_max_bw_sc_mtch_r14_opts> mpdcch_pdsch_max_bw_sc_mtch_r14_e_;
struct mpdcch_offset_sc_mtch_r14_opts {
enum options {
zero,
one_eighth,
one_quarter,
three_eighth,
one_half,
five_eighth,
three_quarter,
seven_eighth,
nulltype
} value;
typedef float number_type;
const char* to_string() const;
float to_number() const;
const char* to_number_string() const;
};
typedef enumerated<mpdcch_offset_sc_mtch_r14_opts> mpdcch_offset_sc_mtch_r14_e_;
struct p_a_r14_opts {
enum options { db_minus6, db_minus4dot77, db_minus3, db_minus1dot77, db0, db1, db2, db3, nulltype } value;
typedef float number_type;
const char* to_string() const;
float to_number() const;
const char* to_number_string() const;
};
typedef enumerated<p_a_r14_opts> p_a_r14_e_;
// member variables
bool ext = false;
bool sc_mtch_sched_info_r14_present = false;
bool sc_mtch_neighbour_cell_r14_present = false;
bool p_a_r14_present = false;
uint32_t sc_mtch_carrier_freq_r14 = 0;
mbms_session_info_r13_s mbms_session_info_r14;
fixed_bitstring<16> g_rnti_r14;
sc_mtch_sched_info_br_r14_s sc_mtch_sched_info_r14;
fixed_bitstring<8> sc_mtch_neighbour_cell_r14;
uint8_t mpdcch_nb_sc_mtch_r14 = 1;
mpdcch_num_repeat_sc_mtch_r14_e_ mpdcch_num_repeat_sc_mtch_r14;
mpdcch_start_sf_sc_mtch_r14_c_ mpdcch_start_sf_sc_mtch_r14;
mpdcch_pdsch_hop_cfg_sc_mtch_r14_e_ mpdcch_pdsch_hop_cfg_sc_mtch_r14;
mpdcch_pdsch_cemode_cfg_sc_mtch_r14_e_ mpdcch_pdsch_cemode_cfg_sc_mtch_r14;
mpdcch_pdsch_max_bw_sc_mtch_r14_e_ mpdcch_pdsch_max_bw_sc_mtch_r14;
mpdcch_offset_sc_mtch_r14_e_ mpdcch_offset_sc_mtch_r14;
p_a_r14_e_ p_a_r14;
// ...
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// SC-MTCH-Info-r13 ::= SEQUENCE // SC-MTCH-Info-r13 ::= SEQUENCE
struct sc_mtch_info_r13_s { struct sc_mtch_info_r13_s {
struct p_a_r13_opts { struct p_a_r13_opts {
@ -1337,6 +1416,29 @@ using sc_mtch_info_list_r13_l = dyn_array<sc_mtch_info_r13_s>;
// SCPTM-NeighbourCellList-r13 ::= SEQUENCE (SIZE (1..8)) OF PCI-ARFCN-r13 // SCPTM-NeighbourCellList-r13 ::= SEQUENCE (SIZE (1..8)) OF PCI-ARFCN-r13
using scptm_neighbour_cell_list_r13_l = dyn_array<pci_arfcn_r13_s>; using scptm_neighbour_cell_list_r13_l = dyn_array<pci_arfcn_r13_s>;
// SCPTMConfiguration-BR-v1610 ::= SEQUENCE
struct scptm_cfg_br_v1610_s {
struct multi_tb_gap_r16_opts {
enum options { sf2, sf4, sf8, sf16, sf32, sf64, sf128, spare, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<multi_tb_gap_r16_opts> multi_tb_gap_r16_e_;
// member variables
bool multi_tb_gap_r16_present = false;
bool non_crit_ext_present = false;
sc_mtch_info_list_br_r14_l sc_mtch_info_list_multi_tb_r16;
multi_tb_gap_r16_e_ multi_tb_gap_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// SCPTMConfiguration-v1340 ::= SEQUENCE // SCPTMConfiguration-v1340 ::= SEQUENCE
struct scptm_cfg_v1340_s { struct scptm_cfg_v1340_s {
bool p_b_r13_present = false; bool p_b_r13_present = false;
@ -1359,6 +1461,7 @@ struct scptm_cfg_br_r14_s {
scptm_neighbour_cell_list_r13_l scptm_neighbour_cell_list_r14; scptm_neighbour_cell_list_r13_l scptm_neighbour_cell_list_r14;
uint8_t p_b_r14 = 0; uint8_t p_b_r14 = 0;
dyn_octstring late_non_crit_ext; dyn_octstring late_non_crit_ext;
scptm_cfg_br_v1610_s non_crit_ext;
// sequence methods // sequence methods
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;
@ -1598,30 +1701,15 @@ struct mimo_ue_params_v13e0_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// MeasResult3EUTRA-r15 ::= SEQUENCE
struct meas_result3_eutra_r15_s {
bool ext = false;
bool meas_result_serving_cell_r15_present = false;
bool meas_result_neigh_cell_list_r15_present = false;
uint32_t carrier_freq_r15 = 0;
meas_result_eutra_s meas_result_serving_cell_r15;
meas_result_list_eutra_l meas_result_neigh_cell_list_r15;
// ...
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// MeasResultList3EUTRA-r15 ::= SEQUENCE (SIZE (1..8)) OF MeasResult3EUTRA-r15
using meas_result_list3_eutra_r15_l = dyn_array<meas_result3_eutra_r15_s>;
// MeasResultSCG-FailureMRDC-r15 ::= SEQUENCE // MeasResultSCG-FailureMRDC-r15 ::= SEQUENCE
struct meas_result_scg_fail_mrdc_r15_s { struct meas_result_scg_fail_mrdc_r15_s {
bool ext = false; bool ext = false;
meas_result_list3_eutra_r15_l meas_result_freq_list_eutra_r15; meas_result_list3_eutra_r15_l meas_result_freq_list_eutra_r15;
// ... // ...
// group 0
copy_ptr<location_info_r10_s> location_info_r16;
copy_ptr<log_meas_result_list_bt_r15_l> log_meas_result_list_bt_r16;
copy_ptr<log_meas_result_list_wlan_r15_l> log_meas_result_list_wlan_r16;
// sequence methods // sequence methods
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;
@ -1971,6 +2059,30 @@ using meas_result_serv_cell_list_scg_ext_r13_l = dyn_array<meas_result_serv_cell
// MeasResultServCellListSCG-r12 ::= SEQUENCE (SIZE (1..5)) OF MeasResultServCellSCG-r12 // MeasResultServCellListSCG-r12 ::= SEQUENCE (SIZE (1..5)) OF MeasResultServCellSCG-r12
using meas_result_serv_cell_list_scg_r12_l = dyn_array<meas_result_serv_cell_scg_r12_s>; using meas_result_serv_cell_list_scg_r12_l = dyn_array<meas_result_serv_cell_scg_r12_s>;
// RLF-Report-NB-r16 ::= SEQUENCE
struct rlf_report_nb_r16_s {
struct meas_result_last_serv_cell_r16_s_ {
bool nrsrq_result_r16_present = false;
uint8_t nrsrp_result_r16 = 0;
int8_t nrsrq_result_r16 = -30;
};
// member variables
bool reest_cell_id_r16_present = false;
bool location_info_r16_present = false;
bool time_since_fail_r16_present = false;
cell_global_id_eutra_s failed_pcell_id_r16;
cell_global_id_eutra_s reest_cell_id_r16;
location_info_r10_s location_info_r16;
meas_result_last_serv_cell_r16_s_ meas_result_last_serv_cell_r16;
uint32_t time_since_fail_r16 = 0;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// SBCCH-SL-BCH-MessageType ::= MasterInformationBlock-SL // SBCCH-SL-BCH-MessageType ::= MasterInformationBlock-SL
using sbcch_sl_bch_msg_type_s = mib_sl_s; using sbcch_sl_bch_msg_type_s = mib_sl_s;
@ -2677,6 +2789,19 @@ struct sl_v2x_precfg_r14_s {
copy_ptr<sl_v2x_packet_dupl_cfg_r15_s> v2x_packet_dupl_cfg_r15; copy_ptr<sl_v2x_packet_dupl_cfg_r15_s> v2x_packet_dupl_cfg_r15;
copy_ptr<sl_v2x_sync_freq_list_r15_l> sync_freq_list_r15; copy_ptr<sl_v2x_sync_freq_list_r15_l> sync_freq_list_r15;
copy_ptr<sl_v2x_tx_profile_list_r15_l> v2x_tx_profile_list_r15; copy_ptr<sl_v2x_tx_profile_list_r15_l> v2x_tx_profile_list_r15;
// group 1
copy_ptr<sl_nr_anchor_carrier_freq_list_r16_l> anchor_carrier_freq_list_nr_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// VarConditionalReconfiguration ::= SEQUENCE
struct var_conditional_recfg_s {
bool cond_recfg_list_r16_present = false;
cond_recfg_to_add_mod_list_r16_l cond_recfg_list_r16;
// sequence methods // sequence methods
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;
@ -2761,6 +2886,30 @@ struct var_log_meas_cfg_r15_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// VarLogMeasConfig-r17 ::= SEQUENCE
struct var_log_meas_cfg_r17_s {
bool area_cfg_r10_present = false;
bool area_cfg_v1130_present = false;
bool target_mbsfn_area_list_r12_present = false;
bool bt_name_list_r15_present = false;
bool wlan_name_list_r15_present = false;
bool logged_event_trigger_cfg_r17_present = false;
bool meas_uncom_bar_pre_r17_present = false;
area_cfg_r10_c area_cfg_r10;
area_cfg_v1130_s area_cfg_v1130;
logging_dur_r10_e logging_dur_r10;
logging_interv_r10_e logging_interv_r10;
target_mbsfn_area_list_r12_l target_mbsfn_area_list_r12;
bt_name_list_r15_l bt_name_list_r15;
wlan_name_list_r15_l wlan_name_list_r15;
logged_event_trigger_cfg_r17_s logged_event_trigger_cfg_r17;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// VarLogMeasReport-r10 ::= SEQUENCE // VarLogMeasReport-r10 ::= SEQUENCE
struct var_log_meas_report_r10_s { struct var_log_meas_report_r10_s {
trace_ref_r10_s trace_ref_r10; trace_ref_r10_s trace_ref_r10;
@ -2813,6 +2962,19 @@ struct var_meas_idle_cfg_r15_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// VarMeasIdleConfig-r16 ::= SEQUENCE
struct var_meas_idle_cfg_r16_s {
bool meas_idle_carrier_list_nr_r16_present = false;
bool validity_area_list_r16_present = false;
nr_carrier_list_r16_l meas_idle_carrier_list_nr_r16;
validity_area_list_r16_l validity_area_list_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// VarMeasIdleReport-r15 ::= SEQUENCE // VarMeasIdleReport-r15 ::= SEQUENCE
struct var_meas_idle_report_r15_s { struct var_meas_idle_report_r15_s {
meas_result_list_idle_r15_l meas_report_idle_r15; meas_result_list_idle_r15_l meas_report_idle_r15;
@ -2823,6 +2985,19 @@ struct var_meas_idle_report_r15_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// VarMeasIdleReport-r16 ::= SEQUENCE
struct var_meas_idle_report_r16_s {
bool meas_report_idle_r16_present = false;
bool meas_report_idle_nr_r16_present = false;
meas_result_list_ext_idle_r16_l meas_report_idle_r16;
meas_result_list_idle_nr_r16_l meas_report_idle_nr_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// VarMeasReport ::= SEQUENCE // VarMeasReport ::= SEQUENCE
struct var_meas_report_s { struct var_meas_report_s {
bool meas_id_v1250_present = false; bool meas_id_v1250_present = false;
@ -2851,6 +3026,17 @@ using var_meas_report_list_r12_l = dyn_array<var_meas_report_s>;
// VarMobilityHistoryReport-r12 ::= VisitedCellInfoList-r12 // VarMobilityHistoryReport-r12 ::= VisitedCellInfoList-r12
using var_mob_history_report_r12_l = visited_cell_info_list_r12_l; using var_mob_history_report_r12_l = visited_cell_info_list_r12_l;
// VarRLF-Report-NB-r16 ::= SEQUENCE
struct var_rlf_report_nb_r16_s {
rlf_report_nb_r16_s rlf_report_r16;
plmn_id_list3_r11_l plmn_id_list_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// VarRLF-Report-r10 ::= SEQUENCE // VarRLF-Report-r10 ::= SEQUENCE
struct var_rlf_report_r10_s { struct var_rlf_report_r10_s {
rlf_report_r9_s rlf_report_r10; rlf_report_r9_s rlf_report_r10;

File diff suppressed because it is too large Load Diff

@ -12,7 +12,7 @@
/******************************************************************************* /*******************************************************************************
* *
* 3GPP TS ASN1 RRC v15.11.0 (2020-09) * 3GPP TS ASN1 RRC v17.4.0 (2023-03)
* *
******************************************************************************/ ******************************************************************************/
@ -33,11 +33,14 @@ namespace rrc {
#define ASN1_RRC_MAX_ACCESS_CAT_MINUS1_R15 63 #define ASN1_RRC_MAX_ACCESS_CAT_MINUS1_R15 63
#define ASN1_RRC_MAX_ACDC_CAT_R13 16 #define ASN1_RRC_MAX_ACDC_CAT_R13 16
#define ASN1_RRC_MAX_AVAIL_NARROW_BANDS_R13 16 #define ASN1_RRC_MAX_AVAIL_NARROW_BANDS_R13 16
#define ASN1_RRC_MAX_AVAIL_NARROW_BANDS_MINUS1_R16 15
#define ASN1_RRC_MAX_BAND_COMB_R10 128 #define ASN1_RRC_MAX_BAND_COMB_R10 128
#define ASN1_RRC_MAX_BAND_COMB_R11 256 #define ASN1_RRC_MAX_BAND_COMB_R11 256
#define ASN1_RRC_MAX_BAND_COMB_R13 384 #define ASN1_RRC_MAX_BAND_COMB_R13 384
#define ASN1_RRC_MAX_BAND_COMB_SIDELINK_NR_R16 512
#define ASN1_RRC_MAX_BANDS 64 #define ASN1_RRC_MAX_BANDS 64
#define ASN1_RRC_MAX_BANDS_NR_R15 1024 #define ASN1_RRC_MAX_BANDS_NR_R15 1024
#define ASN1_RRC_MAX_BANDS_ENDC_R16 10
#define ASN1_RRC_MAX_BW_CLASS_R10 16 #define ASN1_RRC_MAX_BW_CLASS_R10 16
#define ASN1_RRC_MAX_BW_COMB_SET_R10 32 #define ASN1_RRC_MAX_BW_COMB_SET_R10 32
#define ASN1_RRC_MAX_BARR_INFO_SET_R15 8 #define ASN1_RRC_MAX_BARR_INFO_SET_R15 8
@ -48,11 +51,12 @@ namespace rrc {
#define ASN1_RRC_MAX_CBR_REPORT_R14 72 #define ASN1_RRC_MAX_CBR_REPORT_R14 72
#define ASN1_RRC_MAX_CDMA_BAND_CLASS 32 #define ASN1_RRC_MAX_CDMA_BAND_CLASS 32
#define ASN1_RRC_MAX_CE_LEVEL_R13 4 #define ASN1_RRC_MAX_CE_LEVEL_R13 4
#define ASN1_RRC_MAX_CELL_BLACK 16 #define ASN1_RRC_MAX_EXCLUDED_CELL 16
#define ASN1_RRC_MAX_CELL_HISTORY_R12 16 #define ASN1_RRC_MAX_CELL_HISTORY_R12 16
#define ASN1_RRC_MAX_CELL_INFO_GERAN_R9 32 #define ASN1_RRC_MAX_CELL_INFO_GERAN_R9 32
#define ASN1_RRC_MAX_CELL_INFO_UTRA_R9 16 #define ASN1_RRC_MAX_CELL_INFO_UTRA_R9 16
#define ASN1_RRC_MAX_CELL_MEAS_IDLE_R15 8 #define ASN1_RRC_MAX_CELL_MEAS_IDLE_R15 8
#define ASN1_RRC_MAX_CELL_NR_R17 8
#define ASN1_RRC_MAX_COMB_IDC_R11 128 #define ASN1_RRC_MAX_COMB_IDC_R11 128
#define ASN1_RRC_MAX_CSI_IM_R11 3 #define ASN1_RRC_MAX_CSI_IM_R11 3
#define ASN1_RRC_MAX_CSI_IM_R12 4 #define ASN1_RRC_MAX_CSI_IM_R12 4
@ -73,6 +77,8 @@ namespace rrc {
#define ASN1_RRC_MAX_CELL_MEAS 32 #define ASN1_RRC_MAX_CELL_MEAS 32
#define ASN1_RRC_MAX_CELL_REPORT 8 #define ASN1_RRC_MAX_CELL_REPORT 8
#define ASN1_RRC_MAX_CELL_SFTD 3 #define ASN1_RRC_MAX_CELL_SFTD 3
#define ASN1_RRC_MAX_CELL_ALLOWED_NR_R16 16
#define ASN1_RRC_MAX_COND_CFG_R16 8
#define ASN1_RRC_MAX_CFG_SPS_R14 8 #define ASN1_RRC_MAX_CFG_SPS_R14 8
#define ASN1_RRC_MAX_CFG_SPS_R15 6 #define ASN1_RRC_MAX_CFG_SPS_R15 6
#define ASN1_RRC_MAX_CSI_RS_MEAS_R12 96 #define ASN1_RRC_MAX_CSI_RS_MEAS_R12 96
@ -92,15 +98,23 @@ namespace rrc {
#define ASN1_RRC_MAX_FEATURE_SETS_R15 256 #define ASN1_RRC_MAX_FEATURE_SETS_R15 256
#define ASN1_RRC_MAX_PER_CC_FEATURE_SETS_R15 32 #define ASN1_RRC_MAX_PER_CC_FEATURE_SETS_R15 32
#define ASN1_RRC_MAX_FREQ 8 #define ASN1_RRC_MAX_FREQ 8
#define ASN1_RRC_MAX_FREQ_MINUS1_R16 7
#define ASN1_RRC_MAX_FREQ_IDC_R11 32 #define ASN1_RRC_MAX_FREQ_IDC_R11 32
#define ASN1_RRC_MAX_FREQ_IDLE_R15 8 #define ASN1_RRC_MAX_FREQ_IDLE_R15 8
#define ASN1_RRC_MAX_FREQ_MBMS_R11 5 #define ASN1_RRC_MAX_FREQ_MBMS_R11 5
#define ASN1_RRC_MAX_FREQ_NBIOT_R16 8
#define ASN1_RRC_MAX_FREQ_NR_R15 5 #define ASN1_RRC_MAX_FREQ_NR_R15 5
#define ASN1_RRC_MAX_FREQ_SL_NR_R16 8
#define ASN1_RRC_MAX_FREQ_V2X_R14 8 #define ASN1_RRC_MAX_FREQ_V2X_R14 8
#define ASN1_RRC_MAX_FREQ_V2X_MINUS1_R14 7 #define ASN1_RRC_MAX_FREQ_V2X_MINUS1_R14 7
#define ASN1_RRC_MAX_GERAN_SI 10 #define ASN1_RRC_MAX_GERAN_SI 10
#define ASN1_RRC_MAX_GNFG 16 #define ASN1_RRC_MAX_GNFG 16
#define ASN1_RRC_MAX_GWUS_GROUPS_MINUS1_R16 31
#define ASN1_RRC_MAX_GWUS_RES_R16 4
#define ASN1_RRC_MAX_GWUS_PROB_THRESS_R16 3
#define ASN1_RRC_MAX_IDLE_MEAS_CARRIERS_R15 3 #define ASN1_RRC_MAX_IDLE_MEAS_CARRIERS_R15 3
#define ASN1_RRC_MAX_IDLE_MEAS_CARRIERS_EXT_R16 5
#define ASN1_RRC_MAX_IDLE_MEAS_CARRIERS_R16 8
#define ASN1_RRC_MAX_LCG_R13 4 #define ASN1_RRC_MAX_LCG_R13 4
#define ASN1_RRC_MAX_LOG_MEAS_REPORT_R10 520 #define ASN1_RRC_MAX_LOG_MEAS_REPORT_R10 520
#define ASN1_RRC_MAX_MBSFN_ALLOCS 8 #define ASN1_RRC_MAX_MBSFN_ALLOCS 8
@ -117,6 +131,7 @@ namespace rrc {
#define ASN1_RRC_MAX_NAICS_ENTRIES_R12 8 #define ASN1_RRC_MAX_NAICS_ENTRIES_R12 8
#define ASN1_RRC_MAX_NEIGH_CELL_R12 8 #define ASN1_RRC_MAX_NEIGH_CELL_R12 8
#define ASN1_RRC_MAX_NEIGH_CELL_SCPTM_R13 8 #define ASN1_RRC_MAX_NEIGH_CELL_SCPTM_R13 8
#define ASN1_RRC_MAX_NROF_PCI_PER_SMTC_R16 64
#define ASN1_RRC_MAX_NROF_S_NSSAI_R15 8 #define ASN1_RRC_MAX_NROF_S_NSSAI_R15 8
#define ASN1_RRC_MAX_OBJ_ID 32 #define ASN1_RRC_MAX_OBJ_ID 32
#define ASN1_RRC_MAX_OBJ_ID_PLUS1_R13 33 #define ASN1_RRC_MAX_OBJ_ID_PLUS1_R13 33
@ -143,6 +158,7 @@ namespace rrc {
#define ASN1_RRC_MAX_RS_IDX_REPORT_R15 32 #define ASN1_RRC_MAX_RS_IDX_REPORT_R15 32
#define ASN1_RRC_MAX_RSTD_FREQ_R10 3 #define ASN1_RRC_MAX_RSTD_FREQ_R10 3
#define ASN1_RRC_MAX_SAI_MBMS_R11 64 #define ASN1_RRC_MAX_SAI_MBMS_R11 64
#define ASN1_RRC_MAX_SAT_R17 4
#define ASN1_RRC_MAX_SCELL_R10 4 #define ASN1_RRC_MAX_SCELL_R10 4
#define ASN1_RRC_MAX_SCELL_R13 31 #define ASN1_RRC_MAX_SCELL_R13 31
#define ASN1_RRC_MAX_SCELL_GROUPS_R15 4 #define ASN1_RRC_MAX_SCELL_GROUPS_R15 4
@ -194,6 +210,7 @@ namespace rrc {
#define ASN1_RRC_MAX_SI_MSG 32 #define ASN1_RRC_MAX_SI_MSG 32
#define ASN1_RRC_MAX_SIMUL_BANDS_R10 64 #define ASN1_RRC_MAX_SIMUL_BANDS_R10 64
#define ASN1_RRC_MAX_SF_PATTERN_IDC_R11 8 #define ASN1_RRC_MAX_SF_PATTERN_IDC_R11 8
#define ASN1_RRC_MAX_TAC_R17 12
#define ASN1_RRC_MAX_TRAFFIC_PATTERN_R14 8 #define ASN1_RRC_MAX_TRAFFIC_PATTERN_R14 8
#define ASN1_RRC_MAX_UTRA_FDD_CARRIER 16 #define ASN1_RRC_MAX_UTRA_FDD_CARRIER 16
#define ASN1_RRC_MAX_UTRA_TDD_CARRIER 16 #define ASN1_RRC_MAX_UTRA_TDD_CARRIER 16
@ -207,6 +224,12 @@ namespace rrc {
#define ASN1_RRC_MAX_WLAN_NAME_R15 4 #define ASN1_RRC_MAX_WLAN_NAME_R15 4
#define ASN1_RRC_MAX_LOG_MEAS_R10 4060 #define ASN1_RRC_MAX_LOG_MEAS_R10 4060
#define ASN1_RRC_MAX_REESTAB_INFO 32 #define ASN1_RRC_MAX_REESTAB_INFO 32
#define ASN1_RRC_MAX_FREQ_ANR_NB_R16 2
#define ASN1_RRC_MAX_FREQ_EUTRA_NB_R16 8
#define ASN1_RRC_MAX_FREQS_GERAN_NB_R16 8
#define ASN1_RRC_MAX_GWUS_GROUPS_MINUS1_NB_R16 15
#define ASN1_RRC_MAX_GWUS_RES_NB_R16 2
#define ASN1_RRC_MAX_GWUS_PROB_THRESS_NB_R16 3
#define ASN1_RRC_MAX_NPRACH_RES_NB_R13 3 #define ASN1_RRC_MAX_NPRACH_RES_NB_R13 3
#define ASN1_RRC_MAX_NON_ANCHOR_CARRIERS_NB_R14 15 #define ASN1_RRC_MAX_NON_ANCHOR_CARRIERS_NB_R14 15
#define ASN1_RRC_MAX_DRB_NB_R13 2 #define ASN1_RRC_MAX_DRB_NB_R13 2
@ -214,6 +237,7 @@ namespace rrc {
#define ASN1_RRC_MAX_NS_PMAX_NB_R13 4 #define ASN1_RRC_MAX_NS_PMAX_NB_R13 4
#define ASN1_RRC_MAX_SC_MTCH_NB_R14 64 #define ASN1_RRC_MAX_SC_MTCH_NB_R14 64
#define ASN1_RRC_MAX_SI_MSG_NB_R13 8 #define ASN1_RRC_MAX_SI_MSG_NB_R13 8
#define ASN1_RRC_MAX_TAC_NB_R17 12
/******************************************************************************* /*******************************************************************************
* Struct Definitions * Struct Definitions

@ -12,7 +12,7 @@
/******************************************************************************* /*******************************************************************************
* *
* 3GPP TS ASN1 RRC v15.11.0 (2020-09) * 3GPP TS ASN1 RRC v17.4.0 (2023-03)
* *
******************************************************************************/ ******************************************************************************/

@ -12,7 +12,7 @@
/******************************************************************************* /*******************************************************************************
* *
* 3GPP TS ASN1 RRC v15.11.0 (2020-09) * 3GPP TS ASN1 RRC v17.4.0 (2023-03)
* *
******************************************************************************/ ******************************************************************************/
@ -233,6 +233,18 @@ struct rrc_conn_reject_v1020_ies_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// RRCConnectionSetup-v1610-IEs ::= SEQUENCE
struct rrc_conn_setup_v1610_ies_s {
bool ded_info_nas_r16_present = false;
bool non_crit_ext_present = false;
dyn_octstring ded_info_nas_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// IdleModeMobilityControlInfo ::= SEQUENCE // IdleModeMobilityControlInfo ::= SEQUENCE
struct idle_mode_mob_ctrl_info_s { struct idle_mode_mob_ctrl_info_s {
struct t320_opts { struct t320_opts {
@ -327,9 +339,10 @@ struct rrc_conn_reject_v8a0_ies_s {
// RRCConnectionSetup-v8a0-IEs ::= SEQUENCE // RRCConnectionSetup-v8a0-IEs ::= SEQUENCE
struct rrc_conn_setup_v8a0_ies_s { struct rrc_conn_setup_v8a0_ies_s {
bool late_non_crit_ext_present = false; bool late_non_crit_ext_present = false;
bool non_crit_ext_present = false; bool non_crit_ext_present = false;
dyn_octstring late_non_crit_ext; dyn_octstring late_non_crit_ext;
rrc_conn_setup_v1610_ies_s non_crit_ext;
// sequence methods // sequence methods
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;
@ -352,15 +365,7 @@ struct rrc_early_data_complete_v1590_ies_s {
// RedirectedCarrierInfo-r15-IEs ::= CHOICE // RedirectedCarrierInfo-r15-IEs ::= CHOICE
struct redirected_carrier_info_r15_ies_c { struct redirected_carrier_info_r15_ies_c {
struct types_opts { struct types_opts {
enum options { enum options { eutra, geran, utra_fdd, cdma2000_hrpd, cdma2000_minus1x_rtt, utra_tdd, nulltype } value;
eutra_r15,
geran_r15,
utra_fdd_r15,
cdma2000_hrpd_r15,
cdma2000_minus1x_rtt_r15,
utra_tdd_r15,
nulltype
} value;
const char* to_string() const; const char* to_string() const;
}; };
@ -377,72 +382,72 @@ struct redirected_carrier_info_r15_ies_c {
SRSASN_CODE unpack(cbit_ref& bref); SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
// getters // getters
uint32_t& eutra_r15() uint32_t& eutra()
{ {
assert_choice_type(types::eutra_r15, type_, "RedirectedCarrierInfo-r15-IEs"); assert_choice_type(types::eutra, type_, "RedirectedCarrierInfo-r15-IEs");
return c.get<uint32_t>(); return c.get<uint32_t>();
} }
carrier_freqs_geran_s& geran_r15() carrier_freqs_geran_s& geran()
{ {
assert_choice_type(types::geran_r15, type_, "RedirectedCarrierInfo-r15-IEs"); assert_choice_type(types::geran, type_, "RedirectedCarrierInfo-r15-IEs");
return c.get<carrier_freqs_geran_s>(); return c.get<carrier_freqs_geran_s>();
} }
uint16_t& utra_fdd_r15() uint16_t& utra_fdd()
{ {
assert_choice_type(types::utra_fdd_r15, type_, "RedirectedCarrierInfo-r15-IEs"); assert_choice_type(types::utra_fdd, type_, "RedirectedCarrierInfo-r15-IEs");
return c.get<uint16_t>(); return c.get<uint16_t>();
} }
carrier_freq_cdma2000_s& cdma2000_hrpd_r15() carrier_freq_cdma2000_s& cdma2000_hrpd()
{ {
assert_choice_type(types::cdma2000_hrpd_r15, type_, "RedirectedCarrierInfo-r15-IEs"); assert_choice_type(types::cdma2000_hrpd, type_, "RedirectedCarrierInfo-r15-IEs");
return c.get<carrier_freq_cdma2000_s>(); return c.get<carrier_freq_cdma2000_s>();
} }
carrier_freq_cdma2000_s& cdma2000_minus1x_rtt_r15() carrier_freq_cdma2000_s& cdma2000_minus1x_rtt()
{ {
assert_choice_type(types::cdma2000_minus1x_rtt_r15, type_, "RedirectedCarrierInfo-r15-IEs"); assert_choice_type(types::cdma2000_minus1x_rtt, type_, "RedirectedCarrierInfo-r15-IEs");
return c.get<carrier_freq_cdma2000_s>(); return c.get<carrier_freq_cdma2000_s>();
} }
carrier_freq_list_utra_tdd_r10_l& utra_tdd_r15() carrier_freq_list_utra_tdd_r10_l& utra_tdd()
{ {
assert_choice_type(types::utra_tdd_r15, type_, "RedirectedCarrierInfo-r15-IEs"); assert_choice_type(types::utra_tdd, type_, "RedirectedCarrierInfo-r15-IEs");
return c.get<carrier_freq_list_utra_tdd_r10_l>(); return c.get<carrier_freq_list_utra_tdd_r10_l>();
} }
const uint32_t& eutra_r15() const const uint32_t& eutra() const
{ {
assert_choice_type(types::eutra_r15, type_, "RedirectedCarrierInfo-r15-IEs"); assert_choice_type(types::eutra, type_, "RedirectedCarrierInfo-r15-IEs");
return c.get<uint32_t>(); return c.get<uint32_t>();
} }
const carrier_freqs_geran_s& geran_r15() const const carrier_freqs_geran_s& geran() const
{ {
assert_choice_type(types::geran_r15, type_, "RedirectedCarrierInfo-r15-IEs"); assert_choice_type(types::geran, type_, "RedirectedCarrierInfo-r15-IEs");
return c.get<carrier_freqs_geran_s>(); return c.get<carrier_freqs_geran_s>();
} }
const uint16_t& utra_fdd_r15() const const uint16_t& utra_fdd() const
{ {
assert_choice_type(types::utra_fdd_r15, type_, "RedirectedCarrierInfo-r15-IEs"); assert_choice_type(types::utra_fdd, type_, "RedirectedCarrierInfo-r15-IEs");
return c.get<uint16_t>(); return c.get<uint16_t>();
} }
const carrier_freq_cdma2000_s& cdma2000_hrpd_r15() const const carrier_freq_cdma2000_s& cdma2000_hrpd() const
{ {
assert_choice_type(types::cdma2000_hrpd_r15, type_, "RedirectedCarrierInfo-r15-IEs"); assert_choice_type(types::cdma2000_hrpd, type_, "RedirectedCarrierInfo-r15-IEs");
return c.get<carrier_freq_cdma2000_s>(); return c.get<carrier_freq_cdma2000_s>();
} }
const carrier_freq_cdma2000_s& cdma2000_minus1x_rtt_r15() const const carrier_freq_cdma2000_s& cdma2000_minus1x_rtt() const
{ {
assert_choice_type(types::cdma2000_minus1x_rtt_r15, type_, "RedirectedCarrierInfo-r15-IEs"); assert_choice_type(types::cdma2000_minus1x_rtt, type_, "RedirectedCarrierInfo-r15-IEs");
return c.get<carrier_freq_cdma2000_s>(); return c.get<carrier_freq_cdma2000_s>();
} }
const carrier_freq_list_utra_tdd_r10_l& utra_tdd_r15() const const carrier_freq_list_utra_tdd_r10_l& utra_tdd() const
{ {
assert_choice_type(types::utra_tdd_r15, type_, "RedirectedCarrierInfo-r15-IEs"); assert_choice_type(types::utra_tdd, type_, "RedirectedCarrierInfo-r15-IEs");
return c.get<carrier_freq_list_utra_tdd_r10_l>(); return c.get<carrier_freq_list_utra_tdd_r10_l>();
} }
uint32_t& set_eutra_r15(); uint32_t& set_eutra();
carrier_freqs_geran_s& set_geran_r15(); carrier_freqs_geran_s& set_geran();
uint16_t& set_utra_fdd_r15(); uint16_t& set_utra_fdd();
carrier_freq_cdma2000_s& set_cdma2000_hrpd_r15(); carrier_freq_cdma2000_s& set_cdma2000_hrpd();
carrier_freq_cdma2000_s& set_cdma2000_minus1x_rtt_r15(); carrier_freq_cdma2000_s& set_cdma2000_minus1x_rtt();
carrier_freq_list_utra_tdd_r10_l& set_utra_tdd_r15(); carrier_freq_list_utra_tdd_r10_l& set_utra_tdd();
private: private:
types type_; types type_;

File diff suppressed because it is too large Load Diff

@ -12,7 +12,7 @@
/******************************************************************************* /*******************************************************************************
* *
* 3GPP TS ASN1 RRC v15.11.0 (2020-09) * 3GPP TS ASN1 RRC v17.4.0 (2023-03)
* *
******************************************************************************/ ******************************************************************************/
@ -108,6 +108,16 @@ struct as_cfg_nr_v1570_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// AS-ConfigNR-v1620 ::= SEQUENCE
struct as_cfg_nr_v1620_s {
tdm_pattern_cfg_r15_c tdm_pattern_cfg2_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// SCG-Config-r12 ::= SEQUENCE // SCG-Config-r12 ::= SEQUENCE
struct scg_cfg_r12_s { struct scg_cfg_r12_s {
struct crit_exts_c_ { struct crit_exts_c_ {
@ -214,6 +224,8 @@ struct as_cfg_s {
copy_ptr<as_cfg_v1550_s> as_cfg_v1550; copy_ptr<as_cfg_v1550_s> as_cfg_v1550;
// group 5 // group 5
copy_ptr<as_cfg_nr_v1570_s> as_cfg_nr_v1570; copy_ptr<as_cfg_nr_v1570_s> as_cfg_nr_v1570;
// group 6
copy_ptr<as_cfg_nr_v1620_s> as_cfg_nr_v1620;
// sequence methods // sequence methods
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;
@ -348,10 +360,10 @@ struct as_context_v1130_s {
bool ext = false; bool ext = false;
bool idc_ind_r11_present = false; bool idc_ind_r11_present = false;
bool mbms_interest_ind_r11_present = false; bool mbms_interest_ind_r11_present = false;
bool pwr_pref_ind_r11_present = false; bool ue_assist_info_r11_present = false;
dyn_octstring idc_ind_r11; dyn_octstring idc_ind_r11;
dyn_octstring mbms_interest_ind_r11; dyn_octstring mbms_interest_ind_r11;
dyn_octstring pwr_pref_ind_r11; dyn_octstring ue_assist_info_r11;
// ... // ...
// group 0 // group 0
bool sidelink_ue_info_r12_present = false; bool sidelink_ue_info_r12_present = false;
@ -380,6 +392,56 @@ struct as_context_v1320_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// ConfigRestrictInfoDAPS-r16 ::= SEQUENCE
struct cfg_restrict_info_daps_r16_s {
bool max_sch_tb_bits_dl_r16_present = false;
bool max_sch_tb_bits_ul_r16_present = false;
uint8_t max_sch_tb_bits_dl_r16 = 1;
uint8_t max_sch_tb_bits_ul_r16 = 1;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// AS-Context-v1610 ::= SEQUENCE
struct as_context_v1610_s {
bool sidelink_ue_info_nr_r16_present = false;
bool ue_assist_info_nr_r16_present = false;
bool cfg_restrict_info_daps_r16_present = false;
dyn_octstring sidelink_ue_info_nr_r16;
dyn_octstring ue_assist_info_nr_r16;
cfg_restrict_info_daps_r16_s cfg_restrict_info_daps_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// ConfigRestrictInfoDAPS-v1630 ::= SEQUENCE
struct cfg_restrict_info_daps_v1630_s {
bool daps_pwr_coordination_info_r16_present = false;
daps_pwr_coordination_info_r16_s daps_pwr_coordination_info_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// AS-Context-v1630 ::= SEQUENCE
struct as_context_v1630_s {
bool cfg_restrict_info_daps_v1630_present = false;
cfg_restrict_info_daps_v1630_s cfg_restrict_info_daps_v1630;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// CandidateCellInfo-r10 ::= SEQUENCE // CandidateCellInfo-r10 ::= SEQUENCE
struct candidate_cell_info_r10_s { struct candidate_cell_info_r10_s {
bool ext = false; bool ext = false;
@ -499,11 +561,84 @@ struct ho_cmd_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// AS-Config-v1700 ::= SEQUENCE
struct as_cfg_v1700_s {
bool scg_state_r17_present = false;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// HandoverPreparationInformation-v1700-IEs ::= SEQUENCE
struct ho_prep_info_v1700_ies_s {
bool as_cfg_v1700_present = false;
bool non_crit_ext_present = false;
as_cfg_v1700_s as_cfg_v1700;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// AS-Context-v1620 ::= SEQUENCE
struct as_context_v1620_s {
bool ue_assist_info_nr_scg_r16_present = false;
dyn_octstring ue_assist_info_nr_scg_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// HandoverPreparationInformation-v1630-IEs ::= SEQUENCE
struct ho_prep_info_v1630_ies_s {
bool as_context_v1630_present = false;
bool non_crit_ext_present = false;
as_context_v1630_s as_context_v1630;
ho_prep_info_v1700_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// HandoverPreparationInformation-v1620-IEs ::= SEQUENCE
struct ho_prep_info_v1620_ies_s {
bool as_context_v1620_present = false;
bool non_crit_ext_present = false;
as_context_v1620_s as_context_v1620;
ho_prep_info_v1630_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// HandoverPreparationInformation-v1610-IEs ::= SEQUENCE
struct ho_prep_info_v1610_ies_s {
bool as_context_v1610_present = false;
bool non_crit_ext_present = false;
as_context_v1610_s as_context_v1610;
ho_prep_info_v1620_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// HandoverPreparationInformation-v1540-IEs ::= SEQUENCE // HandoverPreparationInformation-v1540-IEs ::= SEQUENCE
struct ho_prep_info_v1540_ies_s { struct ho_prep_info_v1540_ies_s {
bool source_rb_cfg_intra5_gc_r15_present = false; bool source_rb_cfg_intra5_gc_r15_present = false;
bool non_crit_ext_present = false; bool non_crit_ext_present = false;
dyn_octstring source_rb_cfg_intra5_gc_r15; dyn_octstring source_rb_cfg_intra5_gc_r15;
ho_prep_info_v1610_ies_s non_crit_ext;
// sequence methods // sequence methods
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;
@ -610,11 +745,25 @@ struct ho_prep_info_v9d0_ies_s {
// HandoverPreparationInformation-v920-IEs ::= SEQUENCE // HandoverPreparationInformation-v920-IEs ::= SEQUENCE
struct ho_prep_info_v920_ies_s { struct ho_prep_info_v920_ies_s {
struct ue_cfg_release_r9_opts { struct ue_cfg_release_r9_opts {
enum options { rel9, rel10, rel11, rel12, v10j0, v11e0, v1280, rel13, /*...*/ rel14, rel15, nulltype } value; enum options {
rel9,
rel10,
rel11,
rel12,
v10j0,
v11e0,
v1280,
rel13,
/*...*/ rel14,
rel15,
rel16,
rel17,
nulltype
} value;
const char* to_string() const; const char* to_string() const;
}; };
typedef enumerated<ue_cfg_release_r9_opts, true, 2> ue_cfg_release_r9_e_; typedef enumerated<ue_cfg_release_r9_opts, true, 4> ue_cfg_release_r9_e_;
// member variables // member variables
bool ue_cfg_release_r9_present = false; bool ue_cfg_release_r9_present = false;

File diff suppressed because it is too large Load Diff

@ -12,7 +12,7 @@
/******************************************************************************* /*******************************************************************************
* *
* 3GPP TS ASN1 RRC v15.11.0 (2020-09) * 3GPP TS ASN1 RRC v17.4.0 (2023-03)
* *
******************************************************************************/ ******************************************************************************/
@ -28,10 +28,64 @@ namespace rrc {
* Struct Definitions * Struct Definitions
******************************************************************************/ ******************************************************************************/
// PagingRecord-v1700 ::= SEQUENCE
struct paging_record_v1700_s {
bool paging_cause_r17_present = false;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// PagingRecord-v1610 ::= SEQUENCE
struct paging_record_v1610_s {
bool access_type_r16_present = false;
bool mt_edt_r16_present = false;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// PagingRecordList-v1700 ::= SEQUENCE (SIZE (1..16)) OF PagingRecord-v1700
using paging_record_list_v1700_l = dyn_array<paging_record_v1700_s>;
// Paging-v1700-IEs ::= SEQUENCE
struct paging_v1700_ies_s {
bool paging_record_list_v1700_present = false;
bool non_crit_ext_present = false;
paging_record_list_v1700_l paging_record_list_v1700;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// PagingRecordList-v1610 ::= SEQUENCE (SIZE (1..16)) OF PagingRecord-v1610
using paging_record_list_v1610_l = dyn_array<paging_record_v1610_s>;
// Paging-v1610-IEs ::= SEQUENCE
struct paging_v1610_ies_s {
bool paging_record_list_v1610_present = false;
bool uac_param_mod_r16_present = false;
bool non_crit_ext_present = false;
paging_record_list_v1610_l paging_record_list_v1610;
paging_v1700_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// Paging-v1530-IEs ::= SEQUENCE // Paging-v1530-IEs ::= SEQUENCE
struct paging_v1530_ies_s { struct paging_v1530_ies_s {
bool access_type_present = false; bool access_type_present = false;
bool non_crit_ext_present = false; bool non_crit_ext_present = false;
paging_v1610_ies_s non_crit_ext;
// sequence methods // sequence methods
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;
@ -384,6 +438,17 @@ struct ue_paging_coverage_info_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// UERadioPagingInformation-v1610-IEs ::= SEQUENCE
struct ue_radio_paging_info_v1610_ies_s {
bool access_stratum_release_r16_present = false;
bool non_crit_ext_present = false;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// UERadioPagingInformation-v1310-IEs ::= SEQUENCE // UERadioPagingInformation-v1310-IEs ::= SEQUENCE
struct ue_radio_paging_info_v1310_ies_s { struct ue_radio_paging_info_v1310_ies_s {
using supported_band_list_eutra_for_paging_r13_l_ = dyn_array<uint16_t>; using supported_band_list_eutra_for_paging_r13_l_ = dyn_array<uint16_t>;
@ -392,6 +457,7 @@ struct ue_radio_paging_info_v1310_ies_s {
bool supported_band_list_eutra_for_paging_r13_present = false; bool supported_band_list_eutra_for_paging_r13_present = false;
bool non_crit_ext_present = false; bool non_crit_ext_present = false;
supported_band_list_eutra_for_paging_r13_l_ supported_band_list_eutra_for_paging_r13; supported_band_list_eutra_for_paging_r13_l_ supported_band_list_eutra_for_paging_r13;
ue_radio_paging_info_v1610_ies_s non_crit_ext;
// sequence methods // sequence methods
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;

@ -12,14 +12,14 @@
/******************************************************************************* /*******************************************************************************
* *
* 3GPP TS ASN1 RRC v15.11.0 (2020-09) * 3GPP TS ASN1 RRC v17.4.0 (2023-03)
* *
******************************************************************************/ ******************************************************************************/
#ifndef SRSASN1_RRC_PHYCFG_H #ifndef SRSASN1_RRC_PHYCFG_H
#define SRSASN1_RRC_PHYCFG_H #define SRSASN1_RRC_PHYCFG_H
#include "common.h" #include "rr_common.h"
namespace asn1 { namespace asn1 {
namespace rrc { namespace rrc {
@ -28,6 +28,338 @@ namespace rrc {
* Struct Definitions * Struct Definitions
******************************************************************************/ ******************************************************************************/
// PeriodicityStartPos-r16 ::= CHOICE
struct periodicity_start_pos_r16_c {
struct types_opts {
enum options {
periodicity10ms,
periodicity20ms,
periodicity40ms,
periodicity80ms,
periodicity160ms,
spare3,
spare2,
spare1,
nulltype
} value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<types_opts> types;
// choice methods
periodicity_start_pos_r16_c() = default;
periodicity_start_pos_r16_c(const periodicity_start_pos_r16_c& other);
periodicity_start_pos_r16_c& operator=(const periodicity_start_pos_r16_c& other);
~periodicity_start_pos_r16_c() { destroy_(); }
void set(types::options e = types::nulltype);
types type() const { return type_; }
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
// getters
uint8_t& periodicity20ms()
{
assert_choice_type(types::periodicity20ms, type_, "PeriodicityStartPos-r16");
return c.get<uint8_t>();
}
uint8_t& periodicity40ms()
{
assert_choice_type(types::periodicity40ms, type_, "PeriodicityStartPos-r16");
return c.get<uint8_t>();
}
uint8_t& periodicity80ms()
{
assert_choice_type(types::periodicity80ms, type_, "PeriodicityStartPos-r16");
return c.get<uint8_t>();
}
uint8_t& periodicity160ms()
{
assert_choice_type(types::periodicity160ms, type_, "PeriodicityStartPos-r16");
return c.get<uint8_t>();
}
const uint8_t& periodicity20ms() const
{
assert_choice_type(types::periodicity20ms, type_, "PeriodicityStartPos-r16");
return c.get<uint8_t>();
}
const uint8_t& periodicity40ms() const
{
assert_choice_type(types::periodicity40ms, type_, "PeriodicityStartPos-r16");
return c.get<uint8_t>();
}
const uint8_t& periodicity80ms() const
{
assert_choice_type(types::periodicity80ms, type_, "PeriodicityStartPos-r16");
return c.get<uint8_t>();
}
const uint8_t& periodicity160ms() const
{
assert_choice_type(types::periodicity160ms, type_, "PeriodicityStartPos-r16");
return c.get<uint8_t>();
}
void set_periodicity10ms();
uint8_t& set_periodicity20ms();
uint8_t& set_periodicity40ms();
uint8_t& set_periodicity80ms();
uint8_t& set_periodicity160ms();
void set_spare3();
void set_spare2();
void set_spare1();
private:
types type_;
pod_choice_buffer_t c;
void destroy_();
};
// ResourceReservationConfigDL-r16 ::= SEQUENCE
struct res_reserv_cfg_dl_r16_s {
struct res_reserv_freq_r16_c_ {
struct types_opts {
enum options {
rbg_bitmap1dot4,
rbg_bitmap3,
rbg_bitmap5,
rbg_bitmap10,
rbg_bitmap15,
rbg_bitmap20,
nulltype
} value;
typedef float number_type;
const char* to_string() const;
float to_number() const;
const char* to_number_string() const;
};
typedef enumerated<types_opts> types;
// choice methods
res_reserv_freq_r16_c_() = default;
res_reserv_freq_r16_c_(const res_reserv_freq_r16_c_& other);
res_reserv_freq_r16_c_& operator=(const res_reserv_freq_r16_c_& other);
~res_reserv_freq_r16_c_() { destroy_(); }
void set(types::options e = types::nulltype);
types type() const { return type_; }
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
// getters
fixed_bitstring<6>& rbg_bitmap1dot4()
{
assert_choice_type(types::rbg_bitmap1dot4, type_, "resourceReservationFreq-r16");
return c.get<fixed_bitstring<6> >();
}
fixed_bitstring<8>& rbg_bitmap3()
{
assert_choice_type(types::rbg_bitmap3, type_, "resourceReservationFreq-r16");
return c.get<fixed_bitstring<8> >();
}
fixed_bitstring<13>& rbg_bitmap5()
{
assert_choice_type(types::rbg_bitmap5, type_, "resourceReservationFreq-r16");
return c.get<fixed_bitstring<13> >();
}
fixed_bitstring<17>& rbg_bitmap10()
{
assert_choice_type(types::rbg_bitmap10, type_, "resourceReservationFreq-r16");
return c.get<fixed_bitstring<17> >();
}
fixed_bitstring<19>& rbg_bitmap15()
{
assert_choice_type(types::rbg_bitmap15, type_, "resourceReservationFreq-r16");
return c.get<fixed_bitstring<19> >();
}
fixed_bitstring<25>& rbg_bitmap20()
{
assert_choice_type(types::rbg_bitmap20, type_, "resourceReservationFreq-r16");
return c.get<fixed_bitstring<25> >();
}
const fixed_bitstring<6>& rbg_bitmap1dot4() const
{
assert_choice_type(types::rbg_bitmap1dot4, type_, "resourceReservationFreq-r16");
return c.get<fixed_bitstring<6> >();
}
const fixed_bitstring<8>& rbg_bitmap3() const
{
assert_choice_type(types::rbg_bitmap3, type_, "resourceReservationFreq-r16");
return c.get<fixed_bitstring<8> >();
}
const fixed_bitstring<13>& rbg_bitmap5() const
{
assert_choice_type(types::rbg_bitmap5, type_, "resourceReservationFreq-r16");
return c.get<fixed_bitstring<13> >();
}
const fixed_bitstring<17>& rbg_bitmap10() const
{
assert_choice_type(types::rbg_bitmap10, type_, "resourceReservationFreq-r16");
return c.get<fixed_bitstring<17> >();
}
const fixed_bitstring<19>& rbg_bitmap15() const
{
assert_choice_type(types::rbg_bitmap15, type_, "resourceReservationFreq-r16");
return c.get<fixed_bitstring<19> >();
}
const fixed_bitstring<25>& rbg_bitmap20() const
{
assert_choice_type(types::rbg_bitmap20, type_, "resourceReservationFreq-r16");
return c.get<fixed_bitstring<25> >();
}
fixed_bitstring<6>& set_rbg_bitmap1dot4();
fixed_bitstring<8>& set_rbg_bitmap3();
fixed_bitstring<13>& set_rbg_bitmap5();
fixed_bitstring<17>& set_rbg_bitmap10();
fixed_bitstring<19>& set_rbg_bitmap15();
fixed_bitstring<25>& set_rbg_bitmap20();
private:
types type_;
choice_buffer_t<fixed_bitstring<25> > c;
void destroy_();
};
struct slot_bitmap_r16_c_ {
struct types_opts {
enum options { slot_pattern10ms, slot_pattern40ms, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<types_opts> types;
// choice methods
slot_bitmap_r16_c_() = default;
slot_bitmap_r16_c_(const slot_bitmap_r16_c_& other);
slot_bitmap_r16_c_& operator=(const slot_bitmap_r16_c_& other);
~slot_bitmap_r16_c_() { destroy_(); }
void set(types::options e = types::nulltype);
types type() const { return type_; }
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
// getters
fixed_bitstring<20>& slot_pattern10ms()
{
assert_choice_type(types::slot_pattern10ms, type_, "slotBitmap-r16");
return c.get<fixed_bitstring<20> >();
}
fixed_bitstring<80>& slot_pattern40ms()
{
assert_choice_type(types::slot_pattern40ms, type_, "slotBitmap-r16");
return c.get<fixed_bitstring<80> >();
}
const fixed_bitstring<20>& slot_pattern10ms() const
{
assert_choice_type(types::slot_pattern10ms, type_, "slotBitmap-r16");
return c.get<fixed_bitstring<20> >();
}
const fixed_bitstring<80>& slot_pattern40ms() const
{
assert_choice_type(types::slot_pattern40ms, type_, "slotBitmap-r16");
return c.get<fixed_bitstring<80> >();
}
fixed_bitstring<20>& set_slot_pattern10ms();
fixed_bitstring<80>& set_slot_pattern40ms();
private:
types type_;
choice_buffer_t<fixed_bitstring<80> > c;
void destroy_();
};
// member variables
bool ext = false;
bool res_reserv_freq_r16_present = false;
bool symbol_bitmap1_r16_present = false;
bool symbol_bitmap2_r16_present = false;
periodicity_start_pos_r16_c periodicity_start_pos_r16;
res_reserv_freq_r16_c_ res_reserv_freq_r16;
slot_bitmap_r16_c_ slot_bitmap_r16;
fixed_bitstring<7> symbol_bitmap1_r16;
fixed_bitstring<7> symbol_bitmap2_r16;
// ...
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// ResourceReservationConfigUL-r16 ::= SEQUENCE
struct res_reserv_cfg_ul_r16_s {
struct slot_bitmap_r16_c_ {
struct types_opts {
enum options { slot_pattern10ms, slot_pattern40ms, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<types_opts> types;
// choice methods
slot_bitmap_r16_c_() = default;
slot_bitmap_r16_c_(const slot_bitmap_r16_c_& other);
slot_bitmap_r16_c_& operator=(const slot_bitmap_r16_c_& other);
~slot_bitmap_r16_c_() { destroy_(); }
void set(types::options e = types::nulltype);
types type() const { return type_; }
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
// getters
fixed_bitstring<20>& slot_pattern10ms()
{
assert_choice_type(types::slot_pattern10ms, type_, "slotBitmap-r16");
return c.get<fixed_bitstring<20> >();
}
fixed_bitstring<80>& slot_pattern40ms()
{
assert_choice_type(types::slot_pattern40ms, type_, "slotBitmap-r16");
return c.get<fixed_bitstring<80> >();
}
const fixed_bitstring<20>& slot_pattern10ms() const
{
assert_choice_type(types::slot_pattern10ms, type_, "slotBitmap-r16");
return c.get<fixed_bitstring<20> >();
}
const fixed_bitstring<80>& slot_pattern40ms() const
{
assert_choice_type(types::slot_pattern40ms, type_, "slotBitmap-r16");
return c.get<fixed_bitstring<80> >();
}
fixed_bitstring<20>& set_slot_pattern10ms();
fixed_bitstring<80>& set_slot_pattern40ms();
private:
types type_;
choice_buffer_t<fixed_bitstring<80> > c;
void destroy_();
};
// member variables
bool ext = false;
bool slot_bitmap_r16_present = false;
bool symbol_bitmap1_r16_present = false;
bool symbol_bitmap2_r16_present = false;
periodicity_start_pos_r16_c periodicity_start_pos_r16;
slot_bitmap_r16_c_ slot_bitmap_r16;
fixed_bitstring<7> symbol_bitmap1_r16;
fixed_bitstring<7> symbol_bitmap2_r16;
// ...
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// NZP-FrequencyDensity-r14 ::= ENUMERATED // NZP-FrequencyDensity-r14 ::= ENUMERATED
struct nzp_freq_density_r14_opts { struct nzp_freq_density_r14_opts {
enum options { d1, d2, d3, nulltype } value; enum options { d1, d2, d3, nulltype } value;
@ -3493,6 +3825,47 @@ struct ant_info_ul_stti_r15_s {
bool operator!=(const ant_info_ul_stti_r15_s& other) const { return not(*this == other); } bool operator!=(const ant_info_ul_stti_r15_s& other) const { return not(*this == other); }
}; };
// CE-PDSCH-14HARQ-Config-r17 ::= SEQUENCE
struct ce_pdsch_minus14_harq_cfg_r17_s {
struct ce_harq_ack_delay_r17_opts {
enum options { alt_minus1, alt_minus2e, nulltype } value;
typedef int8_t number_type;
const char* to_string() const;
int8_t to_number() const;
};
typedef enumerated<ce_harq_ack_delay_r17_opts> ce_harq_ack_delay_r17_e_;
// member variables
ce_harq_ack_delay_r17_e_ ce_harq_ack_delay_r17;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// CE-PDSCH-MultiTB-Config-r16 ::= SEQUENCE
struct ce_pdsch_multi_tb_cfg_r16_s {
bool interleaving_r16_present = false;
bool harq_ack_bundling_r16_present = false;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// CE-PUSCH-MultiTB-Config-r16 ::= SEQUENCE
struct ce_pusch_multi_tb_cfg_r16_s {
bool interleaving_r16_present = false;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// CQI-ReportConfig-r15 ::= CHOICE // CQI-ReportConfig-r15 ::= CHOICE
struct cqi_report_cfg_r15_c { struct cqi_report_cfg_r15_c {
struct setup_s_ { struct setup_s_ {
@ -4197,6 +4570,71 @@ struct srs_cc_set_idx_r14_s {
bool operator!=(const srs_cc_set_idx_r14_s& other) const { return not(*this == other); } bool operator!=(const srs_cc_set_idx_r14_s& other) const { return not(*this == other); }
}; };
// SRS-ConfigAdd-r16 ::= SEQUENCE
struct srs_cfg_add_r16_s {
struct srs_rep_num_add_r16_opts {
enum options { n1, n2, n3, n4, n6, n7, n8, n9, n12, n13, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<srs_rep_num_add_r16_opts> srs_rep_num_add_r16_e_;
struct srs_bw_add_r16_opts {
enum options { bw0, bw1, bw2, bw3, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<srs_bw_add_r16_opts> srs_bw_add_r16_e_;
struct srs_hop_bw_add_r16_opts {
enum options { hbw0, hbw1, hbw2, hbw3, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<srs_hop_bw_add_r16_opts> srs_hop_bw_add_r16_e_;
struct srs_cyclic_shift_add_r16_opts {
enum options { cs0, cs1, cs2, cs3, cs4, cs5, cs6, cs7, cs8, cs9, cs10, cs11, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<srs_cyclic_shift_add_r16_opts> srs_cyclic_shift_add_r16_e_;
struct srs_tx_comb_num_add_r16_opts {
enum options { n2, n4, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<srs_tx_comb_num_add_r16_opts> srs_tx_comb_num_add_r16_e_;
// member variables
bool srs_guard_symbol_as_add_r16_present = false;
bool srs_guard_symbol_fh_add_r16_present = false;
srs_rep_num_add_r16_e_ srs_rep_num_add_r16;
srs_bw_add_r16_e_ srs_bw_add_r16;
srs_hop_bw_add_r16_e_ srs_hop_bw_add_r16;
uint8_t srs_freq_domain_pos_add_r16 = 0;
srs_ant_port_e srs_ant_port_add_r16;
srs_cyclic_shift_add_r16_e_ srs_cyclic_shift_add_r16;
srs_tx_comb_num_add_r16_e_ srs_tx_comb_num_add_r16;
uint8_t srs_tx_comb_add_r16 = 0;
uint8_t srs_start_pos_add_r16 = 1;
uint8_t srs_dur_add_r16 = 1;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
bool operator==(const srs_cfg_add_r16_s& other) const;
bool operator!=(const srs_cfg_add_r16_s& other) const { return not(*this == other); }
};
// SRS-ConfigAp-r10 ::= SEQUENCE // SRS-ConfigAp-r10 ::= SEQUENCE
struct srs_cfg_ap_r10_s { struct srs_cfg_ap_r10_s {
struct srs_bw_ap_r10_opts { struct srs_bw_ap_r10_opts {
@ -5420,6 +5858,28 @@ struct pdsch_cfg_ded_v1530_s {
bool operator!=(const pdsch_cfg_ded_v1530_s& other) const { return not(*this == other); } bool operator!=(const pdsch_cfg_ded_v1530_s& other) const { return not(*this == other); }
}; };
// PDSCH-ConfigDedicated-v1610 ::= SEQUENCE
struct pdsch_cfg_ded_v1610_s {
setup_release_c<ce_pdsch_multi_tb_cfg_r16_s> ce_pdsch_multi_tb_cfg_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// PDSCH-ConfigDedicated-v1700 ::= SEQUENCE
struct pdsch_cfg_ded_v1700_s {
bool ce_pdsch_minus14_harq_cfg_r17_present = false;
bool ce_pdsch_max_tbs_r17_present = false;
setup_release_c<ce_pdsch_minus14_harq_cfg_r17_s> ce_pdsch_minus14_harq_cfg_r17;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// PUCCH-ConfigDedicated ::= SEQUENCE // PUCCH-ConfigDedicated ::= SEQUENCE
struct pucch_cfg_ded_s { struct pucch_cfg_ded_s {
struct ack_nack_repeat_c_ { struct ack_nack_repeat_c_ {
@ -6542,6 +7002,16 @@ struct pusch_cfg_ded_v1530_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// PUSCH-ConfigDedicated-v1610 ::= SEQUENCE
struct pusch_cfg_ded_v1610_s {
setup_release_c<ce_pusch_multi_tb_cfg_r16_s> ce_pusch_multi_tb_cfg_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// PUSCH-EnhancementsConfig-r14 ::= CHOICE // PUSCH-EnhancementsConfig-r14 ::= CHOICE
struct pusch_enhance_cfg_r14_c { struct pusch_enhance_cfg_r14_c {
struct setup_s_ { struct setup_s_ {
@ -6719,6 +7189,28 @@ private:
setup_s_ c; setup_s_ c;
}; };
// ResourceReservationConfigDedicatedDL-r16 ::= SEQUENCE
struct res_reserv_cfg_ded_dl_r16_s {
bool res_reserv_ded_dl_r16_present = false;
res_reserv_cfg_dl_r16_s res_reserv_ded_dl_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// ResourceReservationConfigDedicatedUL-r16 ::= SEQUENCE
struct res_reserv_cfg_ded_ul_r16_s {
bool res_reserv_ded_ul_r16_present = false;
res_reserv_cfg_ul_r16_s res_reserv_ded_ul_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// SPUCCH-Config-v1550 ::= CHOICE // SPUCCH-Config-v1550 ::= CHOICE
struct spucch_cfg_v1550_c { struct spucch_cfg_v1550_c {
struct setup_s_ { struct setup_s_ {
@ -6997,6 +7489,59 @@ private:
setup_s_ c; setup_s_ c;
}; };
// SoundingRS-UL-ConfigDedicatedAdd-r16 ::= SEQUENCE
struct srs_ul_cfg_ded_add_r16_s {
using srs_cfg_ap_dci_format4_r16_l_ = dyn_array<srs_cfg_add_r16_s>;
struct srs_activ_ap_r13_c_ {
struct setup_s_ {
srs_cfg_add_r16_s srs_cfg_ap_dci_format0_r16;
srs_cfg_add_r16_s srs_cfg_ap_dci_format1a2b2c_r16;
};
using types = setup_e;
// choice methods
srs_activ_ap_r13_c_() = default;
void set(types::options e = types::nulltype);
types type() const { return type_; }
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
bool operator==(const srs_activ_ap_r13_c_& other) const;
bool operator!=(const srs_activ_ap_r13_c_& other) const { return not(*this == other); }
// getters
setup_s_& setup()
{
assert_choice_type(types::setup, type_, "srs-ActivateAp-r13");
return c;
}
const setup_s_& setup() const
{
assert_choice_type(types::setup, type_, "srs-ActivateAp-r13");
return c;
}
void set_release();
setup_s_& set_setup();
private:
types type_;
setup_s_ c;
};
// member variables
bool srs_cfg_ap_dci_format4_r16_present = false;
bool srs_activ_ap_r13_present = false;
uint8_t srs_cfg_idx_ap_r16 = 0;
srs_cfg_ap_dci_format4_r16_l_ srs_cfg_ap_dci_format4_r16;
srs_activ_ap_r13_c_ srs_activ_ap_r13;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
bool operator==(const srs_ul_cfg_ded_add_r16_s& other) const;
bool operator!=(const srs_ul_cfg_ded_add_r16_s& other) const { return not(*this == other); }
};
// SoundingRS-UL-ConfigDedicatedAperiodic-r10 ::= CHOICE // SoundingRS-UL-ConfigDedicatedAperiodic-r10 ::= CHOICE
struct srs_ul_cfg_ded_aperiodic_r10_c { struct srs_ul_cfg_ded_aperiodic_r10_c {
struct setup_s_ { struct setup_s_ {
@ -7323,6 +7868,39 @@ private:
setup_s_ c; setup_s_ c;
}; };
// SoundingRS-VirtualCellID-r16 ::= SEQUENCE
struct srs_virtual_cell_id_r16_s {
uint16_t srs_virtual_cell_id_r16 = 0;
bool srs_virtual_cell_id_all_srs_r16 = false;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
bool operator==(const srs_virtual_cell_id_r16_s& other) const;
bool operator!=(const srs_virtual_cell_id_r16_s& other) const { return not(*this == other); }
};
// UplinkPowerControlAddSRS-r16 ::= SEQUENCE
struct ul_pwr_ctrl_add_srs_r16_s {
bool tpc_idx_srs_add_r16_present = false;
bool start_bit_of_format3_b_srs_add_r16_present = false;
bool field_type_format3_b_srs_add_r16_present = false;
bool p0_ue_srs_add_r16_present = false;
tpc_idx_c tpc_idx_srs_add_r16;
uint8_t start_bit_of_format3_b_srs_add_r16 = 0;
uint8_t field_type_format3_b_srs_add_r16 = 1;
int8_t p0_ue_srs_add_r16 = -16;
bool accumulation_enabled_srs_add_r16 = false;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
bool operator==(const ul_pwr_ctrl_add_srs_r16_s& other) const;
bool operator!=(const ul_pwr_ctrl_add_srs_r16_s& other) const { return not(*this == other); }
};
// UplinkPowerControlDedicated ::= SEQUENCE // UplinkPowerControlDedicated ::= SEQUENCE
struct ul_pwr_ctrl_ded_s { struct ul_pwr_ctrl_ded_s {
struct delta_mcs_enabled_opts { struct delta_mcs_enabled_opts {
@ -7444,6 +8022,19 @@ struct ul_pwr_ctrl_ded_v1530_s {
bool operator!=(const ul_pwr_ctrl_ded_v1530_s& other) const { return not(*this == other); } bool operator!=(const ul_pwr_ctrl_ded_v1530_s& other) const { return not(*this == other); }
}; };
// WidebandPRG-r16 ::= SEQUENCE
struct wideband_prg_r16_s {
bool wideband_prg_sf_r16 = false;
bool wideband_prg_slot_subslot_r16 = false;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
bool operator==(const wideband_prg_r16_s& other) const;
bool operator!=(const wideband_prg_r16_s& other) const { return not(*this == other); }
};
// PhysicalConfigDedicated ::= SEQUENCE // PhysicalConfigDedicated ::= SEQUENCE
struct phys_cfg_ded_s { struct phys_cfg_ded_s {
struct ant_info_c_ { struct ant_info_c_ {
@ -7837,6 +8428,18 @@ struct phys_cfg_ded_s {
types type_; types type_;
setup_s_ c; setup_s_ c;
}; };
struct ntn_cfg_ded_r17_s_ {
bool pucch_tx_dur_r17_present = false;
bool pusch_tx_dur_r17_present = false;
setup_release_c<pucch_tx_dur_r17_s> pucch_tx_dur_r17;
setup_release_c<pusch_tx_dur_r17_s> pusch_tx_dur_r17;
};
struct ul_segmented_precompensation_gap_r17_opts {
enum options { sym1, sl1, sf1, nulltype } value;
const char* to_string() const;
};
typedef enumerated<ul_segmented_precompensation_gap_r17_opts> ul_segmented_precompensation_gap_r17_e_;
// member variables // member variables
bool ext = false; bool ext = false;
@ -7949,6 +8552,22 @@ struct phys_cfg_ded_s {
copy_ptr<blind_pdsch_repeat_cfg_r15_c_> blind_pdsch_repeat_cfg_r15; copy_ptr<blind_pdsch_repeat_cfg_r15_c_> blind_pdsch_repeat_cfg_r15;
// group 11 // group 11
copy_ptr<spucch_cfg_v1550_c> spucch_cfg_v1550; copy_ptr<spucch_cfg_v1550_c> spucch_cfg_v1550;
// group 12
bool ce_csi_rs_feedback_r16_present = false;
copy_ptr<pdsch_cfg_ded_v1610_s> pdsch_cfg_ded_v1610;
copy_ptr<pusch_cfg_ded_v1610_s> pusch_cfg_ded_v1610;
copy_ptr<setup_release_c<res_reserv_cfg_ded_dl_r16_s> > res_reserv_cfg_ded_dl_r16;
copy_ptr<setup_release_c<res_reserv_cfg_ded_ul_r16_s> > res_reserv_cfg_ded_ul_r16;
copy_ptr<setup_release_c<srs_ul_cfg_ded_add_r16_s> > srs_ul_cfg_ded_add_r16;
copy_ptr<setup_release_c<ul_pwr_ctrl_add_srs_r16_s> > ul_pwr_ctrl_add_srs_r16;
copy_ptr<setup_release_c<srs_virtual_cell_id_r16_s> > srs_virtual_cell_id_r16;
copy_ptr<setup_release_c<wideband_prg_r16_s> > wideband_prg_r16;
// group 13
copy_ptr<pdsch_cfg_ded_v1700_s> pdsch_cfg_ded_v1700;
copy_ptr<ntn_cfg_ded_r17_s_> ntn_cfg_ded_r17;
// group 14
bool ul_segmented_precompensation_gap_r17_present = false;
ul_segmented_precompensation_gap_r17_e_ ul_segmented_precompensation_gap_r17;
// sequence methods // sequence methods
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;

@ -12,7 +12,7 @@
/******************************************************************************* /*******************************************************************************
* *
* 3GPP TS ASN1 RRC v15.11.0 (2020-09) * 3GPP TS ASN1 RRC v17.4.0 (2023-03)
* *
******************************************************************************/ ******************************************************************************/
@ -268,6 +268,32 @@ struct tdd_cfg_v1130_s {
bool operator!=(const tdd_cfg_v1130_s& other) const { return not(*this == other); } bool operator!=(const tdd_cfg_v1130_s& other) const { return not(*this == other); }
}; };
// GWUS-NumGroups-r16 ::= ENUMERATED
struct gwus_num_groups_r16_opts {
enum options { n1, n2, n4, n8, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<gwus_num_groups_r16_opts> gwus_num_groups_r16_e;
// GWUS-GroupsForServiceList-r16 ::= SEQUENCE (SIZE (1..3)) OF INTEGER (1..31)
using gwus_groups_for_service_list_r16_l = bounded_array<uint8_t, 3>;
// GWUS-NumGroupsList-r16 ::= SEQUENCE (SIZE (1..4)) OF GWUS-NumGroups-r16
using gwus_num_groups_list_r16_l = bounded_array<gwus_num_groups_r16_e, 4>;
// GWUS-PagingProbThresh-r16 ::= ENUMERATED
struct gwus_paging_prob_thresh_r16_opts {
enum options { p20, p30, p40, p50, p60, p70, p80, p90, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<gwus_paging_prob_thresh_r16_opts> gwus_paging_prob_thresh_r16_e;
// PRACH-ParametersCE-r13 ::= SEQUENCE // PRACH-ParametersCE-r13 ::= SEQUENCE
struct prach_params_ce_r13_s { struct prach_params_ce_r13_s {
struct prach_start_sf_r13_opts { struct prach_start_sf_r13_opts {
@ -695,6 +721,173 @@ struct edt_prach_params_ce_r15_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// GWUS-GroupNarrowBandList-r16 ::= SEQUENCE (SIZE (1..16)) OF BOOLEAN
using gwus_group_narrow_band_list_r16_l = bounded_array<bool, 16>;
// GWUS-ProbThreshList-r16 ::= SEQUENCE (SIZE (1..3)) OF GWUS-PagingProbThresh-r16
using gwus_prob_thresh_list_r16_l = bounded_array<gwus_paging_prob_thresh_r16_e, 3>;
// GWUS-ResourceConfig-r16 ::= SEQUENCE
struct gwus_res_cfg_r16_s {
struct res_map_pattern_r16_c_ {
struct res_location_with_wus_opts {
enum options { primary, secondary, primary3_fdm, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<res_location_with_wus_opts> res_location_with_wus_e_;
struct res_location_without_wus_opts {
enum options { n0, n2, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<res_location_without_wus_opts> res_location_without_wus_e_;
struct types_opts {
enum options { res_location_with_wus, res_location_without_wus, nulltype } value;
const char* to_string() const;
};
typedef enumerated<types_opts> types;
// choice methods
res_map_pattern_r16_c_() = default;
res_map_pattern_r16_c_(const res_map_pattern_r16_c_& other);
res_map_pattern_r16_c_& operator=(const res_map_pattern_r16_c_& other);
~res_map_pattern_r16_c_() { destroy_(); }
void set(types::options e = types::nulltype);
types type() const { return type_; }
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
// getters
res_location_with_wus_e_& res_location_with_wus()
{
assert_choice_type(types::res_location_with_wus, type_, "resourceMappingPattern-r16");
return c.get<res_location_with_wus_e_>();
}
res_location_without_wus_e_& res_location_without_wus()
{
assert_choice_type(types::res_location_without_wus, type_, "resourceMappingPattern-r16");
return c.get<res_location_without_wus_e_>();
}
const res_location_with_wus_e_& res_location_with_wus() const
{
assert_choice_type(types::res_location_with_wus, type_, "resourceMappingPattern-r16");
return c.get<res_location_with_wus_e_>();
}
const res_location_without_wus_e_& res_location_without_wus() const
{
assert_choice_type(types::res_location_without_wus, type_, "resourceMappingPattern-r16");
return c.get<res_location_without_wus_e_>();
}
res_location_with_wus_e_& set_res_location_with_wus();
res_location_without_wus_e_& set_res_location_without_wus();
private:
types type_;
pod_choice_buffer_t c;
void destroy_();
};
// member variables
bool num_groups_list_r16_present = false;
bool groups_for_service_list_r16_present = false;
res_map_pattern_r16_c_ res_map_pattern_r16;
gwus_num_groups_list_r16_l num_groups_list_r16;
gwus_groups_for_service_list_r16_l groups_for_service_list_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// GWUS-TimeParameters-r16 ::= SEQUENCE
struct gwus_time_params_r16_s {
struct max_dur_factor_r16_opts {
enum options { one32th, one16th, one8th, one4th, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<max_dur_factor_r16_opts> max_dur_factor_r16_e_;
struct num_pos_r16_opts {
enum options { n1, n2, n4, spare1, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<num_pos_r16_opts> num_pos_r16_e_;
struct time_offset_drx_r16_opts {
enum options { ms40, ms80, ms160, ms240, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<time_offset_drx_r16_opts> time_offset_drx_r16_e_;
struct time_offset_e_drx_short_r16_opts {
enum options { ms40, ms80, ms160, ms240, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<time_offset_e_drx_short_r16_opts> time_offset_e_drx_short_r16_e_;
struct time_offset_e_drx_long_r16_opts {
enum options { ms1000, ms2000, nulltype } value;
typedef uint16_t number_type;
const char* to_string() const;
uint16_t to_number() const;
};
typedef enumerated<time_offset_e_drx_long_r16_opts> time_offset_e_drx_long_r16_e_;
struct num_drx_cycles_relaxed_r16_opts {
enum options { n1, n2, n4, n8, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<num_drx_cycles_relaxed_r16_opts> num_drx_cycles_relaxed_r16_e_;
struct pwr_boost_r16_opts {
enum options { db0, db1dot8, db3, db4dot8, nulltype } value;
typedef float number_type;
const char* to_string() const;
float to_number() const;
const char* to_number_string() const;
};
typedef enumerated<pwr_boost_r16_opts> pwr_boost_r16_e_;
// member variables
bool ext = false;
bool num_pos_r16_present = false;
bool time_offset_e_drx_long_r16_present = false;
bool num_drx_cycles_relaxed_r16_present = false;
bool pwr_boost_r16_present = false;
max_dur_factor_r16_e_ max_dur_factor_r16;
num_pos_r16_e_ num_pos_r16;
time_offset_drx_r16_e_ time_offset_drx_r16;
time_offset_e_drx_short_r16_e_ time_offset_e_drx_short_r16;
time_offset_e_drx_long_r16_e_ time_offset_e_drx_long_r16;
num_drx_cycles_relaxed_r16_e_ num_drx_cycles_relaxed_r16;
pwr_boost_r16_e_ pwr_boost_r16;
// ...
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// N1PUCCH-AN-InfoList-r13 ::= SEQUENCE (SIZE (1..4)) OF INTEGER (0..2047) // N1PUCCH-AN-InfoList-r13 ::= SEQUENCE (SIZE (1..4)) OF INTEGER (0..2047)
using n1_pucch_an_info_list_r13_l = bounded_array<uint16_t, 4>; using n1_pucch_an_info_list_r13_l = bounded_array<uint16_t, 4>;
@ -824,6 +1017,27 @@ struct bcch_cfg_v1310_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// CRS-ChEstMPDCCH-ConfigCommon-r16 ::= SEQUENCE
struct crs_ch_est_mpdcch_cfg_common_r16_s {
struct pwr_ratio_r16_opts {
enum options { db_minus4dot77, db_minus3, db_minus1dot77, db0, db1, db2, db3, db4dot77, nulltype } value;
typedef float number_type;
const char* to_string() const;
float to_number() const;
const char* to_number_string() const;
};
typedef enumerated<pwr_ratio_r16_opts> pwr_ratio_r16_e_;
// member variables
pwr_ratio_r16_e_ pwr_ratio_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// FreqHoppingParameters-r13 ::= SEQUENCE // FreqHoppingParameters-r13 ::= SEQUENCE
struct freq_hop_params_r13_s { struct freq_hop_params_r13_s {
struct dummy_opts { struct dummy_opts {
@ -1111,6 +1325,39 @@ struct freq_hop_params_r13_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// GWUS-Config-r16 ::= SEQUENCE
struct gwus_cfg_r16_s {
struct common_seq_r16_opts {
enum options { g0, g126, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<common_seq_r16_opts> common_seq_r16_e_;
// member variables
bool group_alternation_r16_present = false;
bool common_seq_r16_present = false;
bool time_params_r16_present = false;
bool res_cfg_e_drx_short_r16_present = false;
bool res_cfg_e_drx_long_r16_present = false;
bool prob_thresh_list_r16_present = false;
bool group_narrow_band_list_r16_present = false;
common_seq_r16_e_ common_seq_r16;
gwus_time_params_r16_s time_params_r16;
gwus_res_cfg_r16_s res_cfg_drx_r16;
gwus_res_cfg_r16_s res_cfg_e_drx_short_r16;
gwus_res_cfg_r16_s res_cfg_e_drx_long_r16;
gwus_prob_thresh_list_r16_l prob_thresh_list_r16;
gwus_group_narrow_band_list_r16_l group_narrow_band_list_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// HighSpeedConfig-r14 ::= SEQUENCE // HighSpeedConfig-r14 ::= SEQUENCE
struct high_speed_cfg_r14_s { struct high_speed_cfg_r14_s {
bool high_speed_enhanced_meas_flag_r14_present = false; bool high_speed_enhanced_meas_flag_r14_present = false;
@ -1130,6 +1377,17 @@ struct high_speed_cfg_v1530_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// HighSpeedConfig-v1610 ::= SEQUENCE
struct high_speed_cfg_v1610_s {
bool high_speed_enh_meas_flag2_r16_present = false;
bool high_speed_enh_demod_flag2_r16_present = false;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// PCCH-Config ::= SEQUENCE // PCCH-Config ::= SEQUENCE
struct pcch_cfg_s { struct pcch_cfg_s {
struct default_paging_cycle_opts { struct default_paging_cycle_opts {
@ -1201,6 +1459,14 @@ struct pcch_cfg_v1310_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// PCCH-Config-v1700 ::= SEQUENCE
struct pcch_cfg_v1700_s {
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// PDSCH-ConfigCommon ::= SEQUENCE // PDSCH-ConfigCommon ::= SEQUENCE
struct pdsch_cfg_common_s { struct pdsch_cfg_common_s {
int8_t ref_sig_pwr = -60; int8_t ref_sig_pwr = -60;
@ -1366,6 +1632,26 @@ struct prach_cfg_sib_v1530_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// PRACH-TxDuration-r17 ::= SEQUENCE
struct prach_tx_dur_r17_s {
struct prach_tx_dur_r17_opts {
enum options { n1, n2, n4, n8, n16, n32, n64, n128, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<prach_tx_dur_r17_opts> prach_tx_dur_r17_e_;
// member variables
prach_tx_dur_r17_e_ prach_tx_dur_r17;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// PUCCH-ConfigCommon ::= SEQUENCE // PUCCH-ConfigCommon ::= SEQUENCE
struct pucch_cfg_common_s { struct pucch_cfg_common_s {
struct delta_pucch_shift_opts { struct delta_pucch_shift_opts {
@ -1465,6 +1751,26 @@ struct pucch_cfg_common_v1430_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// PUCCH-TxDuration-r17 ::= SEQUENCE
struct pucch_tx_dur_r17_s {
struct pucch_tx_dur_r17_opts {
enum options { sf2, sf4, sf8, sf16, sf32, sf64, sf128, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<pucch_tx_dur_r17_opts> pucch_tx_dur_r17_e_;
// member variables
pucch_tx_dur_r17_e_ pucch_tx_dur_r17;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// PUSCH-ConfigCommon ::= SEQUENCE // PUSCH-ConfigCommon ::= SEQUENCE
struct pusch_cfg_common_s { struct pusch_cfg_common_s {
struct pusch_cfg_basic_s_ { struct pusch_cfg_basic_s_ {
@ -1537,6 +1843,26 @@ struct pusch_cfg_common_v1310_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// PUSCH-TxDuration-r17 ::= SEQUENCE
struct pusch_tx_dur_r17_s {
struct pusch_tx_dur_r17_opts {
enum options { n2, n4, n8, n16, n32, n64, n128, n256, nulltype } value;
typedef uint16_t number_type;
const char* to_string() const;
uint16_t to_number() const;
};
typedef enumerated<pusch_tx_dur_r17_opts> pusch_tx_dur_r17_e_;
// member variables
pusch_tx_dur_r17_e_ pusch_tx_dur_r17;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// RACH-ConfigCommon ::= SEQUENCE // RACH-ConfigCommon ::= SEQUENCE
struct rach_cfg_common_s { struct rach_cfg_common_s {
struct preamb_info_s_ { struct preamb_info_s_ {
@ -1857,6 +2183,17 @@ struct ul_pwr_ctrl_common_v1530_s {
bool operator!=(const ul_pwr_ctrl_common_v1530_s& other) const { return not(*this == other); } bool operator!=(const ul_pwr_ctrl_common_v1530_s& other) const { return not(*this == other); }
}; };
// UplinkPowerControlCommon-v1610 ::= SEQUENCE
struct ul_pwr_ctrl_common_v1610_s {
alpha_r12_e alpha_srs_add_r16;
int8_t p0_nominal_srs_add_r16 = -126;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// WUS-Config-r15 ::= SEQUENCE // WUS-Config-r15 ::= SEQUENCE
struct wus_cfg_r15_s { struct wus_cfg_r15_s {
struct max_dur_factor_r15_opts { struct max_dur_factor_r15_opts {
@ -1945,8 +2282,50 @@ struct wus_cfg_v1560_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// WUS-Config-v1610 ::= SEQUENCE
struct wus_cfg_v1610_s {
struct num_drx_cycles_relaxed_r16_opts {
enum options { n1, n2, n4, n8, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<num_drx_cycles_relaxed_r16_opts> num_drx_cycles_relaxed_r16_e_;
// member variables
num_drx_cycles_relaxed_r16_e_ num_drx_cycles_relaxed_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// RadioResourceConfigCommonSIB ::= SEQUENCE // RadioResourceConfigCommonSIB ::= SEQUENCE
struct rr_cfg_common_sib_s { struct rr_cfg_common_sib_s {
struct ntn_cfg_common_r17_s_ {
struct t318_r17_opts {
enum options { ms0, ms50, ms100, ms200, ms500, ms1000, ms2000, ms4000, nulltype } value;
typedef uint16_t number_type;
const char* to_string() const;
uint16_t to_number() const;
};
typedef enumerated<t318_r17_opts> t318_r17_e_;
// member variables
bool ta_report_r17_present = false;
bool prach_tx_dur_r17_present = false;
bool pucch_tx_dur_r17_present = false;
bool pusch_tx_dur_r17_present = false;
t318_r17_e_ t318_r17;
prach_tx_dur_r17_s prach_tx_dur_r17;
pucch_tx_dur_r17_s pucch_tx_dur_r17;
pusch_tx_dur_r17_s pusch_tx_dur_r17;
};
// member variables
bool ext = false; bool ext = false;
rach_cfg_common_s rach_cfg_common; rach_cfg_common_s rach_cfg_common;
bcch_cfg_s bcch_cfg; bcch_cfg_s bcch_cfg;
@ -1986,6 +2365,21 @@ struct rr_cfg_common_sib_s {
copy_ptr<ul_pwr_ctrl_common_v1530_s> ul_pwr_ctrl_common_v1540; copy_ptr<ul_pwr_ctrl_common_v1530_s> ul_pwr_ctrl_common_v1540;
// group 7 // group 7
copy_ptr<wus_cfg_v1560_s> wus_cfg_v1560; copy_ptr<wus_cfg_v1560_s> wus_cfg_v1560;
// group 8
bool rss_meas_cfg_r16_present = false;
bool rss_meas_non_ncl_r16_present = false;
bool punctured_subcarriers_dl_r16_present = false;
bool high_speed_inter_rat_nr_r16_present = false;
copy_ptr<wus_cfg_v1610_s> wus_cfg_v1610;
copy_ptr<high_speed_cfg_v1610_s> high_speed_cfg_v1610;
copy_ptr<crs_ch_est_mpdcch_cfg_common_r16_s> crs_ch_est_mpdcch_cfg_common_r16;
copy_ptr<gwus_cfg_r16_s> gwus_cfg_r16;
copy_ptr<ul_pwr_ctrl_common_v1610_s> ul_pwr_ctrl_common_v1610;
fixed_bitstring<2> punctured_subcarriers_dl_r16;
bool high_speed_inter_rat_nr_r16 = false;
// group 9
copy_ptr<pcch_cfg_v1700_s> pcch_cfg_v1700;
copy_ptr<ntn_cfg_common_r17_s_> ntn_cfg_common_r17;
// sequence methods // sequence methods
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;
@ -2321,6 +2715,9 @@ struct rr_cfg_common_scell_r10_s {
copy_ptr<mbsfn_sf_cfg_list_v1430_l> mbsfn_sf_cfg_list_v1430; copy_ptr<mbsfn_sf_cfg_list_v1430_l> mbsfn_sf_cfg_list_v1430;
// group 6 // group 6
copy_ptr<ul_pwr_ctrl_common_v1530_s> ul_pwr_ctrl_common_scell_v1530; copy_ptr<ul_pwr_ctrl_common_v1530_s> ul_pwr_ctrl_common_scell_v1530;
// group 7
bool high_speed_enh_meas_flag_scell_r16_present = false;
bool high_speed_enh_meas_flag_scell_r16 = false;
// sequence methods // sequence methods
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;
@ -2459,6 +2856,28 @@ struct prach_cfg_v1310_s {
// RadioResourceConfigCommon ::= SEQUENCE // RadioResourceConfigCommon ::= SEQUENCE
struct rr_cfg_common_s { struct rr_cfg_common_s {
struct ntn_cfg_common_r17_s_ {
struct t318_r17_opts {
enum options { ms0, ms50, ms100, ms200, ms500, ms1000, ms2000, ms4000, ms6000, nulltype } value;
typedef uint16_t number_type;
const char* to_string() const;
uint16_t to_number() const;
};
typedef enumerated<t318_r17_opts> t318_r17_e_;
// member variables
bool ta_report_r17_present = false;
bool prach_tx_dur_r17_present = false;
bool pucch_tx_dur_r17_present = false;
bool pusch_tx_dur_r17_present = false;
t318_r17_e_ t318_r17;
prach_tx_dur_r17_s prach_tx_dur_r17;
pucch_tx_dur_r17_s pucch_tx_dur_r17;
pusch_tx_dur_r17_s pusch_tx_dur_r17;
};
// member variables
bool ext = false; bool ext = false;
bool rach_cfg_common_present = false; bool rach_cfg_common_present = false;
bool pdsch_cfg_common_present = false; bool pdsch_cfg_common_present = false;
@ -2505,6 +2924,13 @@ struct rr_cfg_common_s {
// group 6 // group 6
copy_ptr<ul_pwr_ctrl_common_v1530_s> ul_pwr_ctrl_common_v1530; copy_ptr<ul_pwr_ctrl_common_v1530_s> ul_pwr_ctrl_common_v1530;
copy_ptr<high_speed_cfg_v1530_s> high_speed_cfg_v1530; copy_ptr<high_speed_cfg_v1530_s> high_speed_cfg_v1530;
// group 7
bool high_speed_inter_rat_nr_r16_present = false;
copy_ptr<high_speed_cfg_v1610_s> high_speed_cfg_v1610;
copy_ptr<ul_pwr_ctrl_common_v1610_s> ul_pwr_ctrl_common_v1610;
bool high_speed_inter_rat_nr_r16 = false;
// group 8
copy_ptr<ntn_cfg_common_r17_s_> ntn_cfg_common_r17;
// sequence methods // sequence methods
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;

@ -12,7 +12,7 @@
/******************************************************************************* /*******************************************************************************
* *
* 3GPP TS ASN1 RRC v15.11.0 (2020-09) * 3GPP TS ASN1 RRC v17.4.0 (2023-03)
* *
******************************************************************************/ ******************************************************************************/
@ -446,6 +446,56 @@ struct dl_um_rlc_s {
bool operator!=(const dl_um_rlc_s& other) const { return not(*this == other); } bool operator!=(const dl_um_rlc_s& other) const { return not(*this == other); }
}; };
// DiscardTimerExt-r17 ::= ENUMERATED
struct discard_timer_ext_r17_opts {
enum options { ms2000, spare, nulltype } value;
typedef uint16_t number_type;
const char* to_string() const;
uint16_t to_number() const;
};
typedef enumerated<discard_timer_ext_r17_opts> discard_timer_ext_r17_e;
// EthernetHeaderCompression-r16 ::= SEQUENCE
struct ethernet_hdr_compress_r16_s {
struct ehc_common_r16_s_ {
struct ehc_cid_len_r16_opts {
enum options { bits7, bits15, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<ehc_cid_len_r16_opts> ehc_cid_len_r16_e_;
// member variables
ehc_cid_len_r16_e_ ehc_cid_len_r16;
};
struct ehc_dl_r16_s_ {
bool drb_continue_ehc_dl_r16_present = false;
};
struct ehc_ul_r16_s_ {
bool drb_continue_ehc_ul_r16_present = false;
uint16_t max_cid_ehc_ul_r16 = 1;
};
// member variables
bool ext = false;
bool ehc_dl_r16_present = false;
bool ehc_ul_r16_present = false;
ehc_common_r16_s_ ehc_common_r16;
ehc_dl_r16_s_ ehc_dl_r16;
ehc_ul_r16_s_ ehc_ul_r16;
// ...
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
bool operator==(const ethernet_hdr_compress_r16_s& other) const;
bool operator!=(const ethernet_hdr_compress_r16_s& other) const { return not(*this == other); }
};
// LogicalChannelConfig ::= SEQUENCE // LogicalChannelConfig ::= SEQUENCE
struct lc_ch_cfg_s { struct lc_ch_cfg_s {
struct ul_specific_params_s_ { struct ul_specific_params_s_ {
@ -600,6 +650,14 @@ struct lc_ch_cfg_s {
types type_; types type_;
uint8_t c; uint8_t c;
}; };
struct bit_rate_multiplier_r16_opts {
enum options { x40, x70, x100, x200, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<bit_rate_multiplier_r16_opts> bit_rate_multiplier_r16_e_;
// member variables // member variables
bool ext = false; bool ext = false;
@ -622,6 +680,9 @@ struct lc_ch_cfg_s {
copy_ptr<lc_ch_sr_restrict_r15_c_> lc_ch_sr_restrict_r15; copy_ptr<lc_ch_sr_restrict_r15_c_> lc_ch_sr_restrict_r15;
copy_ptr<ch_access_prio_r15_c_> ch_access_prio_r15; copy_ptr<ch_access_prio_r15_c_> ch_access_prio_r15;
fixed_bitstring<32> lch_cell_restrict_r15; fixed_bitstring<32> lch_cell_restrict_r15;
// group 4
bool bit_rate_multiplier_r16_present = false;
bit_rate_multiplier_r16_e_ bit_rate_multiplier_r16;
// sequence methods // sequence methods
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;
@ -756,6 +817,16 @@ struct rlc_cfg_r15_s {
bool operator!=(const rlc_cfg_r15_s& other) const { return not(*this == other); } bool operator!=(const rlc_cfg_r15_s& other) const { return not(*this == other); }
}; };
// T-ReorderingExt-r17 ::= ENUMERATED
struct t_reordering_ext_r17_opts {
enum options { ms2200, ms3200, nulltype } value;
typedef uint16_t number_type;
const char* to_string() const;
uint16_t to_number() const;
};
typedef enumerated<t_reordering_ext_r17_opts> t_reordering_ext_r17_e;
// UL-AM-RLC ::= SEQUENCE // UL-AM-RLC ::= SEQUENCE
struct ul_am_rlc_s { struct ul_am_rlc_s {
struct max_retx_thres_opts { struct max_retx_thres_opts {
@ -1389,6 +1460,10 @@ struct pdcp_cfg_s {
// group 5 // group 5
copy_ptr<ul_data_compress_r15_s_> ul_data_compress_r15; copy_ptr<ul_data_compress_r15_s_> ul_data_compress_r15;
copy_ptr<pdcp_dupl_cfg_r15_c_> pdcp_dupl_cfg_r15; copy_ptr<pdcp_dupl_cfg_r15_c_> pdcp_dupl_cfg_r15;
// group 6
copy_ptr<setup_release_c<ethernet_hdr_compress_r16_s> > ethernet_hdr_compress_r16;
// group 7
copy_ptr<setup_release_c<discard_timer_ext_r17_e> > discard_timer_ext_r17;
// sequence methods // sequence methods
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;
@ -1672,6 +1747,18 @@ private:
types type_; types type_;
}; };
// RLC-Config-v1700 ::= SEQUENCE
struct rlc_cfg_v1700_s {
setup_release_c<t_reordering_ext_r17_e> t_reordering_ext_r17;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
bool operator==(const rlc_cfg_v1700_s& other) const;
bool operator!=(const rlc_cfg_v1700_s& other) const { return not(*this == other); }
};
// SPS-ConfigSL-r14 ::= SEQUENCE // SPS-ConfigSL-r14 ::= SEQUENCE
struct sps_cfg_sl_r14_s { struct sps_cfg_sl_r14_s {
struct semi_persist_sched_interv_sl_r14_opts { struct semi_persist_sched_interv_sl_r14_opts {
@ -2150,6 +2237,10 @@ struct drb_to_add_mod_s {
copy_ptr<rlc_cfg_v1530_c> rlc_cfg_v1530; copy_ptr<rlc_cfg_v1530_c> rlc_cfg_v1530;
copy_ptr<rlc_bearer_cfg_r15_c> rlc_bearer_cfg_secondary_r15; copy_ptr<rlc_bearer_cfg_r15_c> rlc_bearer_cfg_secondary_r15;
uint8_t lc_ch_id_r15 = 32; uint8_t lc_ch_id_r15 = 32;
// group 5
bool daps_ho_r16_present = false;
// group 6
copy_ptr<rlc_cfg_v1700_s> rlc_cfg_v1700;
// sequence methods // sequence methods
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;
@ -2736,6 +2827,35 @@ using neigh_cells_to_add_mod_list_r12_l = dyn_array<neigh_cells_info_r12_s>;
// NeighCellsToReleaseList-r12 ::= SEQUENCE (SIZE (1..8)) OF INTEGER (0..503) // NeighCellsToReleaseList-r12 ::= SEQUENCE (SIZE (1..8)) OF INTEGER (0..503)
using neigh_cells_to_release_list_r12_l = bounded_array<uint16_t, 8>; using neigh_cells_to_release_list_r12_l = bounded_array<uint16_t, 8>;
// OffsetThresholdTA-r17 ::= ENUMERATED
struct offset_thres_ta_r17_opts {
enum options {
ms0dot5,
ms1,
ms2,
ms3,
ms4,
ms5,
ms6,
ms7,
ms8,
ms9,
ms10,
ms11,
ms12,
ms13,
ms14,
ms15,
nulltype
} value;
typedef float number_type;
const char* to_string() const;
float to_number() const;
const char* to_number_string() const;
};
typedef enumerated<offset_thres_ta_r17_opts> offset_thres_ta_r17_e;
// PeriodicBSR-Timer-r12 ::= ENUMERATED // PeriodicBSR-Timer-r12 ::= ENUMERATED
struct periodic_bsr_timer_r12_opts { struct periodic_bsr_timer_r12_opts {
enum options { enum options {
@ -3007,6 +3127,16 @@ using sps_cfg_ul_to_release_list_r14_l = bounded_array<uint8_t, 8>;
// SPS-ConfigUL-ToReleaseList-r15 ::= SEQUENCE (SIZE (1..6)) OF INTEGER (1..6) // SPS-ConfigUL-ToReleaseList-r15 ::= SEQUENCE (SIZE (1..6)) OF INTEGER (1..6)
using sps_cfg_ul_to_release_list_r15_l = bounded_array<uint8_t, 6>; using sps_cfg_ul_to_release_list_r15_l = bounded_array<uint8_t, 6>;
// SR-ProhibitTimerOffset-r17 ::= ENUMERATED
struct sr_prohibit_timer_offset_r17_opts {
enum options { ms90, ms180, ms270, ms360, ms450, ms540, ms1080, spare, nulltype } value;
typedef uint16_t number_type;
const char* to_string() const;
uint16_t to_number() const;
};
typedef enumerated<sr_prohibit_timer_offset_r17_opts> sr_prohibit_timer_offset_r17_e;
// SRB-ToAddMod ::= SEQUENCE // SRB-ToAddMod ::= SEQUENCE
struct srb_to_add_mod_s { struct srb_to_add_mod_s {
struct rlc_cfg_c_ { struct rlc_cfg_c_ {
@ -3096,6 +3226,8 @@ struct srb_to_add_mod_s {
uint8_t srb_id_v1530 = 4; uint8_t srb_id_v1530 = 4;
// group 1 // group 1
copy_ptr<rlc_cfg_v1510_s> rlc_cfg_v1560; copy_ptr<rlc_cfg_v1510_s> rlc_cfg_v1560;
// group 2
copy_ptr<rlc_cfg_v1700_s> rlc_cfg_v1700;
// sequence methods // sequence methods
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;
@ -3111,6 +3243,36 @@ using stag_to_add_mod_list_r11_l = dyn_array<stag_to_add_mod_r11_s>;
// STAG-ToReleaseList-r11 ::= SEQUENCE (SIZE (1..3)) OF INTEGER (1..3) // STAG-ToReleaseList-r11 ::= SEQUENCE (SIZE (1..3)) OF INTEGER (1..3)
using stag_to_release_list_r11_l = bounded_array<uint8_t, 3>; using stag_to_release_list_r11_l = bounded_array<uint8_t, 3>;
// CRS-ChEstMPDCCH-ConfigDedicated-r16 ::= SEQUENCE
struct crs_ch_est_mpdcch_cfg_ded_r16_s {
struct pwr_ratio_r16_opts {
enum options { db_minus4dot77, db_minus3, db_minus1dot77, db0, db1, db2, db3, db4dot77, nulltype } value;
typedef float number_type;
const char* to_string() const;
float to_number() const;
const char* to_number_string() const;
};
typedef enumerated<pwr_ratio_r16_opts> pwr_ratio_r16_e_;
struct localized_map_type_r16_opts {
enum options { predefined, csi_based, reciprocity_based, nulltype } value;
const char* to_string() const;
};
typedef enumerated<localized_map_type_r16_opts> localized_map_type_r16_e_;
// member variables
bool pwr_ratio_r16_present = false;
bool localized_map_type_r16_present = false;
pwr_ratio_r16_e_ pwr_ratio_r16;
localized_map_type_r16_e_ localized_map_type_r16;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// DRB-ToAddModList ::= SEQUENCE (SIZE (1..11)) OF DRB-ToAddMod // DRB-ToAddModList ::= SEQUENCE (SIZE (1..11)) OF DRB-ToAddMod
using drb_to_add_mod_list_l = dyn_array<drb_to_add_mod_s>; using drb_to_add_mod_list_l = dyn_array<drb_to_add_mod_s>;
@ -3651,6 +3813,11 @@ struct mac_main_cfg_s {
copy_ptr<short_tti_and_spt_r15_c_> short_tti_and_spt_r15; copy_ptr<short_tti_and_spt_r15_c_> short_tti_and_spt_r15;
bool mpdcch_ul_harq_ack_feedback_cfg_r15 = false; bool mpdcch_ul_harq_ack_feedback_cfg_r15 = false;
copy_ptr<dormant_state_timers_r15_c_> dormant_state_timers_r15; copy_ptr<dormant_state_timers_r15_c_> dormant_state_timers_r15;
// group 9
bool ce_etws_cmas_rx_in_conn_r16_present = false;
// group 10
copy_ptr<setup_release_c<offset_thres_ta_r17_e> > offset_thres_ta_r17;
copy_ptr<setup_release_c<sr_prohibit_timer_offset_r17_e> > sr_prohibit_timer_offset_r17;
// sequence methods // sequence methods
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;
@ -3964,6 +4131,51 @@ private:
setup_s_ c; setup_s_ c;
}; };
// RLF-TimersAndConstantsMCG-Failure-r16 ::= CHOICE
struct rlf_timers_and_consts_mcg_fail_r16_c {
struct setup_s_ {
struct t316_r16_opts {
enum options { ms50, ms100, ms200, ms300, ms400, ms500, ms600, ms1000, ms1500, ms2000, nulltype } value;
typedef uint16_t number_type;
const char* to_string() const;
uint16_t to_number() const;
};
typedef enumerated<t316_r16_opts> t316_r16_e_;
// member variables
bool ext = false;
t316_r16_e_ t316_r16;
// ...
};
using types = setup_e;
// choice methods
rlf_timers_and_consts_mcg_fail_r16_c() = default;
void set(types::options e = types::nulltype);
types type() const { return type_; }
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
// getters
setup_s_& setup()
{
assert_choice_type(types::setup, type_, "RLF-TimersAndConstantsMCG-Failure-r16");
return c;
}
const setup_s_& setup() const
{
assert_choice_type(types::setup, type_, "RLF-TimersAndConstantsMCG-Failure-r16");
return c;
}
void set_release();
setup_s_& set_setup();
private:
types type_;
setup_s_ c;
};
// SPS-Config ::= SEQUENCE // SPS-Config ::= SEQUENCE
struct sps_cfg_s { struct sps_cfg_s {
bool semi_persist_sched_c_rnti_present = false; bool semi_persist_sched_c_rnti_present = false;
@ -4186,6 +4398,11 @@ struct rr_cfg_ded_s {
copy_ptr<dummy_l_> dummy; copy_ptr<dummy_l_> dummy;
// group 7 // group 7
copy_ptr<sps_cfg_v1540_s> sps_cfg_v1540; copy_ptr<sps_cfg_v1540_s> sps_cfg_v1540;
// group 8
bool new_ue_id_r16_present = false;
copy_ptr<rlf_timers_and_consts_mcg_fail_r16_c> rlf_timers_and_consts_mcg_fail_r16;
copy_ptr<setup_release_c<crs_ch_est_mpdcch_cfg_ded_r16_s> > crs_ch_est_mpdcch_cfg_ded_r16;
fixed_bitstring<16> new_ue_id_r16;
// sequence methods // sequence methods
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;
@ -4704,6 +4921,20 @@ struct cqi_report_cfg_scell_r15_s {
bool operator!=(const cqi_report_cfg_scell_r15_s& other) const { return not(*this == other); } bool operator!=(const cqi_report_cfg_scell_r15_s& other) const { return not(*this == other); }
}; };
// CQI-ReportPeriodicSCell-v1730 ::= SEQUENCE
struct cqi_report_periodic_scell_v1730_s {
bool ri_cfg_idx2_dormant_r17_present = false;
uint16_t cqi_pmi_cfg_idx2_dormant_r17 = 0;
uint16_t ri_cfg_idx2_dormant_r17 = 0;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
bool operator==(const cqi_report_periodic_scell_v1730_s& other) const;
bool operator!=(const cqi_report_periodic_scell_v1730_s& other) const { return not(*this == other); }
};
// CQI-ShortConfigSCell-r15 ::= CHOICE // CQI-ShortConfigSCell-r15 ::= CHOICE
struct cqi_short_cfg_scell_r15_c { struct cqi_short_cfg_scell_r15_c {
struct setup_s_ { struct setup_s_ {
@ -5784,6 +6015,11 @@ struct phys_cfg_ded_scell_r10_s {
copy_ptr<blind_pdsch_repeat_cfg_r15_c_> blind_pdsch_repeat_cfg_r15; copy_ptr<blind_pdsch_repeat_cfg_r15_c_> blind_pdsch_repeat_cfg_r15;
// group 8 // group 8
copy_ptr<spucch_cfg_v1550_c> spucch_cfg_v1550; copy_ptr<spucch_cfg_v1550_c> spucch_cfg_v1550;
// group 9
copy_ptr<setup_release_c<srs_ul_cfg_ded_add_r16_s> > srs_ul_cfg_ded_add_r16;
copy_ptr<setup_release_c<ul_pwr_ctrl_add_srs_r16_s> > ul_pwr_ctrl_add_srs_r16;
copy_ptr<setup_release_c<srs_virtual_cell_id_r16_s> > srs_virtual_cell_id_r16;
copy_ptr<setup_release_c<wideband_prg_r16_s> > wideband_prg_r16;
// sequence methods // sequence methods
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;
@ -5841,6 +6077,18 @@ struct phys_cfg_ded_scell_v1370_s {
bool operator!=(const phys_cfg_ded_scell_v1370_s& other) const { return not(*this == other); } bool operator!=(const phys_cfg_ded_scell_v1370_s& other) const { return not(*this == other); }
}; };
// PhysicalConfigDedicatedSCell-v1730 ::= SEQUENCE
struct phys_cfg_ded_scell_v1730_s {
setup_release_c<cqi_report_periodic_scell_v1730_s> cqi_report_periodic_scell_v1730;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
bool operator==(const phys_cfg_ded_scell_v1730_s& other) const;
bool operator!=(const phys_cfg_ded_scell_v1730_s& other) const { return not(*this == other); }
};
// AntennaInfoDedicated-v10i0 ::= SEQUENCE // AntennaInfoDedicated-v10i0 ::= SEQUENCE
struct ant_info_ded_v10i0_s { struct ant_info_ded_v10i0_s {
struct max_layers_mimo_r10_opts { struct max_layers_mimo_r10_opts {
@ -5883,6 +6131,8 @@ struct rr_cfg_ded_scell_r10_s {
bool crs_intf_mitig_enabled_r15 = false; bool crs_intf_mitig_enabled_r15 = false;
copy_ptr<neigh_cells_crs_info_r15_c> neigh_cells_crs_info_r15; copy_ptr<neigh_cells_crs_info_r15_c> neigh_cells_crs_info_r15;
copy_ptr<sps_cfg_v1530_s> sps_cfg_v1530; copy_ptr<sps_cfg_v1530_s> sps_cfg_v1530;
// group 5
copy_ptr<phys_cfg_ded_scell_v1730_s> phys_cfg_ded_scell_v1730;
// sequence methods // sequence methods
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;

@ -12,7 +12,7 @@
/******************************************************************************* /*******************************************************************************
* *
* 3GPP TS ASN1 RRC v15.11.0 (2020-09) * 3GPP TS ASN1 RRC v17.4.0 (2023-03)
* *
******************************************************************************/ ******************************************************************************/
@ -52,7 +52,7 @@ struct security_algorithm_cfg_s {
// SecurityConfigHO-v1530 ::= SEQUENCE // SecurityConfigHO-v1530 ::= SEQUENCE
struct security_cfg_ho_v1530_s { struct security_cfg_ho_v1530_s {
struct handov_type_v1530_c_ { struct handov_type_v1530_c_ {
struct intra5_gc_r15_s_ { struct intra5_gc_s_ {
bool security_algorithm_cfg_r15_present = false; bool security_algorithm_cfg_r15_present = false;
bool nas_container_r15_present = false; bool nas_container_r15_present = false;
security_algorithm_cfg_s security_algorithm_cfg_r15; security_algorithm_cfg_s security_algorithm_cfg_r15;
@ -60,16 +60,16 @@ struct security_cfg_ho_v1530_s {
uint8_t next_hop_chaining_count_r15 = 0; uint8_t next_hop_chaining_count_r15 = 0;
dyn_octstring nas_container_r15; dyn_octstring nas_container_r15;
}; };
struct fivegc_to_epc_r15_s_ { struct fivegc_to_epc_s_ {
security_algorithm_cfg_s security_algorithm_cfg_r15; security_algorithm_cfg_s security_algorithm_cfg_r15;
uint8_t next_hop_chaining_count_r15 = 0; uint8_t next_hop_chaining_count_r15 = 0;
}; };
struct epc_to5_gc_r15_s_ { struct epc_to5_gc_s_ {
security_algorithm_cfg_s security_algorithm_cfg_r15; security_algorithm_cfg_s security_algorithm_cfg_r15;
dyn_octstring nas_container_r15; dyn_octstring nas_container_r15;
}; };
struct types_opts { struct types_opts {
enum options { intra5_gc_r15, fivegc_to_epc_r15, epc_to5_gc_r15, nulltype } value; enum options { intra5_gc, fivegc_to_epc, epc_to5_gc, nulltype } value;
const char* to_string() const; const char* to_string() const;
}; };
@ -86,43 +86,43 @@ struct security_cfg_ho_v1530_s {
SRSASN_CODE unpack(cbit_ref& bref); SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
// getters // getters
intra5_gc_r15_s_& intra5_gc_r15() intra5_gc_s_& intra5_gc()
{ {
assert_choice_type(types::intra5_gc_r15, type_, "handoverType-v1530"); assert_choice_type(types::intra5_gc, type_, "handoverType-v1530");
return c.get<intra5_gc_r15_s_>(); return c.get<intra5_gc_s_>();
} }
fivegc_to_epc_r15_s_& fivegc_to_epc_r15() fivegc_to_epc_s_& fivegc_to_epc()
{ {
assert_choice_type(types::fivegc_to_epc_r15, type_, "handoverType-v1530"); assert_choice_type(types::fivegc_to_epc, type_, "handoverType-v1530");
return c.get<fivegc_to_epc_r15_s_>(); return c.get<fivegc_to_epc_s_>();
} }
epc_to5_gc_r15_s_& epc_to5_gc_r15() epc_to5_gc_s_& epc_to5_gc()
{ {
assert_choice_type(types::epc_to5_gc_r15, type_, "handoverType-v1530"); assert_choice_type(types::epc_to5_gc, type_, "handoverType-v1530");
return c.get<epc_to5_gc_r15_s_>(); return c.get<epc_to5_gc_s_>();
} }
const intra5_gc_r15_s_& intra5_gc_r15() const const intra5_gc_s_& intra5_gc() const
{ {
assert_choice_type(types::intra5_gc_r15, type_, "handoverType-v1530"); assert_choice_type(types::intra5_gc, type_, "handoverType-v1530");
return c.get<intra5_gc_r15_s_>(); return c.get<intra5_gc_s_>();
} }
const fivegc_to_epc_r15_s_& fivegc_to_epc_r15() const const fivegc_to_epc_s_& fivegc_to_epc() const
{ {
assert_choice_type(types::fivegc_to_epc_r15, type_, "handoverType-v1530"); assert_choice_type(types::fivegc_to_epc, type_, "handoverType-v1530");
return c.get<fivegc_to_epc_r15_s_>(); return c.get<fivegc_to_epc_s_>();
} }
const epc_to5_gc_r15_s_& epc_to5_gc_r15() const const epc_to5_gc_s_& epc_to5_gc() const
{ {
assert_choice_type(types::epc_to5_gc_r15, type_, "handoverType-v1530"); assert_choice_type(types::epc_to5_gc, type_, "handoverType-v1530");
return c.get<epc_to5_gc_r15_s_>(); return c.get<epc_to5_gc_s_>();
} }
intra5_gc_r15_s_& set_intra5_gc_r15(); intra5_gc_s_& set_intra5_gc();
fivegc_to_epc_r15_s_& set_fivegc_to_epc_r15(); fivegc_to_epc_s_& set_fivegc_to_epc();
epc_to5_gc_r15_s_& set_epc_to5_gc_r15(); epc_to5_gc_s_& set_epc_to5_gc();
private: private:
types type_; types type_;
choice_buffer_t<epc_to5_gc_r15_s_, fivegc_to_epc_r15_s_, intra5_gc_r15_s_> c; choice_buffer_t<epc_to5_gc_s_, fivegc_to_epc_s_, intra5_gc_s_> c;
void destroy_(); void destroy_();
}; };

@ -12,7 +12,7 @@
/******************************************************************************* /*******************************************************************************
* *
* 3GPP TS ASN1 RRC v15.11.0 (2020-09) * 3GPP TS ASN1 RRC v17.4.0 (2023-03)
* *
******************************************************************************/ ******************************************************************************/
@ -38,14 +38,63 @@ struct mib_s {
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<dl_bw_opts> dl_bw_e_; typedef enumerated<dl_bw_opts> dl_bw_e_;
struct part_earfcn_minus17_c_ {
struct types_opts {
enum options { spare, earfcn_lsb, nulltype } value;
const char* to_string() const;
};
typedef enumerated<types_opts> types;
// choice methods
part_earfcn_minus17_c_() = default;
part_earfcn_minus17_c_(const part_earfcn_minus17_c_& other);
part_earfcn_minus17_c_& operator=(const part_earfcn_minus17_c_& other);
~part_earfcn_minus17_c_() { destroy_(); }
void set(types::options e = types::nulltype);
types type() const { return type_; }
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
// getters
fixed_bitstring<2>& spare()
{
assert_choice_type(types::spare, type_, "partEARFCN-17");
return c.get<fixed_bitstring<2> >();
}
fixed_bitstring<2>& earfcn_lsb()
{
assert_choice_type(types::earfcn_lsb, type_, "partEARFCN-17");
return c.get<fixed_bitstring<2> >();
}
const fixed_bitstring<2>& spare() const
{
assert_choice_type(types::spare, type_, "partEARFCN-17");
return c.get<fixed_bitstring<2> >();
}
const fixed_bitstring<2>& earfcn_lsb() const
{
assert_choice_type(types::earfcn_lsb, type_, "partEARFCN-17");
return c.get<fixed_bitstring<2> >();
}
fixed_bitstring<2>& set_spare();
fixed_bitstring<2>& set_earfcn_lsb();
private:
types type_;
choice_buffer_t<fixed_bitstring<2> > c;
void destroy_();
};
// member variables // member variables
dl_bw_e_ dl_bw; dl_bw_e_ dl_bw;
phich_cfg_s phich_cfg; phich_cfg_s phich_cfg;
fixed_bitstring<8> sys_frame_num; fixed_bitstring<8> sys_frame_num;
uint8_t sched_info_sib1_br_r13 = 0; uint8_t sched_info_sib1_br_r13 = 0;
bool sys_info_unchanged_br_r15 = false; bool sys_info_unchanged_br_r15 = false;
fixed_bitstring<4> spare; part_earfcn_minus17_c_ part_earfcn_minus17;
fixed_bitstring<1> spare;
// sequence methods // sequence methods
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;
@ -53,14 +102,17 @@ struct mib_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// TrackingAreaList-r17 ::= SEQUENCE (SIZE (1..12)) OF BIT STRING (SIZE (16))
using tracking_area_list_r17_l = bounded_array<fixed_bitstring<16>, 12>;
// GNSS-ID-r15 ::= SEQUENCE // GNSS-ID-r15 ::= SEQUENCE
struct gnss_id_r15_s { struct gnss_id_r15_s {
struct gnss_id_r15_opts { struct gnss_id_r15_opts {
enum options { gps, sbas, qzss, galileo, glonass, bds, /*...*/ nulltype } value; enum options { gps, sbas, qzss, galileo, glonass, bds, /*...*/ navic_v1610, nulltype } value;
const char* to_string() const; const char* to_string() const;
}; };
typedef enumerated<gnss_id_r15_opts, true> gnss_id_r15_e_; typedef enumerated<gnss_id_r15_opts, true, 1> gnss_id_r15_e_;
// member variables // member variables
bool ext = false; bool ext = false;
@ -73,6 +125,17 @@ struct gnss_id_r15_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// PLMN-IdentityInfo-v1700 ::= SEQUENCE
struct plmn_id_info_v1700_s {
bool tracking_area_list_r17_present = false;
tracking_area_list_r17_l tracking_area_list_r17;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// SBAS-ID-r15 ::= SEQUENCE // SBAS-ID-r15 ::= SEQUENCE
struct sbas_id_r15_s { struct sbas_id_r15_s {
struct sbas_id_r15_opts { struct sbas_id_r15_opts {
@ -93,6 +156,21 @@ struct sbas_id_r15_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// PLMN-IdentityInfo-v1610 ::= SEQUENCE
struct plmn_id_info_v1610_s {
bool cp_cio_t_minus5_gs_optim_r16_present = false;
bool up_cio_t_minus5_gs_optim_r16_present = false;
bool iab_support_r16_present = false;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// PLMN-IdentityList-v1700 ::= SEQUENCE (SIZE (1..6)) OF PLMN-IdentityInfo-v1700
using plmn_id_list_v1700_l = dyn_array<plmn_id_info_v1700_s>;
// PosSIB-Type-r15 ::= SEQUENCE // PosSIB-Type-r15 ::= SEQUENCE
struct pos_sib_type_r15_s { struct pos_sib_type_r15_s {
struct pos_sib_type_r15_opts { struct pos_sib_type_r15_opts {
@ -125,12 +203,23 @@ struct pos_sib_type_r15_s {
pos_sib_type2_minus19, pos_sib_type2_minus19,
pos_sib_type3_minus1, pos_sib_type3_minus1,
// ... // ...
pos_sib_type1_minus8_v1610,
pos_sib_type2_minus20_v1610,
pos_sib_type2_minus21_v1610,
pos_sib_type2_minus22_v1610,
pos_sib_type2_minus23_v1610,
pos_sib_type2_minus24_v1610,
pos_sib_type2_minus25_v1610,
pos_sib_type4_minus1_v1610,
pos_sib_type5_minus1_v1610,
pos_sib_type1_minus9_v1700,
pos_sib_type1_minus10_v1700,
nulltype nulltype
} value; } value;
const char* to_string() const; const char* to_string() const;
}; };
typedef enumerated<pos_sib_type_r15_opts, true> pos_sib_type_r15_e_; typedef enumerated<pos_sib_type_r15_opts, true, 11> pos_sib_type_r15_e_;
// member variables // member variables
bool ext = false; bool ext = false;
@ -148,9 +237,39 @@ struct pos_sib_type_r15_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// PLMN-IdentityList-v1610 ::= SEQUENCE (SIZE (1..6)) OF PLMN-IdentityInfo-v1610
using plmn_id_list_v1610_l = dyn_array<plmn_id_info_v1610_s>;
// PosSIB-MappingInfo-r15 ::= SEQUENCE (SIZE (1..32)) OF PosSIB-Type-r15 // PosSIB-MappingInfo-r15 ::= SEQUENCE (SIZE (1..32)) OF PosSIB-Type-r15
using pos_sib_map_info_r15_l = dyn_array<pos_sib_type_r15_s>; using pos_sib_map_info_r15_l = dyn_array<pos_sib_type_r15_s>;
// SystemInformationBlockType1-v1700-IEs ::= SEQUENCE
struct sib_type1_v1700_ies_s {
struct cell_access_related_info_ntn_r17_s_ {
struct cell_barred_ntn_r17_opts {
enum options { barred, not_barred, nulltype } value;
const char* to_string() const;
};
typedef enumerated<cell_barred_ntn_r17_opts> cell_barred_ntn_r17_e_;
// member variables
bool plmn_id_list_v1700_present = false;
cell_barred_ntn_r17_e_ cell_barred_ntn_r17;
plmn_id_list_v1700_l plmn_id_list_v1700;
};
// member variables
bool cell_access_related_info_ntn_r17_present = false;
bool non_crit_ext_present = false;
cell_access_related_info_ntn_r17_s_ cell_access_related_info_ntn_r17;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// PLMN-IdentityInfo-v1530 ::= SEQUENCE // PLMN-IdentityInfo-v1530 ::= SEQUENCE
struct plmn_id_info_v1530_s { struct plmn_id_info_v1530_s {
struct cell_reserved_for_oper_crs_r15_opts { struct cell_reserved_for_oper_crs_r15_opts {
@ -190,6 +309,22 @@ struct pos_sched_info_r15_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// SystemInformationBlockType1-v1610-IEs ::= SEQUENCE
struct sib_type1_v1610_ies_s {
bool edrx_allowed_minus5_gc_r16_present = false;
bool tx_in_ctrl_ch_region_r16_present = false;
bool camping_allowed_in_ce_r16_present = false;
bool plmn_id_list_v1610_present = false;
bool non_crit_ext_present = false;
plmn_id_list_v1610_l plmn_id_list_v1610;
sib_type1_v1700_ies_s non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// CellSelectionInfoCE-v1530 ::= SEQUENCE // CellSelectionInfoCE-v1530 ::= SEQUENCE
struct cell_sel_info_ce_v1530_s { struct cell_sel_info_ce_v1530_s {
struct pwr_class14dbm_offset_r15_opts { struct pwr_class14dbm_offset_r15_opts {
@ -218,8 +353,9 @@ using pos_sched_info_list_r15_l = dyn_array<pos_sched_info_r15_s>;
// SystemInformationBlockType1-v1540-IEs ::= SEQUENCE // SystemInformationBlockType1-v1540-IEs ::= SEQUENCE
struct sib_type1_v1540_ies_s { struct sib_type1_v1540_ies_s {
bool si_pos_offset_r15_present = false; bool si_pos_offset_r15_present = false;
bool non_crit_ext_present = false; bool non_crit_ext_present = false;
sib_type1_v1610_ies_s non_crit_ext;
// sequence methods // sequence methods
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;
@ -927,14 +1063,16 @@ struct sib_type_opts {
sib_type24_v1530, sib_type24_v1530,
sib_type25_v1530, sib_type25_v1530,
sib_type26_v1530, sib_type26_v1530,
sib_type26a_v1610,
sib_type27_v1610,
sib_type28_v1610,
sib_type29_v1610,
nulltype nulltype
} value; } value;
typedef uint8_t number_type;
const char* to_string() const; const char* to_string() const;
uint8_t to_number() const;
}; };
typedef enumerated<sib_type_opts, true, 6> sib_type_e; typedef enumerated<sib_type_opts, true, 10> sib_type_e;
// SystemInformationBlockType1-v1250-IEs ::= SEQUENCE // SystemInformationBlockType1-v1250-IEs ::= SEQUENCE
struct sib_type1_v1250_ies_s { struct sib_type1_v1250_ies_s {
@ -1195,6 +1333,14 @@ struct sib_type2_s {
ul_bw_e_ ul_bw; ul_bw_e_ ul_bw;
uint8_t add_spec_emission = 1; uint8_t add_spec_emission = 1;
}; };
struct mpdcch_cqi_report_r16_opts {
enum options { four_bits, both, nulltype } value;
typedef uint8_t number_type;
const char* to_string() const;
uint8_t to_number() const;
};
typedef enumerated<mpdcch_cqi_report_r16_opts> mpdcch_cqi_report_r16_e_;
// member variables // member variables
bool ext = false; bool ext = false;
@ -1243,6 +1389,19 @@ struct sib_type2_s {
bool reduced_cp_latency_enabled_r15_present = false; bool reduced_cp_latency_enabled_r15_present = false;
// group 10 // group 10
bool mbms_rom_service_ind_r15_present = false; bool mbms_rom_service_ind_r15_present = false;
// group 11
bool rlos_enabled_r16_present = false;
bool early_security_reactivation_r16_present = false;
bool cp_edt_minus5_gc_r16_present = false;
bool up_edt_minus5_gc_r16_present = false;
bool cp_pur_epc_r16_present = false;
bool up_pur_epc_r16_present = false;
bool cp_pur_minus5_gc_r16_present = false;
bool up_pur_minus5_gc_r16_present = false;
bool mpdcch_cqi_report_r16_present = false;
bool rai_activation_enh_r16_present = false;
bool idle_mode_meass_nr_r16_present = false;
mpdcch_cqi_report_r16_e_ mpdcch_cqi_report_r16;
// sequence methods // sequence methods
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;

File diff suppressed because it is too large Load Diff

@ -12,7 +12,7 @@
/******************************************************************************* /*******************************************************************************
* *
* 3GPP TS ASN1 RRC v15.11.0 (2020-09) * 3GPP TS ASN1 RRC v17.4.0 (2023-03)
* *
******************************************************************************/ ******************************************************************************/
@ -28,6 +28,25 @@ namespace rrc {
* Struct Definitions * Struct Definitions
******************************************************************************/ ******************************************************************************/
// RRCEarlyDataRequest-v1610-IEs ::= SEQUENCE
struct rrc_early_data_request_v1610_ies_s {
struct establishment_cause_v1610_opts {
enum options { mt_access, spare3, spare2, spare1, nulltype } value;
const char* to_string() const;
};
typedef enumerated<establishment_cause_v1610_opts> establishment_cause_v1610_e_;
// member variables
bool non_crit_ext_present = false;
establishment_cause_v1610_e_ establishment_cause_v1610;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// EstablishmentCause ::= ENUMERATED // EstablishmentCause ::= ENUMERATED
struct establishment_cause_opts { struct establishment_cause_opts {
enum options { enum options {
@ -46,8 +65,8 @@ struct establishment_cause_opts {
}; };
typedef enumerated<establishment_cause_opts> establishment_cause_e; typedef enumerated<establishment_cause_opts> establishment_cause_e;
// EstablishmentCause-5GC ::= ENUMERATED // EstablishmentCause-5GC-r15 ::= ENUMERATED
struct establishment_cause_minus5_gc_opts { struct establishment_cause_minus5_gc_r15_opts {
enum options { enum options {
emergency, emergency,
high_prio_access, high_prio_access,
@ -62,7 +81,7 @@ struct establishment_cause_minus5_gc_opts {
const char* to_string() const; const char* to_string() const;
}; };
typedef enumerated<establishment_cause_minus5_gc_opts> establishment_cause_minus5_gc_e; typedef enumerated<establishment_cause_minus5_gc_r15_opts> establishment_cause_minus5_gc_r15_e;
// InitialUE-Identity ::= CHOICE // InitialUE-Identity ::= CHOICE
struct init_ue_id_c { struct init_ue_id_c {
@ -114,8 +133,8 @@ private:
void destroy_(); void destroy_();
}; };
// InitialUE-Identity-5GC ::= CHOICE // InitialUE-Identity-5GC-r15 ::= CHOICE
struct init_ue_id_minus5_gc_c { struct init_ue_id_minus5_gc_r15_c {
struct types_opts { struct types_opts {
enum options { ng_minus5_g_s_tmsi_part1, random_value, nulltype } value; enum options { ng_minus5_g_s_tmsi_part1, random_value, nulltype } value;
typedef int8_t number_type; typedef int8_t number_type;
@ -126,10 +145,10 @@ struct init_ue_id_minus5_gc_c {
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
// choice methods // choice methods
init_ue_id_minus5_gc_c() = default; init_ue_id_minus5_gc_r15_c() = default;
init_ue_id_minus5_gc_c(const init_ue_id_minus5_gc_c& other); init_ue_id_minus5_gc_r15_c(const init_ue_id_minus5_gc_r15_c& other);
init_ue_id_minus5_gc_c& operator=(const init_ue_id_minus5_gc_c& other); init_ue_id_minus5_gc_r15_c& operator=(const init_ue_id_minus5_gc_r15_c& other);
~init_ue_id_minus5_gc_c() { destroy_(); } ~init_ue_id_minus5_gc_r15_c() { destroy_(); }
void set(types::options e = types::nulltype); void set(types::options e = types::nulltype);
types type() const { return type_; } types type() const { return type_; }
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;
@ -138,22 +157,22 @@ struct init_ue_id_minus5_gc_c {
// getters // getters
fixed_bitstring<40>& ng_minus5_g_s_tmsi_part1() fixed_bitstring<40>& ng_minus5_g_s_tmsi_part1()
{ {
assert_choice_type(types::ng_minus5_g_s_tmsi_part1, type_, "InitialUE-Identity-5GC"); assert_choice_type(types::ng_minus5_g_s_tmsi_part1, type_, "InitialUE-Identity-5GC-r15");
return c.get<fixed_bitstring<40> >(); return c.get<fixed_bitstring<40> >();
} }
fixed_bitstring<40>& random_value() fixed_bitstring<40>& random_value()
{ {
assert_choice_type(types::random_value, type_, "InitialUE-Identity-5GC"); assert_choice_type(types::random_value, type_, "InitialUE-Identity-5GC-r15");
return c.get<fixed_bitstring<40> >(); return c.get<fixed_bitstring<40> >();
} }
const fixed_bitstring<40>& ng_minus5_g_s_tmsi_part1() const const fixed_bitstring<40>& ng_minus5_g_s_tmsi_part1() const
{ {
assert_choice_type(types::ng_minus5_g_s_tmsi_part1, type_, "InitialUE-Identity-5GC"); assert_choice_type(types::ng_minus5_g_s_tmsi_part1, type_, "InitialUE-Identity-5GC-r15");
return c.get<fixed_bitstring<40> >(); return c.get<fixed_bitstring<40> >();
} }
const fixed_bitstring<40>& random_value() const const fixed_bitstring<40>& random_value() const
{ {
assert_choice_type(types::random_value, type_, "InitialUE-Identity-5GC"); assert_choice_type(types::random_value, type_, "InitialUE-Identity-5GC-r15");
return c.get<fixed_bitstring<40> >(); return c.get<fixed_bitstring<40> >();
} }
fixed_bitstring<40>& set_ng_minus5_g_s_tmsi_part1(); fixed_bitstring<40>& set_ng_minus5_g_s_tmsi_part1();
@ -168,9 +187,10 @@ private:
// RRCEarlyDataRequest-v1590-IEs ::= SEQUENCE // RRCEarlyDataRequest-v1590-IEs ::= SEQUENCE
struct rrc_early_data_request_v1590_ies_s { struct rrc_early_data_request_v1590_ies_s {
bool late_non_crit_ext_present = false; bool late_non_crit_ext_present = false;
bool non_crit_ext_present = false; bool non_crit_ext_present = false;
dyn_octstring late_non_crit_ext; dyn_octstring late_non_crit_ext;
rrc_early_data_request_v1610_ies_s non_crit_ext;
// sequence methods // sequence methods
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;
@ -208,7 +228,7 @@ struct resume_cause_opts {
mo_data, mo_data,
delay_tolerant_access_v1020, delay_tolerant_access_v1020,
mo_voice_call_v1280, mo_voice_call_v1280,
spare1, mt_edt_v1610,
nulltype nulltype
} value; } value;
@ -248,9 +268,9 @@ struct rrc_conn_reest_request_r8_ies_s {
// RRCConnectionRequest-5GC-r15-IEs ::= SEQUENCE // RRCConnectionRequest-5GC-r15-IEs ::= SEQUENCE
struct rrc_conn_request_minus5_gc_r15_ies_s { struct rrc_conn_request_minus5_gc_r15_ies_s {
init_ue_id_minus5_gc_c ue_id; init_ue_id_minus5_gc_r15_c ue_id_r15;
establishment_cause_minus5_gc_e establishment_cause; establishment_cause_minus5_gc_r15_e establishment_cause_r15;
fixed_bitstring<1> spare; fixed_bitstring<1> spare;
// sequence methods // sequence methods
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;
@ -396,6 +416,29 @@ struct rrc_conn_resume_request_r13_ies_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
// RRCEarlyDataRequest-5GC-r16-IEs ::= SEQUENCE
struct rrc_early_data_request_minus5_gc_r16_ies_s {
struct establishment_cause_r16_opts {
enum options { mo_data, spare3, spare2, spare1, nulltype } value;
const char* to_string() const;
};
typedef enumerated<establishment_cause_r16_opts> establishment_cause_r16_e_;
// member variables
bool late_non_crit_ext_present = false;
bool non_crit_ext_present = false;
fixed_bitstring<48> ng_minus5_g_s_tmsi_r16;
establishment_cause_r16_e_ establishment_cause_r16;
dyn_octstring ded_info_nas_r16;
dyn_octstring late_non_crit_ext;
// sequence methods
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// RRCEarlyDataRequest-r15-IEs ::= SEQUENCE // RRCEarlyDataRequest-r15-IEs ::= SEQUENCE
struct rrc_early_data_request_r15_ies_s { struct rrc_early_data_request_r15_ies_s {
struct establishment_cause_r15_opts { struct establishment_cause_r15_opts {
@ -586,6 +629,41 @@ struct rrc_conn_resume_request_r13_s {
// RRCEarlyDataRequest-r15 ::= SEQUENCE // RRCEarlyDataRequest-r15 ::= SEQUENCE
struct rrc_early_data_request_r15_s { struct rrc_early_data_request_r15_s {
struct crit_exts_c_ { struct crit_exts_c_ {
struct crit_exts_future_c_ {
struct types_opts {
enum options { rrc_early_data_request_minus5_gc_r16, crit_exts_future_r16, nulltype } value;
typedef int8_t number_type;
const char* to_string() const;
int8_t to_number() const;
};
typedef enumerated<types_opts> types;
// choice methods
crit_exts_future_c_() = default;
void set(types::options e = types::nulltype);
types type() const { return type_; }
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
// getters
rrc_early_data_request_minus5_gc_r16_ies_s& rrc_early_data_request_minus5_gc_r16()
{
assert_choice_type(types::rrc_early_data_request_minus5_gc_r16, type_, "criticalExtensionsFuture");
return c;
}
const rrc_early_data_request_minus5_gc_r16_ies_s& rrc_early_data_request_minus5_gc_r16() const
{
assert_choice_type(types::rrc_early_data_request_minus5_gc_r16, type_, "criticalExtensionsFuture");
return c;
}
rrc_early_data_request_minus5_gc_r16_ies_s& set_rrc_early_data_request_minus5_gc_r16();
void set_crit_exts_future_r16();
private:
types type_;
rrc_early_data_request_minus5_gc_r16_ies_s c;
};
struct types_opts { struct types_opts {
enum options { rrc_early_data_request_r15, crit_exts_future, nulltype } value; enum options { rrc_early_data_request_r15, crit_exts_future, nulltype } value;
@ -595,6 +673,9 @@ struct rrc_early_data_request_r15_s {
// choice methods // choice methods
crit_exts_c_() = default; crit_exts_c_() = default;
crit_exts_c_(const crit_exts_c_& other);
crit_exts_c_& operator=(const crit_exts_c_& other);
~crit_exts_c_() { destroy_(); }
void set(types::options e = types::nulltype); void set(types::options e = types::nulltype);
types type() const { return type_; } types type() const { return type_; }
SRSASN_CODE pack(bit_ref& bref) const; SRSASN_CODE pack(bit_ref& bref) const;
@ -604,19 +685,31 @@ struct rrc_early_data_request_r15_s {
rrc_early_data_request_r15_ies_s& rrc_early_data_request_r15() rrc_early_data_request_r15_ies_s& rrc_early_data_request_r15()
{ {
assert_choice_type(types::rrc_early_data_request_r15, type_, "criticalExtensions"); assert_choice_type(types::rrc_early_data_request_r15, type_, "criticalExtensions");
return c; return c.get<rrc_early_data_request_r15_ies_s>();
}
crit_exts_future_c_& crit_exts_future()
{
assert_choice_type(types::crit_exts_future, type_, "criticalExtensions");
return c.get<crit_exts_future_c_>();
} }
const rrc_early_data_request_r15_ies_s& rrc_early_data_request_r15() const const rrc_early_data_request_r15_ies_s& rrc_early_data_request_r15() const
{ {
assert_choice_type(types::rrc_early_data_request_r15, type_, "criticalExtensions"); assert_choice_type(types::rrc_early_data_request_r15, type_, "criticalExtensions");
return c; return c.get<rrc_early_data_request_r15_ies_s>();
}
const crit_exts_future_c_& crit_exts_future() const
{
assert_choice_type(types::crit_exts_future, type_, "criticalExtensions");
return c.get<crit_exts_future_c_>();
} }
rrc_early_data_request_r15_ies_s& set_rrc_early_data_request_r15(); rrc_early_data_request_r15_ies_s& set_rrc_early_data_request_r15();
void set_crit_exts_future(); crit_exts_future_c_& set_crit_exts_future();
private: private:
types type_; types type_;
rrc_early_data_request_r15_ies_s c; choice_buffer_t<crit_exts_future_c_, rrc_early_data_request_r15_ies_s> c;
void destroy_();
}; };
// member variables // member variables

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -58,7 +58,7 @@ struct sib_type13_r9_s;
// MeasConfig // MeasConfig
struct cells_to_add_mod_s; struct cells_to_add_mod_s;
struct cells_to_add_mod_nr_r15_s; struct cells_to_add_mod_nr_r15_s;
struct black_cells_to_add_mod_s; struct excluded_cells_to_add_mod_s;
struct report_cfg_eutra_s; struct report_cfg_eutra_s;
struct meas_obj_to_add_mod_s; struct meas_obj_to_add_mod_s;
struct report_cfg_to_add_mod_s; struct report_cfg_to_add_mod_s;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -417,6 +417,43 @@ void rrc_conn_reject_v1020_ies_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
// RRCConnectionSetup-v1610-IEs ::= SEQUENCE
SRSASN_CODE rrc_conn_setup_v1610_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(ded_info_nas_r16_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (ded_info_nas_r16_present) {
HANDLE_CODE(ded_info_nas_r16.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_conn_setup_v1610_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(ded_info_nas_r16_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (ded_info_nas_r16_present) {
HANDLE_CODE(ded_info_nas_r16.unpack(bref));
}
return SRSASN_SUCCESS;
}
void rrc_conn_setup_v1610_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (ded_info_nas_r16_present) {
j.write_str("dedicatedInfoNAS-r16", ded_info_nas_r16.to_string());
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// IdleModeMobilityControlInfo ::= SEQUENCE // IdleModeMobilityControlInfo ::= SEQUENCE
SRSASN_CODE idle_mode_mob_ctrl_info_s::pack(bit_ref& bref) const SRSASN_CODE idle_mode_mob_ctrl_info_s::pack(bit_ref& bref) const
{ {
@ -807,6 +844,9 @@ SRSASN_CODE rrc_conn_setup_v8a0_ies_s::pack(bit_ref& bref) const
if (late_non_crit_ext_present) { if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref)); HANDLE_CODE(late_non_crit_ext.pack(bref));
} }
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
@ -818,6 +858,9 @@ SRSASN_CODE rrc_conn_setup_v8a0_ies_s::unpack(cbit_ref& bref)
if (late_non_crit_ext_present) { if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref)); HANDLE_CODE(late_non_crit_ext.unpack(bref));
} }
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
@ -829,8 +872,7 @@ void rrc_conn_setup_v8a0_ies_s::to_json(json_writer& j) const
} }
if (non_crit_ext_present) { if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension"); j.write_fieldname("nonCriticalExtension");
j.start_obj(); non_crit_ext.to_json(j);
j.end_obj();
} }
j.end_obj(); j.end_obj();
} }
@ -876,16 +918,16 @@ void rrc_early_data_complete_v1590_ies_s::to_json(json_writer& j) const
void redirected_carrier_info_r15_ies_c::destroy_() void redirected_carrier_info_r15_ies_c::destroy_()
{ {
switch (type_) { switch (type_) {
case types::geran_r15: case types::geran:
c.destroy<carrier_freqs_geran_s>(); c.destroy<carrier_freqs_geran_s>();
break; break;
case types::cdma2000_hrpd_r15: case types::cdma2000_hrpd:
c.destroy<carrier_freq_cdma2000_s>(); c.destroy<carrier_freq_cdma2000_s>();
break; break;
case types::cdma2000_minus1x_rtt_r15: case types::cdma2000_minus1x_rtt:
c.destroy<carrier_freq_cdma2000_s>(); c.destroy<carrier_freq_cdma2000_s>();
break; break;
case types::utra_tdd_r15: case types::utra_tdd:
c.destroy<carrier_freq_list_utra_tdd_r10_l>(); c.destroy<carrier_freq_list_utra_tdd_r10_l>();
break; break;
default: default:
@ -897,20 +939,20 @@ void redirected_carrier_info_r15_ies_c::set(types::options e)
destroy_(); destroy_();
type_ = e; type_ = e;
switch (type_) { switch (type_) {
case types::eutra_r15: case types::eutra:
break; break;
case types::geran_r15: case types::geran:
c.init<carrier_freqs_geran_s>(); c.init<carrier_freqs_geran_s>();
break; break;
case types::utra_fdd_r15: case types::utra_fdd:
break; break;
case types::cdma2000_hrpd_r15: case types::cdma2000_hrpd:
c.init<carrier_freq_cdma2000_s>(); c.init<carrier_freq_cdma2000_s>();
break; break;
case types::cdma2000_minus1x_rtt_r15: case types::cdma2000_minus1x_rtt:
c.init<carrier_freq_cdma2000_s>(); c.init<carrier_freq_cdma2000_s>();
break; break;
case types::utra_tdd_r15: case types::utra_tdd:
c.init<carrier_freq_list_utra_tdd_r10_l>(); c.init<carrier_freq_list_utra_tdd_r10_l>();
break; break;
case types::nulltype: case types::nulltype:
@ -923,22 +965,22 @@ redirected_carrier_info_r15_ies_c::redirected_carrier_info_r15_ies_c(const redir
{ {
type_ = other.type(); type_ = other.type();
switch (type_) { switch (type_) {
case types::eutra_r15: case types::eutra:
c.init(other.c.get<uint32_t>()); c.init(other.c.get<uint32_t>());
break; break;
case types::geran_r15: case types::geran:
c.init(other.c.get<carrier_freqs_geran_s>()); c.init(other.c.get<carrier_freqs_geran_s>());
break; break;
case types::utra_fdd_r15: case types::utra_fdd:
c.init(other.c.get<uint16_t>()); c.init(other.c.get<uint16_t>());
break; break;
case types::cdma2000_hrpd_r15: case types::cdma2000_hrpd:
c.init(other.c.get<carrier_freq_cdma2000_s>()); c.init(other.c.get<carrier_freq_cdma2000_s>());
break; break;
case types::cdma2000_minus1x_rtt_r15: case types::cdma2000_minus1x_rtt:
c.init(other.c.get<carrier_freq_cdma2000_s>()); c.init(other.c.get<carrier_freq_cdma2000_s>());
break; break;
case types::utra_tdd_r15: case types::utra_tdd:
c.init(other.c.get<carrier_freq_list_utra_tdd_r10_l>()); c.init(other.c.get<carrier_freq_list_utra_tdd_r10_l>());
break; break;
case types::nulltype: case types::nulltype:
@ -955,22 +997,22 @@ redirected_carrier_info_r15_ies_c::operator=(const redirected_carrier_info_r15_i
} }
set(other.type()); set(other.type());
switch (type_) { switch (type_) {
case types::eutra_r15: case types::eutra:
c.set(other.c.get<uint32_t>()); c.set(other.c.get<uint32_t>());
break; break;
case types::geran_r15: case types::geran:
c.set(other.c.get<carrier_freqs_geran_s>()); c.set(other.c.get<carrier_freqs_geran_s>());
break; break;
case types::utra_fdd_r15: case types::utra_fdd:
c.set(other.c.get<uint16_t>()); c.set(other.c.get<uint16_t>());
break; break;
case types::cdma2000_hrpd_r15: case types::cdma2000_hrpd:
c.set(other.c.get<carrier_freq_cdma2000_s>()); c.set(other.c.get<carrier_freq_cdma2000_s>());
break; break;
case types::cdma2000_minus1x_rtt_r15: case types::cdma2000_minus1x_rtt:
c.set(other.c.get<carrier_freq_cdma2000_s>()); c.set(other.c.get<carrier_freq_cdma2000_s>());
break; break;
case types::utra_tdd_r15: case types::utra_tdd:
c.set(other.c.get<carrier_freq_list_utra_tdd_r10_l>()); c.set(other.c.get<carrier_freq_list_utra_tdd_r10_l>());
break; break;
case types::nulltype: case types::nulltype:
@ -981,60 +1023,60 @@ redirected_carrier_info_r15_ies_c::operator=(const redirected_carrier_info_r15_i
return *this; return *this;
} }
uint32_t& redirected_carrier_info_r15_ies_c::set_eutra_r15() uint32_t& redirected_carrier_info_r15_ies_c::set_eutra()
{ {
set(types::eutra_r15); set(types::eutra);
return c.get<uint32_t>(); return c.get<uint32_t>();
} }
carrier_freqs_geran_s& redirected_carrier_info_r15_ies_c::set_geran_r15() carrier_freqs_geran_s& redirected_carrier_info_r15_ies_c::set_geran()
{ {
set(types::geran_r15); set(types::geran);
return c.get<carrier_freqs_geran_s>(); return c.get<carrier_freqs_geran_s>();
} }
uint16_t& redirected_carrier_info_r15_ies_c::set_utra_fdd_r15() uint16_t& redirected_carrier_info_r15_ies_c::set_utra_fdd()
{ {
set(types::utra_fdd_r15); set(types::utra_fdd);
return c.get<uint16_t>(); return c.get<uint16_t>();
} }
carrier_freq_cdma2000_s& redirected_carrier_info_r15_ies_c::set_cdma2000_hrpd_r15() carrier_freq_cdma2000_s& redirected_carrier_info_r15_ies_c::set_cdma2000_hrpd()
{ {
set(types::cdma2000_hrpd_r15); set(types::cdma2000_hrpd);
return c.get<carrier_freq_cdma2000_s>(); return c.get<carrier_freq_cdma2000_s>();
} }
carrier_freq_cdma2000_s& redirected_carrier_info_r15_ies_c::set_cdma2000_minus1x_rtt_r15() carrier_freq_cdma2000_s& redirected_carrier_info_r15_ies_c::set_cdma2000_minus1x_rtt()
{ {
set(types::cdma2000_minus1x_rtt_r15); set(types::cdma2000_minus1x_rtt);
return c.get<carrier_freq_cdma2000_s>(); return c.get<carrier_freq_cdma2000_s>();
} }
carrier_freq_list_utra_tdd_r10_l& redirected_carrier_info_r15_ies_c::set_utra_tdd_r15() carrier_freq_list_utra_tdd_r10_l& redirected_carrier_info_r15_ies_c::set_utra_tdd()
{ {
set(types::utra_tdd_r15); set(types::utra_tdd);
return c.get<carrier_freq_list_utra_tdd_r10_l>(); return c.get<carrier_freq_list_utra_tdd_r10_l>();
} }
void redirected_carrier_info_r15_ies_c::to_json(json_writer& j) const void redirected_carrier_info_r15_ies_c::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
switch (type_) { switch (type_) {
case types::eutra_r15: case types::eutra:
j.write_int("eutra-r15", c.get<uint32_t>()); j.write_int("eutra", c.get<uint32_t>());
break; break;
case types::geran_r15: case types::geran:
j.write_fieldname("geran-r15"); j.write_fieldname("geran");
c.get<carrier_freqs_geran_s>().to_json(j); c.get<carrier_freqs_geran_s>().to_json(j);
break; break;
case types::utra_fdd_r15: case types::utra_fdd:
j.write_int("utra-FDD-r15", c.get<uint16_t>()); j.write_int("utra-FDD", c.get<uint16_t>());
break; break;
case types::cdma2000_hrpd_r15: case types::cdma2000_hrpd:
j.write_fieldname("cdma2000-HRPD-r15"); j.write_fieldname("cdma2000-HRPD");
c.get<carrier_freq_cdma2000_s>().to_json(j); c.get<carrier_freq_cdma2000_s>().to_json(j);
break; break;
case types::cdma2000_minus1x_rtt_r15: case types::cdma2000_minus1x_rtt:
j.write_fieldname("cdma2000-1xRTT-r15"); j.write_fieldname("cdma2000-1xRTT");
c.get<carrier_freq_cdma2000_s>().to_json(j); c.get<carrier_freq_cdma2000_s>().to_json(j);
break; break;
case types::utra_tdd_r15: case types::utra_tdd:
j.start_array("utra-TDD-r15"); j.start_array("utra-TDD");
for (const auto& e1 : c.get<carrier_freq_list_utra_tdd_r10_l>()) { for (const auto& e1 : c.get<carrier_freq_list_utra_tdd_r10_l>()) {
j.write_int(e1); j.write_int(e1);
} }
@ -1049,22 +1091,22 @@ SRSASN_CODE redirected_carrier_info_r15_ies_c::pack(bit_ref& bref) const
{ {
type_.pack(bref); type_.pack(bref);
switch (type_) { switch (type_) {
case types::eutra_r15: case types::eutra:
HANDLE_CODE(pack_integer(bref, c.get<uint32_t>(), (uint32_t)0u, (uint32_t)262143u)); HANDLE_CODE(pack_integer(bref, c.get<uint32_t>(), (uint32_t)0u, (uint32_t)262143u));
break; break;
case types::geran_r15: case types::geran:
HANDLE_CODE(c.get<carrier_freqs_geran_s>().pack(bref)); HANDLE_CODE(c.get<carrier_freqs_geran_s>().pack(bref));
break; break;
case types::utra_fdd_r15: case types::utra_fdd:
HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)16383u)); HANDLE_CODE(pack_integer(bref, c.get<uint16_t>(), (uint16_t)0u, (uint16_t)16383u));
break; break;
case types::cdma2000_hrpd_r15: case types::cdma2000_hrpd:
HANDLE_CODE(c.get<carrier_freq_cdma2000_s>().pack(bref)); HANDLE_CODE(c.get<carrier_freq_cdma2000_s>().pack(bref));
break; break;
case types::cdma2000_minus1x_rtt_r15: case types::cdma2000_minus1x_rtt:
HANDLE_CODE(c.get<carrier_freq_cdma2000_s>().pack(bref)); HANDLE_CODE(c.get<carrier_freq_cdma2000_s>().pack(bref));
break; break;
case types::utra_tdd_r15: case types::utra_tdd:
HANDLE_CODE( HANDLE_CODE(
pack_dyn_seq_of(bref, c.get<carrier_freq_list_utra_tdd_r10_l>(), 1, 6, integer_packer<uint16_t>(0, 16383))); pack_dyn_seq_of(bref, c.get<carrier_freq_list_utra_tdd_r10_l>(), 1, 6, integer_packer<uint16_t>(0, 16383)));
break; break;
@ -1080,22 +1122,22 @@ SRSASN_CODE redirected_carrier_info_r15_ies_c::unpack(cbit_ref& bref)
e.unpack(bref); e.unpack(bref);
set(e); set(e);
switch (type_) { switch (type_) {
case types::eutra_r15: case types::eutra:
HANDLE_CODE(unpack_integer(c.get<uint32_t>(), bref, (uint32_t)0u, (uint32_t)262143u)); HANDLE_CODE(unpack_integer(c.get<uint32_t>(), bref, (uint32_t)0u, (uint32_t)262143u));
break; break;
case types::geran_r15: case types::geran:
HANDLE_CODE(c.get<carrier_freqs_geran_s>().unpack(bref)); HANDLE_CODE(c.get<carrier_freqs_geran_s>().unpack(bref));
break; break;
case types::utra_fdd_r15: case types::utra_fdd:
HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)16383u)); HANDLE_CODE(unpack_integer(c.get<uint16_t>(), bref, (uint16_t)0u, (uint16_t)16383u));
break; break;
case types::cdma2000_hrpd_r15: case types::cdma2000_hrpd:
HANDLE_CODE(c.get<carrier_freq_cdma2000_s>().unpack(bref)); HANDLE_CODE(c.get<carrier_freq_cdma2000_s>().unpack(bref));
break; break;
case types::cdma2000_minus1x_rtt_r15: case types::cdma2000_minus1x_rtt:
HANDLE_CODE(c.get<carrier_freq_cdma2000_s>().unpack(bref)); HANDLE_CODE(c.get<carrier_freq_cdma2000_s>().unpack(bref));
break; break;
case types::utra_tdd_r15: case types::utra_tdd:
HANDLE_CODE( HANDLE_CODE(
unpack_dyn_seq_of(c.get<carrier_freq_list_utra_tdd_r10_l>(), bref, 1, 6, integer_packer<uint16_t>(0, 16383))); unpack_dyn_seq_of(c.get<carrier_freq_list_utra_tdd_r10_l>(), bref, 1, 6, integer_packer<uint16_t>(0, 16383)));
break; break;

File diff suppressed because it is too large Load Diff

@ -258,6 +258,27 @@ void as_cfg_nr_v1570_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
// AS-ConfigNR-v1620 ::= SEQUENCE
SRSASN_CODE as_cfg_nr_v1620_s::pack(bit_ref& bref) const
{
HANDLE_CODE(tdm_pattern_cfg2_r16.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE as_cfg_nr_v1620_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(tdm_pattern_cfg2_r16.unpack(bref));
return SRSASN_SUCCESS;
}
void as_cfg_nr_v1620_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_fieldname("tdm-PatternConfig2-r16");
tdm_pattern_cfg2_r16.to_json(j);
j.end_obj();
}
// SCG-Config-r12 ::= SEQUENCE // SCG-Config-r12 ::= SEQUENCE
SRSASN_CODE scg_cfg_r12_s::pack(bit_ref& bref) const SRSASN_CODE scg_cfg_r12_s::pack(bit_ref& bref) const
{ {
@ -484,6 +505,7 @@ SRSASN_CODE as_cfg_s::pack(bit_ref& bref) const
group_flags[3] |= as_cfg_nr_r15.is_present(); group_flags[3] |= as_cfg_nr_r15.is_present();
group_flags[4] |= as_cfg_v1550.is_present(); group_flags[4] |= as_cfg_v1550.is_present();
group_flags[5] |= as_cfg_nr_v1570.is_present(); group_flags[5] |= as_cfg_nr_v1570.is_present();
group_flags[6] |= as_cfg_nr_v1620.is_present();
group_flags.pack(bref); group_flags.pack(bref);
if (group_flags[0]) { if (group_flags[0]) {
@ -535,6 +557,14 @@ SRSASN_CODE as_cfg_s::pack(bit_ref& bref) const
HANDLE_CODE(as_cfg_nr_v1570->pack(bref)); HANDLE_CODE(as_cfg_nr_v1570->pack(bref));
} }
} }
if (group_flags[6]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(as_cfg_nr_v1620.is_present(), 1));
if (as_cfg_nr_v1620.is_present()) {
HANDLE_CODE(as_cfg_nr_v1620->pack(bref));
}
}
} }
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
@ -552,7 +582,7 @@ SRSASN_CODE as_cfg_s::unpack(cbit_ref& bref)
HANDLE_CODE(unpack_integer(source_dl_carrier_freq, bref, (uint32_t)0u, (uint32_t)65535u)); HANDLE_CODE(unpack_integer(source_dl_carrier_freq, bref, (uint32_t)0u, (uint32_t)65535u));
if (ext) { if (ext) {
ext_groups_unpacker_guard group_flags(6); ext_groups_unpacker_guard group_flags(7);
group_flags.unpack(bref); group_flags.unpack(bref);
if (group_flags[0]) { if (group_flags[0]) {
@ -614,6 +644,16 @@ SRSASN_CODE as_cfg_s::unpack(cbit_ref& bref)
HANDLE_CODE(as_cfg_nr_v1570->unpack(bref)); HANDLE_CODE(as_cfg_nr_v1570->unpack(bref));
} }
} }
if (group_flags[6]) {
varlength_field_unpack_guard varlen_scope(bref, false);
bool as_cfg_nr_v1620_present;
HANDLE_CODE(bref.unpack(as_cfg_nr_v1620_present, 1));
as_cfg_nr_v1620.set_present(as_cfg_nr_v1620_present);
if (as_cfg_nr_v1620.is_present()) {
HANDLE_CODE(as_cfg_nr_v1620->unpack(bref));
}
}
} }
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
@ -665,6 +705,10 @@ void as_cfg_s::to_json(json_writer& j) const
j.write_fieldname("as-ConfigNR-v1570"); j.write_fieldname("as-ConfigNR-v1570");
as_cfg_nr_v1570->to_json(j); as_cfg_nr_v1570->to_json(j);
} }
if (as_cfg_nr_v1620.is_present()) {
j.write_fieldname("as-ConfigNR-v1620");
as_cfg_nr_v1620->to_json(j);
}
} }
j.end_obj(); j.end_obj();
} }
@ -1057,7 +1101,7 @@ SRSASN_CODE as_context_v1130_s::pack(bit_ref& bref) const
bref.pack(ext, 1); bref.pack(ext, 1);
HANDLE_CODE(bref.pack(idc_ind_r11_present, 1)); HANDLE_CODE(bref.pack(idc_ind_r11_present, 1));
HANDLE_CODE(bref.pack(mbms_interest_ind_r11_present, 1)); HANDLE_CODE(bref.pack(mbms_interest_ind_r11_present, 1));
HANDLE_CODE(bref.pack(pwr_pref_ind_r11_present, 1)); HANDLE_CODE(bref.pack(ue_assist_info_r11_present, 1));
if (idc_ind_r11_present) { if (idc_ind_r11_present) {
HANDLE_CODE(idc_ind_r11.pack(bref)); HANDLE_CODE(idc_ind_r11.pack(bref));
@ -1065,8 +1109,8 @@ SRSASN_CODE as_context_v1130_s::pack(bit_ref& bref) const
if (mbms_interest_ind_r11_present) { if (mbms_interest_ind_r11_present) {
HANDLE_CODE(mbms_interest_ind_r11.pack(bref)); HANDLE_CODE(mbms_interest_ind_r11.pack(bref));
} }
if (pwr_pref_ind_r11_present) { if (ue_assist_info_r11_present) {
HANDLE_CODE(pwr_pref_ind_r11.pack(bref)); HANDLE_CODE(ue_assist_info_r11.pack(bref));
} }
if (ext) { if (ext) {
@ -1108,7 +1152,7 @@ SRSASN_CODE as_context_v1130_s::unpack(cbit_ref& bref)
bref.unpack(ext, 1); bref.unpack(ext, 1);
HANDLE_CODE(bref.unpack(idc_ind_r11_present, 1)); HANDLE_CODE(bref.unpack(idc_ind_r11_present, 1));
HANDLE_CODE(bref.unpack(mbms_interest_ind_r11_present, 1)); HANDLE_CODE(bref.unpack(mbms_interest_ind_r11_present, 1));
HANDLE_CODE(bref.unpack(pwr_pref_ind_r11_present, 1)); HANDLE_CODE(bref.unpack(ue_assist_info_r11_present, 1));
if (idc_ind_r11_present) { if (idc_ind_r11_present) {
HANDLE_CODE(idc_ind_r11.unpack(bref)); HANDLE_CODE(idc_ind_r11.unpack(bref));
@ -1116,8 +1160,8 @@ SRSASN_CODE as_context_v1130_s::unpack(cbit_ref& bref)
if (mbms_interest_ind_r11_present) { if (mbms_interest_ind_r11_present) {
HANDLE_CODE(mbms_interest_ind_r11.unpack(bref)); HANDLE_CODE(mbms_interest_ind_r11.unpack(bref));
} }
if (pwr_pref_ind_r11_present) { if (ue_assist_info_r11_present) {
HANDLE_CODE(pwr_pref_ind_r11.unpack(bref)); HANDLE_CODE(ue_assist_info_r11.unpack(bref));
} }
if (ext) { if (ext) {
@ -1160,8 +1204,8 @@ void as_context_v1130_s::to_json(json_writer& j) const
if (mbms_interest_ind_r11_present) { if (mbms_interest_ind_r11_present) {
j.write_str("mbmsInterestIndication-r11", mbms_interest_ind_r11.to_string()); j.write_str("mbmsInterestIndication-r11", mbms_interest_ind_r11.to_string());
} }
if (pwr_pref_ind_r11_present) { if (ue_assist_info_r11_present) {
j.write_str("powerPrefIndication-r11", pwr_pref_ind_r11.to_string()); j.write_str("ueAssistanceInformation-r11", ue_assist_info_r11.to_string());
} }
if (ext) { if (ext) {
if (sidelink_ue_info_r12_present) { if (sidelink_ue_info_r12_present) {
@ -1207,6 +1251,162 @@ void as_context_v1320_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
// ConfigRestrictInfoDAPS-r16 ::= SEQUENCE
SRSASN_CODE cfg_restrict_info_daps_r16_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(max_sch_tb_bits_dl_r16_present, 1));
HANDLE_CODE(bref.pack(max_sch_tb_bits_ul_r16_present, 1));
if (max_sch_tb_bits_dl_r16_present) {
HANDLE_CODE(pack_integer(bref, max_sch_tb_bits_dl_r16, (uint8_t)1u, (uint8_t)100u));
}
if (max_sch_tb_bits_ul_r16_present) {
HANDLE_CODE(pack_integer(bref, max_sch_tb_bits_ul_r16, (uint8_t)1u, (uint8_t)100u));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE cfg_restrict_info_daps_r16_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(max_sch_tb_bits_dl_r16_present, 1));
HANDLE_CODE(bref.unpack(max_sch_tb_bits_ul_r16_present, 1));
if (max_sch_tb_bits_dl_r16_present) {
HANDLE_CODE(unpack_integer(max_sch_tb_bits_dl_r16, bref, (uint8_t)1u, (uint8_t)100u));
}
if (max_sch_tb_bits_ul_r16_present) {
HANDLE_CODE(unpack_integer(max_sch_tb_bits_ul_r16, bref, (uint8_t)1u, (uint8_t)100u));
}
return SRSASN_SUCCESS;
}
void cfg_restrict_info_daps_r16_s::to_json(json_writer& j) const
{
j.start_obj();
if (max_sch_tb_bits_dl_r16_present) {
j.write_int("maxSCH-TB-BitsDL-r16", max_sch_tb_bits_dl_r16);
}
if (max_sch_tb_bits_ul_r16_present) {
j.write_int("maxSCH-TB-BitsUL-r16", max_sch_tb_bits_ul_r16);
}
j.end_obj();
}
// AS-Context-v1610 ::= SEQUENCE
SRSASN_CODE as_context_v1610_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(sidelink_ue_info_nr_r16_present, 1));
HANDLE_CODE(bref.pack(ue_assist_info_nr_r16_present, 1));
HANDLE_CODE(bref.pack(cfg_restrict_info_daps_r16_present, 1));
if (sidelink_ue_info_nr_r16_present) {
HANDLE_CODE(sidelink_ue_info_nr_r16.pack(bref));
}
if (ue_assist_info_nr_r16_present) {
HANDLE_CODE(ue_assist_info_nr_r16.pack(bref));
}
if (cfg_restrict_info_daps_r16_present) {
HANDLE_CODE(cfg_restrict_info_daps_r16.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE as_context_v1610_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(sidelink_ue_info_nr_r16_present, 1));
HANDLE_CODE(bref.unpack(ue_assist_info_nr_r16_present, 1));
HANDLE_CODE(bref.unpack(cfg_restrict_info_daps_r16_present, 1));
if (sidelink_ue_info_nr_r16_present) {
HANDLE_CODE(sidelink_ue_info_nr_r16.unpack(bref));
}
if (ue_assist_info_nr_r16_present) {
HANDLE_CODE(ue_assist_info_nr_r16.unpack(bref));
}
if (cfg_restrict_info_daps_r16_present) {
HANDLE_CODE(cfg_restrict_info_daps_r16.unpack(bref));
}
return SRSASN_SUCCESS;
}
void as_context_v1610_s::to_json(json_writer& j) const
{
j.start_obj();
if (sidelink_ue_info_nr_r16_present) {
j.write_str("sidelinkUEInformationNR-r16", sidelink_ue_info_nr_r16.to_string());
}
if (ue_assist_info_nr_r16_present) {
j.write_str("ueAssistanceInformationNR-r16", ue_assist_info_nr_r16.to_string());
}
if (cfg_restrict_info_daps_r16_present) {
j.write_fieldname("configRestrictInfoDAPS-r16");
cfg_restrict_info_daps_r16.to_json(j);
}
j.end_obj();
}
// ConfigRestrictInfoDAPS-v1630 ::= SEQUENCE
SRSASN_CODE cfg_restrict_info_daps_v1630_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(daps_pwr_coordination_info_r16_present, 1));
if (daps_pwr_coordination_info_r16_present) {
HANDLE_CODE(daps_pwr_coordination_info_r16.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE cfg_restrict_info_daps_v1630_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(daps_pwr_coordination_info_r16_present, 1));
if (daps_pwr_coordination_info_r16_present) {
HANDLE_CODE(daps_pwr_coordination_info_r16.unpack(bref));
}
return SRSASN_SUCCESS;
}
void cfg_restrict_info_daps_v1630_s::to_json(json_writer& j) const
{
j.start_obj();
if (daps_pwr_coordination_info_r16_present) {
j.write_fieldname("daps-PowerCoordinationInfo-r16");
daps_pwr_coordination_info_r16.to_json(j);
}
j.end_obj();
}
// AS-Context-v1630 ::= SEQUENCE
SRSASN_CODE as_context_v1630_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(cfg_restrict_info_daps_v1630_present, 1));
if (cfg_restrict_info_daps_v1630_present) {
HANDLE_CODE(cfg_restrict_info_daps_v1630.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE as_context_v1630_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(cfg_restrict_info_daps_v1630_present, 1));
if (cfg_restrict_info_daps_v1630_present) {
HANDLE_CODE(cfg_restrict_info_daps_v1630.unpack(bref));
}
return SRSASN_SUCCESS;
}
void as_context_v1630_s::to_json(json_writer& j) const
{
j.start_obj();
if (cfg_restrict_info_daps_v1630_present) {
j.write_fieldname("configRestrictInfoDAPS-v1630");
cfg_restrict_info_daps_v1630.to_json(j);
}
j.end_obj();
}
// CandidateCellInfo-r10 ::= SEQUENCE // CandidateCellInfo-r10 ::= SEQUENCE
SRSASN_CODE candidate_cell_info_r10_s::pack(bit_ref& bref) const SRSASN_CODE candidate_cell_info_r10_s::pack(bit_ref& bref) const
{ {
@ -1560,6 +1760,225 @@ SRSASN_CODE ho_cmd_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bref)
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
// AS-Config-v1700 ::= SEQUENCE
SRSASN_CODE as_cfg_v1700_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(scg_state_r17_present, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE as_cfg_v1700_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(scg_state_r17_present, 1));
return SRSASN_SUCCESS;
}
void as_cfg_v1700_s::to_json(json_writer& j) const
{
j.start_obj();
if (scg_state_r17_present) {
j.write_str("scg-State-r17", "deactivated");
}
j.end_obj();
}
// HandoverPreparationInformation-v1700-IEs ::= SEQUENCE
SRSASN_CODE ho_prep_info_v1700_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(as_cfg_v1700_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (as_cfg_v1700_present) {
HANDLE_CODE(as_cfg_v1700.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ho_prep_info_v1700_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(as_cfg_v1700_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (as_cfg_v1700_present) {
HANDLE_CODE(as_cfg_v1700.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ho_prep_info_v1700_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (as_cfg_v1700_present) {
j.write_fieldname("as-Config-v1700");
as_cfg_v1700.to_json(j);
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// AS-Context-v1620 ::= SEQUENCE
SRSASN_CODE as_context_v1620_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(ue_assist_info_nr_scg_r16_present, 1));
if (ue_assist_info_nr_scg_r16_present) {
HANDLE_CODE(ue_assist_info_nr_scg_r16.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE as_context_v1620_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(ue_assist_info_nr_scg_r16_present, 1));
if (ue_assist_info_nr_scg_r16_present) {
HANDLE_CODE(ue_assist_info_nr_scg_r16.unpack(bref));
}
return SRSASN_SUCCESS;
}
void as_context_v1620_s::to_json(json_writer& j) const
{
j.start_obj();
if (ue_assist_info_nr_scg_r16_present) {
j.write_str("ueAssistanceInformationNR-SCG-r16", ue_assist_info_nr_scg_r16.to_string());
}
j.end_obj();
}
// HandoverPreparationInformation-v1630-IEs ::= SEQUENCE
SRSASN_CODE ho_prep_info_v1630_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(as_context_v1630_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (as_context_v1630_present) {
HANDLE_CODE(as_context_v1630.pack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ho_prep_info_v1630_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(as_context_v1630_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (as_context_v1630_present) {
HANDLE_CODE(as_context_v1630.unpack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ho_prep_info_v1630_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (as_context_v1630_present) {
j.write_fieldname("as-Context-v1630");
as_context_v1630.to_json(j);
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
// HandoverPreparationInformation-v1620-IEs ::= SEQUENCE
SRSASN_CODE ho_prep_info_v1620_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(as_context_v1620_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (as_context_v1620_present) {
HANDLE_CODE(as_context_v1620.pack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ho_prep_info_v1620_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(as_context_v1620_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (as_context_v1620_present) {
HANDLE_CODE(as_context_v1620.unpack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ho_prep_info_v1620_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (as_context_v1620_present) {
j.write_fieldname("as-Context-v1620");
as_context_v1620.to_json(j);
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
// HandoverPreparationInformation-v1610-IEs ::= SEQUENCE
SRSASN_CODE ho_prep_info_v1610_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(as_context_v1610_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (as_context_v1610_present) {
HANDLE_CODE(as_context_v1610.pack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE ho_prep_info_v1610_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(as_context_v1610_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (as_context_v1610_present) {
HANDLE_CODE(as_context_v1610.unpack(bref));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void ho_prep_info_v1610_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (as_context_v1610_present) {
j.write_fieldname("as-Context-v1610");
as_context_v1610.to_json(j);
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
// HandoverPreparationInformation-v1540-IEs ::= SEQUENCE // HandoverPreparationInformation-v1540-IEs ::= SEQUENCE
SRSASN_CODE ho_prep_info_v1540_ies_s::pack(bit_ref& bref) const SRSASN_CODE ho_prep_info_v1540_ies_s::pack(bit_ref& bref) const
{ {
@ -1569,6 +1988,9 @@ SRSASN_CODE ho_prep_info_v1540_ies_s::pack(bit_ref& bref) const
if (source_rb_cfg_intra5_gc_r15_present) { if (source_rb_cfg_intra5_gc_r15_present) {
HANDLE_CODE(source_rb_cfg_intra5_gc_r15.pack(bref)); HANDLE_CODE(source_rb_cfg_intra5_gc_r15.pack(bref));
} }
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
@ -1580,6 +2002,9 @@ SRSASN_CODE ho_prep_info_v1540_ies_s::unpack(cbit_ref& bref)
if (source_rb_cfg_intra5_gc_r15_present) { if (source_rb_cfg_intra5_gc_r15_present) {
HANDLE_CODE(source_rb_cfg_intra5_gc_r15.unpack(bref)); HANDLE_CODE(source_rb_cfg_intra5_gc_r15.unpack(bref));
} }
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
@ -1591,8 +2016,7 @@ void ho_prep_info_v1540_ies_s::to_json(json_writer& j) const
} }
if (non_crit_ext_present) { if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension"); j.write_fieldname("nonCriticalExtension");
j.start_obj(); non_crit_ext.to_json(j);
j.end_obj();
} }
j.end_obj(); j.end_obj();
} }
@ -1970,8 +2394,8 @@ void ho_prep_info_v920_ies_s::to_json(json_writer& j) const
const char* ho_prep_info_v920_ies_s::ue_cfg_release_r9_opts::to_string() const const char* ho_prep_info_v920_ies_s::ue_cfg_release_r9_opts::to_string() const
{ {
static const char* options[] = { static const char* options[] = {
"rel9", "rel10", "rel11", "rel12", "v10j0", "v11e0", "v1280", "rel13", "rel14", "rel15"}; "rel9", "rel10", "rel11", "rel12", "v10j0", "v11e0", "v1280", "rel13", "rel14", "rel15", "rel16", "rel17"};
return convert_enum_idx(options, 10, value, "ho_prep_info_v920_ies_s::ue_cfg_release_r9_e_"); return convert_enum_idx(options, 12, value, "ho_prep_info_v920_ies_s::ue_cfg_release_r9_e_");
} }
// RRM-Config ::= SEQUENCE // RRM-Config ::= SEQUENCE

File diff suppressed because it is too large Load Diff

@ -20,12 +20,157 @@ using namespace asn1::rrc;
* Struct Methods * Struct Methods
******************************************************************************/ ******************************************************************************/
// PagingRecord-v1700 ::= SEQUENCE
SRSASN_CODE paging_record_v1700_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(paging_cause_r17_present, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE paging_record_v1700_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(paging_cause_r17_present, 1));
return SRSASN_SUCCESS;
}
void paging_record_v1700_s::to_json(json_writer& j) const
{
j.start_obj();
if (paging_cause_r17_present) {
j.write_str("pagingCause-r17", "voice");
}
j.end_obj();
}
// PagingRecord-v1610 ::= SEQUENCE
SRSASN_CODE paging_record_v1610_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(access_type_r16_present, 1));
HANDLE_CODE(bref.pack(mt_edt_r16_present, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE paging_record_v1610_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(access_type_r16_present, 1));
HANDLE_CODE(bref.unpack(mt_edt_r16_present, 1));
return SRSASN_SUCCESS;
}
void paging_record_v1610_s::to_json(json_writer& j) const
{
j.start_obj();
if (access_type_r16_present) {
j.write_str("accessType-r16", "non3GPP");
}
if (mt_edt_r16_present) {
j.write_str("mt-EDT-r16", "true");
}
j.end_obj();
}
// Paging-v1700-IEs ::= SEQUENCE
SRSASN_CODE paging_v1700_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(paging_record_list_v1700_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (paging_record_list_v1700_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, paging_record_list_v1700, 1, 16));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE paging_v1700_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(paging_record_list_v1700_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (paging_record_list_v1700_present) {
HANDLE_CODE(unpack_dyn_seq_of(paging_record_list_v1700, bref, 1, 16));
}
return SRSASN_SUCCESS;
}
void paging_v1700_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (paging_record_list_v1700_present) {
j.start_array("pagingRecordList-v1700");
for (const auto& e1 : paging_record_list_v1700) {
e1.to_json(j);
}
j.end_array();
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// Paging-v1610-IEs ::= SEQUENCE
SRSASN_CODE paging_v1610_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(paging_record_list_v1610_present, 1));
HANDLE_CODE(bref.pack(uac_param_mod_r16_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (paging_record_list_v1610_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, paging_record_list_v1610, 1, 16));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE paging_v1610_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(paging_record_list_v1610_present, 1));
HANDLE_CODE(bref.unpack(uac_param_mod_r16_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (paging_record_list_v1610_present) {
HANDLE_CODE(unpack_dyn_seq_of(paging_record_list_v1610, bref, 1, 16));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void paging_v1610_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (paging_record_list_v1610_present) {
j.start_array("pagingRecordList-v1610");
for (const auto& e1 : paging_record_list_v1610) {
e1.to_json(j);
}
j.end_array();
}
if (uac_param_mod_r16_present) {
j.write_str("uac-ParamModification-r16", "true");
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
non_crit_ext.to_json(j);
}
j.end_obj();
}
// Paging-v1530-IEs ::= SEQUENCE // Paging-v1530-IEs ::= SEQUENCE
SRSASN_CODE paging_v1530_ies_s::pack(bit_ref& bref) const SRSASN_CODE paging_v1530_ies_s::pack(bit_ref& bref) const
{ {
HANDLE_CODE(bref.pack(access_type_present, 1)); HANDLE_CODE(bref.pack(access_type_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_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; return SRSASN_SUCCESS;
} }
SRSASN_CODE paging_v1530_ies_s::unpack(cbit_ref& bref) SRSASN_CODE paging_v1530_ies_s::unpack(cbit_ref& bref)
@ -33,6 +178,10 @@ SRSASN_CODE paging_v1530_ies_s::unpack(cbit_ref& bref)
HANDLE_CODE(bref.unpack(access_type_present, 1)); HANDLE_CODE(bref.unpack(access_type_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_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; return SRSASN_SUCCESS;
} }
void paging_v1530_ies_s::to_json(json_writer& j) const void paging_v1530_ies_s::to_json(json_writer& j) const
@ -43,8 +192,7 @@ void paging_v1530_ies_s::to_json(json_writer& j) const
} }
if (non_crit_ext_present) { if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension"); j.write_fieldname("nonCriticalExtension");
j.start_obj(); non_crit_ext.to_json(j);
j.end_obj();
} }
j.end_obj(); j.end_obj();
} }
@ -853,6 +1001,35 @@ SRSASN_CODE ue_paging_coverage_info_s::crit_exts_c_::c1_c_::unpack(cbit_ref& bre
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
// UERadioPagingInformation-v1610-IEs ::= SEQUENCE
SRSASN_CODE ue_radio_paging_info_v1610_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(access_stratum_release_r16_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE ue_radio_paging_info_v1610_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(access_stratum_release_r16_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
return SRSASN_SUCCESS;
}
void ue_radio_paging_info_v1610_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (access_stratum_release_r16_present) {
j.write_str("accessStratumRelease-r16", "true");
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
// UERadioPagingInformation-v1310-IEs ::= SEQUENCE // UERadioPagingInformation-v1310-IEs ::= SEQUENCE
SRSASN_CODE ue_radio_paging_info_v1310_ies_s::pack(bit_ref& bref) const SRSASN_CODE ue_radio_paging_info_v1310_ies_s::pack(bit_ref& bref) const
{ {
@ -863,6 +1040,9 @@ SRSASN_CODE ue_radio_paging_info_v1310_ies_s::pack(bit_ref& bref) const
HANDLE_CODE( HANDLE_CODE(
pack_dyn_seq_of(bref, supported_band_list_eutra_for_paging_r13, 1, 64, integer_packer<uint16_t>(1, 256))); pack_dyn_seq_of(bref, supported_band_list_eutra_for_paging_r13, 1, 64, integer_packer<uint16_t>(1, 256)));
} }
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
@ -875,6 +1055,9 @@ SRSASN_CODE ue_radio_paging_info_v1310_ies_s::unpack(cbit_ref& bref)
HANDLE_CODE( HANDLE_CODE(
unpack_dyn_seq_of(supported_band_list_eutra_for_paging_r13, bref, 1, 64, integer_packer<uint16_t>(1, 256))); unpack_dyn_seq_of(supported_band_list_eutra_for_paging_r13, bref, 1, 64, integer_packer<uint16_t>(1, 256)));
} }
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
@ -890,8 +1073,7 @@ void ue_radio_paging_info_v1310_ies_s::to_json(json_writer& j) const
} }
if (non_crit_ext_present) { if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension"); j.write_fieldname("nonCriticalExtension");
j.start_obj(); non_crit_ext.to_json(j);
j.end_obj();
} }
j.end_obj(); j.end_obj();
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -80,14 +80,14 @@ void security_cfg_ho_v1530_s::to_json(json_writer& j) const
void security_cfg_ho_v1530_s::handov_type_v1530_c_::destroy_() void security_cfg_ho_v1530_s::handov_type_v1530_c_::destroy_()
{ {
switch (type_) { switch (type_) {
case types::intra5_gc_r15: case types::intra5_gc:
c.destroy<intra5_gc_r15_s_>(); c.destroy<intra5_gc_s_>();
break; break;
case types::fivegc_to_epc_r15: case types::fivegc_to_epc:
c.destroy<fivegc_to_epc_r15_s_>(); c.destroy<fivegc_to_epc_s_>();
break; break;
case types::epc_to5_gc_r15: case types::epc_to5_gc:
c.destroy<epc_to5_gc_r15_s_>(); c.destroy<epc_to5_gc_s_>();
break; break;
default: default:
break; break;
@ -98,14 +98,14 @@ void security_cfg_ho_v1530_s::handov_type_v1530_c_::set(types::options e)
destroy_(); destroy_();
type_ = e; type_ = e;
switch (type_) { switch (type_) {
case types::intra5_gc_r15: case types::intra5_gc:
c.init<intra5_gc_r15_s_>(); c.init<intra5_gc_s_>();
break; break;
case types::fivegc_to_epc_r15: case types::fivegc_to_epc:
c.init<fivegc_to_epc_r15_s_>(); c.init<fivegc_to_epc_s_>();
break; break;
case types::epc_to5_gc_r15: case types::epc_to5_gc:
c.init<epc_to5_gc_r15_s_>(); c.init<epc_to5_gc_s_>();
break; break;
case types::nulltype: case types::nulltype:
break; break;
@ -118,14 +118,14 @@ security_cfg_ho_v1530_s::handov_type_v1530_c_::handov_type_v1530_c_(
{ {
type_ = other.type(); type_ = other.type();
switch (type_) { switch (type_) {
case types::intra5_gc_r15: case types::intra5_gc:
c.init(other.c.get<intra5_gc_r15_s_>()); c.init(other.c.get<intra5_gc_s_>());
break; break;
case types::fivegc_to_epc_r15: case types::fivegc_to_epc:
c.init(other.c.get<fivegc_to_epc_r15_s_>()); c.init(other.c.get<fivegc_to_epc_s_>());
break; break;
case types::epc_to5_gc_r15: case types::epc_to5_gc:
c.init(other.c.get<epc_to5_gc_r15_s_>()); c.init(other.c.get<epc_to5_gc_s_>());
break; break;
case types::nulltype: case types::nulltype:
break; break;
@ -141,14 +141,14 @@ security_cfg_ho_v1530_s::handov_type_v1530_c_::operator=(const security_cfg_ho_v
} }
set(other.type()); set(other.type());
switch (type_) { switch (type_) {
case types::intra5_gc_r15: case types::intra5_gc:
c.set(other.c.get<intra5_gc_r15_s_>()); c.set(other.c.get<intra5_gc_s_>());
break; break;
case types::fivegc_to_epc_r15: case types::fivegc_to_epc:
c.set(other.c.get<fivegc_to_epc_r15_s_>()); c.set(other.c.get<fivegc_to_epc_s_>());
break; break;
case types::epc_to5_gc_r15: case types::epc_to5_gc:
c.set(other.c.get<epc_to5_gc_r15_s_>()); c.set(other.c.get<epc_to5_gc_s_>());
break; break;
case types::nulltype: case types::nulltype:
break; break;
@ -158,56 +158,56 @@ security_cfg_ho_v1530_s::handov_type_v1530_c_::operator=(const security_cfg_ho_v
return *this; return *this;
} }
security_cfg_ho_v1530_s::handov_type_v1530_c_::intra5_gc_r15_s_& security_cfg_ho_v1530_s::handov_type_v1530_c_::intra5_gc_s_&
security_cfg_ho_v1530_s::handov_type_v1530_c_::set_intra5_gc_r15() security_cfg_ho_v1530_s::handov_type_v1530_c_::set_intra5_gc()
{ {
set(types::intra5_gc_r15); set(types::intra5_gc);
return c.get<intra5_gc_r15_s_>(); return c.get<intra5_gc_s_>();
} }
security_cfg_ho_v1530_s::handov_type_v1530_c_::fivegc_to_epc_r15_s_& security_cfg_ho_v1530_s::handov_type_v1530_c_::fivegc_to_epc_s_&
security_cfg_ho_v1530_s::handov_type_v1530_c_::set_fivegc_to_epc_r15() security_cfg_ho_v1530_s::handov_type_v1530_c_::set_fivegc_to_epc()
{ {
set(types::fivegc_to_epc_r15); set(types::fivegc_to_epc);
return c.get<fivegc_to_epc_r15_s_>(); return c.get<fivegc_to_epc_s_>();
} }
security_cfg_ho_v1530_s::handov_type_v1530_c_::epc_to5_gc_r15_s_& security_cfg_ho_v1530_s::handov_type_v1530_c_::epc_to5_gc_s_&
security_cfg_ho_v1530_s::handov_type_v1530_c_::set_epc_to5_gc_r15() security_cfg_ho_v1530_s::handov_type_v1530_c_::set_epc_to5_gc()
{ {
set(types::epc_to5_gc_r15); set(types::epc_to5_gc);
return c.get<epc_to5_gc_r15_s_>(); return c.get<epc_to5_gc_s_>();
} }
void security_cfg_ho_v1530_s::handov_type_v1530_c_::to_json(json_writer& j) const void security_cfg_ho_v1530_s::handov_type_v1530_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
switch (type_) { switch (type_) {
case types::intra5_gc_r15: case types::intra5_gc:
j.write_fieldname("intra5GC-r15"); j.write_fieldname("intra5GC");
j.start_obj(); j.start_obj();
if (c.get<intra5_gc_r15_s_>().security_algorithm_cfg_r15_present) { if (c.get<intra5_gc_s_>().security_algorithm_cfg_r15_present) {
j.write_fieldname("securityAlgorithmConfig-r15"); j.write_fieldname("securityAlgorithmConfig-r15");
c.get<intra5_gc_r15_s_>().security_algorithm_cfg_r15.to_json(j); c.get<intra5_gc_s_>().security_algorithm_cfg_r15.to_json(j);
} }
j.write_bool("keyChangeIndicator-r15", c.get<intra5_gc_r15_s_>().key_change_ind_r15); j.write_bool("keyChangeIndicator-r15", c.get<intra5_gc_s_>().key_change_ind_r15);
j.write_int("nextHopChainingCount-r15", c.get<intra5_gc_r15_s_>().next_hop_chaining_count_r15); j.write_int("nextHopChainingCount-r15", c.get<intra5_gc_s_>().next_hop_chaining_count_r15);
if (c.get<intra5_gc_r15_s_>().nas_container_r15_present) { if (c.get<intra5_gc_s_>().nas_container_r15_present) {
j.write_str("nas-Container-r15", c.get<intra5_gc_r15_s_>().nas_container_r15.to_string()); j.write_str("nas-Container-r15", c.get<intra5_gc_s_>().nas_container_r15.to_string());
} }
j.end_obj(); j.end_obj();
break; break;
case types::fivegc_to_epc_r15: case types::fivegc_to_epc:
j.write_fieldname("fivegc-ToEPC-r15"); j.write_fieldname("fivegc-ToEPC");
j.start_obj(); j.start_obj();
j.write_fieldname("securityAlgorithmConfig-r15"); j.write_fieldname("securityAlgorithmConfig-r15");
c.get<fivegc_to_epc_r15_s_>().security_algorithm_cfg_r15.to_json(j); c.get<fivegc_to_epc_s_>().security_algorithm_cfg_r15.to_json(j);
j.write_int("nextHopChainingCount-r15", c.get<fivegc_to_epc_r15_s_>().next_hop_chaining_count_r15); j.write_int("nextHopChainingCount-r15", c.get<fivegc_to_epc_s_>().next_hop_chaining_count_r15);
j.end_obj(); j.end_obj();
break; break;
case types::epc_to5_gc_r15: case types::epc_to5_gc:
j.write_fieldname("epc-To5GC-r15"); j.write_fieldname("epc-To5GC");
j.start_obj(); j.start_obj();
j.write_fieldname("securityAlgorithmConfig-r15"); j.write_fieldname("securityAlgorithmConfig-r15");
c.get<epc_to5_gc_r15_s_>().security_algorithm_cfg_r15.to_json(j); c.get<epc_to5_gc_s_>().security_algorithm_cfg_r15.to_json(j);
j.write_str("nas-Container-r15", c.get<epc_to5_gc_r15_s_>().nas_container_r15.to_string()); j.write_str("nas-Container-r15", c.get<epc_to5_gc_s_>().nas_container_r15.to_string());
j.end_obj(); j.end_obj();
break; break;
default: default:
@ -219,26 +219,25 @@ SRSASN_CODE security_cfg_ho_v1530_s::handov_type_v1530_c_::pack(bit_ref& bref) c
{ {
type_.pack(bref); type_.pack(bref);
switch (type_) { switch (type_) {
case types::intra5_gc_r15: case types::intra5_gc:
HANDLE_CODE(bref.pack(c.get<intra5_gc_r15_s_>().security_algorithm_cfg_r15_present, 1)); HANDLE_CODE(bref.pack(c.get<intra5_gc_s_>().security_algorithm_cfg_r15_present, 1));
HANDLE_CODE(bref.pack(c.get<intra5_gc_r15_s_>().nas_container_r15_present, 1)); HANDLE_CODE(bref.pack(c.get<intra5_gc_s_>().nas_container_r15_present, 1));
if (c.get<intra5_gc_r15_s_>().security_algorithm_cfg_r15_present) { if (c.get<intra5_gc_s_>().security_algorithm_cfg_r15_present) {
HANDLE_CODE(c.get<intra5_gc_r15_s_>().security_algorithm_cfg_r15.pack(bref)); HANDLE_CODE(c.get<intra5_gc_s_>().security_algorithm_cfg_r15.pack(bref));
} }
HANDLE_CODE(bref.pack(c.get<intra5_gc_r15_s_>().key_change_ind_r15, 1)); HANDLE_CODE(bref.pack(c.get<intra5_gc_s_>().key_change_ind_r15, 1));
HANDLE_CODE(pack_integer(bref, c.get<intra5_gc_r15_s_>().next_hop_chaining_count_r15, (uint8_t)0u, (uint8_t)7u)); HANDLE_CODE(pack_integer(bref, c.get<intra5_gc_s_>().next_hop_chaining_count_r15, (uint8_t)0u, (uint8_t)7u));
if (c.get<intra5_gc_r15_s_>().nas_container_r15_present) { if (c.get<intra5_gc_s_>().nas_container_r15_present) {
HANDLE_CODE(c.get<intra5_gc_r15_s_>().nas_container_r15.pack(bref)); HANDLE_CODE(c.get<intra5_gc_s_>().nas_container_r15.pack(bref));
} }
break; break;
case types::fivegc_to_epc_r15: case types::fivegc_to_epc:
HANDLE_CODE(c.get<fivegc_to_epc_r15_s_>().security_algorithm_cfg_r15.pack(bref)); HANDLE_CODE(c.get<fivegc_to_epc_s_>().security_algorithm_cfg_r15.pack(bref));
HANDLE_CODE( HANDLE_CODE(pack_integer(bref, c.get<fivegc_to_epc_s_>().next_hop_chaining_count_r15, (uint8_t)0u, (uint8_t)7u));
pack_integer(bref, c.get<fivegc_to_epc_r15_s_>().next_hop_chaining_count_r15, (uint8_t)0u, (uint8_t)7u));
break; break;
case types::epc_to5_gc_r15: case types::epc_to5_gc:
HANDLE_CODE(c.get<epc_to5_gc_r15_s_>().security_algorithm_cfg_r15.pack(bref)); HANDLE_CODE(c.get<epc_to5_gc_s_>().security_algorithm_cfg_r15.pack(bref));
HANDLE_CODE(c.get<epc_to5_gc_r15_s_>().nas_container_r15.pack(bref)); HANDLE_CODE(c.get<epc_to5_gc_s_>().nas_container_r15.pack(bref));
break; break;
default: default:
log_invalid_choice_id(type_, "security_cfg_ho_v1530_s::handov_type_v1530_c_"); log_invalid_choice_id(type_, "security_cfg_ho_v1530_s::handov_type_v1530_c_");
@ -252,27 +251,26 @@ SRSASN_CODE security_cfg_ho_v1530_s::handov_type_v1530_c_::unpack(cbit_ref& bref
e.unpack(bref); e.unpack(bref);
set(e); set(e);
switch (type_) { switch (type_) {
case types::intra5_gc_r15: case types::intra5_gc:
HANDLE_CODE(bref.unpack(c.get<intra5_gc_r15_s_>().security_algorithm_cfg_r15_present, 1)); HANDLE_CODE(bref.unpack(c.get<intra5_gc_s_>().security_algorithm_cfg_r15_present, 1));
HANDLE_CODE(bref.unpack(c.get<intra5_gc_r15_s_>().nas_container_r15_present, 1)); HANDLE_CODE(bref.unpack(c.get<intra5_gc_s_>().nas_container_r15_present, 1));
if (c.get<intra5_gc_r15_s_>().security_algorithm_cfg_r15_present) { if (c.get<intra5_gc_s_>().security_algorithm_cfg_r15_present) {
HANDLE_CODE(c.get<intra5_gc_r15_s_>().security_algorithm_cfg_r15.unpack(bref)); HANDLE_CODE(c.get<intra5_gc_s_>().security_algorithm_cfg_r15.unpack(bref));
} }
HANDLE_CODE(bref.unpack(c.get<intra5_gc_r15_s_>().key_change_ind_r15, 1)); HANDLE_CODE(bref.unpack(c.get<intra5_gc_s_>().key_change_ind_r15, 1));
HANDLE_CODE( HANDLE_CODE(unpack_integer(c.get<intra5_gc_s_>().next_hop_chaining_count_r15, bref, (uint8_t)0u, (uint8_t)7u));
unpack_integer(c.get<intra5_gc_r15_s_>().next_hop_chaining_count_r15, bref, (uint8_t)0u, (uint8_t)7u)); if (c.get<intra5_gc_s_>().nas_container_r15_present) {
if (c.get<intra5_gc_r15_s_>().nas_container_r15_present) { HANDLE_CODE(c.get<intra5_gc_s_>().nas_container_r15.unpack(bref));
HANDLE_CODE(c.get<intra5_gc_r15_s_>().nas_container_r15.unpack(bref));
} }
break; break;
case types::fivegc_to_epc_r15: case types::fivegc_to_epc:
HANDLE_CODE(c.get<fivegc_to_epc_r15_s_>().security_algorithm_cfg_r15.unpack(bref)); HANDLE_CODE(c.get<fivegc_to_epc_s_>().security_algorithm_cfg_r15.unpack(bref));
HANDLE_CODE( HANDLE_CODE(
unpack_integer(c.get<fivegc_to_epc_r15_s_>().next_hop_chaining_count_r15, bref, (uint8_t)0u, (uint8_t)7u)); unpack_integer(c.get<fivegc_to_epc_s_>().next_hop_chaining_count_r15, bref, (uint8_t)0u, (uint8_t)7u));
break; break;
case types::epc_to5_gc_r15: case types::epc_to5_gc:
HANDLE_CODE(c.get<epc_to5_gc_r15_s_>().security_algorithm_cfg_r15.unpack(bref)); HANDLE_CODE(c.get<epc_to5_gc_s_>().security_algorithm_cfg_r15.unpack(bref));
HANDLE_CODE(c.get<epc_to5_gc_r15_s_>().nas_container_r15.unpack(bref)); HANDLE_CODE(c.get<epc_to5_gc_s_>().nas_container_r15.unpack(bref));
break; break;
default: default:
log_invalid_choice_id(type_, "security_cfg_ho_v1530_s::handov_type_v1530_c_"); log_invalid_choice_id(type_, "security_cfg_ho_v1530_s::handov_type_v1530_c_");

@ -28,6 +28,7 @@ SRSASN_CODE mib_s::pack(bit_ref& bref) const
HANDLE_CODE(sys_frame_num.pack(bref)); HANDLE_CODE(sys_frame_num.pack(bref));
HANDLE_CODE(pack_integer(bref, sched_info_sib1_br_r13, (uint8_t)0u, (uint8_t)31u)); HANDLE_CODE(pack_integer(bref, sched_info_sib1_br_r13, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(bref.pack(sys_info_unchanged_br_r15, 1)); HANDLE_CODE(bref.pack(sys_info_unchanged_br_r15, 1));
HANDLE_CODE(part_earfcn_minus17.pack(bref));
HANDLE_CODE(spare.pack(bref)); HANDLE_CODE(spare.pack(bref));
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
@ -39,6 +40,7 @@ SRSASN_CODE mib_s::unpack(cbit_ref& bref)
HANDLE_CODE(sys_frame_num.unpack(bref)); HANDLE_CODE(sys_frame_num.unpack(bref));
HANDLE_CODE(unpack_integer(sched_info_sib1_br_r13, bref, (uint8_t)0u, (uint8_t)31u)); HANDLE_CODE(unpack_integer(sched_info_sib1_br_r13, bref, (uint8_t)0u, (uint8_t)31u));
HANDLE_CODE(bref.unpack(sys_info_unchanged_br_r15, 1)); HANDLE_CODE(bref.unpack(sys_info_unchanged_br_r15, 1));
HANDLE_CODE(part_earfcn_minus17.unpack(bref));
HANDLE_CODE(spare.unpack(bref)); HANDLE_CODE(spare.unpack(bref));
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
@ -52,6 +54,8 @@ void mib_s::to_json(json_writer& j) const
j.write_str("systemFrameNumber", sys_frame_num.to_string()); j.write_str("systemFrameNumber", sys_frame_num.to_string());
j.write_int("schedulingInfoSIB1-BR-r13", sched_info_sib1_br_r13); j.write_int("schedulingInfoSIB1-BR-r13", sched_info_sib1_br_r13);
j.write_bool("systemInfoUnchanged-BR-r15", sys_info_unchanged_br_r15); j.write_bool("systemInfoUnchanged-BR-r15", sys_info_unchanged_br_r15);
j.write_fieldname("partEARFCN-17");
part_earfcn_minus17.to_json(j);
j.write_str("spare", spare.to_string()); j.write_str("spare", spare.to_string());
j.end_obj(); j.end_obj();
} }
@ -67,6 +71,133 @@ uint8_t mib_s::dl_bw_opts::to_number() const
return map_enum_number(options, 6, value, "mib_s::dl_bw_e_"); return map_enum_number(options, 6, value, "mib_s::dl_bw_e_");
} }
void mib_s::part_earfcn_minus17_c_::destroy_()
{
switch (type_) {
case types::spare:
c.destroy<fixed_bitstring<2> >();
break;
case types::earfcn_lsb:
c.destroy<fixed_bitstring<2> >();
break;
default:
break;
}
}
void mib_s::part_earfcn_minus17_c_::set(types::options e)
{
destroy_();
type_ = e;
switch (type_) {
case types::spare:
c.init<fixed_bitstring<2> >();
break;
case types::earfcn_lsb:
c.init<fixed_bitstring<2> >();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "mib_s::part_earfcn_minus17_c_");
}
}
mib_s::part_earfcn_minus17_c_::part_earfcn_minus17_c_(const mib_s::part_earfcn_minus17_c_& other)
{
type_ = other.type();
switch (type_) {
case types::spare:
c.init(other.c.get<fixed_bitstring<2> >());
break;
case types::earfcn_lsb:
c.init(other.c.get<fixed_bitstring<2> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "mib_s::part_earfcn_minus17_c_");
}
}
mib_s::part_earfcn_minus17_c_& mib_s::part_earfcn_minus17_c_::operator=(const mib_s::part_earfcn_minus17_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::spare:
c.set(other.c.get<fixed_bitstring<2> >());
break;
case types::earfcn_lsb:
c.set(other.c.get<fixed_bitstring<2> >());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "mib_s::part_earfcn_minus17_c_");
}
return *this;
}
fixed_bitstring<2>& mib_s::part_earfcn_minus17_c_::set_spare()
{
set(types::spare);
return c.get<fixed_bitstring<2> >();
}
fixed_bitstring<2>& mib_s::part_earfcn_minus17_c_::set_earfcn_lsb()
{
set(types::earfcn_lsb);
return c.get<fixed_bitstring<2> >();
}
void mib_s::part_earfcn_minus17_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::spare:
j.write_str("spare", c.get<fixed_bitstring<2> >().to_string());
break;
case types::earfcn_lsb:
j.write_str("earfcn-LSB", c.get<fixed_bitstring<2> >().to_string());
break;
default:
log_invalid_choice_id(type_, "mib_s::part_earfcn_minus17_c_");
}
j.end_obj();
}
SRSASN_CODE mib_s::part_earfcn_minus17_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::spare:
HANDLE_CODE(c.get<fixed_bitstring<2> >().pack(bref));
break;
case types::earfcn_lsb:
HANDLE_CODE(c.get<fixed_bitstring<2> >().pack(bref));
break;
default:
log_invalid_choice_id(type_, "mib_s::part_earfcn_minus17_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE mib_s::part_earfcn_minus17_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::spare:
HANDLE_CODE(c.get<fixed_bitstring<2> >().unpack(bref));
break;
case types::earfcn_lsb:
HANDLE_CODE(c.get<fixed_bitstring<2> >().unpack(bref));
break;
default:
log_invalid_choice_id(type_, "mib_s::part_earfcn_minus17_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
// GNSS-ID-r15 ::= SEQUENCE // GNSS-ID-r15 ::= SEQUENCE
SRSASN_CODE gnss_id_r15_s::pack(bit_ref& bref) const SRSASN_CODE gnss_id_r15_s::pack(bit_ref& bref) const
{ {
@ -91,8 +222,42 @@ void gnss_id_r15_s::to_json(json_writer& j) const
const char* gnss_id_r15_s::gnss_id_r15_opts::to_string() const const char* gnss_id_r15_s::gnss_id_r15_opts::to_string() const
{ {
static const char* options[] = {"gps", "sbas", "qzss", "galileo", "glonass", "bds"}; static const char* options[] = {"gps", "sbas", "qzss", "galileo", "glonass", "bds", "navic-v1610"};
return convert_enum_idx(options, 6, value, "gnss_id_r15_s::gnss_id_r15_e_"); return convert_enum_idx(options, 7, value, "gnss_id_r15_s::gnss_id_r15_e_");
}
// PLMN-IdentityInfo-v1700 ::= SEQUENCE
SRSASN_CODE plmn_id_info_v1700_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(tracking_area_list_r17_present, 1));
if (tracking_area_list_r17_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, tracking_area_list_r17, 1, 12));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE plmn_id_info_v1700_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(tracking_area_list_r17_present, 1));
if (tracking_area_list_r17_present) {
HANDLE_CODE(unpack_dyn_seq_of(tracking_area_list_r17, bref, 1, 12));
}
return SRSASN_SUCCESS;
}
void plmn_id_info_v1700_s::to_json(json_writer& j) const
{
j.start_obj();
if (tracking_area_list_r17_present) {
j.start_array("trackingAreaList-r17");
for (const auto& e1 : tracking_area_list_r17) {
j.write_str(e1.to_string());
}
j.end_array();
}
j.end_obj();
} }
// SBAS-ID-r15 ::= SEQUENCE // SBAS-ID-r15 ::= SEQUENCE
@ -123,6 +288,38 @@ const char* sbas_id_r15_s::sbas_id_r15_opts::to_string() const
return convert_enum_idx(options, 4, value, "sbas_id_r15_s::sbas_id_r15_e_"); return convert_enum_idx(options, 4, value, "sbas_id_r15_s::sbas_id_r15_e_");
} }
// PLMN-IdentityInfo-v1610 ::= SEQUENCE
SRSASN_CODE plmn_id_info_v1610_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(cp_cio_t_minus5_gs_optim_r16_present, 1));
HANDLE_CODE(bref.pack(up_cio_t_minus5_gs_optim_r16_present, 1));
HANDLE_CODE(bref.pack(iab_support_r16_present, 1));
return SRSASN_SUCCESS;
}
SRSASN_CODE plmn_id_info_v1610_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(cp_cio_t_minus5_gs_optim_r16_present, 1));
HANDLE_CODE(bref.unpack(up_cio_t_minus5_gs_optim_r16_present, 1));
HANDLE_CODE(bref.unpack(iab_support_r16_present, 1));
return SRSASN_SUCCESS;
}
void plmn_id_info_v1610_s::to_json(json_writer& j) const
{
j.start_obj();
if (cp_cio_t_minus5_gs_optim_r16_present) {
j.write_str("cp-CIoT-5GS-Optimisation-r16", "true");
}
if (up_cio_t_minus5_gs_optim_r16_present) {
j.write_str("up-CIoT-5GS-Optimisation-r16", "true");
}
if (iab_support_r16_present) {
j.write_str("iab-Support-r16", "true");
}
j.end_obj();
}
// PosSIB-Type-r15 ::= SEQUENCE // PosSIB-Type-r15 ::= SEQUENCE
SRSASN_CODE pos_sib_type_r15_s::pack(bit_ref& bref) const SRSASN_CODE pos_sib_type_r15_s::pack(bit_ref& bref) const
{ {
@ -179,12 +376,79 @@ void pos_sib_type_r15_s::to_json(json_writer& j) const
const char* pos_sib_type_r15_s::pos_sib_type_r15_opts::to_string() const const char* pos_sib_type_r15_s::pos_sib_type_r15_opts::to_string() const
{ {
static const char* options[] = { static const char* options[] = {
"posSibType1-1", "posSibType1-2", "posSibType1-3", "posSibType1-4", "posSibType1-5", "posSibType1-6", "posSibType1-1", "posSibType1-2", "posSibType1-3", "posSibType1-4",
"posSibType1-7", "posSibType2-1", "posSibType2-2", "posSibType2-3", "posSibType2-4", "posSibType2-5", "posSibType1-5", "posSibType1-6", "posSibType1-7", "posSibType2-1",
"posSibType2-6", "posSibType2-7", "posSibType2-8", "posSibType2-9", "posSibType2-10", "posSibType2-11", "posSibType2-2", "posSibType2-3", "posSibType2-4", "posSibType2-5",
"posSibType2-12", "posSibType2-13", "posSibType2-14", "posSibType2-15", "posSibType2-16", "posSibType2-17", "posSibType2-6", "posSibType2-7", "posSibType2-8", "posSibType2-9",
"posSibType2-18", "posSibType2-19", "posSibType3-1"}; "posSibType2-10", "posSibType2-11", "posSibType2-12", "posSibType2-13",
return convert_enum_idx(options, 27, value, "pos_sib_type_r15_s::pos_sib_type_r15_e_"); "posSibType2-14", "posSibType2-15", "posSibType2-16", "posSibType2-17",
"posSibType2-18", "posSibType2-19", "posSibType3-1", "posSibType1-8-v1610",
"posSibType2-20-v1610", "posSibType2-21-v1610", "posSibType2-22-v1610", "posSibType2-23-v1610",
"posSibType2-24-v1610", "posSibType2-25-v1610", "posSibType4-1-v1610", "posSibType5-1-v1610",
"posSibType1-9-v1700", "posSibType1-10-v1700"};
return convert_enum_idx(options, 38, value, "pos_sib_type_r15_s::pos_sib_type_r15_e_");
}
// SystemInformationBlockType1-v1700-IEs ::= SEQUENCE
SRSASN_CODE sib_type1_v1700_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(cell_access_related_info_ntn_r17_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (cell_access_related_info_ntn_r17_present) {
HANDLE_CODE(bref.pack(cell_access_related_info_ntn_r17.plmn_id_list_v1700_present, 1));
HANDLE_CODE(cell_access_related_info_ntn_r17.cell_barred_ntn_r17.pack(bref));
if (cell_access_related_info_ntn_r17.plmn_id_list_v1700_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, cell_access_related_info_ntn_r17.plmn_id_list_v1700, 1, 6));
}
}
return SRSASN_SUCCESS;
}
SRSASN_CODE sib_type1_v1700_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(cell_access_related_info_ntn_r17_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (cell_access_related_info_ntn_r17_present) {
HANDLE_CODE(bref.unpack(cell_access_related_info_ntn_r17.plmn_id_list_v1700_present, 1));
HANDLE_CODE(cell_access_related_info_ntn_r17.cell_barred_ntn_r17.unpack(bref));
if (cell_access_related_info_ntn_r17.plmn_id_list_v1700_present) {
HANDLE_CODE(unpack_dyn_seq_of(cell_access_related_info_ntn_r17.plmn_id_list_v1700, bref, 1, 6));
}
}
return SRSASN_SUCCESS;
}
void sib_type1_v1700_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (cell_access_related_info_ntn_r17_present) {
j.write_fieldname("cellAccessRelatedInfo-NTN-r17");
j.start_obj();
j.write_str("cellBarred-NTN-r17", cell_access_related_info_ntn_r17.cell_barred_ntn_r17.to_string());
if (cell_access_related_info_ntn_r17.plmn_id_list_v1700_present) {
j.start_array("plmn-IdentityList-v1700");
for (const auto& e1 : cell_access_related_info_ntn_r17.plmn_id_list_v1700) {
e1.to_json(j);
}
j.end_array();
}
j.end_obj();
}
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
const char* sib_type1_v1700_ies_s::cell_access_related_info_ntn_r17_s_::cell_barred_ntn_r17_opts::to_string() const
{
static const char* options[] = {"barred", "notBarred"};
return convert_enum_idx(
options, 2, value, "sib_type1_v1700_ies_s::cell_access_related_info_ntn_r17_s_::cell_barred_ntn_r17_e_");
} }
// PLMN-IdentityInfo-v1530 ::= SEQUENCE // PLMN-IdentityInfo-v1530 ::= SEQUENCE
@ -251,6 +515,67 @@ uint16_t pos_sched_info_r15_s::pos_si_periodicity_r15_opts::to_number() const
return map_enum_number(options, 7, value, "pos_sched_info_r15_s::pos_si_periodicity_r15_e_"); return map_enum_number(options, 7, value, "pos_sched_info_r15_s::pos_si_periodicity_r15_e_");
} }
// SystemInformationBlockType1-v1610-IEs ::= SEQUENCE
SRSASN_CODE sib_type1_v1610_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(edrx_allowed_minus5_gc_r16_present, 1));
HANDLE_CODE(bref.pack(tx_in_ctrl_ch_region_r16_present, 1));
HANDLE_CODE(bref.pack(camping_allowed_in_ce_r16_present, 1));
HANDLE_CODE(bref.pack(plmn_id_list_v1610_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
if (plmn_id_list_v1610_present) {
HANDLE_CODE(pack_dyn_seq_of(bref, plmn_id_list_v1610, 1, 6));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE sib_type1_v1610_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(edrx_allowed_minus5_gc_r16_present, 1));
HANDLE_CODE(bref.unpack(tx_in_ctrl_ch_region_r16_present, 1));
HANDLE_CODE(bref.unpack(camping_allowed_in_ce_r16_present, 1));
HANDLE_CODE(bref.unpack(plmn_id_list_v1610_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
if (plmn_id_list_v1610_present) {
HANDLE_CODE(unpack_dyn_seq_of(plmn_id_list_v1610, bref, 1, 6));
}
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void sib_type1_v1610_ies_s::to_json(json_writer& j) const
{
j.start_obj();
if (edrx_allowed_minus5_gc_r16_present) {
j.write_str("eDRX-Allowed-5GC-r16", "true");
}
if (tx_in_ctrl_ch_region_r16_present) {
j.write_str("transmissionInControlChRegion-r16", "true");
}
if (camping_allowed_in_ce_r16_present) {
j.write_str("campingAllowedInCE-r16", "true");
}
if (plmn_id_list_v1610_present) {
j.start_array("plmn-IdentityList-v1610");
for (const auto& e1 : plmn_id_list_v1610) {
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();
}
// CellSelectionInfoCE-v1530 ::= SEQUENCE // CellSelectionInfoCE-v1530 ::= SEQUENCE
SRSASN_CODE cell_sel_info_ce_v1530_s::pack(bit_ref& bref) const SRSASN_CODE cell_sel_info_ce_v1530_s::pack(bit_ref& bref) const
{ {
@ -288,6 +613,10 @@ SRSASN_CODE sib_type1_v1540_ies_s::pack(bit_ref& bref) const
HANDLE_CODE(bref.pack(si_pos_offset_r15_present, 1)); HANDLE_CODE(bref.pack(si_pos_offset_r15_present, 1));
HANDLE_CODE(bref.pack(non_crit_ext_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; return SRSASN_SUCCESS;
} }
SRSASN_CODE sib_type1_v1540_ies_s::unpack(cbit_ref& bref) SRSASN_CODE sib_type1_v1540_ies_s::unpack(cbit_ref& bref)
@ -295,6 +624,10 @@ SRSASN_CODE sib_type1_v1540_ies_s::unpack(cbit_ref& bref)
HANDLE_CODE(bref.unpack(si_pos_offset_r15_present, 1)); HANDLE_CODE(bref.unpack(si_pos_offset_r15_present, 1));
HANDLE_CODE(bref.unpack(non_crit_ext_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; return SRSASN_SUCCESS;
} }
void sib_type1_v1540_ies_s::to_json(json_writer& j) const void sib_type1_v1540_ies_s::to_json(json_writer& j) const
@ -305,8 +638,7 @@ void sib_type1_v1540_ies_s::to_json(json_writer& j) const
} }
if (non_crit_ext_present) { if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension"); j.write_fieldname("nonCriticalExtension");
j.start_obj(); non_crit_ext.to_json(j);
j.end_obj();
} }
j.end_obj(); j.end_obj();
} }
@ -2043,16 +2375,12 @@ void plmn_info_r15_s::to_json(json_writer& j) const
const char* sib_type_opts::to_string() const const char* sib_type_opts::to_string() const
{ {
static const char* options[] = { static const char* options[] = {
"sibType3", "sibType4", "sibType5", "sibType6", "sibType7", "sibType8", "sibType3", "sibType4", "sibType5", "sibType6", "sibType7", "sibType8",
"sibType9", "sibType10", "sibType11", "sibType12-v920", "sibType13-v920", "sibType14-v1130", "sibType9", "sibType10", "sibType11", "sibType12-v920", "sibType13-v920", "sibType14-v1130",
"sibType15-v1130", "sibType16-v1130", "sibType17-v1250", "sibType18-v1250", "sibType19-v1250", "sibType20-v1310", "sibType15-v1130", "sibType16-v1130", "sibType17-v1250", "sibType18-v1250", "sibType19-v1250", "sibType20-v1310",
"sibType21-v1430", "sibType24-v1530", "sibType25-v1530", "sibType26-v1530"}; "sibType21-v1430", "sibType24-v1530", "sibType25-v1530", "sibType26-v1530", "sibType26a-v1610", "sibType27-v1610",
return convert_enum_idx(options, 22, value, "sib_type_e"); "sibType28-v1610", "sibType29-v1610"};
} return convert_enum_idx(options, 26, value, "sib_type_e");
uint8_t sib_type_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, 20, 21, 24, 25, 26};
return map_enum_number(options, 22, value, "sib_type_e");
} }
// SystemInformationBlockType1-v1250-IEs ::= SEQUENCE // SystemInformationBlockType1-v1250-IEs ::= SEQUENCE
@ -2638,6 +2966,17 @@ SRSASN_CODE sib_type2_s::pack(bit_ref& bref) const
group_flags[10] |= idle_mode_meass_r15_present; group_flags[10] |= idle_mode_meass_r15_present;
group_flags[10] |= reduced_cp_latency_enabled_r15_present; group_flags[10] |= reduced_cp_latency_enabled_r15_present;
group_flags[11] |= mbms_rom_service_ind_r15_present; group_flags[11] |= mbms_rom_service_ind_r15_present;
group_flags[12] |= rlos_enabled_r16_present;
group_flags[12] |= early_security_reactivation_r16_present;
group_flags[12] |= cp_edt_minus5_gc_r16_present;
group_flags[12] |= up_edt_minus5_gc_r16_present;
group_flags[12] |= cp_pur_epc_r16_present;
group_flags[12] |= up_pur_epc_r16_present;
group_flags[12] |= cp_pur_minus5_gc_r16_present;
group_flags[12] |= up_pur_minus5_gc_r16_present;
group_flags[12] |= mpdcch_cqi_report_r16_present;
group_flags[12] |= rai_activation_enh_r16_present;
group_flags[12] |= idle_mode_meass_nr_r16_present;
group_flags.pack(bref); group_flags.pack(bref);
if (group_flags[0]) { if (group_flags[0]) {
@ -2745,6 +3084,24 @@ SRSASN_CODE sib_type2_s::pack(bit_ref& bref) const
HANDLE_CODE(bref.pack(mbms_rom_service_ind_r15_present, 1)); HANDLE_CODE(bref.pack(mbms_rom_service_ind_r15_present, 1));
} }
if (group_flags[12]) {
varlength_field_pack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.pack(rlos_enabled_r16_present, 1));
HANDLE_CODE(bref.pack(early_security_reactivation_r16_present, 1));
HANDLE_CODE(bref.pack(cp_edt_minus5_gc_r16_present, 1));
HANDLE_CODE(bref.pack(up_edt_minus5_gc_r16_present, 1));
HANDLE_CODE(bref.pack(cp_pur_epc_r16_present, 1));
HANDLE_CODE(bref.pack(up_pur_epc_r16_present, 1));
HANDLE_CODE(bref.pack(cp_pur_minus5_gc_r16_present, 1));
HANDLE_CODE(bref.pack(up_pur_minus5_gc_r16_present, 1));
HANDLE_CODE(bref.pack(mpdcch_cqi_report_r16_present, 1));
HANDLE_CODE(bref.pack(rai_activation_enh_r16_present, 1));
HANDLE_CODE(bref.pack(idle_mode_meass_nr_r16_present, 1));
if (mpdcch_cqi_report_r16_present) {
HANDLE_CODE(mpdcch_cqi_report_r16.pack(bref));
}
}
} }
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
@ -2782,7 +3139,7 @@ SRSASN_CODE sib_type2_s::unpack(cbit_ref& bref)
HANDLE_CODE(time_align_timer_common.unpack(bref)); HANDLE_CODE(time_align_timer_common.unpack(bref));
if (ext) { if (ext) {
ext_groups_unpacker_guard group_flags(12); ext_groups_unpacker_guard group_flags(13);
group_flags.unpack(bref); group_flags.unpack(bref);
if (group_flags[0]) { if (group_flags[0]) {
@ -2912,6 +3269,24 @@ SRSASN_CODE sib_type2_s::unpack(cbit_ref& bref)
HANDLE_CODE(bref.unpack(mbms_rom_service_ind_r15_present, 1)); HANDLE_CODE(bref.unpack(mbms_rom_service_ind_r15_present, 1));
} }
if (group_flags[12]) {
varlength_field_unpack_guard varlen_scope(bref, false);
HANDLE_CODE(bref.unpack(rlos_enabled_r16_present, 1));
HANDLE_CODE(bref.unpack(early_security_reactivation_r16_present, 1));
HANDLE_CODE(bref.unpack(cp_edt_minus5_gc_r16_present, 1));
HANDLE_CODE(bref.unpack(up_edt_minus5_gc_r16_present, 1));
HANDLE_CODE(bref.unpack(cp_pur_epc_r16_present, 1));
HANDLE_CODE(bref.unpack(up_pur_epc_r16_present, 1));
HANDLE_CODE(bref.unpack(cp_pur_minus5_gc_r16_present, 1));
HANDLE_CODE(bref.unpack(up_pur_minus5_gc_r16_present, 1));
HANDLE_CODE(bref.unpack(mpdcch_cqi_report_r16_present, 1));
HANDLE_CODE(bref.unpack(rai_activation_enh_r16_present, 1));
HANDLE_CODE(bref.unpack(idle_mode_meass_nr_r16_present, 1));
if (mpdcch_cqi_report_r16_present) {
HANDLE_CODE(mpdcch_cqi_report_r16.unpack(bref));
}
}
} }
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
@ -3056,6 +3431,39 @@ void sib_type2_s::to_json(json_writer& j) const
if (mbms_rom_service_ind_r15_present) { if (mbms_rom_service_ind_r15_present) {
j.write_str("mbms-ROM-ServiceIndication-r15", "true"); j.write_str("mbms-ROM-ServiceIndication-r15", "true");
} }
if (rlos_enabled_r16_present) {
j.write_str("rlos-Enabled-r16", "true");
}
if (early_security_reactivation_r16_present) {
j.write_str("earlySecurityReactivation-r16", "true");
}
if (cp_edt_minus5_gc_r16_present) {
j.write_str("cp-EDT-5GC-r16", "true");
}
if (up_edt_minus5_gc_r16_present) {
j.write_str("up-EDT-5GC-r16", "true");
}
if (cp_pur_epc_r16_present) {
j.write_str("cp-PUR-EPC-r16", "true");
}
if (up_pur_epc_r16_present) {
j.write_str("up-PUR-EPC-r16", "true");
}
if (cp_pur_minus5_gc_r16_present) {
j.write_str("cp-PUR-5GC-r16", "true");
}
if (up_pur_minus5_gc_r16_present) {
j.write_str("up-PUR-5GC-r16", "true");
}
if (mpdcch_cqi_report_r16_present) {
j.write_str("mpdcch-CQI-Reporting-r16", mpdcch_cqi_report_r16.to_string());
}
if (rai_activation_enh_r16_present) {
j.write_str("rai-ActivationEnh-r16", "true");
}
if (idle_mode_meass_nr_r16_present) {
j.write_str("idleModeMeasurementsNR-r16", "true");
}
} }
j.end_obj(); j.end_obj();
} }
@ -3071,6 +3479,17 @@ uint8_t sib_type2_s::freq_info_s_::ul_bw_opts::to_number() const
return map_enum_number(options, 6, value, "sib_type2_s::freq_info_s_::ul_bw_e_"); return map_enum_number(options, 6, value, "sib_type2_s::freq_info_s_::ul_bw_e_");
} }
const char* sib_type2_s::mpdcch_cqi_report_r16_opts::to_string() const
{
static const char* options[] = {"fourBits", "both"};
return convert_enum_idx(options, 2, value, "sib_type2_s::mpdcch_cqi_report_r16_e_");
}
uint8_t sib_type2_s::mpdcch_cqi_report_r16_opts::to_number() const
{
static const uint8_t options[] = {4};
return map_enum_number(options, 1, value, "sib_type2_s::mpdcch_cqi_report_r16_e_");
}
// SystemInformationBlockType1-v890-IEs ::= SEQUENCE // SystemInformationBlockType1-v890-IEs ::= SEQUENCE
SRSASN_CODE sib_type1_v890_ies_s::pack(bit_ref& bref) const SRSASN_CODE sib_type1_v890_ies_s::pack(bit_ref& bref) const
{ {

File diff suppressed because it is too large Load Diff

@ -20,6 +20,41 @@ using namespace asn1::rrc;
* Struct Methods * Struct Methods
******************************************************************************/ ******************************************************************************/
// RRCEarlyDataRequest-v1610-IEs ::= SEQUENCE
SRSASN_CODE rrc_early_data_request_v1610_ies_s::pack(bit_ref& bref) const
{
HANDLE_CODE(bref.pack(non_crit_ext_present, 1));
HANDLE_CODE(establishment_cause_v1610.pack(bref));
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_early_data_request_v1610_ies_s::unpack(cbit_ref& bref)
{
HANDLE_CODE(bref.unpack(non_crit_ext_present, 1));
HANDLE_CODE(establishment_cause_v1610.unpack(bref));
return SRSASN_SUCCESS;
}
void rrc_early_data_request_v1610_ies_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("establishmentCause-v1610", establishment_cause_v1610.to_string());
if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension");
j.start_obj();
j.end_obj();
}
j.end_obj();
}
const char* rrc_early_data_request_v1610_ies_s::establishment_cause_v1610_opts::to_string() const
{
static const char* options[] = {"mt-Access", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 4, value, "rrc_early_data_request_v1610_ies_s::establishment_cause_v1610_e_");
}
// EstablishmentCause ::= ENUMERATED // EstablishmentCause ::= ENUMERATED
const char* establishment_cause_opts::to_string() const const char* establishment_cause_opts::to_string() const
{ {
@ -34,12 +69,12 @@ const char* establishment_cause_opts::to_string() const
return convert_enum_idx(options, 8, value, "establishment_cause_e"); return convert_enum_idx(options, 8, value, "establishment_cause_e");
} }
// EstablishmentCause-5GC ::= ENUMERATED // EstablishmentCause-5GC-r15 ::= ENUMERATED
const char* establishment_cause_minus5_gc_opts::to_string() const const char* establishment_cause_minus5_gc_r15_opts::to_string() const
{ {
static const char* options[] = { static const char* options[] = {
"emergency", "highPriorityAccess", "mt-Access", "mo-Signalling", "mo-Data", "mo-VoiceCall", "spare2", "spare1"}; "emergency", "highPriorityAccess", "mt-Access", "mo-Signalling", "mo-Data", "mo-VoiceCall", "spare2", "spare1"};
return convert_enum_idx(options, 8, value, "establishment_cause_minus5_gc_e"); return convert_enum_idx(options, 8, value, "establishment_cause_minus5_gc_r15_e");
} }
// InitialUE-Identity ::= CHOICE // InitialUE-Identity ::= CHOICE
@ -171,8 +206,8 @@ SRSASN_CODE init_ue_id_c::unpack(cbit_ref& bref)
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
// InitialUE-Identity-5GC ::= CHOICE // InitialUE-Identity-5GC-r15 ::= CHOICE
void init_ue_id_minus5_gc_c::destroy_() void init_ue_id_minus5_gc_r15_c::destroy_()
{ {
switch (type_) { switch (type_) {
case types::ng_minus5_g_s_tmsi_part1: case types::ng_minus5_g_s_tmsi_part1:
@ -185,7 +220,7 @@ void init_ue_id_minus5_gc_c::destroy_()
break; break;
} }
} }
void init_ue_id_minus5_gc_c::set(types::options e) void init_ue_id_minus5_gc_r15_c::set(types::options e)
{ {
destroy_(); destroy_();
type_ = e; type_ = e;
@ -199,10 +234,10 @@ void init_ue_id_minus5_gc_c::set(types::options e)
case types::nulltype: case types::nulltype:
break; break;
default: default:
log_invalid_choice_id(type_, "init_ue_id_minus5_gc_c"); log_invalid_choice_id(type_, "init_ue_id_minus5_gc_r15_c");
} }
} }
init_ue_id_minus5_gc_c::init_ue_id_minus5_gc_c(const init_ue_id_minus5_gc_c& other) init_ue_id_minus5_gc_r15_c::init_ue_id_minus5_gc_r15_c(const init_ue_id_minus5_gc_r15_c& other)
{ {
type_ = other.type(); type_ = other.type();
switch (type_) { switch (type_) {
@ -215,10 +250,10 @@ init_ue_id_minus5_gc_c::init_ue_id_minus5_gc_c(const init_ue_id_minus5_gc_c& oth
case types::nulltype: case types::nulltype:
break; break;
default: default:
log_invalid_choice_id(type_, "init_ue_id_minus5_gc_c"); log_invalid_choice_id(type_, "init_ue_id_minus5_gc_r15_c");
} }
} }
init_ue_id_minus5_gc_c& init_ue_id_minus5_gc_c::operator=(const init_ue_id_minus5_gc_c& other) init_ue_id_minus5_gc_r15_c& init_ue_id_minus5_gc_r15_c::operator=(const init_ue_id_minus5_gc_r15_c& other)
{ {
if (this == &other) { if (this == &other) {
return *this; return *this;
@ -234,22 +269,22 @@ init_ue_id_minus5_gc_c& init_ue_id_minus5_gc_c::operator=(const init_ue_id_minus
case types::nulltype: case types::nulltype:
break; break;
default: default:
log_invalid_choice_id(type_, "init_ue_id_minus5_gc_c"); log_invalid_choice_id(type_, "init_ue_id_minus5_gc_r15_c");
} }
return *this; return *this;
} }
fixed_bitstring<40>& init_ue_id_minus5_gc_c::set_ng_minus5_g_s_tmsi_part1() fixed_bitstring<40>& init_ue_id_minus5_gc_r15_c::set_ng_minus5_g_s_tmsi_part1()
{ {
set(types::ng_minus5_g_s_tmsi_part1); set(types::ng_minus5_g_s_tmsi_part1);
return c.get<fixed_bitstring<40> >(); return c.get<fixed_bitstring<40> >();
} }
fixed_bitstring<40>& init_ue_id_minus5_gc_c::set_random_value() fixed_bitstring<40>& init_ue_id_minus5_gc_r15_c::set_random_value()
{ {
set(types::random_value); set(types::random_value);
return c.get<fixed_bitstring<40> >(); return c.get<fixed_bitstring<40> >();
} }
void init_ue_id_minus5_gc_c::to_json(json_writer& j) const void init_ue_id_minus5_gc_r15_c::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
switch (type_) { switch (type_) {
@ -260,11 +295,11 @@ void init_ue_id_minus5_gc_c::to_json(json_writer& j) const
j.write_str("randomValue", c.get<fixed_bitstring<40> >().to_string()); j.write_str("randomValue", c.get<fixed_bitstring<40> >().to_string());
break; break;
default: default:
log_invalid_choice_id(type_, "init_ue_id_minus5_gc_c"); log_invalid_choice_id(type_, "init_ue_id_minus5_gc_r15_c");
} }
j.end_obj(); j.end_obj();
} }
SRSASN_CODE init_ue_id_minus5_gc_c::pack(bit_ref& bref) const SRSASN_CODE init_ue_id_minus5_gc_r15_c::pack(bit_ref& bref) const
{ {
type_.pack(bref); type_.pack(bref);
switch (type_) { switch (type_) {
@ -275,12 +310,12 @@ SRSASN_CODE init_ue_id_minus5_gc_c::pack(bit_ref& bref) const
HANDLE_CODE(c.get<fixed_bitstring<40> >().pack(bref)); HANDLE_CODE(c.get<fixed_bitstring<40> >().pack(bref));
break; break;
default: default:
log_invalid_choice_id(type_, "init_ue_id_minus5_gc_c"); log_invalid_choice_id(type_, "init_ue_id_minus5_gc_r15_c");
return SRSASN_ERROR_ENCODE_FAIL; return SRSASN_ERROR_ENCODE_FAIL;
} }
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
SRSASN_CODE init_ue_id_minus5_gc_c::unpack(cbit_ref& bref) SRSASN_CODE init_ue_id_minus5_gc_r15_c::unpack(cbit_ref& bref)
{ {
types e; types e;
e.unpack(bref); e.unpack(bref);
@ -293,7 +328,7 @@ SRSASN_CODE init_ue_id_minus5_gc_c::unpack(cbit_ref& bref)
HANDLE_CODE(c.get<fixed_bitstring<40> >().unpack(bref)); HANDLE_CODE(c.get<fixed_bitstring<40> >().unpack(bref));
break; break;
default: default:
log_invalid_choice_id(type_, "init_ue_id_minus5_gc_c"); log_invalid_choice_id(type_, "init_ue_id_minus5_gc_r15_c");
return SRSASN_ERROR_DECODE_FAIL; return SRSASN_ERROR_DECODE_FAIL;
} }
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
@ -308,6 +343,9 @@ SRSASN_CODE rrc_early_data_request_v1590_ies_s::pack(bit_ref& bref) const
if (late_non_crit_ext_present) { if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref)); HANDLE_CODE(late_non_crit_ext.pack(bref));
} }
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
@ -319,6 +357,9 @@ SRSASN_CODE rrc_early_data_request_v1590_ies_s::unpack(cbit_ref& bref)
if (late_non_crit_ext_present) { if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref)); HANDLE_CODE(late_non_crit_ext.unpack(bref));
} }
if (non_crit_ext_present) {
HANDLE_CODE(non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
@ -330,8 +371,7 @@ void rrc_early_data_request_v1590_ies_s::to_json(json_writer& j) const
} }
if (non_crit_ext_present) { if (non_crit_ext_present) {
j.write_fieldname("nonCriticalExtension"); j.write_fieldname("nonCriticalExtension");
j.start_obj(); non_crit_ext.to_json(j);
j.end_obj();
} }
j.end_obj(); j.end_obj();
} }
@ -379,7 +419,7 @@ const char* resume_cause_opts::to_string() const
"mo-Data", "mo-Data",
"delayTolerantAccess-v1020", "delayTolerantAccess-v1020",
"mo-VoiceCall-v1280", "mo-VoiceCall-v1280",
"spare1"}; "mt-EDT-v1610"};
return convert_enum_idx(options, 8, value, "resume_cause_e"); return convert_enum_idx(options, 8, value, "resume_cause_e");
} }
@ -427,16 +467,16 @@ void rrc_conn_reest_request_r8_ies_s::to_json(json_writer& j) const
// RRCConnectionRequest-5GC-r15-IEs ::= SEQUENCE // RRCConnectionRequest-5GC-r15-IEs ::= SEQUENCE
SRSASN_CODE rrc_conn_request_minus5_gc_r15_ies_s::pack(bit_ref& bref) const SRSASN_CODE rrc_conn_request_minus5_gc_r15_ies_s::pack(bit_ref& bref) const
{ {
HANDLE_CODE(ue_id.pack(bref)); HANDLE_CODE(ue_id_r15.pack(bref));
HANDLE_CODE(establishment_cause.pack(bref)); HANDLE_CODE(establishment_cause_r15.pack(bref));
HANDLE_CODE(spare.pack(bref)); HANDLE_CODE(spare.pack(bref));
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
SRSASN_CODE rrc_conn_request_minus5_gc_r15_ies_s::unpack(cbit_ref& bref) SRSASN_CODE rrc_conn_request_minus5_gc_r15_ies_s::unpack(cbit_ref& bref)
{ {
HANDLE_CODE(ue_id.unpack(bref)); HANDLE_CODE(ue_id_r15.unpack(bref));
HANDLE_CODE(establishment_cause.unpack(bref)); HANDLE_CODE(establishment_cause_r15.unpack(bref));
HANDLE_CODE(spare.unpack(bref)); HANDLE_CODE(spare.unpack(bref));
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
@ -444,9 +484,9 @@ SRSASN_CODE rrc_conn_request_minus5_gc_r15_ies_s::unpack(cbit_ref& bref)
void rrc_conn_request_minus5_gc_r15_ies_s::to_json(json_writer& j) const void rrc_conn_request_minus5_gc_r15_ies_s::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
j.write_fieldname("ue-Identity"); j.write_fieldname("ue-Identity-r15");
ue_id.to_json(j); ue_id_r15.to_json(j);
j.write_str("establishmentCause", establishment_cause.to_string()); j.write_str("establishmentCause-r15", establishment_cause_r15.to_string());
j.write_str("spare", spare.to_string()); j.write_str("spare", spare.to_string());
j.end_obj(); j.end_obj();
} }
@ -797,6 +837,58 @@ SRSASN_CODE rrc_conn_resume_request_r13_ies_s::resume_id_r13_c_::unpack(cbit_ref
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
// RRCEarlyDataRequest-5GC-r16-IEs ::= SEQUENCE
SRSASN_CODE rrc_early_data_request_minus5_gc_r16_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(ng_minus5_g_s_tmsi_r16.pack(bref));
HANDLE_CODE(establishment_cause_r16.pack(bref));
HANDLE_CODE(ded_info_nas_r16.pack(bref));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.pack(bref));
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_early_data_request_minus5_gc_r16_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(ng_minus5_g_s_tmsi_r16.unpack(bref));
HANDLE_CODE(establishment_cause_r16.unpack(bref));
HANDLE_CODE(ded_info_nas_r16.unpack(bref));
if (late_non_crit_ext_present) {
HANDLE_CODE(late_non_crit_ext.unpack(bref));
}
return SRSASN_SUCCESS;
}
void rrc_early_data_request_minus5_gc_r16_ies_s::to_json(json_writer& j) const
{
j.start_obj();
j.write_str("ng-5G-S-TMSI-r16", ng_minus5_g_s_tmsi_r16.to_string());
j.write_str("establishmentCause-r16", establishment_cause_r16.to_string());
j.write_str("dedicatedInfoNAS-r16", ded_info_nas_r16.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* rrc_early_data_request_minus5_gc_r16_ies_s::establishment_cause_r16_opts::to_string() const
{
static const char* options[] = {"mo-Data", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 4, value, "rrc_early_data_request_minus5_gc_r16_ies_s::establishment_cause_r16_e_");
}
// RRCEarlyDataRequest-r15-IEs ::= SEQUENCE // RRCEarlyDataRequest-r15-IEs ::= SEQUENCE
SRSASN_CODE rrc_early_data_request_r15_ies_s::pack(bit_ref& bref) const SRSASN_CODE rrc_early_data_request_r15_ies_s::pack(bit_ref& bref) const
{ {
@ -1250,18 +1342,84 @@ void rrc_early_data_request_r15_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
void rrc_early_data_request_r15_s::crit_exts_c_::destroy_()
{
switch (type_) {
case types::rrc_early_data_request_r15:
c.destroy<rrc_early_data_request_r15_ies_s>();
break;
case types::crit_exts_future:
c.destroy<crit_exts_future_c_>();
break;
default:
break;
}
}
void rrc_early_data_request_r15_s::crit_exts_c_::set(types::options e) void rrc_early_data_request_r15_s::crit_exts_c_::set(types::options e)
{ {
destroy_();
type_ = e; type_ = e;
switch (type_) {
case types::rrc_early_data_request_r15:
c.init<rrc_early_data_request_r15_ies_s>();
break;
case types::crit_exts_future:
c.init<crit_exts_future_c_>();
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rrc_early_data_request_r15_s::crit_exts_c_");
}
}
rrc_early_data_request_r15_s::crit_exts_c_::crit_exts_c_(const rrc_early_data_request_r15_s::crit_exts_c_& other)
{
type_ = other.type();
switch (type_) {
case types::rrc_early_data_request_r15:
c.init(other.c.get<rrc_early_data_request_r15_ies_s>());
break;
case types::crit_exts_future:
c.init(other.c.get<crit_exts_future_c_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rrc_early_data_request_r15_s::crit_exts_c_");
}
}
rrc_early_data_request_r15_s::crit_exts_c_&
rrc_early_data_request_r15_s::crit_exts_c_::operator=(const rrc_early_data_request_r15_s::crit_exts_c_& other)
{
if (this == &other) {
return *this;
}
set(other.type());
switch (type_) {
case types::rrc_early_data_request_r15:
c.set(other.c.get<rrc_early_data_request_r15_ies_s>());
break;
case types::crit_exts_future:
c.set(other.c.get<crit_exts_future_c_>());
break;
case types::nulltype:
break;
default:
log_invalid_choice_id(type_, "rrc_early_data_request_r15_s::crit_exts_c_");
}
return *this;
} }
rrc_early_data_request_r15_ies_s& rrc_early_data_request_r15_s::crit_exts_c_::set_rrc_early_data_request_r15() rrc_early_data_request_r15_ies_s& rrc_early_data_request_r15_s::crit_exts_c_::set_rrc_early_data_request_r15()
{ {
set(types::rrc_early_data_request_r15); set(types::rrc_early_data_request_r15);
return c; return c.get<rrc_early_data_request_r15_ies_s>();
} }
void rrc_early_data_request_r15_s::crit_exts_c_::set_crit_exts_future() rrc_early_data_request_r15_s::crit_exts_c_::crit_exts_future_c_&
rrc_early_data_request_r15_s::crit_exts_c_::set_crit_exts_future()
{ {
set(types::crit_exts_future); set(types::crit_exts_future);
return c.get<crit_exts_future_c_>();
} }
void rrc_early_data_request_r15_s::crit_exts_c_::to_json(json_writer& j) const void rrc_early_data_request_r15_s::crit_exts_c_::to_json(json_writer& j) const
{ {
@ -1269,9 +1427,11 @@ void rrc_early_data_request_r15_s::crit_exts_c_::to_json(json_writer& j) const
switch (type_) { switch (type_) {
case types::rrc_early_data_request_r15: case types::rrc_early_data_request_r15:
j.write_fieldname("rrcEarlyDataRequest-r15"); j.write_fieldname("rrcEarlyDataRequest-r15");
c.to_json(j); c.get<rrc_early_data_request_r15_ies_s>().to_json(j);
break; break;
case types::crit_exts_future: case types::crit_exts_future:
j.write_fieldname("criticalExtensionsFuture");
c.get<crit_exts_future_c_>().to_json(j);
break; break;
default: default:
log_invalid_choice_id(type_, "rrc_early_data_request_r15_s::crit_exts_c_"); log_invalid_choice_id(type_, "rrc_early_data_request_r15_s::crit_exts_c_");
@ -1283,9 +1443,10 @@ SRSASN_CODE rrc_early_data_request_r15_s::crit_exts_c_::pack(bit_ref& bref) cons
type_.pack(bref); type_.pack(bref);
switch (type_) { switch (type_) {
case types::rrc_early_data_request_r15: case types::rrc_early_data_request_r15:
HANDLE_CODE(c.pack(bref)); HANDLE_CODE(c.get<rrc_early_data_request_r15_ies_s>().pack(bref));
break; break;
case types::crit_exts_future: case types::crit_exts_future:
HANDLE_CODE(c.get<crit_exts_future_c_>().pack(bref));
break; break;
default: default:
log_invalid_choice_id(type_, "rrc_early_data_request_r15_s::crit_exts_c_"); log_invalid_choice_id(type_, "rrc_early_data_request_r15_s::crit_exts_c_");
@ -1300,9 +1461,10 @@ SRSASN_CODE rrc_early_data_request_r15_s::crit_exts_c_::unpack(cbit_ref& bref)
set(e); set(e);
switch (type_) { switch (type_) {
case types::rrc_early_data_request_r15: case types::rrc_early_data_request_r15:
HANDLE_CODE(c.unpack(bref)); HANDLE_CODE(c.get<rrc_early_data_request_r15_ies_s>().unpack(bref));
break; break;
case types::crit_exts_future: case types::crit_exts_future:
HANDLE_CODE(c.get<crit_exts_future_c_>().unpack(bref));
break; break;
default: default:
log_invalid_choice_id(type_, "rrc_early_data_request_r15_s::crit_exts_c_"); log_invalid_choice_id(type_, "rrc_early_data_request_r15_s::crit_exts_c_");
@ -1311,6 +1473,68 @@ SRSASN_CODE rrc_early_data_request_r15_s::crit_exts_c_::unpack(cbit_ref& bref)
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
void rrc_early_data_request_r15_s::crit_exts_c_::crit_exts_future_c_::set(types::options e)
{
type_ = e;
}
rrc_early_data_request_minus5_gc_r16_ies_s&
rrc_early_data_request_r15_s::crit_exts_c_::crit_exts_future_c_::set_rrc_early_data_request_minus5_gc_r16()
{
set(types::rrc_early_data_request_minus5_gc_r16);
return c;
}
void rrc_early_data_request_r15_s::crit_exts_c_::crit_exts_future_c_::set_crit_exts_future_r16()
{
set(types::crit_exts_future_r16);
}
void rrc_early_data_request_r15_s::crit_exts_c_::crit_exts_future_c_::to_json(json_writer& j) const
{
j.start_obj();
switch (type_) {
case types::rrc_early_data_request_minus5_gc_r16:
j.write_fieldname("rrcEarlyDataRequest-5GC-r16");
c.to_json(j);
break;
case types::crit_exts_future_r16:
break;
default:
log_invalid_choice_id(type_, "rrc_early_data_request_r15_s::crit_exts_c_::crit_exts_future_c_");
}
j.end_obj();
}
SRSASN_CODE rrc_early_data_request_r15_s::crit_exts_c_::crit_exts_future_c_::pack(bit_ref& bref) const
{
type_.pack(bref);
switch (type_) {
case types::rrc_early_data_request_minus5_gc_r16:
HANDLE_CODE(c.pack(bref));
break;
case types::crit_exts_future_r16:
break;
default:
log_invalid_choice_id(type_, "rrc_early_data_request_r15_s::crit_exts_c_::crit_exts_future_c_");
return SRSASN_ERROR_ENCODE_FAIL;
}
return SRSASN_SUCCESS;
}
SRSASN_CODE rrc_early_data_request_r15_s::crit_exts_c_::crit_exts_future_c_::unpack(cbit_ref& bref)
{
types e;
e.unpack(bref);
set(e);
switch (type_) {
case types::rrc_early_data_request_minus5_gc_r16:
HANDLE_CODE(c.unpack(bref));
break;
case types::crit_exts_future_r16:
break;
default:
log_invalid_choice_id(type_, "rrc_early_data_request_r15_s::crit_exts_c_::crit_exts_future_c_");
return SRSASN_ERROR_DECODE_FAIL;
}
return SRSASN_SUCCESS;
}
// UL-CCCH-MessageType ::= CHOICE // UL-CCCH-MessageType ::= CHOICE
void ul_ccch_msg_type_c::destroy_() void ul_ccch_msg_type_c::destroy_()
{ {

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -1205,7 +1205,7 @@ sib13_t make_sib13(const asn1::rrc::sib_type13_r9_s& asn1_type)
ASN1_OBJ_ID_DEFINE(asn1::rrc::srb_to_add_mod_s, srb_id); ASN1_OBJ_ID_DEFINE(asn1::rrc::srb_to_add_mod_s, srb_id);
ASN1_OBJ_ID_DEFINE(asn1::rrc::drb_to_add_mod_s, drb_id); ASN1_OBJ_ID_DEFINE(asn1::rrc::drb_to_add_mod_s, drb_id);
ASN1_OBJ_ID_DEFINE(asn1::rrc::black_cells_to_add_mod_s, cell_idx); ASN1_OBJ_ID_DEFINE(asn1::rrc::excluded_cells_to_add_mod_s, cell_idx);
ASN1_OBJ_ID_DEFINE(asn1::rrc::cells_to_add_mod_s, cell_idx); ASN1_OBJ_ID_DEFINE(asn1::rrc::cells_to_add_mod_s, cell_idx);
ASN1_OBJ_ID_DEFINE(asn1::rrc::cells_to_add_mod_nr_r15_s, cell_idx_r15); ASN1_OBJ_ID_DEFINE(asn1::rrc::cells_to_add_mod_nr_r15_s, cell_idx_r15);
ASN1_OBJ_ID_DEFINE(asn1::rrc::meas_obj_to_add_mod_s, meas_obj_id); ASN1_OBJ_ID_DEFINE(asn1::rrc::meas_obj_to_add_mod_s, meas_obj_id);

@ -156,21 +156,21 @@ int field_intra_neigh_cell_list::parse(libconfig::Setting& root)
int field_intra_black_cell_list::parse(libconfig::Setting& root) int field_intra_black_cell_list::parse(libconfig::Setting& root)
{ {
data->intra_freq_black_cell_list.resize((uint32_t)root.getLength()); data->intra_freq_excluded_cell_list.resize((uint32_t)root.getLength());
data->intra_freq_black_cell_list_present = data->intra_freq_black_cell_list.size() > 0; data->intra_freq_excluded_cell_list_present = data->intra_freq_excluded_cell_list.size() > 0;
for (uint32_t i = 0; i < data->intra_freq_black_cell_list.size() && i < ASN1_RRC_MAX_CELL_BLACK; i++) { for (uint32_t i = 0; i < data->intra_freq_excluded_cell_list.size() && i < ASN1_RRC_MAX_EXCLUDED_CELL; i++) {
if (not parse_enum_by_number(data->intra_freq_black_cell_list[i].range, "range", root[i])) { if (not parse_enum_by_number(data->intra_freq_excluded_cell_list[i].range, "range", root[i])) {
fprintf(stderr, "Missing field range in black_cell=%d\n", i); fprintf(stderr, "Missing field range in excluded_cell=%d\n", i);
return SRSRAN_ERROR; return SRSRAN_ERROR;
} }
data->intra_freq_black_cell_list[i].range_present = true; data->intra_freq_excluded_cell_list[i].range_present = true;
int start = 0; int start = 0;
if (!root[i].lookupValue("start", start)) { if (!root[i].lookupValue("start", start)) {
fprintf(stderr, "Missing field start in black_cell=%d\n", i); fprintf(stderr, "Missing field start in excluded_cell=%d\n", i);
return SRSRAN_ERROR; return SRSRAN_ERROR;
} }
data->intra_freq_black_cell_list[i].start = (uint16)start; data->intra_freq_excluded_cell_list[i].start = (uint16)start;
} }
return 0; return 0;
} }
@ -288,7 +288,7 @@ int field_inter_freq_neigh_cell_list::parse(libconfig::Setting& root)
{ {
data->inter_freq_neigh_cell_list.resize((uint32_t)root.getLength()); data->inter_freq_neigh_cell_list.resize((uint32_t)root.getLength());
data->inter_freq_neigh_cell_list_present = data->inter_freq_neigh_cell_list.size() > 0; data->inter_freq_neigh_cell_list_present = data->inter_freq_neigh_cell_list.size() > 0;
for (uint32_t i = 0; i < data->inter_freq_neigh_cell_list.size() && i < ASN1_RRC_MAX_CELL_BLACK; i++) { for (uint32_t i = 0; i < data->inter_freq_neigh_cell_list.size() && i < ASN1_RRC_MAX_EXCLUDED_CELL; i++) {
if (not parse_enum_by_number(data->inter_freq_neigh_cell_list[i].q_offset_cell, "q_offset_cell", root[i])) { if (not parse_enum_by_number(data->inter_freq_neigh_cell_list[i].q_offset_cell, "q_offset_cell", root[i])) {
ERROR("Missing field q_offset_cell in neigh_cell=%d\n", i); ERROR("Missing field q_offset_cell in neigh_cell=%d\n", i);
return SRSRAN_ERROR; return SRSRAN_ERROR;
@ -306,21 +306,21 @@ int field_inter_freq_neigh_cell_list::parse(libconfig::Setting& root)
int field_inter_freq_black_cell_list::parse(libconfig::Setting& root) int field_inter_freq_black_cell_list::parse(libconfig::Setting& root)
{ {
data->inter_freq_black_cell_list.resize((uint32_t)root.getLength()); data->inter_freq_excluded_cell_list.resize((uint32_t)root.getLength());
data->inter_freq_black_cell_list_present = data->inter_freq_black_cell_list.size() > 0; data->inter_freq_excluded_cell_list_present = data->inter_freq_excluded_cell_list.size() > 0;
for (uint32_t i = 0; i < data->inter_freq_black_cell_list.size() && i < ASN1_RRC_MAX_CELL_BLACK; i++) { for (uint32_t i = 0; i < data->inter_freq_excluded_cell_list.size() && i < ASN1_RRC_MAX_EXCLUDED_CELL; i++) {
if (not parse_enum_by_number(data->inter_freq_black_cell_list[i].range, "range", root[i])) { if (not parse_enum_by_number(data->inter_freq_excluded_cell_list[i].range, "range", root[i])) {
ERROR("Missing field range in black_cell=%d\n", i); ERROR("Missing field range in excluded_cell=%d\n", i);
return SRSRAN_ERROR; return SRSRAN_ERROR;
} }
data->inter_freq_black_cell_list[i].range_present = true; data->inter_freq_excluded_cell_list[i].range_present = true;
unsigned int start = 0; unsigned int start = 0;
if (!root[i].lookupValue("start", start)) { if (!root[i].lookupValue("start", start)) {
ERROR("Missing field start in black_cell=%d\n", i); ERROR("Missing field start in excluded_cell=%d\n", i);
return SRSRAN_ERROR; return SRSRAN_ERROR;
} }
data->inter_freq_black_cell_list[i].start = (uint16)start; data->inter_freq_excluded_cell_list[i].start = (uint16)start;
} }
return 0; return 0;
} }

@ -31,6 +31,9 @@ inline std::string to_string(const phy_cell_t& c)
return {buffer}; return {buffer};
} }
/// \brief Helper function to get the SIB number from the SIB type.
unsigned get_sib_number(const asn1::rrc::sib_type_e& sib);
class meas_cell class meas_cell
{ {
public: public:
@ -129,7 +132,7 @@ public:
std::string to_string() const; std::string to_string() const;
asn1::rrc_nr::sib1_s sib1 = {}; asn1::rrc_nr::sib1_s sib1 = {};
}; };
class meas_cell_eutra : public meas_cell class meas_cell_eutra : public meas_cell
@ -138,9 +141,9 @@ public:
explicit meas_cell_eutra(srsran::unique_timer timer) : meas_cell(std::move(timer)){}; explicit meas_cell_eutra(srsran::unique_timer timer) : meas_cell(std::move(timer)){};
meas_cell_eutra(const phy_cell_t& phy_cell_, srsran::unique_timer timer) : meas_cell(phy_cell_, std::move(timer)){}; meas_cell_eutra(const phy_cell_t& phy_cell_, srsran::unique_timer timer) : meas_cell(phy_cell_, std::move(timer)){};
bool has_plmn_id(asn1::rrc::plmn_id_s plmn_id) const; bool has_plmn_id(asn1::rrc::plmn_id_s plmn_id) const;
uint32_t nof_plmns() const { return has_sib1() ? sib1.cell_access_related_info.plmn_id_list.size() : 0; } uint32_t nof_plmns() const { return has_sib1() ? sib1.cell_access_related_info.plmn_id_list.size() : 0; }
srsran::plmn_id_t get_plmn(uint32_t idx) const; srsran::plmn_id_t get_plmn(uint32_t idx) const;
asn1::rrc::plmn_id_s get_plmn_asn1(uint32_t idx) const; asn1::rrc::plmn_id_s get_plmn_asn1(uint32_t idx) const;
uint16_t get_tac() const { return has_sib1() ? (uint16_t)sib1.cell_access_related_info.tac.to_number() : 0; } uint16_t get_tac() const { return has_sib1() ? (uint16_t)sib1.cell_access_related_info.tac.to_number() : 0; }
@ -155,7 +158,7 @@ public:
const asn1::rrc::sib_type3_s* sib3ptr() const { return has_sib3() ? &sib3 : nullptr; } const asn1::rrc::sib_type3_s* sib3ptr() const { return has_sib3() ? &sib3 : nullptr; }
const asn1::rrc::sib_type13_r9_s* sib13ptr() const { return has_sib13() ? &sib13 : nullptr; } const asn1::rrc::sib_type13_r9_s* sib13ptr() const { return has_sib13() ? &sib13 : nullptr; }
uint32_t get_cell_id() const { return (uint32_t)sib1.cell_access_related_info.cell_id.to_number(); } uint32_t get_cell_id() const { return (uint32_t)sib1.cell_access_related_info.cell_id.to_number(); }
asn1::fixed_bitstring<28> get_cell_id_bit() const { return sib1.cell_access_related_info.cell_id; } asn1::fixed_bitstring<28> get_cell_id_bit() const { return sib1.cell_access_related_info.cell_id; }
uint16_t get_mcc() const; uint16_t get_mcc() const;

@ -1361,6 +1361,21 @@ void rrc::write_pdu_bcch_dlsch(unique_byte_buffer_t pdu)
parse_pdu_bcch_dlsch(std::move(pdu)); parse_pdu_bcch_dlsch(std::move(pdu));
} }
/// \brief Helper function to get the SIB number from the SIB type.
static unsigned get_sib_number(const asn1::rrc::sib_info_item_c::types& sib)
{
unsigned sib_n = 2 + (unsigned)sib.value;
if (sib_n > 21) {
// sib22 and sib23 skipped.
sib_n += 2;
if (sib_n > 26) {
// account for sib26a.
sib_n--;
}
}
return sib_n;
}
void rrc::parse_pdu_bcch_dlsch(unique_byte_buffer_t pdu) void rrc::parse_pdu_bcch_dlsch(unique_byte_buffer_t pdu)
{ {
// Stop BCCH search after successful reception of 1 BCCH block // Stop BCCH search after successful reception of 1 BCCH block
@ -1386,7 +1401,7 @@ void rrc::parse_pdu_bcch_dlsch(unique_byte_buffer_t pdu)
sys_info_r8_ies_s::sib_type_and_info_l_& sib_list = sys_info_r8_ies_s::sib_type_and_info_l_& sib_list =
dlsch_msg.msg.c1().sys_info().crit_exts.sys_info_r8().sib_type_and_info; dlsch_msg.msg.c1().sys_info().crit_exts.sys_info_r8().sib_type_and_info;
for (uint32_t i = 0; i < sib_list.size(); ++i) { for (uint32_t i = 0; i < sib_list.size(); ++i) {
logger.info("Processing SIB%d (%d/%d)", sib_list[i].type().to_number(), i, sib_list.size()); logger.info("Processing SIB%d (%d/%d)", get_sib_number(sib_list[i].type()), i, sib_list.size());
switch (sib_list[i].type().value) { switch (sib_list[i].type().value) {
case sib_info_item_c::types::sib2: case sib_info_item_c::types::sib2:
if (not meas_cells.serving_cell().has_sib2()) { if (not meas_cells.serving_cell().has_sib2()) {
@ -1410,7 +1425,7 @@ void rrc::parse_pdu_bcch_dlsch(unique_byte_buffer_t pdu)
si_acquirer.trigger(si_acquire_proc::sib_received_ev{}); si_acquirer.trigger(si_acquire_proc::sib_received_ev{});
break; break;
default: default:
logger.warning("SIB%d is not supported", sib_list[i].type().to_number()); logger.warning("SIB%d is not supported", get_sib_number(sib_list[i].type()));
} }
} }
} }
@ -1429,7 +1444,7 @@ void rrc::handle_sib1()
si_periodicity_r12_e p = sib1->sched_info_list[i].si_periodicity; si_periodicity_r12_e p = sib1->sched_info_list[i].si_periodicity;
for (uint32_t j = 0; j < sib1->sched_info_list[i].sib_map_info.size(); ++j) { for (uint32_t j = 0; j < sib1->sched_info_list[i].sib_map_info.size(); ++j) {
sib_type_e t = sib1->sched_info_list[i].sib_map_info[j]; sib_type_e t = sib1->sched_info_list[i].sib_map_info[j];
logger.debug("SIB scheduling info, sib_type=%d, si_periodicity=%d", t.to_number(), p.to_number()); logger.debug("SIB scheduling info, sib_type=%d, si_periodicity=%d", get_sib_number(t), p.to_number());
} }
} }

@ -14,6 +14,20 @@
namespace srsue { namespace srsue {
/// \brief Helper function to get the SIB number from the SIB type.
unsigned get_sib_number(const asn1::rrc::sib_type_e& sib)
{
unsigned sib_number = 3 + (unsigned)sib.value;
if (sib_number > 21) {
// skip sib22 and sib23
sib_number += 2;
if (sib_number > 26) {
sib_number--;
}
}
return sib_number;
}
meas_cell::meas_cell(srsran::unique_timer timer_) : timer(std::move(timer_)) meas_cell::meas_cell(srsran::unique_timer timer_) : timer(std::move(timer_))
{ {
timer.set(neighbour_timeout_ms); timer.set(neighbour_timeout_ms);
@ -50,7 +64,7 @@ void meas_cell_eutra::set_sib1(const asn1::rrc::sib_type1_s& sib1_)
sib_info_map.clear(); sib_info_map.clear();
for (uint32_t i = 0; i < sib1.sched_info_list.size(); ++i) { for (uint32_t i = 0; i < sib1.sched_info_list.size(); ++i) {
for (uint32_t j = 0; j < sib1.sched_info_list[i].sib_map_info.size(); ++j) { for (uint32_t j = 0; j < sib1.sched_info_list[i].sib_map_info.size(); ++j) {
sib_info_map.insert(std::make_pair(sib1.sched_info_list[i].sib_map_info[j].to_number() - 1, i)); sib_info_map.insert(std::make_pair(get_sib_number(sib1.sched_info_list[i].sib_map_info[j]) - 1, i));
} }
} }
} }

@ -1219,17 +1219,17 @@ void rrc::rrc_meas::var_meas_cfg::measObject_addmod_eutra(const meas_obj_to_add_
} }
} }
// Do the same with black list // Do the same with excluded list
{ {
if (cfg_obj.black_cells_to_rem_list_present) { if (cfg_obj.excluded_cells_to_rem_list_present) {
apply_remlist_diff(local_obj.black_cells_to_add_mod_list, apply_remlist_diff(local_obj.excluded_cells_to_add_mod_list,
cfg_obj.black_cells_to_rem_list, cfg_obj.excluded_cells_to_rem_list,
local_obj.black_cells_to_add_mod_list); local_obj.excluded_cells_to_add_mod_list);
} }
if (cfg_obj.black_cells_to_add_mod_list_present) { if (cfg_obj.excluded_cells_to_add_mod_list_present) {
apply_addmodlist_diff(local_obj.black_cells_to_add_mod_list, apply_addmodlist_diff(local_obj.excluded_cells_to_add_mod_list,
cfg_obj.black_cells_to_add_mod_list, cfg_obj.excluded_cells_to_add_mod_list,
local_obj.black_cells_to_add_mod_list); local_obj.excluded_cells_to_add_mod_list);
} }
} }
@ -1241,19 +1241,19 @@ void rrc::rrc_meas::var_meas_cfg::measObject_addmod_eutra(const meas_obj_to_add_
} }
} }
logger.info("MEAS: %s objectId=%d, carrier_freq=%d, %u cells, %u black-listed cells", logger.info("MEAS: %s objectId=%d, carrier_freq=%d, %u cells, %u excluded-listed cells",
!entry_exists ? "Added" : "Modified", !entry_exists ? "Added" : "Modified",
l.meas_obj_id, l.meas_obj_id,
local_obj.carrier_freq, local_obj.carrier_freq,
local_obj.cells_to_add_mod_list.size(), local_obj.cells_to_add_mod_list.size(),
local_obj.black_cells_to_add_mod_list.size()); local_obj.excluded_cells_to_add_mod_list.size());
if (logger.debug.enabled()) { if (logger.debug.enabled()) {
for (auto& c : local_obj.cells_to_add_mod_list) { for (auto& c : local_obj.cells_to_add_mod_list) {
logger.debug( logger.debug(
"MEAS: cell idx=%d, pci=%d, q_offset=%d", c.cell_idx, c.pci, c.cell_individual_offset.to_number()); "MEAS: cell idx=%d, pci=%d, q_offset=%d", c.cell_idx, c.pci, c.cell_individual_offset.to_number());
} }
for (auto& b : local_obj.black_cells_to_add_mod_list) { for (auto& b : local_obj.excluded_cells_to_add_mod_list) {
logger.debug("MEAS: black-listed cell idx=%d", b.cell_idx); logger.debug("MEAS: excluded-listed cell idx=%d", b.cell_idx);
} }
} }
} }
@ -1275,17 +1275,17 @@ void rrc::rrc_meas::var_meas_cfg::measObject_addmod_nr_r15(const meas_obj_to_add
local_obj.carrier_freq_r15 = cfg_obj.carrier_freq_r15; local_obj.carrier_freq_r15 = cfg_obj.carrier_freq_r15;
// Combine the new cells with the existing ones and remove the cells indicated in config // Combine the new cells with the existing ones and remove the cells indicated in config
// Do the same with black list // Do the same with excluded list
{ {
if (cfg_obj.black_cells_to_rem_list_r15_present) { if (cfg_obj.excluded_cells_to_rem_list_r15_present) {
apply_remlist_diff(local_obj.black_cells_to_add_mod_list_r15, apply_remlist_diff(local_obj.excluded_cells_to_add_mod_list_r15,
cfg_obj.black_cells_to_rem_list_r15, cfg_obj.excluded_cells_to_rem_list_r15,
local_obj.black_cells_to_add_mod_list_r15); local_obj.excluded_cells_to_add_mod_list_r15);
} }
if (cfg_obj.black_cells_to_add_mod_list_r15_present) { if (cfg_obj.excluded_cells_to_add_mod_list_r15_present) {
apply_addmodlist_diff(local_obj.black_cells_to_add_mod_list_r15, apply_addmodlist_diff(local_obj.excluded_cells_to_add_mod_list_r15,
cfg_obj.black_cells_to_add_mod_list_r15, cfg_obj.excluded_cells_to_add_mod_list_r15,
local_obj.black_cells_to_add_mod_list_r15); local_obj.excluded_cells_to_add_mod_list_r15);
} }
} }
// for each measId associated with this measObjectId in the measIdList within the VarMeasConfig // for each measId associated with this measObjectId in the measIdList within the VarMeasConfig
@ -1296,14 +1296,14 @@ void rrc::rrc_meas::var_meas_cfg::measObject_addmod_nr_r15(const meas_obj_to_add
} }
} }
logger.info("MEAS (NR R15): %s objectId=%d, carrier_freq=%d, %u black-listed cells", logger.info("MEAS (NR R15): %s objectId=%d, carrier_freq=%d, %u excluded-listed cells",
!entry_exists ? "Added" : "Modified", !entry_exists ? "Added" : "Modified",
l.meas_obj_id, l.meas_obj_id,
local_obj.carrier_freq_r15, local_obj.carrier_freq_r15,
local_obj.black_cells_to_add_mod_list_r15.size()); local_obj.excluded_cells_to_add_mod_list_r15.size());
if (logger.debug.enabled()) { if (logger.debug.enabled()) {
for (auto& b : local_obj.black_cells_to_add_mod_list_r15) { for (auto& b : local_obj.excluded_cells_to_add_mod_list_r15) {
logger.debug("MEAS: black-listed cell idx=%d", b.cell_idx_r15); logger.debug("MEAS: excluded-listed cell idx=%d", b.cell_idx_r15);
} }
} }
} }

@ -191,7 +191,7 @@ std::pair<uint32_t, int32_t> compute_si_periodicity_and_idx(uint32_t sib_index,
// SIB3+ scheduling Section 5.2.3 // SIB3+ scheduling Section 5.2.3
for (uint32_t i = 0; i < sib1->sched_info_list.size(); ++i) { for (uint32_t i = 0; i < sib1->sched_info_list.size(); ++i) {
for (uint32_t j = 0; j < sib1->sched_info_list[i].sib_map_info.size(); ++j) { for (uint32_t j = 0; j < sib1->sched_info_list[i].sib_map_info.size(); ++j) {
if (sib1->sched_info_list[i].sib_map_info[j].to_number() == sib_index + 1) { if (get_sib_number(sib1->sched_info_list[i].sib_map_info[j]) == sib_index + 1) {
return {sib1->sched_info_list[i].si_periodicity.to_number(), i}; return {sib1->sched_info_list[i].si_periodicity.to_number(), i};
} }
} }

Loading…
Cancel
Save